Uploaded image for project: 'Minecraft: Java Edition'
  1. Minecraft: Java Edition
  2. MC-279196

Block loot tables cannot be removed with /data remove

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • None
    • 1.21.4, 25w02a
    • None
    • Community Consensus
    • (Unassigned)

      Reproduction

      1. place/find a block that has a loot table attached
      example command:

      /setblock ~1 ~ ~ minecraft:chest[facing=north,type=single,waterlogged=false]{LootTable:"minecraft:chests/underwater_ruin_small",LootTableSeed:1254937183670699988L}
      

      2. run get command

      /data get block ~1 ~ ~
      

      3. observe that block has LootTable tag, that we want to remove
      4. run command to remove LootTable from block

      /data remove block ~1 ~ ~ LootTable
      

      5. see that output says the block was modified
      6. run get command again to see the changes
      7. see that LootTable is still present!

      Code Analysis + Potential fix

      mojmap, 1.21.4

      In

      net.minecraft.world.RandomizableContainer#tryLoadLootTable
      
      // after data modify/remove alters the tag, it is reloaded by the block entity
      default boolean tryLoadLootTable(CompoundTag tag) {
          // since the new tag removed it, this is false
          if (tag.contains("LootTable", 8)) {
              ...
          } else {
              // causing the handler to return without updating
              // the block entities internal state of the loot table
      
              // the below is an example fix
              // setLootTable(null);
      
              return false;
          }
      }
      

            Unassigned Unassigned
            The456gamer The456gamer
            Votes:
            2 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              CHK: