mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-20 11:45:51 +00:00
withers shouldnt cause ghost bs anymore
This commit is contained in:
parent
475b27b48c
commit
4f43e33755
@ -9,10 +9,13 @@ import javax.annotation.ParametersAreNonnullByDefault;
|
|||||||
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.entity.Entity;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.block.BlockExplodeEvent;
|
import org.bukkit.event.block.BlockExplodeEvent;
|
||||||
|
import org.bukkit.event.entity.EntityChangeBlockEvent;
|
||||||
import org.bukkit.event.entity.EntityExplodeEvent;
|
import org.bukkit.event.entity.EntityExplodeEvent;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
@ -50,6 +53,25 @@ public class ExplosionsListener implements Listener {
|
|||||||
removeResistantBlocks(e.blockList().iterator());
|
removeResistantBlocks(e.blockList().iterator());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
|
public void onEntityBreak(EntityChangeBlockEvent e) {
|
||||||
|
if (e.getEntity().getType() == EntityType.WITHER || e.getEntity().getType() == EntityType.WITHER_SKULL) {
|
||||||
|
removeResistantBlock(e.getBlock());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void removeResistantBlock(@Nonnull Block block) {
|
||||||
|
final SlimefunItem item = BlockStorage.check(block);
|
||||||
|
|
||||||
|
if (item != null
|
||||||
|
&& !(item instanceof WitherProof)
|
||||||
|
&& !item.callItemHandler(BlockBreakHandler.class, handler -> handleExplosion(handler, block))
|
||||||
|
) {
|
||||||
|
BlockStorage.clearBlockInfo(block);
|
||||||
|
block.setType(Material.AIR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void removeResistantBlocks(@Nonnull Iterator<Block> blocks) {
|
private void removeResistantBlocks(@Nonnull Iterator<Block> blocks) {
|
||||||
while (blocks.hasNext()) {
|
while (blocks.hasNext()) {
|
||||||
Block block = blocks.next();
|
Block block = blocks.next();
|
||||||
@ -57,11 +79,7 @@ public class ExplosionsListener implements Listener {
|
|||||||
|
|
||||||
if (item != null) {
|
if (item != null) {
|
||||||
blocks.remove();
|
blocks.remove();
|
||||||
|
removeResistantBlock(block);
|
||||||
if (!(item instanceof WitherProof) && !item.callItemHandler(BlockBreakHandler.class, handler -> handleExplosion(handler, block))) {
|
|
||||||
BlockStorage.clearBlockInfo(block);
|
|
||||||
block.setType(Material.AIR);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user