Private
Public Access
1
0

Implemented block loot table.

This commit is contained in:
2026-06-09 23:45:42 +01:00
parent 73fe5db005
commit 5c87e4a0eb
4 changed files with 165 additions and 0 deletions

View File

@ -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"
}

View File

@ -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));
}
}

View File

@ -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;
}
}

View File

@ -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)
));
}
}