tutorial:adding_to_loot_tables
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
tutorial:adding_to_loot_tables [2019/07/29 14:03] – created juuz | tutorial:adding_to_loot_tables [2024/02/05 16:08] (current) – Changed Minecraft wiki link to use minecraft.wiki mschae23 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Adding items to loot tables ====== | + | ====== Adding items to existing |
===== Introduction ===== | ===== Introduction ===== | ||
- | Sometimes you want to add items to loot tables, | + | Sometimes you want to add items to [[https:// |
Our example will be adding eggs to the coal ore loot table. | Our example will be adding eggs to the coal ore loot table. | ||
- | ===== Listening to loot table events | + | ===== Listening to loot table loading |
- | Fabric API has an event that’s fired when loot tables are loaded, '' | + | Fabric API has an event that’s fired when loot tables are loaded, '' |
- | <code java> | + | <yarncode |
- | LootTableLoadingCallback.EVENT.register((resourceManager, | + | // No magic constants! |
- | if (" | + | private static final class_2960 COAL_ORE_LOOT_TABLE_ID = class_2246.COAL_ORE.getLootTableId(); |
+ | |||
+ | // Actual code | ||
+ | |||
+ | LootTableEvents.MODIFY.register((resourceManager, | ||
+ | // Let's only modify built-in loot tables and leave data pack loot tables untouched by checking the source. | ||
+ | // We also check that the loot table ID is equal to the ID we want. | ||
+ | if (source.isBuiltin() && COAL_ORE_LOOT_TABLE_ID.equals(id)) { | ||
// Our code will go here | // Our code will go here | ||
} | } | ||
}); | }); | ||
- | </code> | + | </yarncode> |
- | In loot tables, | + | |
+ | ===== Adding items to the table ===== | ||
+ | |||
+ | In loot tables, | ||
- | We can make a pool with '' | + | We can make a pool with '' |
- | <code java> | + | <yarncode |
- | LootTableLoadingCallback.EVENT.register((resourceManager, | + | LootTableEvents.MODIFY.register((resourceManager, |
- | if (" | + | if (source.isBuiltin() && COAL_ORE_LOOT_TABLE_ID.equals(id)) { |
- | | + | |
- | .withRolls(ConstantLootTableRange.create(1)); // Same as " | + | |
- | | + | |
} | } | ||
}); | }); | ||
- | </code> | + | </yarncode> |
Our pool doesn’t have any items yet, so we’ll make an item entry and add it to the pool, and we're done: | Our pool doesn’t have any items yet, so we’ll make an item entry and add it to the pool, and we're done: | ||
- | <code java> | + | <yarncode |
- | LootTableLoadingCallback.EVENT.register((resourceManager, | + | LootTableEvents.MODIFY.register((resourceManager, |
- | if (" | + | if (source.isBuiltin() && COAL_ORE_LOOT_TABLE_ID.equals(id)) { |
- | | + | |
- | .withRolls(ConstantLootTableRange.create(1)) | + | .method_351(class_77.method_411(class_1802.field_8803)); |
- | .withEntry(ItemEntry.builder(Items.EGG)); | + | |
- | | + | |
} | } | ||
}); | }); | ||
- | </code> | + | </yarncode> |
{{: | {{: | ||
tutorial/adding_to_loot_tables.1564408997.txt.gz · Last modified: 2019/07/29 14:03 by juuz