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.data.client.ModBlockStateProvider;
|
||||
import dev.micle.wildflowers_backport.data.client.ModItemModelProvider;
|
||||
import dev.micle.wildflowers_backport.data.server.ModLootTableProvider;
|
||||
import net.minecraft.core.HolderLookup;
|
||||
import net.minecraft.data.DataGenerator;
|
||||
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 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