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
named net/minecraft/inventory/LootableInventory
intermediary net/minecraft/class_8934
official bqp
  • Field Details

    • LOOT_TABLE_KEY

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

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

    • getLootTable

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

      void setLootTable(@Nullable @Nullable RegistryKey<LootTable> lootTable)
      Mappings:
      Namespace Name Mixin selector
      named setLootTable Lnet/minecraft/inventory/LootableInventory;setLootTable(Lnet/minecraft/registry/RegistryKey;)V
      intermediary method_11285 Lnet/minecraft/class_8934;method_11285(Lnet/minecraft/class_5321;)V
      official a Lbqp;a(Lakj;)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
      named setLootTable Lnet/minecraft/inventory/LootableInventory;setLootTable(Lnet/minecraft/registry/RegistryKey;J)V
      intermediary method_54867 Lnet/minecraft/class_8934;method_54867(Lnet/minecraft/class_5321;J)V
      official a Lbqp;a(Lakj;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
      named getLootTableSeed Lnet/minecraft/inventory/LootableInventory;getLootTableSeed()J
      intermediary method_54870 Lnet/minecraft/class_8934;method_54870()J
      official ay_ Lbqp;ay_()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
      named setLootTableSeed Lnet/minecraft/inventory/LootableInventory;setLootTableSeed(J)V
      intermediary method_54866 Lnet/minecraft/class_8934;method_54866(J)V
      official a Lbqp;a(J)V
    • getPos

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

      Mappings:
      Namespace Name Mixin selector
      named getWorld Lnet/minecraft/inventory/LootableInventory;getWorld()Lnet/minecraft/world/World;
      intermediary method_10997 Lnet/minecraft/class_8934;method_10997()Lnet/minecraft/class_1937;
      official i Lbqp;i()Ldcg;
    • 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
      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
      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
      official a Lbqp;a(Ldbm;Layo;Lja;Lakj;)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
      named readLootTable Lnet/minecraft/inventory/LootableInventory;readLootTable(Lnet/minecraft/nbt/NbtCompound;)Z
      intermediary method_54871 Lnet/minecraft/class_8934;method_54871(Lnet/minecraft/class_2487;)Z
      official a_ Lbqp;a_(Ltx;)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
      named writeLootTable Lnet/minecraft/inventory/LootableInventory;writeLootTable(Lnet/minecraft/nbt/NbtCompound;)Z
      intermediary method_54872 Lnet/minecraft/class_8934;method_54872(Lnet/minecraft/class_2487;)Z
      official b_ Lbqp;b_(Ltx;)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
      named generateLoot Lnet/minecraft/inventory/LootableInventory;generateLoot(Lnet/minecraft/entity/player/PlayerEntity;)V
      intermediary method_54873 Lnet/minecraft/class_8934;method_54873(Lnet/minecraft/class_1657;)V
      official e_ Lbqp;e_(Lcml;)V