From 46c88a62c089f979b5b42ba484d4c1601533534d Mon Sep 17 00:00:00 2001 From: Brian Date: Sat, 13 Jan 2024 17:28:49 -0500 Subject: [PATCH] Rewrite loot table injection --- .../loot_modifiers/lerasium_loot.json | 31 +++++++++++++ .../unbreakable_dagger_loot.json | 23 ++++++++++ .../loot_tables/inject/lerasium.json | 22 --------- .../loot_tables/inject/obsidian_dagger.json | 27 ----------- .../loot_modifiers/global_loot_modifiers.json | 7 +++ .../com/legobmw99/allomancy/Allomancy.java | 1 - .../legobmw99/allomancy/api/enums/Metal.java | 19 ++++---- .../allomancy/datagen/DataGenerators.java | 5 +- .../allomancy/datagen/DungeonLootTables.java | 45 ------------------ .../allomancy/datagen/LootModifiers.java | 37 +++++++++++++++ .../modules/materials/MaterialsConfig.java | 19 -------- .../modules/materials/MaterialsSetup.java | 23 +++++----- .../materials/world/DaggerLootModifier.java | 45 ++++++++++++++++++ .../materials/world/LerasiumLootModifier.java | 41 +++++++++++++++++ .../materials/world/LootTableInjector.java | 46 ------------------- .../allomancy/util/AllomancyConfig.java | 2 - 16 files changed, 207 insertions(+), 186 deletions(-) create mode 100644 src/generated/resources/data/allomancy/loot_modifiers/lerasium_loot.json create mode 100644 src/generated/resources/data/allomancy/loot_modifiers/unbreakable_dagger_loot.json delete mode 100644 src/generated/resources/data/allomancy/loot_tables/inject/lerasium.json delete mode 100644 src/generated/resources/data/allomancy/loot_tables/inject/obsidian_dagger.json create mode 100644 src/generated/resources/data/neoforge/loot_modifiers/global_loot_modifiers.json delete mode 100644 src/main/java/com/legobmw99/allomancy/datagen/DungeonLootTables.java create mode 100644 src/main/java/com/legobmw99/allomancy/datagen/LootModifiers.java delete mode 100644 src/main/java/com/legobmw99/allomancy/modules/materials/MaterialsConfig.java create mode 100644 src/main/java/com/legobmw99/allomancy/modules/materials/world/DaggerLootModifier.java create mode 100644 src/main/java/com/legobmw99/allomancy/modules/materials/world/LerasiumLootModifier.java delete mode 100644 src/main/java/com/legobmw99/allomancy/modules/materials/world/LootTableInjector.java diff --git a/src/generated/resources/data/allomancy/loot_modifiers/lerasium_loot.json b/src/generated/resources/data/allomancy/loot_modifiers/lerasium_loot.json new file mode 100644 index 00000000..4b81ee20 --- /dev/null +++ b/src/generated/resources/data/allomancy/loot_modifiers/lerasium_loot.json @@ -0,0 +1,31 @@ +{ + "type": "allomancy:lerasium_loot", + "chance_one_in": 5, + "conditions": [ + { + "condition": "minecraft:any_of", + "terms": [ + { + "condition": "neoforge:loot_table_id", + "loot_table_id": "minecraft:chests/simple_dungeon" + }, + { + "condition": "neoforge:loot_table_id", + "loot_table_id": "minecraft:chests/desert_pyramid" + }, + { + "condition": "neoforge:loot_table_id", + "loot_table_id": "minecraft:chests/jungle_temple" + }, + { + "condition": "neoforge:loot_table_id", + "loot_table_id": "minecraft:chests/woodland_mansion" + }, + { + "condition": "neoforge:loot_table_id", + "loot_table_id": "minecraft:chests/end_city_treasure" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_modifiers/unbreakable_dagger_loot.json b/src/generated/resources/data/allomancy/loot_modifiers/unbreakable_dagger_loot.json new file mode 100644 index 00000000..8578ece0 --- /dev/null +++ b/src/generated/resources/data/allomancy/loot_modifiers/unbreakable_dagger_loot.json @@ -0,0 +1,23 @@ +{ + "type": "allomancy:unbreakable_dagger_loot", + "chance_one_in": 20, + "conditions": [ + { + "condition": "minecraft:any_of", + "terms": [ + { + "condition": "neoforge:loot_table_id", + "loot_table_id": "minecraft:chests/woodland_mansion" + }, + { + "condition": "neoforge:loot_table_id", + "loot_table_id": "minecraft:chests/end_city_treasure" + }, + { + "condition": "neoforge:loot_table_id", + "loot_table_id": "minecraft:chests/pillager_outpost" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/inject/lerasium.json b/src/generated/resources/data/allomancy/loot_tables/inject/lerasium.json deleted file mode 100644 index 3210a772..00000000 --- a/src/generated/resources/data/allomancy/loot_tables/inject/lerasium.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:empty", - "pools": [ - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:item", - "name": "allomancy:lerasium_nugget", - "weight": 4 - }, - { - "type": "minecraft:empty", - "weight": 16 - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "allomancy:inject/lerasium" -} \ No newline at end of file diff --git a/src/generated/resources/data/allomancy/loot_tables/inject/obsidian_dagger.json b/src/generated/resources/data/allomancy/loot_tables/inject/obsidian_dagger.json deleted file mode 100644 index 224cc69e..00000000 --- a/src/generated/resources/data/allomancy/loot_tables/inject/obsidian_dagger.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "type": "minecraft:empty", - "pools": [ - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_nbt", - "tag": "{Unbreakable:1b}" - } - ], - "name": "allomancy:obsidian_dagger" - }, - { - "type": "minecraft:empty", - "weight": 19 - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "allomancy:inject/obsidian_dagger" -} \ No newline at end of file diff --git a/src/generated/resources/data/neoforge/loot_modifiers/global_loot_modifiers.json b/src/generated/resources/data/neoforge/loot_modifiers/global_loot_modifiers.json new file mode 100644 index 00000000..aa68e9d6 --- /dev/null +++ b/src/generated/resources/data/neoforge/loot_modifiers/global_loot_modifiers.json @@ -0,0 +1,7 @@ +{ + "entries": [ + "allomancy:unbreakable_dagger_loot", + "allomancy:lerasium_loot" + ], + "replace": false +} \ No newline at end of file diff --git a/src/main/java/com/legobmw99/allomancy/Allomancy.java b/src/main/java/com/legobmw99/allomancy/Allomancy.java index facdd250..df79f588 100644 --- a/src/main/java/com/legobmw99/allomancy/Allomancy.java +++ b/src/main/java/com/legobmw99/allomancy/Allomancy.java @@ -70,7 +70,6 @@ public static void clientInit(final FMLClientSetupEvent e) { public static void init(final FMLCommonSetupEvent e) { PowersSetup.init(e); - MaterialsSetup.init(e); } } diff --git a/src/main/java/com/legobmw99/allomancy/api/enums/Metal.java b/src/main/java/com/legobmw99/allomancy/api/enums/Metal.java index f72035ed..a10b816d 100644 --- a/src/main/java/com/legobmw99/allomancy/api/enums/Metal.java +++ b/src/main/java/com/legobmw99/allomancy/api/enums/Metal.java @@ -1,11 +1,10 @@ package com.legobmw99.allomancy.api.enums; -import com.mojang.serialization.Codec; -import com.mojang.serialization.DataResult; +import net.minecraft.util.StringRepresentable; import java.util.Locale; -public enum Metal { +public enum Metal implements StringRepresentable { IRON(true), STEEL(IRON), TIN, @@ -64,13 +63,11 @@ public int getIndex() { return ordinal(); } - public static final Codec CODEC = Codec.STRING.comapFlatMap(s -> { - for (Metal mt : Metal.values()) { - if (mt.getName().equals(s)) { - return DataResult.success(mt); - } - } - return DataResult.error(() -> s + " is not a valid Metal"); - }, Metal::getName); + public static final StringRepresentable.EnumCodec CODEC = StringRepresentable.fromEnum(Metal::values); + + @Override + public String getSerializedName() { + return getName(); + } } \ No newline at end of file diff --git a/src/main/java/com/legobmw99/allomancy/datagen/DataGenerators.java b/src/main/java/com/legobmw99/allomancy/datagen/DataGenerators.java index 113dde7e..be0d87f9 100644 --- a/src/main/java/com/legobmw99/allomancy/datagen/DataGenerators.java +++ b/src/main/java/com/legobmw99/allomancy/datagen/DataGenerators.java @@ -24,8 +24,9 @@ public static void gatherData(GatherDataEvent event) { var fileHelper = event.getExistingFileHelper(); generator.addProvider(event.includeServer(), new Recipes(packOutput, lookup)); generator.addProvider(event.includeServer(), new LootTableProvider(packOutput, Collections.emptySet(), - List.of(new LootTableProvider.SubProviderEntry(BlockLootTables::new, LootContextParamSets.BLOCK), - new LootTableProvider.SubProviderEntry(DungeonLootTables::new, LootContextParamSets.EMPTY)))); + List.of(new LootTableProvider.SubProviderEntry(BlockLootTables::new, LootContextParamSets.BLOCK)))); + generator.addProvider(event.includeServer(), new LootModifiers(packOutput)); + BlockTags blocktags = new BlockTags(packOutput, lookup, fileHelper); generator.addProvider(event.includeServer(), blocktags); generator.addProvider(event.includeServer(), new ItemTags(packOutput, lookup, blocktags.contentsGetter(), fileHelper)); diff --git a/src/main/java/com/legobmw99/allomancy/datagen/DungeonLootTables.java b/src/main/java/com/legobmw99/allomancy/datagen/DungeonLootTables.java deleted file mode 100644 index 5dd372f6..00000000 --- a/src/main/java/com/legobmw99/allomancy/datagen/DungeonLootTables.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.legobmw99.allomancy.datagen; - -import com.legobmw99.allomancy.Allomancy; -import com.legobmw99.allomancy.modules.combat.CombatSetup; -import com.legobmw99.allomancy.modules.consumables.ConsumeSetup; -import net.minecraft.data.loot.LootTableSubProvider; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.storage.loot.LootPool; -import net.minecraft.world.level.storage.loot.LootTable; -import net.minecraft.world.level.storage.loot.entries.EmptyLootItem; -import net.minecraft.world.level.storage.loot.entries.LootItem; -import net.minecraft.world.level.storage.loot.functions.SetNbtFunction; -import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; - -import java.util.function.BiConsumer; - -public class DungeonLootTables implements LootTableSubProvider { - @Override - public void generate(BiConsumer writer) { - - // Lerasium Inject - Allomancy.LOGGER.debug("Creating Loot Table for Lerasium inject"); - LootPool.Builder leras_builder = LootPool - .lootPool() - .name("main") - .setRolls(ConstantValue.exactly(1)) - .add(LootItem.lootTableItem(ConsumeSetup.LERASIUM_NUGGET.get()).setWeight(4)) - .add(EmptyLootItem.emptyItem().setWeight(16)); - writer.accept(new ResourceLocation(Allomancy.MODID, "inject/lerasium"), LootTable.lootTable().withPool(leras_builder)); - - CompoundTag nbt = new CompoundTag(); - nbt.putBoolean("Unbreakable", true); - Allomancy.LOGGER.debug("Creating Loot Table for Obsidian Dagger inject"); - LootPool.Builder dagger_builder = LootPool - .lootPool() - .name("main") - .setRolls(ConstantValue.exactly(1)) - .add(LootItem.lootTableItem(CombatSetup.OBSIDIAN_DAGGER.get()).apply(SetNbtFunction.setTag(nbt)).setWeight(1)) - .add(EmptyLootItem.emptyItem().setWeight(19)); - writer.accept(new ResourceLocation(Allomancy.MODID, "inject/obsidian_dagger"), LootTable.lootTable().withPool(dagger_builder)); - - - } -} diff --git a/src/main/java/com/legobmw99/allomancy/datagen/LootModifiers.java b/src/main/java/com/legobmw99/allomancy/datagen/LootModifiers.java new file mode 100644 index 00000000..77d6e1c8 --- /dev/null +++ b/src/main/java/com/legobmw99/allomancy/datagen/LootModifiers.java @@ -0,0 +1,37 @@ +package com.legobmw99.allomancy.datagen; + +import com.legobmw99.allomancy.Allomancy; +import com.legobmw99.allomancy.modules.materials.world.DaggerLootModifier; +import com.legobmw99.allomancy.modules.materials.world.LerasiumLootModifier; +import net.minecraft.data.PackOutput; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.storage.loot.predicates.AnyOfCondition; +import net.minecraft.world.level.storage.loot.predicates.LootItemCondition; +import net.neoforged.neoforge.common.data.GlobalLootModifierProvider; +import net.neoforged.neoforge.common.loot.LootTableIdCondition; + +public class LootModifiers extends GlobalLootModifierProvider { + + public LootModifiers(PackOutput output) { + super(output, Allomancy.MODID); + } + + private static final ResourceLocation DUNGEON = new ResourceLocation("minecraft:chests/simple_dungeon"); + private static final ResourceLocation DESERT = new ResourceLocation("minecraft:chests/desert_pyramid"); + private static final ResourceLocation JUNGLE = new ResourceLocation("minecraft:chests/jungle_temple"); + private static final ResourceLocation WOODLAND = new ResourceLocation("minecraft:chests/woodland_mansion"); + private static final ResourceLocation END_CITY = new ResourceLocation("minecraft:chests/end_city_treasure"); + private static final ResourceLocation OUTPOST = new ResourceLocation("minecraft:chests/pillager_outpost"); + + @Override + protected void start() { + var lerasiumLocations = new LootItemCondition[]{ + AnyOfCondition.anyOf(LootTableIdCondition.builder(DUNGEON), LootTableIdCondition.builder(DESERT), LootTableIdCondition.builder(JUNGLE), + LootTableIdCondition.builder(WOODLAND), LootTableIdCondition.builder(END_CITY)).build()}; + add("lerasium_loot", new LerasiumLootModifier(lerasiumLocations, 5)); + + var daggerLocations = new LootItemCondition[]{ + AnyOfCondition.anyOf(LootTableIdCondition.builder(WOODLAND), LootTableIdCondition.builder(END_CITY), LootTableIdCondition.builder(OUTPOST)).build()}; + add("unbreakable_dagger_loot", new DaggerLootModifier(daggerLocations, 20)); + } +} diff --git a/src/main/java/com/legobmw99/allomancy/modules/materials/MaterialsConfig.java b/src/main/java/com/legobmw99/allomancy/modules/materials/MaterialsConfig.java deleted file mode 100644 index bf97f1a4..00000000 --- a/src/main/java/com/legobmw99/allomancy/modules/materials/MaterialsConfig.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.legobmw99.allomancy.modules.materials; - -import net.neoforged.neoforge.common.ModConfigSpec; - -public class MaterialsConfig { - public static ModConfigSpec.BooleanValue generate_lerasium; - public static ModConfigSpec.BooleanValue generate_unbreakable_daggers; - - public static void init(ModConfigSpec.Builder common_builder) { - common_builder.comment("Settings for the mod's added generation").push("world"); - - common_builder.push("loot"); - generate_lerasium = common_builder.comment("Add Lerasium to dungeon and other loot tables").define("generate_lerasium", true); - generate_unbreakable_daggers = common_builder.comment("Add Unbreakable Obsidian Daggers to end city and other loot tables").define("generate_unbreakable_daggers", true); - common_builder.pop(); - common_builder.pop(); - } - -} diff --git a/src/main/java/com/legobmw99/allomancy/modules/materials/MaterialsSetup.java b/src/main/java/com/legobmw99/allomancy/modules/materials/MaterialsSetup.java index d5a23700..70abf482 100644 --- a/src/main/java/com/legobmw99/allomancy/modules/materials/MaterialsSetup.java +++ b/src/main/java/com/legobmw99/allomancy/modules/materials/MaterialsSetup.java @@ -2,7 +2,9 @@ import com.legobmw99.allomancy.Allomancy; import com.legobmw99.allomancy.api.enums.Metal; -import com.legobmw99.allomancy.modules.materials.world.LootTableInjector; +import com.legobmw99.allomancy.modules.materials.world.DaggerLootModifier; +import com.legobmw99.allomancy.modules.materials.world.LerasiumLootModifier; +import com.mojang.serialization.Codec; import net.minecraft.core.Holder; import net.minecraft.core.HolderGetter; import net.minecraft.core.HolderSet; @@ -28,8 +30,7 @@ import net.minecraft.world.level.levelgen.structure.templatesystem.RuleTest; import net.minecraft.world.level.levelgen.structure.templatesystem.TagMatchTest; import net.neoforged.bus.api.IEventBus; -import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent; -import net.neoforged.neoforge.common.NeoForge; +import net.neoforged.neoforge.common.loot.IGlobalLootModifier; import net.neoforged.neoforge.common.world.BiomeModifier; import net.neoforged.neoforge.common.world.BiomeModifiers; import net.neoforged.neoforge.registries.DeferredBlock; @@ -39,6 +40,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.function.Supplier; public class MaterialsSetup { @@ -62,8 +64,8 @@ public String toString() { private static final ResourceKey ADD_ALLOMANCY_ORES = ResourceKey.create(NeoForgeRegistries.Keys.BIOME_MODIFIERS, new ResourceLocation(Allomancy.MODID, "overworld_ores")); - public static final DeferredRegister.Blocks BLOCKS = DeferredRegister.createBlocks(Allomancy.MODID); - public static final DeferredRegister.Items ITEMS = DeferredRegister.createItems(Allomancy.MODID); + private static final DeferredRegister.Blocks BLOCKS = DeferredRegister.createBlocks(Allomancy.MODID); + private static final DeferredRegister.Items ITEMS = DeferredRegister.createItems(Allomancy.MODID); public static final List> FLAKES = new ArrayList<>(); public static final List> NUGGETS = new ArrayList<>(); @@ -131,16 +133,15 @@ public String toString() { } } + private static final DeferredRegister> GLM = DeferredRegister.create(NeoForgeRegistries.Keys.GLOBAL_LOOT_MODIFIER_SERIALIZERS, + Allomancy.MODID); + public static final Supplier> LERASIUM_LOOT = GLM.register("lerasium_loot", LerasiumLootModifier.CODEC); + public static final Supplier> DAGGER_LOOT = GLM.register("unbreakable_dagger_loot", DaggerLootModifier.CODEC); public static void register(IEventBus bus) { BLOCKS.register(bus); ITEMS.register(bus); - } - - public static void init(final FMLCommonSetupEvent e) { - e.enqueueWork(() -> { - NeoForge.EVENT_BUS.register(LootTableInjector.class); - }); + GLM.register(bus); } public static Block createStandardBlock() { diff --git a/src/main/java/com/legobmw99/allomancy/modules/materials/world/DaggerLootModifier.java b/src/main/java/com/legobmw99/allomancy/modules/materials/world/DaggerLootModifier.java new file mode 100644 index 00000000..9d159732 --- /dev/null +++ b/src/main/java/com/legobmw99/allomancy/modules/materials/world/DaggerLootModifier.java @@ -0,0 +1,45 @@ +package com.legobmw99.allomancy.modules.materials.world; + +import com.google.common.base.Suppliers; +import com.legobmw99.allomancy.modules.combat.CombatSetup; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import it.unimi.dsi.fastutil.objects.ObjectArrayList; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.storage.loot.LootContext; +import net.minecraft.world.level.storage.loot.predicates.LootItemCondition; +import net.neoforged.neoforge.common.loot.IGlobalLootModifier; +import net.neoforged.neoforge.common.loot.LootModifier; +import org.jetbrains.annotations.NotNull; + +import java.util.function.Supplier; + +public class DaggerLootModifier extends LootModifier { + + public int chance_one_in; + public static final Supplier> CODEC = Suppliers.memoize( + () -> RecordCodecBuilder.create(inst -> codecStart(inst).and(Codec.INT.fieldOf("chance_one_in").forGetter(t -> t.chance_one_in)).apply(inst, DaggerLootModifier::new))); + + public DaggerLootModifier(LootItemCondition[] conditionsIn, int chance_one_in) { + super(conditionsIn); + this.chance_one_in = chance_one_in; + } + + @Override + protected @NotNull ObjectArrayList doApply(ObjectArrayList generatedLoot, LootContext context) { + if (context.getRandom().nextInt(this.chance_one_in) == 0) { + ItemStack dagger = new ItemStack(CombatSetup.OBSIDIAN_DAGGER.get()); + CompoundTag nbt = new CompoundTag(); + nbt.putBoolean("Unbreakable", true); + dagger.setTag(nbt); + generatedLoot.add(dagger); + } + return generatedLoot; + } + + @Override + public Codec codec() { + return CODEC.get(); + } +} diff --git a/src/main/java/com/legobmw99/allomancy/modules/materials/world/LerasiumLootModifier.java b/src/main/java/com/legobmw99/allomancy/modules/materials/world/LerasiumLootModifier.java new file mode 100644 index 00000000..bbbf8483 --- /dev/null +++ b/src/main/java/com/legobmw99/allomancy/modules/materials/world/LerasiumLootModifier.java @@ -0,0 +1,41 @@ +package com.legobmw99.allomancy.modules.materials.world; + +import com.google.common.base.Suppliers; +import com.legobmw99.allomancy.modules.consumables.ConsumeSetup; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import it.unimi.dsi.fastutil.objects.ObjectArrayList; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.storage.loot.LootContext; +import net.minecraft.world.level.storage.loot.predicates.LootItemCondition; +import net.neoforged.neoforge.common.loot.IGlobalLootModifier; +import net.neoforged.neoforge.common.loot.LootModifier; +import org.jetbrains.annotations.NotNull; + +import java.util.function.Supplier; + +public class LerasiumLootModifier extends LootModifier { + + public int chance_one_in; + public static final Supplier> CODEC = Suppliers.memoize(() -> RecordCodecBuilder.create( + inst -> codecStart(inst).and(Codec.INT.fieldOf("chance_one_in").forGetter(t -> t.chance_one_in)).apply(inst, LerasiumLootModifier::new))); + + public LerasiumLootModifier(LootItemCondition[] conditionsIn, int chance_one_in) { + super(conditionsIn); + this.chance_one_in = chance_one_in; + } + + + @Override + protected @NotNull ObjectArrayList doApply(ObjectArrayList generatedLoot, LootContext context) { + if (context.getRandom().nextInt(this.chance_one_in) == 0) { + generatedLoot.add(new ItemStack(ConsumeSetup.LERASIUM_NUGGET.get())); + } + return generatedLoot; + } + + @Override + public Codec codec() { + return CODEC.get(); + } +} diff --git a/src/main/java/com/legobmw99/allomancy/modules/materials/world/LootTableInjector.java b/src/main/java/com/legobmw99/allomancy/modules/materials/world/LootTableInjector.java deleted file mode 100644 index 3a3497cb..00000000 --- a/src/main/java/com/legobmw99/allomancy/modules/materials/world/LootTableInjector.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.legobmw99.allomancy.modules.materials.world; - -import com.legobmw99.allomancy.Allomancy; -import com.legobmw99.allomancy.modules.materials.MaterialsConfig; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.storage.loot.LootPool; -import net.minecraft.world.level.storage.loot.entries.LootTableReference; -import net.neoforged.bus.api.SubscribeEvent; -import net.neoforged.neoforge.event.LootTableLoadEvent; - -public class LootTableInjector { - // TODO replace https://docs.neoforged.net/docs/resources/server/glm/ - @SubscribeEvent - public static void onLootTableLoad(final LootTableLoadEvent event) { - if (event.getName() == null) { - return; - } - - String name = event.getName().toString(); - if (MaterialsConfig.generate_lerasium.get() && - (name.equals("minecraft:chests/simple_dungeon") || name.equals("minecraft:chests/desert_pyramid") || name.equals("minecraft:chests/jungle_temple") || - name.equals("minecraft:chests/woodland_mansion") || name.equals("minecraft:chests/end_city_treasure"))) { - //Inject a Lerasium loot table into the above vanilla tables - Allomancy.LOGGER.info("Adding lerasium to Loot Table: " + name); - event - .getTable() - .addPool(LootPool - .lootPool() - .name("lerasium_inject") - .add(LootTableReference.lootTableReference(new ResourceLocation(Allomancy.MODID, "inject/lerasium"))) - .build()); - } - if (MaterialsConfig.generate_unbreakable_daggers.get() && - (name.equals("minecraft:chests/end_city_treasure") || name.equals("minecraft:chests/woodland_mansion") || name.equals("minecraft:chests/pillager_outpost"))) { - //Inject an unbreakable Obsidian Dagger loot table into the above vanilla tables - Allomancy.LOGGER.info("Adding obsidian dagger to Loot Table: " + name); - event - .getTable() - .addPool(LootPool - .lootPool() - .name("obsidian_dagger") - .add(LootTableReference.lootTableReference(new ResourceLocation(Allomancy.MODID, "inject/obsidian_dagger"))) - .build()); - } - } -} diff --git a/src/main/java/com/legobmw99/allomancy/util/AllomancyConfig.java b/src/main/java/com/legobmw99/allomancy/util/AllomancyConfig.java index 372416ad..946357fb 100644 --- a/src/main/java/com/legobmw99/allomancy/util/AllomancyConfig.java +++ b/src/main/java/com/legobmw99/allomancy/util/AllomancyConfig.java @@ -1,6 +1,5 @@ package com.legobmw99.allomancy.util; -import com.legobmw99.allomancy.modules.materials.MaterialsConfig; import com.legobmw99.allomancy.modules.powers.PowersConfig; import net.neoforged.fml.ModLoadingContext; import net.neoforged.fml.config.ModConfig; @@ -20,7 +19,6 @@ public class AllomancyConfig { var CLIENT_BUILDER = new ModConfigSpec.Builder(); var SERVER_BUILDER = new ModConfigSpec.Builder(); - MaterialsConfig.init(COMMON_BUILDER); PowersConfig.init(SERVER_BUILDER, COMMON_BUILDER, CLIENT_BUILDER); COMMON_CONFIG = COMMON_BUILDER.build();