diff --git a/src/main/java/com/volmit/iris/core/commands/CommandObject.java b/src/main/java/com/volmit/iris/core/commands/CommandObject.java index a0c646a66..ea7f07f7a 100644 --- a/src/main/java/com/volmit/iris/core/commands/CommandObject.java +++ b/src/main/java/com/volmit/iris/core/commands/CommandObject.java @@ -341,7 +341,7 @@ public class CommandObject implements DecreeExecutor { } } } else { - sender().sendMessage("Placed " + object); + sender().sendMessage(C.IRIS + "Placed " + object); } } @@ -413,7 +413,7 @@ public class CommandObject implements DecreeExecutor { ObjectSVC service = Iris.service(ObjectSVC.class); int actualReverts = Math.min(service.getUndos().size(), amount); service.revertChanges(actualReverts); - sender().sendMessage("Reverted " + actualReverts + " pastes!"); + sender().sendMessage(C.BLUE + "Reverted " + actualReverts + C.BLUE +" pastes!"); } @Decree(description = "Gets an object wand and grabs the current WorldEdit selection.", aliases = "we", origin = DecreeOrigin.PLAYER, studio = true) diff --git a/src/main/java/com/volmit/iris/core/service/ObjectSVC.java b/src/main/java/com/volmit/iris/core/service/ObjectSVC.java index cda1d5a42..5fadf8b4a 100644 --- a/src/main/java/com/volmit/iris/core/service/ObjectSVC.java +++ b/src/main/java/com/volmit/iris/core/service/ObjectSVC.java @@ -18,9 +18,11 @@ package com.volmit.iris.core.service; +import com.volmit.iris.Iris; import com.volmit.iris.util.plugin.IrisService; import com.volmit.iris.util.scheduling.J; import lombok.Getter; +import org.bukkit.Bukkit; import org.bukkit.block.Block; import org.bukkit.block.data.BlockData; @@ -68,19 +70,22 @@ public class ObjectSVC implements IrisService { * @param blocks The blocks to remove */ private void revert(Map blocks) { - int amount = 0; Iterator> it = blocks.entrySet().iterator(); - while (it.hasNext()) { - Map.Entry entry = it.next(); - BlockData data = entry.getValue(); - entry.getKey().setBlockData(data, false); - it.remove(); + Bukkit.getScheduler().runTask(Iris.instance, () -> { + int amount = 0; + while (it.hasNext()) { + Map.Entry entry = it.next(); + BlockData data = entry.getValue(); + entry.getKey().setBlockData(data, false); - amount++; + it.remove(); - if (amount > 200) { - J.s(() -> revert(blocks), 1); + amount++; + + if (amount > 200) { + J.s(() -> revert(blocks), 1); + } } - } + }); } -} +} \ No newline at end of file diff --git a/src/main/java/com/volmit/iris/engine/framework/Engine.java b/src/main/java/com/volmit/iris/engine/framework/Engine.java index c9305ae4d..38e19c562 100644 --- a/src/main/java/com/volmit/iris/engine/framework/Engine.java +++ b/src/main/java/com/volmit/iris/engine/framework/Engine.java @@ -36,9 +36,6 @@ import com.volmit.iris.util.context.ChunkContext; import com.volmit.iris.util.context.IrisContext; import com.volmit.iris.util.data.B; import com.volmit.iris.util.data.DataProvider; -import com.volmit.iris.util.decree.handlers.JigsawPieceHandler; -import com.volmit.iris.util.decree.handlers.JigsawPoolHandler; -import com.volmit.iris.util.decree.handlers.JigsawStructureHandler; import com.volmit.iris.util.documentation.BlockCoordinates; import com.volmit.iris.util.documentation.ChunkCoordinates; import com.volmit.iris.util.format.C; @@ -57,7 +54,6 @@ import com.volmit.iris.util.parallel.MultiBurst; import com.volmit.iris.util.scheduling.ChronoLatch; import com.volmit.iris.util.scheduling.J; import com.volmit.iris.util.scheduling.PrecisionStopwatch; -import com.volmit.iris.util.scheduling.S; import com.volmit.iris.util.stream.ProceduralStream; import io.papermc.lib.PaperLib; import net.minecraft.core.BlockPos; @@ -77,8 +73,9 @@ import org.bukkit.inventory.ItemStack; import oshi.util.tuples.Pair; import java.awt.*; -import java.util.*; -import java.util.List; +import java.util.Arrays; +import java.util.Set; +import java.util.UUID; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; @@ -348,6 +345,7 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat @BlockCoordinates @Override + default void update(int x, int y, int z, Chunk c, RNG rf) { Block block = c.getBlock(x, y, z); BlockData data = block.getBlockData(); @@ -364,8 +362,17 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat KList tables = getLootTables(rx, block); try { + Bukkit.getPluginManager().callEvent(new IrisLootEvent(this, block, slot, tables)); + + if (!tables.isEmpty()){ + Iris.debug("IrisLootEvent has been accessed"); + } + + if (tables.isEmpty()) + return; InventoryHolder m = (InventoryHolder) block.getState(); addItems(false, m.getInventory(), rx, tables, slot, x, y, z, 15); + } catch (Throwable e) { Iris.reportError(e); } diff --git a/src/main/java/com/volmit/iris/engine/framework/IrisLootEvent.java b/src/main/java/com/volmit/iris/engine/framework/IrisLootEvent.java new file mode 100644 index 000000000..057763893 --- /dev/null +++ b/src/main/java/com/volmit/iris/engine/framework/IrisLootEvent.java @@ -0,0 +1,32 @@ +package com.volmit.iris.engine.framework; + +import com.volmit.iris.engine.object.InventorySlotType; +import com.volmit.iris.engine.object.IrisLootTable; +import com.volmit.iris.util.collection.KList; +import lombok.Getter; +import org.bukkit.block.Block; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; + +@Getter +public class IrisLootEvent extends Event { + private static final HandlerList handlers = new HandlerList(); + private final Engine engine; + private final Block block; + private final InventorySlotType slot; + private final KList tables; + + public IrisLootEvent(Engine engine, Block block, InventorySlotType slot, KList tables) { + this.engine = engine; + this.block = block; + this.slot = slot; + this.tables = tables; + } + @Override + public HandlerList getHandlers() { + return handlers; + } + public static HandlerList getHandlerList() { + return handlers; + } +}