Implemented block loot table.
This commit is contained in:
@ -0,0 +1,92 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"block": "wildflowers_backport:wildflowers",
|
||||||
|
"condition": "minecraft:block_state_property",
|
||||||
|
"properties": {
|
||||||
|
"flower_amount": "1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"functions": [
|
||||||
|
{
|
||||||
|
"add": false,
|
||||||
|
"count": 1.0,
|
||||||
|
"function": "minecraft:set_count"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "wildflowers_backport:wildflowers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"block": "wildflowers_backport:wildflowers",
|
||||||
|
"condition": "minecraft:block_state_property",
|
||||||
|
"properties": {
|
||||||
|
"flower_amount": "2"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"functions": [
|
||||||
|
{
|
||||||
|
"add": false,
|
||||||
|
"count": 2.0,
|
||||||
|
"function": "minecraft:set_count"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "wildflowers_backport:wildflowers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"block": "wildflowers_backport:wildflowers",
|
||||||
|
"condition": "minecraft:block_state_property",
|
||||||
|
"properties": {
|
||||||
|
"flower_amount": "3"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"functions": [
|
||||||
|
{
|
||||||
|
"add": false,
|
||||||
|
"count": 3.0,
|
||||||
|
"function": "minecraft:set_count"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "wildflowers_backport:wildflowers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"block": "wildflowers_backport:wildflowers",
|
||||||
|
"condition": "minecraft:block_state_property",
|
||||||
|
"properties": {
|
||||||
|
"flower_amount": "4"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"functions": [
|
||||||
|
{
|
||||||
|
"add": false,
|
||||||
|
"count": 4.0,
|
||||||
|
"function": "minecraft:set_count"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "wildflowers_backport:wildflowers"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"rolls": 1.0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"random_sequence": "wildflowers_backport:blocks/wildflowers"
|
||||||
|
}
|
||||||
@ -3,6 +3,7 @@ package dev.micle.wildflowers_backport.data;
|
|||||||
import dev.micle.wildflowers_backport.WildflowersBackport;
|
import dev.micle.wildflowers_backport.WildflowersBackport;
|
||||||
import dev.micle.wildflowers_backport.data.client.ModBlockStateProvider;
|
import dev.micle.wildflowers_backport.data.client.ModBlockStateProvider;
|
||||||
import dev.micle.wildflowers_backport.data.client.ModItemModelProvider;
|
import dev.micle.wildflowers_backport.data.client.ModItemModelProvider;
|
||||||
|
import dev.micle.wildflowers_backport.data.server.ModLootTableProvider;
|
||||||
import net.minecraft.core.HolderLookup;
|
import net.minecraft.core.HolderLookup;
|
||||||
import net.minecraft.data.DataGenerator;
|
import net.minecraft.data.DataGenerator;
|
||||||
import net.minecraftforge.common.data.ExistingFileHelper;
|
import net.minecraftforge.common.data.ExistingFileHelper;
|
||||||
@ -22,5 +23,7 @@ public class DataGenerators {
|
|||||||
|
|
||||||
generator.addProvider(event.includeClient(), new ModBlockStateProvider(generator, existingFileHelper));
|
generator.addProvider(event.includeClient(), new ModBlockStateProvider(generator, existingFileHelper));
|
||||||
generator.addProvider(event.includeClient(), new ModItemModelProvider(generator, existingFileHelper));
|
generator.addProvider(event.includeClient(), new ModItemModelProvider(generator, existingFileHelper));
|
||||||
|
|
||||||
|
generator.addProvider(event.includeServer(), new ModLootTableProvider(generator));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,53 @@
|
|||||||
|
package dev.micle.wildflowers_backport.data.loot;
|
||||||
|
|
||||||
|
import dev.micle.wildflowers_backport.block.FlowerBedBlock;
|
||||||
|
import dev.micle.wildflowers_backport.block.ModBlocks;
|
||||||
|
import net.minecraft.advancements.critereon.StatePropertiesPredicate;
|
||||||
|
import net.minecraft.data.loot.BlockLootSubProvider;
|
||||||
|
import net.minecraft.world.flag.FeatureFlags;
|
||||||
|
import net.minecraft.world.level.block.Block;
|
||||||
|
import net.minecraft.world.level.storage.loot.LootPool;
|
||||||
|
import net.minecraft.world.level.storage.loot.LootTable;
|
||||||
|
import net.minecraft.world.level.storage.loot.entries.LootItem;
|
||||||
|
import net.minecraft.world.level.storage.loot.functions.SetItemCountFunction;
|
||||||
|
import net.minecraft.world.level.storage.loot.predicates.LootItemBlockStatePropertyCondition;
|
||||||
|
import net.minecraft.world.level.storage.loot.providers.number.ConstantValue;
|
||||||
|
import net.minecraftforge.registries.RegistryObject;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
public class ModBlockLootTableProvider extends BlockLootSubProvider {
|
||||||
|
public ModBlockLootTableProvider() {
|
||||||
|
super(Set.of(), FeatureFlags.REGISTRY.allFlags());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void generate() {
|
||||||
|
this.add(ModBlocks.WILDFLOWERS.get(), this::wildflowersLootTable);
|
||||||
|
}
|
||||||
|
|
||||||
|
private LootTable.Builder wildflowersLootTable(Block block) {
|
||||||
|
LootPool.Builder pool = LootPool.lootPool();
|
||||||
|
|
||||||
|
for (int amount = FlowerBedBlock.MIN_SEGMENT; amount <= FlowerBedBlock.MAX_SEGMENT; amount++) {
|
||||||
|
pool.add(
|
||||||
|
LootItem.lootTableItem(block)
|
||||||
|
.when(LootItemBlockStatePropertyCondition.hasBlockStateProperties(block)
|
||||||
|
.setProperties(
|
||||||
|
StatePropertiesPredicate.Builder.properties()
|
||||||
|
.hasProperty(FlowerBedBlock.AMOUNT, amount)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
.apply(SetItemCountFunction.setCount(ConstantValue.exactly(amount)))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return LootTable.lootTable().withPool(pool);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected @NotNull Iterable<Block> getKnownBlocks() {
|
||||||
|
return ModBlocks.BLOCKS.getEntries().stream().map(RegistryObject::get)::iterator;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,17 @@
|
|||||||
|
package dev.micle.wildflowers_backport.data.server;
|
||||||
|
|
||||||
|
import dev.micle.wildflowers_backport.data.loot.ModBlockLootTableProvider;
|
||||||
|
import net.minecraft.data.DataGenerator;
|
||||||
|
import net.minecraft.data.loot.LootTableProvider;
|
||||||
|
import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
public class ModLootTableProvider extends LootTableProvider {
|
||||||
|
public ModLootTableProvider(DataGenerator generator) {
|
||||||
|
super(generator.getPackOutput(), Set.of(), List.of(
|
||||||
|
new LootTableProvider.SubProviderEntry(ModBlockLootTableProvider::new, LootContextParamSets.BLOCK)
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user