diff --git a/common/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java b/common/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java index f1cbfd74d..5ff80ed0c 100644 --- a/common/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java +++ b/common/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java @@ -5,8 +5,10 @@ import com.dfsek.terra.api.event.events.Cancellable; import com.dfsek.terra.api.event.events.PackEvent; import com.dfsek.terra.api.platform.block.Block; import com.dfsek.terra.api.platform.block.state.Container; +import com.dfsek.terra.api.structures.loot.LootTable; import com.dfsek.terra.api.structures.structure.buffer.items.BufferedLootApplication; import com.dfsek.terra.config.pack.ConfigPack; +import org.jetbrains.annotations.NotNull; /** * Called when loot is populated via {@link BufferedLootApplication}. @@ -14,11 +16,13 @@ import com.dfsek.terra.config.pack.ConfigPack; public class LootPopulateEvent extends AbstractCancellable implements PackEvent, Cancellable { private final Block block; private final Container container; + private LootTable table; private final ConfigPack pack; - public LootPopulateEvent(Block block, Container container, ConfigPack pack) { + public LootPopulateEvent(Block block, Container container, LootTable table, ConfigPack pack) { this.block = block; this.container = container; + this.table = table; this.pack = pack; } @@ -44,4 +48,20 @@ public class LootPopulateEvent extends AbstractCancellable implements PackEvent, public Container getContainer() { return container; } + + /** + * Get the loot table to be populated. + * @return Loot table. + */ + public LootTable getTable() { + return table; + } + + /** + * Set the loot table to be populated. + * @param table New loot table. + */ + public void setTable(@NotNull LootTable table) { + this.table = table; + } } diff --git a/common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java b/common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java index a06a61c59..80ae6afd8 100644 --- a/common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java +++ b/common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/BufferedLootApplication.java @@ -29,11 +29,11 @@ public class BufferedLootApplication implements BufferedItem { } Container container = (Container) data; - LootPopulateEvent event = new LootPopulateEvent(block, container, main.getWorld(block.getLocation().getWorld()).getGenerator().getConfigPack()); + LootPopulateEvent event = new LootPopulateEvent(block, container, table, main.getWorld(block.getLocation().getWorld()).getGenerator().getConfigPack()); main.getEventManager().callEvent(event); if(event.isCancelled()) return; - table.fillInventory(container.getInventory(), new FastRandom(origin.hashCode())); + event.getTable().fillInventory(container.getInventory(), new FastRandom(origin.hashCode())); data.update(false); } catch(Exception e) { main.logger().warning("Could not apply loot at " + origin + ": " + e.getMessage());