• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

PlugIn BlockBreakEvent | if (ChestName???)

JaTiTV

Minecrafter
Registriert
8 Juli 2020
Beiträge
3
Diamanten
300
Minecraft
JaTiTV
Hi ich habe ein Plugin entwickelt bei dem man in einem Shop eine bestimmte Kiste bekommt. Jetzt möchte ich allerdings hinzufügen, dass wenn man die Kiste wieder abbaut, dass der Inhalt dropt aber die Kiste nicht mit dropt. Weis jemand von euch wie?
Ich habe es schon hinbekommen, dass eine Kiste nicht dropt. Aber dann dropt halt gar keine mehr.

Code:
public class BreakChest implements Listener {

    @EventHandler
    public void onBlockBreak(BlockBreakEvent e) {
        Block block = e.getBlock();

        if (block.getType() == Material.CHEST){
            Chest chest = (Chest)block.getState();
            
                block.setType(Material.AIR);
                
        }
    }
}

Danke an alle im voraus
 

LinuxServer

Kuhfänger
Registriert
17 September 2016
Beiträge
50
Diamanten
0
Minecraft
LinuxServer
Heyho!

Ich habe Dir ein kleines Snippet geschrieben. Ich konnte es nicht testen, da ich es am Handy geschrieben habe, aber es sollte funktionieren.

Java:
    @EventHandler
    public void onBlockBreak(BlockBreakEvent event) {
        Player player = event.getPlayer();
        Block block = event.getBlock();
        if (block.getType() != Material.CHEST) {
            return;
        }
        for (ItemStack drop : block.getDrops()) {
            if (drop.getType() == Material.CHEST) {
               // Ignore all chests. Alternatively, you can check the name of the item.
                continue;
            }
            Location dropLocation = block.getLocation().clone().add(0.0D, 1.0D, 0.0D);
            player.getWorld().dropItemNaturally(dropLocation, drop);
        }
        block.setType(Material.AIR);
        event.setCancelled(true);
    }
 

JaTiTV

Minecrafter
Registriert
8 Juli 2020
Beiträge
3
Diamanten
300
Minecraft
JaTiTV
Heyho!

Ich habe Dir ein kleines Snippet geschrieben. Ich konnte es nicht testen, da ich es am Handy geschrieben habe, aber es sollte funktionieren.

Java:
    @EventHandler
    public void onBlockBreak(BlockBreakEvent event) {
        Player player = event.getPlayer();
        Block block = event.getBlock();
        if (block.getType() != Material.CHEST) {
            return;
        }
        for (ItemStack drop : block.getDrops()) {
            if (drop.getType() == Material.CHEST) {
               // Ignore all chests. Alternatively, you can check the name of the item.
                continue;
            }
            Location dropLocation = block.getLocation().clone().add(0.0D, 1.0D, 0.0D);
            player.getWorld().dropItemNaturally(dropLocation, drop);
        }
        block.setType(Material.AIR);
        event.setCancelled(true);
    }
Danke dir habe es bereits selber herausgefunden :)
 

CubBossa

Schafhirte
Registriert
17 Juli 2015
Beiträge
125
Diamanten
369
Minecraft
CubBossa
In der Lösung von dir, LinuxServer, werden alle Kisten gelöscht. Man könnte ja noch einen boolean setzen, ob bereits eine kiste entfernt wurde. Also bei dem ersten Chest ItemStack die amount -1 und dann den bool auf true und ab dann alle Chests droppen. Weil wenn jemand ne Kiste voller Kisten abbaut wär ja gar nix gedroppt :D
 

LinuxServer

Kuhfänger
Registriert
17 September 2016
Beiträge
50
Diamanten
0
Minecraft
LinuxServer
In der Lösung von dir, LinuxServer, werden alle Kisten gelöscht. Man könnte ja noch einen boolean setzen, ob bereits eine kiste entfernt wurde. Also bei dem ersten Chest ItemStack die amount -1 und dann den bool auf true und ab dann alle Chests droppen. Weil wenn jemand ne Kiste voller Kisten abbaut wär ja gar nix gedroppt :D
Die Abfrage in der Loop (ob es sich um eine Kiste handelt) ist useless. Der Block wird auf den Typ AIR gesetzt (also: Kein Item Drop) und der Inhalt wird durch die Loop, trotzdem gedropt (auch Kisten).
 
Oben