From b063cd6ef282ff0a6bfcf738623d38ffc1a4987d Mon Sep 17 00:00:00 2001 From: Jottyfan Date: Tue, 26 Nov 2024 08:57:24 +0100 Subject: [PATCH] experiments with loot table changes --- .../de/jottyfan/quickiemod/Quickiemod.java | 34 ++++++++++++++++--- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/src/main/java/de/jottyfan/quickiemod/Quickiemod.java b/src/main/java/de/jottyfan/quickiemod/Quickiemod.java index fabe44f..2c84537 100644 --- a/src/main/java/de/jottyfan/quickiemod/Quickiemod.java +++ b/src/main/java/de/jottyfan/quickiemod/Quickiemod.java @@ -13,9 +13,18 @@ import de.jottyfan.quickiemod.item.ModItems; import de.jottyfan.quickiemod.itemgroup.ModItemGroup; import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.event.player.PlayerBlockBreakEvents; +import net.fabricmc.fabric.api.loot.v3.LootTableEvents; import net.fabricmc.fabric.api.registry.CompostingChanceRegistry; import net.minecraft.block.Block; +import net.minecraft.block.Blocks; import net.minecraft.item.Item; +import net.minecraft.loot.LootPool; +import net.minecraft.loot.LootTable; +import net.minecraft.loot.condition.SurvivesExplosionLootCondition; +import net.minecraft.loot.entry.ItemEntry; +import net.minecraft.loot.entry.LeafEntry.Builder; +import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKey; /** * @@ -26,12 +35,29 @@ public class Quickiemod implements ModInitializer { public static final String MOD_ID = "quickiemod"; public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID); - private void registerComposterItems() { - CompostingChanceRegistry.INSTANCE.add(ModItems.ITEM_COTTONSEED, 0.5f); + private void registerComposterItems() { + CompostingChanceRegistry.INSTANCE.add(ModItems.ITEM_COTTONSEED, 0.5f); CompostingChanceRegistry.INSTANCE.add(ModItems.ITEM_COTTON, 0.75f); CompostingChanceRegistry.INSTANCE.add(ModItems.ITEM_CANOLASEED, 0.5f); CompostingChanceRegistry.INSTANCE.add(ModItems.ITEM_CANOLA, 0.75f); - } + } + + private void registerLootTableChanges() { + // does not work yet + LootTableEvents.MODIFY.register((key, tableBuilder, source, registries) -> { + if (Blocks.SHORT_GRASS.equals(key)) { + Builder entry = ItemEntry.builder(ModItems.ITEM_COTTON); + LootPool.Builder poolBuilder = LootPool.builder().with(entry) + .conditionally(SurvivesExplosionLootCondition.builder()); + tableBuilder.pool(poolBuilder); + } else if (Blocks.TALL_GRASS.getLootTableKey().equals(key)) { + Builder entry = ItemEntry.builder(ModItems.ITEM_CANOLA); + LootPool.Builder poolBuilder = LootPool.builder().with(entry) + .conditionally(SurvivesExplosionLootCondition.builder()); + tableBuilder.pool(poolBuilder); + } + }); + } @Override public void onInitialize() { @@ -40,8 +66,8 @@ public class Quickiemod implements ModInitializer { List blocks = ModBlocks.registerModBlocks(); ModFeatures.registerFeatures(); registerComposterItems(); + registerLootTableChanges(); ModItemGroup.registerItemGroup(items, blocks); - PlayerBlockBreakEvents.AFTER.register((world, player, pos, state, blockEntity) -> { Block oldBlock = state.getBlock(); new EventBlockBreak().doBreakBlock(world, pos, state, player, oldBlock);