Minecraft Programmieren : Kiste öffnen richtig cancelln

Hallo Leute, ich programmiere gerade ein Minispiel. Wie in vielen Spielen blockt man auch das Kisten öffnen. (Außer natürlich bei Minispielen, wo Kisten etc... benötigt werden)... Ich habe mit dem InventoryOpenEvent probiert das Kisten öffnen zu verhindern:

@EventHandler
public void onInventoryOpen(InventoryOpenEvent e) {
    
    if(e.getView().getType() != null) {
            
            
        if(e.getView().getType() == InventoryType.CHEST) {
            
            e.setCancelled(true);
            
        }

        if(e.getView().getType() == InventoryType.BEACON) {
                
            e.setCancelled(true);
                
        }
        
        if(e.getView().getType() == InventoryType.BREWING) {
                
            e.setCancelled(true);
                
        }
        
        if(e.getView().getType() == InventoryType.ANVIL) {
            
            e.setCancelled(true);
            
        }
        
        if(e.getView().getType() == InventoryType.CRAFTING) {
            
            e.setCancelled(true);
            
        }
        
        if(e.getView().getType() == InventoryType.DISPENSER) {
        
            e.setCancelled(true);
            
        }
        
        if(e.getView().getType() == InventoryType.DROPPER) {
            
            e.setCancelled(true);
            
        }
        
        if(e.getView().getType() == InventoryType.ENCHANTING) {
            
            e.setCancelled(true);
        
        }
        
        if(e.getView().getType() == InventoryType.ENDER_CHEST) {
            
            e.setCancelled(true);
            
        }
        
        if(e.getView().getType() == InventoryType.FURNACE) {
            
            e.setCancelled(true);
            
        }
        
        if(e.getView().getType() == InventoryType.HOPPER) {
            
        e.setCancelled(true);
            
        }
            
        if(e.getView().getType() == InventoryType.WORKBENCH) {
                
            e.setCancelled(true);
                
        }
            
        if(e.getView().getType() == InventoryType.MERCHANT) {
            
            e.setCancelled(true);
            
        }
            
    }
    
}
    

Das ganze funnktioniert relativ gut. Das Inventar wird geschlossen. Aber die Kiste bleibt offen... Zeit schließt sie sich wieder. Es sieht also so aus als würde ein Unsichtbarer die Kiste noch geöffnet haben.

Wie kann ich das unterbinden? Sodass die Kiste wie bei Gommehd.net auch zu bleibt?

...zum Beitrag

Hier an alle der Code:

@EventHandler
public void onPlayerInteract(PlayerInteractEvent e) {

    if(e.getAction() == Action.RIGHT_CLICK_BLOCK) {

        Block block = e.getClickedBlock();

        if(block.getType() == Material.CHEST) {

            e.setCancelled(true);

        }

    }

}

Der funktioniert... Mfg Miki

...zur Antwort
ist mein minecraft virtuelles inventar plugin fehlerhaft?

hallo, ich lerne gerade bukkit plugins zu schreiben und wollte mal ein virtuelles inventar coden. wo der code fertig war habe ich ihn getestet. weil sich aber kein virtuelles inventar geöffnet hat, habe ich nochmal den code überprüft. da ich keine fehler gefinden habe frag ich hier nochmal nach. das pluigin ist in 2 klassen geschreiben. hier sind die codes:

package main;

import org.bukkit.Material; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.plugin.java.JavaPlugin;

import Commands.Commands;

public class Plugin extends JavaPlugin {

public void onEnable() {
    getServer().getPluginManager().registerEvents(new Commands(), this);
}

private Inventory inv=null;

public boolean onCommand(CommandSender sender, Command cmd, String cmdLabel, String[] args) {

Player p = (Player)sender; if(p.getName().equalsIgnoreCase("commands")) { if(p.hasPermission("main.commands")) { inv = p.getServer().createInventory(null, 9, "commands");

    ItemStack is = new ItemStack(Material.LAVA_BUCKET);
    ItemMeta im = is.getItemMeta();
    im.setDisplayName("kill");
    is.setItemMeta(im);
    
    ItemStack is2 = new ItemStack(Material.MILK_BUCKET);
    ItemMeta im2 = is2.getItemMeta();
    im2.setDisplayName("heal");
    is2.setItemMeta(im2);
    
    ItemStack is3 = new ItemStack(Material.WATER_BUCKET);
    ItemMeta im3 = is3.getItemMeta();
    im3.setDisplayName("day");
    is3.setItemMeta(im3);
    
    ItemStack is4 = new ItemStack(Material.BUCKET);
    ItemMeta im4 = is4.getItemMeta();
    im4.setDisplayName("night");
    is4.setItemMeta(im4);
    
    inv.setItem(1, is);
    inv.setItem(3, is2);
    inv.setItem(5, is3);
    inv.setItem(7, is4);
}

} return false; } }

und hier ist die 2. klasse:

package Commands;

import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.inventory.InventoryClickEvent;

