Interface LootableInventory

All Superinterfaces:
Clearable, Inventory
All Known Implementing Classes:
BarrelBlockEntity, ChestBlockEntity, CrafterBlockEntity, DecoratedPotBlockEntity, DispenserBlockEntity, DropperBlockEntity, HopperBlockEntity, LootableContainerBlockEntity, ShulkerBoxBlockEntity, TrappedChestBlockEntity

public interface LootableInventory extends Inventory
An inventory whose contents can be supplied from a loot table.

This is usually implemented by block entities, which extend LootableContainerBlockEntity.

Mappings:
Namespace Name
official bpu
intermediary net/minecraft/class_8934
named net/minecraft/inventory/LootableInventory
  • Field Details

    • LOOT_TABLE_KEY

      static final String LOOT_TABLE_KEY
      See Also:
      Mappings:
      Namespace Name Mixin selector
      official b Lbpu;b:Ljava/lang/String;
      intermediary field_47154 Lnet/minecraft/class_8934;field_47154:Ljava/lang/String;
      named LOOT_TABLE_KEY Lnet/minecraft/inventory/LootableInventory;LOOT_TABLE_KEY:Ljava/lang/String;
    • LOOT_TABLE_SEED_KEY

      static final String LOOT_TABLE_SEED_KEY
      See Also:
      Mappings:
      Namespace Name Mixin selector
      official c Lbpu;c:Ljava/lang/String;
      intermediary field_47155 Lnet/minecraft/class_8934;field_47155:Ljava/lang/String;
      named LOOT_TABLE_SEED_KEY Lnet/minecraft/inventory/LootableInventory;LOOT_TABLE_SEED_KEY:Ljava/lang/String;
  • Method Details

    • getLootTable

      Mappings:
      Namespace Name Mixin selector
      official ax_ Lbpu;ax_()Lakg;
      intermediary method_54869 Lnet/minecraft/class_8934;method_54869()Lnet/minecraft/class_5321;
      named getLootTable Lnet/minecraft/inventory/LootableInventory;getLootTable()Lnet/minecraft/registry/RegistryKey;
    • setLootTable

      void setLootTable(@Nullable @Nullable RegistryKey<LootTable> lootTable)
      Mappings:
      Namespace Name Mixin selector
      official a Lbpu;a(Lakg;)V
      intermediary method_11285 Lnet/minecraft/class_8934;method_11285(Lnet/minecraft/class_5321;)V
      named setLootTable Lnet/minecraft/inventory/LootableInventory;setLootTable(Lnet/minecraft/registry/RegistryKey;)V
    • setLootTable

      default void setLootTable(RegistryKey<LootTable> lootTableId, long lootTableSeed)
      Sets the loot table and seed at once. This is useful for code-based structure generation.
      See Also:
      Mappings:
      Namespace Name Mixin selector
      official a Lbpu;a(Lakg;J)V
      intermediary method_54867 Lnet/minecraft/class_8934;method_54867(Lnet/minecraft/class_5321;J)V
      named setLootTable Lnet/minecraft/inventory/LootableInventory;setLootTable(Lnet/minecraft/registry/RegistryKey;J)V
    • getLootTableSeed

      long getLootTableSeed()
      Returns the loot table's seed.

      Vanilla implementations return 0 when there is no loot table associated with the inventory, although it is not necessary.

      This is usually stored under the "LootTableSeed" NBT key.

      Returns:
      the loot table's seed
      Mappings:
      Namespace Name Mixin selector
      official ay_ Lbpu;ay_()J
      intermediary method_54870 Lnet/minecraft/class_8934;method_54870()J
      named getLootTableSeed Lnet/minecraft/inventory/LootableInventory;getLootTableSeed()J
    • setLootTableSeed

      void setLootTableSeed(long lootTableSeed)
      Sets the loot table's seed.

      Vanilla implementations return 0 when there is no loot table associated with the inventory, although it is not necessary.

      This is usually stored under the "LootTableSeed" NBT key.

      Mappings:
      Namespace Name Mixin selector
      official a Lbpu;a(J)V
      intermediary method_54866 Lnet/minecraft/class_8934;method_54866(J)V
      named setLootTableSeed Lnet/minecraft/inventory/LootableInventory;setLootTableSeed(J)V
    • getPos

      BlockPos getPos()
      Mappings:
      Namespace Name Mixin selector
      official az_ Lbpu;az_()Lin;
      intermediary method_11016 Lnet/minecraft/class_8934;method_11016()Lnet/minecraft/class_2338;
      named getPos Lnet/minecraft/inventory/LootableInventory;getPos()Lnet/minecraft/util/math/BlockPos;
    • getWorld

      Mappings:
      Namespace Name Mixin selector
      official i Lbpu;i()Ldad;
      intermediary method_10997 Lnet/minecraft/class_8934;method_10997()Lnet/minecraft/class_1937;
      named getWorld Lnet/minecraft/inventory/LootableInventory;getWorld()Lnet/minecraft/world/World;
    • setLootTable

      static void setLootTable(BlockView world, Random random, BlockPos pos, RegistryKey<LootTable> lootTableId)
      Queries the block entity at pos, checks if it is a LootableInventory, and sets the loot table and seed if applicable. This is useful for code-based structure generation.
      See Also:
      Mappings:
      Namespace Name Mixin selector
      official a Lbpu;a(Lczj;Layg;Lin;Lakg;)V
      intermediary method_54868 Lnet/minecraft/class_8934;method_54868(Lnet/minecraft/class_1922;Lnet/minecraft/class_5819;Lnet/minecraft/class_2338;Lnet/minecraft/class_5321;)V
      named setLootTable Lnet/minecraft/inventory/LootableInventory;setLootTable(Lnet/minecraft/world/BlockView;Lnet/minecraft/util/math/random/Random;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/registry/RegistryKey;)V
    • readLootTable

      default boolean readLootTable(NbtCompound nbt)
      Reads the loot table and seed from nbt, if the loot table exists in nbt. Implementations should skip reading the contents of the inventory if this returns true.
      Returns:
      whether the loot table was found
      Mappings:
      Namespace Name Mixin selector
      official a_ Lbpu;a_(Lua;)Z
      intermediary method_54871 Lnet/minecraft/class_8934;method_54871(Lnet/minecraft/class_2487;)Z
      named readLootTable Lnet/minecraft/inventory/LootableInventory;readLootTable(Lnet/minecraft/nbt/NbtCompound;)Z
    • writeLootTable

      default boolean writeLootTable(NbtCompound nbt)
      Writes the loot table and seed to nbt, if the loot table is not null. Implementations should skip writing the contents of the inventory if this returns true.

      This skips writing the seed if it equals 0L. This has no practical difference in-game, as getting nonexistent long values return 0L.

      Returns:
      whether the loot table was non-null
      Mappings:
      Namespace Name Mixin selector
      official b_ Lbpu;b_(Lua;)Z
      intermediary method_54872 Lnet/minecraft/class_8934;method_54872(Lnet/minecraft/class_2487;)Z
      named writeLootTable Lnet/minecraft/inventory/LootableInventory;writeLootTable(Lnet/minecraft/nbt/NbtCompound;)Z
    • generateLoot

      default void generateLoot(@Nullable @Nullable PlayerEntity player)
      Replaces the contents of this inventory with the generated loot, if it exists. Does nothing if there is no loot table associated with this inventory. After generation, the loot table is removed from the inventory.

      Implementations should call this method whenever the inventory is accessed.

      Parameters:
      player - the player that triggered this generation (by opening, breaking, etc), or null if there was no player involvement
      Mappings:
      Namespace Name Mixin selector
      official e_ Lbpu;e_(Lclh;)V
      intermediary method_54873 Lnet/minecraft/class_8934;method_54873(Lnet/minecraft/class_1657;)V
      named generateLoot Lnet/minecraft/inventory/LootableInventory;generateLoot(Lnet/minecraft/entity/player/PlayerEntity;)V