experiments with loot table changes
Some checks are pending
build / build (21) (push) Waiting to run

This commit is contained in:
Jottyfan 2024-11-26 08:57:24 +01:00
parent 346ee85ca3
commit b063cd6ef2

View File

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