tutorial:datagen_loot
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
tutorial:datagen_loot [2022/09/14 20:23] – created nexus-dino | tutorial:datagen_loot [2023/06/16 17:29] (current) – 1.20+ addProvider change slainlight | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | Before reading this, make sure you have a class that implements '' | + | ====== Loot Table Generation ====== |
- | To get started, make a class (or a few, you need one for blocks, chests and entities) that extends '' | + | Before reading this, make sure you've read [[datagen_setup|Getting |
+ | |||
+ | To begin, make a class (or a few, you need one for blocks, chests and entities) that extends '' | ||
==== Setting Up ==== | ==== Setting Up ==== | ||
+ | To get started with block loot, create a block loot table generator | ||
+ | |||
<code java> | <code java> | ||
- | private static class MyBlockLootTables extends | + | private static class MyBlockLootTables extends |
- | public MyBlockLootTables(FabricDataGenerator dataGenerator) { | + | public MyBlockLootTables(FabricDataOutput dataOutput) { |
- | | + | |
} | } | ||
| | ||
@Override | @Override | ||
- | public void accept(BiConsumer< | + | public void generate() { |
// ... | // ... | ||
} | } | ||
Line 21: | Line 25: | ||
@Override | @Override | ||
public void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator) { | public void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator) { | ||
- | fabricDataGenerator.addProvider(MyBlockLootTables:: | + | |
+ | FabricDataGenerator.Pack myPack = fabricDataGenerator.createPack(); | ||
+ | myPack.addProvider(MyBlockLootTables:: | ||
+ | // ... | ||
} | } | ||
</ | </ | ||
+ | |||
+ | If you're using versions pre-1.20, please replace '' | ||
Let's just create a simple ore block and an item to drop from it for a block loot table. Add this to your block init or '' | Let's just create a simple ore block and an item to drop from it for a block loot table. Add this to your block init or '' | ||
Line 34: | Line 43: | ||
</ | </ | ||
- | ==== ADDING BLOCK LOOT ==== | + | ==== Adding Block Loot ==== |
<code java> | <code java> | ||
- | private static class MyBlockLootTables extends | + | private static class MyBlockLootTables extends |
- | public MyBlockLootTables(FabricDataGenerator dataGenerator) { | + | public MyBlockLootTables(FabricDataOutput dataOutput) { |
- | | + | |
} | } | ||
- | + | | |
@Override | @Override | ||
- | public void accept(BiConsumer< | + | public void generate() { |
- | // The BlockLootTableGenerator class contains a behemoth of utility methods. Just take some time and go through the methods available to override. | + | |
- | | + | |
} | } | ||
} | } | ||
Line 51: | Line 59: | ||
Now that we successfully adding a block. Now let's add chest loot. | Now that we successfully adding a block. Now let's add chest loot. | ||
- | Firstly, we need an identifier. | + | ==== Adding Chest Loot ==== |
+ | |||
+ | Firstly, we need an identifier. This identifier points to a json file that contains your chest loot. | ||
<code java> | <code java> | ||
Line 58: | Line 68: | ||
</ | </ | ||
- | TODO | + | Let's create a chest loot table generator and register it like so. |
+ | |||
+ | <code java> | ||
+ | |||
+ | private static class MyChestLootTables extends SimpleFabricLootTableProvider { | ||
+ | public MyChestLootGenerator(FabricDataOutput dataGenerator) { | ||
+ | super(dataGenerator, | ||
+ | } | ||
+ | |||
+ | @Override | ||
+ | public void accept(BiConsumer< | ||
+ | biConsumer.accept(Tutorial.TEST_CHEST, | ||
+ | .pool(LootPool.builder().rolls(ConstantLootNumberProvider.create(1.0F)) | ||
+ | .with(ItemEntry.builder(Items.DIAMOND) | ||
+ | .apply(SetCountLootFunction.builder(ConstantLootNumberProvider.create(1.0F))) | ||
+ | .with(ItemEntry.builder(Items.DIAMOND_SWORD)).apply(EnchantWithLevelsLootFunction.create(UniformLootNumberProvider.create(20.0F, | ||
+ | ); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | // ... | ||
+ | |||
+ | @Override | ||
+ | public void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator) { | ||
+ | FabricDataGenerator.Pack myPack = fabricDataGenerator.createPack(); | ||
+ | myPack.addProvider(MyChestLootTables:: | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | If you're using versions pre-1.20, please replace '' |
tutorial/datagen_loot.1663186993.txt.gz · Last modified: 2022/09/14 20:23 by nexus-dino