From cff402affbeaa95c5b7e3165e898e48abe03a39b Mon Sep 17 00:00:00 2001 From: Daniel Mills Date: Fri, 30 Jul 2021 09:33:50 -0400 Subject: [PATCH] Attempt block drops --- .../volmit/iris/engine/IrisWorldManager.java | 65 +++++++++++++++++++ .../iris/engine/object/IrisBlockDrops.java | 2 - 2 files changed, 65 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/volmit/iris/engine/IrisWorldManager.java b/src/main/java/com/volmit/iris/engine/IrisWorldManager.java index fb258d404..42aa871bf 100644 --- a/src/main/java/com/volmit/iris/engine/IrisWorldManager.java +++ b/src/main/java/com/volmit/iris/engine/IrisWorldManager.java @@ -32,6 +32,7 @@ import org.bukkit.Location; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.entity.EntitySpawnEvent; +import org.bukkit.inventory.ItemStack; public class IrisWorldManager extends EngineAssignedWorldManager { private boolean spawnable; @@ -155,7 +156,71 @@ public class IrisWorldManager extends EngineAssignedWorldManager { @Override public void onBlockBreak(BlockBreakEvent e) { + if(e.getBlock().getWorld().equals(getTarget().getWorld().realWorld()) && getEngine().contains(e.getBlock().getLocation())) + { + KList d = new KList<>(); + Runnable drop = () -> J.s(() -> d.forEach((i) -> e.getBlock().getWorld().dropItemNaturally(e.getBlock().getLocation().clone().add(0.5, 0.5, 0.5), i))); + IrisBiome b = getEngine().getBiome(e.getBlock().getLocation()); + for(IrisBlockDrops i : b.getBlockDrops()) + { + if(i.shouldDropFor(e.getBlock().getBlockData(), getData())) + { + if(i.isReplaceVanillaDrops()) + { + e.setDropItems(false); + } + + i.fillDrops(false, d); + + if(i.isSkipParents()) + { + drop.run(); + return; + } + } + } + + IrisRegion r = getEngine().getRegion(e.getBlock().getLocation()); + + for(IrisBlockDrops i : r.getBlockDrops()) + { + if(i.shouldDropFor(e.getBlock().getBlockData(), getData())) + { + if(i.isReplaceVanillaDrops()) + { + e.setDropItems(false); + } + + i.fillDrops(false, d); + + if(i.isSkipParents()) + { + drop.run(); + return; + } + } + } + + for(IrisBlockDrops i : getEngine().getDimension().getBlockDrops()) + { + if(i.shouldDropFor(e.getBlock().getBlockData(), getData())) + { + if(i.isReplaceVanillaDrops()) + { + e.setDropItems(false); + } + + i.fillDrops(false, d); + + if(i.isSkipParents()) + { + drop.run(); + return; + } + } + } + } } @Override diff --git a/src/main/java/com/volmit/iris/engine/object/IrisBlockDrops.java b/src/main/java/com/volmit/iris/engine/object/IrisBlockDrops.java index f3e4277c2..6101f332b 100644 --- a/src/main/java/com/volmit/iris/engine/object/IrisBlockDrops.java +++ b/src/main/java/com/volmit/iris/engine/object/IrisBlockDrops.java @@ -83,8 +83,6 @@ public class IrisBlockDrops { return false; } - // TODO: WARNING USES RNG.R - @Deprecated public void fillDrops(boolean debug, KList d) { for (IrisLoot i : getDrops()) { if (RNG.r.i(1, i.getRarity()) == i.getRarity()) {