Block wool = new CraftBlock(Chunk, int, int, int);
Ja diese Liste habe ich schon einbezogen, jedoch möchte ich jetzt:
if (blocks.contains(Block NAME) {
ev.setCancelled(true)
}
Material type = Material.getMaterial("Name");
List<Block> blocks = ev.getBlocks();
for (int i = 0; i < blocks.size();) {
if (blocks.get(i).getType == type) {
blocks.remove(i);
}
else {
i++;
}
}
@EventHandler
public void onBlockDamage(EntityExplodeEvent ev) {
if (ev.getEntityType() == EntityType.PRIMED_TNT) {
List<Block> blocks = ev.blockList();
for (int i = 0; i < blocks.size();) {
if (blocks.get(i).getType() == Material.WOOL) {
blocks.remove(i);
} else {
i++;
}
}
}
}
Bevor ich dieses Beitrag gelesen habe hatte ich schon die Lösung.Dann erstellst du ein (Hash)Set<Material> mit allen Materialien und statt "blocks.get(i).getType == type" benutzt du einfach "Set#contains(blocks.get(i).getType)". Nachdenken könnte beim nächsten Mal nicht schaden![]()
@EventHandler
public void onBlockDamage(EntityExplodeEvent ev) {
if (ev.getEntityType() == EntityType.PRIMED_TNT) {
List<Block> blocks = ev.blockList();
for (int i = 0; i < blocks.size();) {
blocks.getDrops().clear();//Entfernt den Drop
if (blocks.get(i).getType() == Material.WOOL) {
blocks.remove(i);
} else {
i++;
}
}
}
}
Funktioniert nichtblocks.getDrops().clear();//Entfernt den Drop
@EventHandler
public void onBlockDamage(EntityExplodeEvent ev)
{
if (ev.getEntityType() == EntityType.PRIMED_TNT)
{
List<Block> blocks = ev.blockList();
List<Block> blocks_to_remove = ev.blockList();
for (Block b : blocks)
{
if (b.getType() == Material.WOOL)
{
continue;}
b.getDrops().clear();//Entfernt den Drop
blocks_to_remove.add(b);}
for (Block b : blocks_to_remove)
{
blocks.remove(b);}
}}
Wie unterbinde ich, das bei der Zerstörung der Blöcke die Items droppen?
Und wenn ihr denkt das es nicht geht dann schreibt das bitteMeine Idee:
Umkreis der Explosion und alle in diesem Umkreis gedroppten Items auf die ItemID x überprüfen und dann ggf. entfernen. Mein Problem ist das getten des Umkreis und das Getten der ItemID