• 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!

Spawner abbauen und ...

DarkPrincess

Kuhfänger
Registriert
31 August 2013
Beiträge
52
Diamanten
0
... Spawner Type als SpawnEi Dropen lassen.

So schaut mein bisheriger versuch aus, allerdings bekommt man hier nur unbrauchbare Spawneier bei heraus.

Code:
public class BreakSpawner implements Listener {
    @EventHandler(priority = EventPriority.HIGH)
    public void onPlayerInteract(PlayerInteractEvent e) {
        if(e.getClickedBlock() == null || !e.hasItem())
            return;
       
        if(!e.getItem().getType().equals(Material.DIAMOND_PICKAXE))
            return;
       
        if(!(e.getClickedBlock().getState() instanceof CreatureSpawner))
            return;
       
        if(!_p.getWG().canBuild(e.getPlayer(), e.getClickedBlock()))
            return;
       
        CreatureSpawner csp = (CreatureSpawner)e.getClickedBlock().getState();
        ItemStack item = new ItemStack(Material.MONSTER_EGG, 10);
        item.setData(csp.getData());
        e.getClickedBlock().breakNaturally(new ItemStack(Material.MOB_SPAWNER, 1));
        e.getClickedBlock().getWorld().dropItem(e.getClickedBlock().getLocation(), item);
    }
}
 
X

|| xX [DEV][LP] Ms. DivaCraft Xx ||

Guest
Die Daten eines Mobspawners sind offensichtlich nicht kompatibel. Die einfachste Möglichkeit wäre es ein Ei droppen zu lassen und in der Lore (Item Meta) den Namen der Entity zu speichern und dann einfach damit das Wesen beim Rechtsklick spawnen. [Oder eine Methode schreiben, die die entsprechende Daten konvertiert. Hierzu wäre es sicherlich sinnvoll getData mit Rekursion zu analysieren.
 

Hamsterboy

Kuhfänger
Registriert
13 März 2012
Beiträge
55
Diamanten
300
Minecraft
Hamsterboy
Code:
public class BreakSpawner implements Listener {
    @EventHandler(priority = EventPriority.HIGH)
    public void onPlayerInteract(PlayerInteractEvent e) {
        if(e.getClickedBlock() == null || !e.hasItem())
            return;
      
        if(!e.getItem().getType().equals(Material.DIAMOND_PICKAXE))
            return;
      
        if(!(e.getClickedBlock().getState() instanceof CreatureSpawner))
            return;
      
        if(!_p.getWG().canBuild(e.getPlayer(), e.getClickedBlock()))
            return;
      
        CreatureSpawner csp = (CreatureSpawner)e.getClickedBlock().getState();

        EntityType c = csp.getSpawnedType();

        SpawnEgg spe = new SpawnEgg();
        spe.setSpawnedType(c);

        ItemStack item = new ItemStack(spe.toItemStack(10));

        e.getClickedBlock().breakNaturally(new ItemStack(Material.MOB_SPAWNER, 1));
        e.getClickedBlock().getWorld().dropItem(e.getClickedBlock().getLocation(), item);
    }
}

So funktioniert das :)
 
Oben