package org.bukkit.craftbukkit.block; import net.minecraft.resources.MinecraftKey; import net.minecraft.world.level.block.entity.TileEntityLootable; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.Nameable; import org.bukkit.block.Block; import org.bukkit.craftbukkit.util.CraftNamespacedKey; import org.bukkit.loot.LootTable; import org.bukkit.loot.Lootable; public abstract class CraftLootable extends CraftContainer implements Nameable, Lootable { public CraftLootable(Block block, Class tileEntityClass) { super(block, tileEntityClass); } public CraftLootable(Material material, T tileEntity) { super(material, tileEntity); } @Override public void applyTo(T lootable) { super.applyTo(lootable); if (this.getSnapshot().lootTable == null) { lootable.setLootTable((MinecraftKey) null, 0L); } } @Override public LootTable getLootTable() { if (getSnapshot().lootTable == null) { return null; } MinecraftKey key = getSnapshot().lootTable; return Bukkit.getLootTable(CraftNamespacedKey.fromMinecraft(key)); } @Override public void setLootTable(LootTable table) { setLootTable(table, getSeed()); } @Override public long getSeed() { return getSnapshot().lootTableSeed; } @Override public void setSeed(long seed) { setLootTable(getLootTable(), seed); } private void setLootTable(LootTable table, long seed) { MinecraftKey key = (table == null) ? null : CraftNamespacedKey.toMinecraft(table.getKey()); getSnapshot().setLootTable(key, seed); } }