public class Commands implements Listener {

@EventHandler public void Inventory(InventoryClickEvent event) { Player p = (Player) event.getWhoClicked();

if(event.getInventory().getName().equalsIgnoreCase("commands")) {
    event.setCancelled(true);
    
    if(event.getCurrentItem().getType() == Material.LAVA_BUCKET) {
        p.setHealth(0.0);
            
    event.getView().close();
    }
    else if(event.getCurrentItem().getType() == Material.MILK_BUCKET) {
        p.setHealth(20.0);
    
    event.getView().close();
    }
    else if(event.getCurrentItem().getType() == Material.WATER_BUCKET) {
        p.getWorld().setTime(0L);
                
    event.getView().close();
    }
    else if(event.getCurrentItem().getType() == Material.BUCKET){
        p.getWorld().setTime(1800L);
    }   
    event.getView().close();
    }
    }

}

...zum Beitrag

Du musst unter inv.setItem(7, is4); auch noch das Inventar öffnen: p.openInventory(inv);

Grüße Miki

...zur Antwort

So leute, an alle die es gewusst und es mir beantwortet hätten, ich habe einen Developer Freund gefragt. Dieser meinte, es geht so:

ItemStack luft = new ItemStack(Material.STAINED_GLASS_PANE, 1, (short) 15);

^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^

ItemStack Name = neuer ItemStack(Material.HIERDASMATERIAL, ANZAHL (short) ZAHL DAHINTER);

...zur Antwort

Erstmal lernen die es so, dadurch das man sich andere Plugins anguckt und dann schauen sie auch in der Craftbukkit API nach. http://jd.bukkit.org/rb/apidocs/

...zur Antwort

iOS 8 ist natürlich moderner usw. Es ist fraglich was man besser findet. Manche Programme wie MediaMonkey auf dem PC unterstützen iOS 8 nicht. Also denk erst nach ob du dir wirklich sicher bist es zu updaten und vergiss nicht ein Backup zu machen! Mein Vater wollte etwas über Itunes machen usw und nun wurden viele Dinge gelöscht weil sein Handy zurückgesetzt wurde... Aber wie gesagt überleg erstmal...

...zur Antwort

Hallo,

sobald du dir das Spiel auf der offiziellen Seite von Minecraft gekauft hast, was du ja getan hast, hast du einen Premium Account. Es gibt auch so genannte "Hack/Cracked Clients" mit denen man sich einen kostenlosen Account machen kann bzw man einen bestimmten Minecraft Namen annehmen kann ohne ein Passwort eingeben zu müssen. Der Nachteil an diesem "Cracked" Account ist, das viele Server diese Accounts ausgestellt haben. Wenn du trotzdem mit so einem Account raufgehst, steht da eine Fehlermeldung. Wenn ein Server diese Accounts, die auch offline Accounts in den Einstellungen des Servers genannten werden eingeschaltet haben, kannst du auf den Server. Meistens musst du dich dann aber mit /Register registrieren, damit sich nicht irgendjemand über deinen Account einloggt und dann deine Sachen klaut. Wenn er das machen will muss er sich erst mit /login einloggen. Das zum Thema Premium Accounts.

Nun zum zweiten, wenn du zum Beispiel auf "GommeHD.net" mit deinen Account gehst, dann kannst du spielen. Wenn der Server aber voll ist musst du dir Premium auf dem Gomme Server kaufen. Dieser "Premium" Account gilt aber "nur" auf dem Gomme Server und damit kannst du nun wenn der Server voll ist trotzdem rauf, da für dich ein extra Platz frei gemacht wurde. Wenn du auf Gomme mit einen Cracked Account gehst, dann klappt es nicht, weil sie Cracked nicht freigeschaltet haben.

Ich hoffe die Beschreibung war ausführlich genug, bei weiteren Fragen adde mich auf Skype: mikimaus1711

...zur Antwort

Iphone 4 - Iphone 5 sind gut... Iphone 4 (gebraucht) kriegt du vielleicht schon für 80-150 Euro beim Iphone 5 wird's schon viel mehr... Ganze 350 - 700 Euro. Aber wenn man überlegt wie viel das neue Iphone 6 + kostet. Dann ist das schon gut, da das Iphone 6 + über 1000 Euro kostet.

...zur Antwort

Fliegenklatschen kannst du eigentlich überall kaufen, wo ich es am meisten sehe ist bei Kik. Eher bei Märkten die keine Nahrung anbieten. Bei 1 Euro laden findet man auch oft welche. Im Internet gibts auch welche: Amazon, Ebay usw

MfG Miki

...zur Antwort

Wenn du ein Backup auf Itunes hattest, kannst du dein Ihone wiederherstellen. Bei einigen Spielen ist es auch so, das du dich mit Facebook anmeldest und du dich später wieder anmelden kannst und so deinen Spielstand wiederbekommst... Teilweise geht es auch wenn du dein Spiel mit Game Center verbunden ist. Das ist bei vielen spielen so...

MfG Miki

...zur Antwort

Du musst Kommands hinzufügen z.B /hallo

...zur Antwort

Glaube das ist alles falsch :D

...zur Antwort

Was ist denn wenn du /deip machst? Steht da das er kein Op ist oder was? Adde mich auf skype: mikimaus1711

...zur Antwort

Du benutzt sicher Windows 7. Dann gib einfach mal beim Startmenü (Windowszeichen) "Windows Live Movie Maker" ein. Kannst dir dazu noch ein Video anschauen. Ist aber eigendlich ziehmlich einfach :D

...zur Antwort