From cca0437bf3878bd21d5ac3acdcdf453fa29debe7 Mon Sep 17 00:00:00 2001 From: Katrina Knight Date: Thu, 14 Mar 2024 06:14:04 +0000 Subject: [PATCH] feat: move Loot modifiers to datagen and modify to neoforge format (#1081) * feat: move Loot modifiers to datagen and modify to neoforge format * fix: fix seed drop rate and moved mobs to tags. --- .../loot_modifiers/global_loot_modifiers.json | 18 ++--- .../datura_seed_from_grass.json | 16 ++-- .../datura_seed_from_tall_grass.json | 16 ++-- .../loot_modifiers/tallow_from_cows.json | 6 +- .../loot_modifiers/tallow_from_donkeys.json | 6 +- .../loot_modifiers/tallow_from_goats.json | 6 +- .../loot_modifiers/tallow_from_hoglins.json | 6 +- .../loot_modifiers/tallow_from_horses.json | 6 +- .../loot_modifiers/tallow_from_llamas.json | 6 +- .../loot_modifiers/tallow_from_mules.json | 6 +- .../loot_modifiers/tallow_from_pandas.json | 6 +- .../loot_modifiers/tallow_from_pigs.json | 6 +- .../loot_modifiers/tallow_from_sheep.json | 6 +- .../occultism/datagen/DataGenerators.java | 3 +- .../datagen/loot/OccultismLootModifiers.java | 77 +++++++++++++++++++ .../occultism/loot/AddItemModifier.java | 2 +- 16 files changed, 135 insertions(+), 57 deletions(-) rename src/{main/resources/data/forge => generated/resources/data/neoforge}/loot_modifiers/global_loot_modifiers.json (80%) rename src/{main => generated}/resources/data/occultism/loot_modifiers/datura_seed_from_grass.json (52%) rename src/{main => generated}/resources/data/occultism/loot_modifiers/datura_seed_from_tall_grass.json (52%) rename src/{main => generated}/resources/data/occultism/loot_modifiers/tallow_from_cows.json (85%) rename src/{main => generated}/resources/data/occultism/loot_modifiers/tallow_from_donkeys.json (85%) rename src/{main => generated}/resources/data/occultism/loot_modifiers/tallow_from_goats.json (85%) rename src/{main => generated}/resources/data/occultism/loot_modifiers/tallow_from_hoglins.json (85%) rename src/{main => generated}/resources/data/occultism/loot_modifiers/tallow_from_horses.json (85%) rename src/{main => generated}/resources/data/occultism/loot_modifiers/tallow_from_llamas.json (85%) rename src/{main => generated}/resources/data/occultism/loot_modifiers/tallow_from_mules.json (85%) rename src/{main => generated}/resources/data/occultism/loot_modifiers/tallow_from_pandas.json (85%) rename src/{main => generated}/resources/data/occultism/loot_modifiers/tallow_from_pigs.json (85%) rename src/{main => generated}/resources/data/occultism/loot_modifiers/tallow_from_sheep.json (85%) create mode 100644 src/main/java/com/klikli_dev/occultism/datagen/loot/OccultismLootModifiers.java diff --git a/src/main/resources/data/forge/loot_modifiers/global_loot_modifiers.json b/src/generated/resources/data/neoforge/loot_modifiers/global_loot_modifiers.json similarity index 80% rename from src/main/resources/data/forge/loot_modifiers/global_loot_modifiers.json rename to src/generated/resources/data/neoforge/loot_modifiers/global_loot_modifiers.json index 10005e968..7b54fb750 100644 --- a/src/main/resources/data/forge/loot_modifiers/global_loot_modifiers.json +++ b/src/generated/resources/data/neoforge/loot_modifiers/global_loot_modifiers.json @@ -1,17 +1,17 @@ { - "replace": false, "entries": [ - "occultism:datura_seed_from_grass", - "occultism:datura_seed_from_tall_grass", - "occultism:tallow_from_cows", "occultism:tallow_from_donkeys", - "occultism:tallow_from_goats", + "occultism:tallow_from_cows", + "occultism:tallow_from_llamas", "occultism:tallow_from_hoglins", + "occultism:datura_seed_from_tall_grass", + "occultism:tallow_from_pigs", + "occultism:tallow_from_sheep", "occultism:tallow_from_horses", - "occultism:tallow_from_llamas", "occultism:tallow_from_mules", "occultism:tallow_from_pandas", - "occultism:tallow_from_pigs", - "occultism:tallow_from_sheep" - ] + "occultism:datura_seed_from_grass", + "occultism:tallow_from_goats" + ], + "replace": false } \ No newline at end of file diff --git a/src/main/resources/data/occultism/loot_modifiers/datura_seed_from_grass.json b/src/generated/resources/data/occultism/loot_modifiers/datura_seed_from_grass.json similarity index 52% rename from src/main/resources/data/occultism/loot_modifiers/datura_seed_from_grass.json rename to src/generated/resources/data/occultism/loot_modifiers/datura_seed_from_grass.json index 4f94993d0..851c1b553 100644 --- a/src/main/resources/data/occultism/loot_modifiers/datura_seed_from_grass.json +++ b/src/generated/resources/data/occultism/loot_modifiers/datura_seed_from_grass.json @@ -1,13 +1,13 @@ { "type": "occultism:add_item", - "neoforge:conditions": [ + "conditions": [ { - "condition": "minecraft:random_chance", - "chance": 0.02 + "chance": 0.02, + "condition": "minecraft:random_chance" }, { - "condition": "minecraft:block_state_property", - "block": "minecraft:grass" + "block": "minecraft:short_grass", + "condition": "minecraft:block_state_property" }, { "condition": "minecraft:inverted", @@ -19,6 +19,6 @@ } } ], - "item": "occultism:datura_seeds", - "count": 1 -} + "count": 1, + "item": "occultism:datura_seeds" +} \ No newline at end of file diff --git a/src/main/resources/data/occultism/loot_modifiers/datura_seed_from_tall_grass.json b/src/generated/resources/data/occultism/loot_modifiers/datura_seed_from_tall_grass.json similarity index 52% rename from src/main/resources/data/occultism/loot_modifiers/datura_seed_from_tall_grass.json rename to src/generated/resources/data/occultism/loot_modifiers/datura_seed_from_tall_grass.json index 6c19a2bac..7911618db 100644 --- a/src/main/resources/data/occultism/loot_modifiers/datura_seed_from_tall_grass.json +++ b/src/generated/resources/data/occultism/loot_modifiers/datura_seed_from_tall_grass.json @@ -1,13 +1,13 @@ { "type": "occultism:add_item", - "neoforge:conditions": [ + "conditions": [ { - "condition": "minecraft:random_chance", - "chance": 0.02 + "chance": 0.02, + "condition": "minecraft:random_chance" }, { - "condition": "block_state_property", - "block": "minecraft:tall_grass" + "block": "minecraft:tall_grass", + "condition": "minecraft:block_state_property" }, { "condition": "minecraft:inverted", @@ -19,6 +19,6 @@ } } ], - "item": "occultism:datura_seeds", - "count": 1 -} + "count": 1, + "item": "occultism:datura_seeds" +} \ No newline at end of file diff --git a/src/main/resources/data/occultism/loot_modifiers/tallow_from_cows.json b/src/generated/resources/data/occultism/loot_modifiers/tallow_from_cows.json similarity index 85% rename from src/main/resources/data/occultism/loot_modifiers/tallow_from_cows.json rename to src/generated/resources/data/occultism/loot_modifiers/tallow_from_cows.json index 0c600dd27..2655544cf 100644 --- a/src/main/resources/data/occultism/loot_modifiers/tallow_from_cows.json +++ b/src/generated/resources/data/occultism/loot_modifiers/tallow_from_cows.json @@ -1,6 +1,6 @@ { "type": "occultism:add_item", - "neoforge:conditions": [ + "conditions": [ { "condition": "minecraft:entity_properties", "entity": "killer", @@ -20,6 +20,6 @@ } } ], - "item": "occultism:tallow", - "count": 4 + "count": 4, + "item": "occultism:tallow" } \ No newline at end of file diff --git a/src/main/resources/data/occultism/loot_modifiers/tallow_from_donkeys.json b/src/generated/resources/data/occultism/loot_modifiers/tallow_from_donkeys.json similarity index 85% rename from src/main/resources/data/occultism/loot_modifiers/tallow_from_donkeys.json rename to src/generated/resources/data/occultism/loot_modifiers/tallow_from_donkeys.json index 097deaaaf..55c744212 100644 --- a/src/main/resources/data/occultism/loot_modifiers/tallow_from_donkeys.json +++ b/src/generated/resources/data/occultism/loot_modifiers/tallow_from_donkeys.json @@ -1,6 +1,6 @@ { "type": "occultism:add_item", - "neoforge:conditions": [ + "conditions": [ { "condition": "minecraft:entity_properties", "entity": "killer", @@ -20,6 +20,6 @@ } } ], - "item": "occultism:tallow", - "count": 3 + "count": 3, + "item": "occultism:tallow" } \ No newline at end of file diff --git a/src/main/resources/data/occultism/loot_modifiers/tallow_from_goats.json b/src/generated/resources/data/occultism/loot_modifiers/tallow_from_goats.json similarity index 85% rename from src/main/resources/data/occultism/loot_modifiers/tallow_from_goats.json rename to src/generated/resources/data/occultism/loot_modifiers/tallow_from_goats.json index b822d0ed4..bfb217f91 100644 --- a/src/main/resources/data/occultism/loot_modifiers/tallow_from_goats.json +++ b/src/generated/resources/data/occultism/loot_modifiers/tallow_from_goats.json @@ -1,6 +1,6 @@ { "type": "occultism:add_item", - "neoforge:conditions": [ + "conditions": [ { "condition": "minecraft:entity_properties", "entity": "killer", @@ -20,6 +20,6 @@ } } ], - "item": "occultism:tallow", - "count": 2 + "count": 2, + "item": "occultism:tallow" } \ No newline at end of file diff --git a/src/main/resources/data/occultism/loot_modifiers/tallow_from_hoglins.json b/src/generated/resources/data/occultism/loot_modifiers/tallow_from_hoglins.json similarity index 85% rename from src/main/resources/data/occultism/loot_modifiers/tallow_from_hoglins.json rename to src/generated/resources/data/occultism/loot_modifiers/tallow_from_hoglins.json index 6701881ad..1ea5cfd2f 100644 --- a/src/main/resources/data/occultism/loot_modifiers/tallow_from_hoglins.json +++ b/src/generated/resources/data/occultism/loot_modifiers/tallow_from_hoglins.json @@ -1,6 +1,6 @@ { "type": "occultism:add_item", - "neoforge:conditions": [ + "conditions": [ { "condition": "minecraft:entity_properties", "entity": "killer", @@ -20,6 +20,6 @@ } } ], - "item": "occultism:tallow", - "count": 4 + "count": 4, + "item": "occultism:tallow" } \ No newline at end of file diff --git a/src/main/resources/data/occultism/loot_modifiers/tallow_from_horses.json b/src/generated/resources/data/occultism/loot_modifiers/tallow_from_horses.json similarity index 85% rename from src/main/resources/data/occultism/loot_modifiers/tallow_from_horses.json rename to src/generated/resources/data/occultism/loot_modifiers/tallow_from_horses.json index 4c63d93c5..a0b36d1bc 100644 --- a/src/main/resources/data/occultism/loot_modifiers/tallow_from_horses.json +++ b/src/generated/resources/data/occultism/loot_modifiers/tallow_from_horses.json @@ -1,6 +1,6 @@ { "type": "occultism:add_item", - "neoforge:conditions": [ + "conditions": [ { "condition": "minecraft:entity_properties", "entity": "killer", @@ -20,6 +20,6 @@ } } ], - "item": "occultism:tallow", - "count": 3 + "count": 3, + "item": "occultism:tallow" } \ No newline at end of file diff --git a/src/main/resources/data/occultism/loot_modifiers/tallow_from_llamas.json b/src/generated/resources/data/occultism/loot_modifiers/tallow_from_llamas.json similarity index 85% rename from src/main/resources/data/occultism/loot_modifiers/tallow_from_llamas.json rename to src/generated/resources/data/occultism/loot_modifiers/tallow_from_llamas.json index a393c6225..3d7d2cc1c 100644 --- a/src/main/resources/data/occultism/loot_modifiers/tallow_from_llamas.json +++ b/src/generated/resources/data/occultism/loot_modifiers/tallow_from_llamas.json @@ -1,6 +1,6 @@ { "type": "occultism:add_item", - "neoforge:conditions": [ + "conditions": [ { "condition": "minecraft:entity_properties", "entity": "killer", @@ -20,6 +20,6 @@ } } ], - "item": "occultism:tallow", - "count": 3 + "count": 3, + "item": "occultism:tallow" } \ No newline at end of file diff --git a/src/main/resources/data/occultism/loot_modifiers/tallow_from_mules.json b/src/generated/resources/data/occultism/loot_modifiers/tallow_from_mules.json similarity index 85% rename from src/main/resources/data/occultism/loot_modifiers/tallow_from_mules.json rename to src/generated/resources/data/occultism/loot_modifiers/tallow_from_mules.json index d5348fef3..86da09f39 100644 --- a/src/main/resources/data/occultism/loot_modifiers/tallow_from_mules.json +++ b/src/generated/resources/data/occultism/loot_modifiers/tallow_from_mules.json @@ -1,6 +1,6 @@ { "type": "occultism:add_item", - "neoforge:conditions": [ + "conditions": [ { "condition": "minecraft:entity_properties", "entity": "killer", @@ -20,6 +20,6 @@ } } ], - "item": "occultism:tallow", - "count": 3 + "count": 3, + "item": "occultism:tallow" } \ No newline at end of file diff --git a/src/main/resources/data/occultism/loot_modifiers/tallow_from_pandas.json b/src/generated/resources/data/occultism/loot_modifiers/tallow_from_pandas.json similarity index 85% rename from src/main/resources/data/occultism/loot_modifiers/tallow_from_pandas.json rename to src/generated/resources/data/occultism/loot_modifiers/tallow_from_pandas.json index 898e48117..291fe5af9 100644 --- a/src/main/resources/data/occultism/loot_modifiers/tallow_from_pandas.json +++ b/src/generated/resources/data/occultism/loot_modifiers/tallow_from_pandas.json @@ -1,6 +1,6 @@ { "type": "occultism:add_item", - "neoforge:conditions": [ + "conditions": [ { "condition": "minecraft:entity_properties", "entity": "killer", @@ -20,6 +20,6 @@ } } ], - "item": "occultism:tallow", - "count": 3 + "count": 3, + "item": "occultism:tallow" } \ No newline at end of file diff --git a/src/main/resources/data/occultism/loot_modifiers/tallow_from_pigs.json b/src/generated/resources/data/occultism/loot_modifiers/tallow_from_pigs.json similarity index 85% rename from src/main/resources/data/occultism/loot_modifiers/tallow_from_pigs.json rename to src/generated/resources/data/occultism/loot_modifiers/tallow_from_pigs.json index 05514e230..1710d18d3 100644 --- a/src/main/resources/data/occultism/loot_modifiers/tallow_from_pigs.json +++ b/src/generated/resources/data/occultism/loot_modifiers/tallow_from_pigs.json @@ -1,6 +1,6 @@ { "type": "occultism:add_item", - "neoforge:conditions": [ + "conditions": [ { "condition": "minecraft:entity_properties", "entity": "killer", @@ -20,6 +20,6 @@ } } ], - "item": "occultism:tallow", - "count": 2 + "count": 2, + "item": "occultism:tallow" } \ No newline at end of file diff --git a/src/main/resources/data/occultism/loot_modifiers/tallow_from_sheep.json b/src/generated/resources/data/occultism/loot_modifiers/tallow_from_sheep.json similarity index 85% rename from src/main/resources/data/occultism/loot_modifiers/tallow_from_sheep.json rename to src/generated/resources/data/occultism/loot_modifiers/tallow_from_sheep.json index 6984b664d..b1dbf84c1 100644 --- a/src/main/resources/data/occultism/loot_modifiers/tallow_from_sheep.json +++ b/src/generated/resources/data/occultism/loot_modifiers/tallow_from_sheep.json @@ -1,6 +1,6 @@ { "type": "occultism:add_item", - "neoforge:conditions": [ + "conditions": [ { "condition": "minecraft:entity_properties", "entity": "killer", @@ -20,6 +20,6 @@ } } ], - "item": "occultism:tallow", - "count": 2 + "count": 2, + "item": "occultism:tallow" } \ No newline at end of file diff --git a/src/main/java/com/klikli_dev/occultism/datagen/DataGenerators.java b/src/main/java/com/klikli_dev/occultism/datagen/DataGenerators.java index c9a055265..1d10e7ac3 100644 --- a/src/main/java/com/klikli_dev/occultism/datagen/DataGenerators.java +++ b/src/main/java/com/klikli_dev/occultism/datagen/DataGenerators.java @@ -26,6 +26,7 @@ import com.klikli_dev.occultism.datagen.lang.ENUSProvider; import com.klikli_dev.occultism.datagen.loot.OccultismBlockLoot; import com.klikli_dev.occultism.datagen.loot.OccultismEntityLoot; +import com.klikli_dev.occultism.datagen.loot.OccultismLootModifiers; import com.klikli_dev.occultism.datagen.worldgen.OccultismRegistries; import com.klikli_dev.theurgy.datagen.advancement.TheurgyAdvancementSubProvider; import net.minecraft.data.DataGenerator; @@ -62,7 +63,7 @@ public static void gatherData(GatherDataEvent event) { generator.addProvider(event.includeServer(), new MinerRecipeProvider(generator.getPackOutput())); generator.addProvider(event.includeClient(), new ItemModelsGenerator(generator.getPackOutput(), event.getExistingFileHelper())); generator.addProvider(event.includeClient(), new StandardBlockStateProvider(generator.getPackOutput(), event.getExistingFileHelper())); - + generator.addProvider(event.includeClient(), new OccultismLootModifiers(generator.getPackOutput())); var enUSProvider = new ENUSProvider(generator.getPackOutput()); generator.addProvider(event.includeServer(), new OccultismBookProvider(generator.getPackOutput(), Occultism.MODID, enUSProvider)); diff --git a/src/main/java/com/klikli_dev/occultism/datagen/loot/OccultismLootModifiers.java b/src/main/java/com/klikli_dev/occultism/datagen/loot/OccultismLootModifiers.java new file mode 100644 index 000000000..f2d9940c1 --- /dev/null +++ b/src/main/java/com/klikli_dev/occultism/datagen/loot/OccultismLootModifiers.java @@ -0,0 +1,77 @@ +package com.klikli_dev.occultism.datagen.loot; + +import com.klikli_dev.occultism.Occultism; +import com.klikli_dev.occultism.loot.AddItemModifier; +import com.klikli_dev.occultism.registry.OccultismItems; +import com.klikli_dev.occultism.registry.OccultismTags; +import net.minecraft.advancements.critereon.*; +import net.minecraft.data.PackOutput; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.EntityTypeTags; +import net.minecraft.tags.ItemTags; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.storage.loot.LootContext; +import net.minecraft.world.level.storage.loot.predicates.*; +import net.neoforged.neoforge.common.Tags; +import net.neoforged.neoforge.common.data.GlobalLootModifierProvider; +import net.neoforged.neoforge.common.data.internal.NeoForgeItemTagsProvider; +import net.neoforged.neoforge.common.loot.IGlobalLootModifier; +import net.neoforged.neoforge.common.loot.LootTableIdCondition; + +import java.util.Optional; + +public class OccultismLootModifiers extends GlobalLootModifierProvider { + + public OccultismLootModifiers(PackOutput output) { + super(output, Occultism.MODID); + } + + private EntityEquipmentPredicate mainHand(ItemPredicate.Builder itemPredicate) { + EntityEquipmentPredicate.Builder builder = EntityEquipmentPredicate.Builder.equipment(); + builder.mainhand(itemPredicate); + return builder.build(); + } + + private AddItemModifier tallow(String entityType, int count ) { + return new AddItemModifier( + new LootItemCondition[]{ + LootItemEntityPropertyCondition + .hasProperties(LootContext.EntityTarget.KILLER, + EntityPredicate.Builder.entity() + .equipment(mainHand(ItemPredicate.Builder.item().of(OccultismTags.makeItemTag(new ResourceLocation(Occultism.MODID,"tools/knives")))))).build(), + LootItemEntityPropertyCondition + .hasProperties(LootContext.EntityTarget.THIS,EntityPredicate.Builder.entity().of(OccultismTags.makeEntityTypeTag(new ResourceLocation("forge",entityType)))).build() + },OccultismItems.TALLOW.get(),count); + } + + @Override + protected void start() { + this.add("datura_seed_from_grass", new AddItemModifier(new LootItemCondition[]{ + new LootItemRandomChanceCondition(0.02f), + LootItemBlockStatePropertyCondition.hasBlockStateProperties(Blocks.SHORT_GRASS).build(), + new InvertedLootItemCondition( + MatchTool.toolMatches(ItemPredicate.Builder.item().of(Tags.Items.SHEARS)).build() + ) + }, OccultismItems.DATURA_SEEDS.get(),1)); + + this.add("datura_seed_from_tall_grass",new AddItemModifier(new LootItemCondition[]{ + new LootItemRandomChanceCondition(0.02f), + LootItemBlockStatePropertyCondition.hasBlockStateProperties(Blocks.TALL_GRASS).build(), + new InvertedLootItemCondition( + MatchTool.toolMatches(ItemPredicate.Builder.item().of(Tags.Items.SHEARS)).build() + ) + }, OccultismItems.DATURA_SEEDS.get(),1)); + this.add("tallow_from_cows",tallow("cows",4)); + this.add("tallow_from_donkeys",tallow("donkeys",3)); + this.add("tallow_from_goats",tallow("goats",2)); + this.add("tallow_from_hoglins",tallow("hoglins",4)); + this.add("tallow_from_horses",tallow("horses",3)); + this.add("tallow_from_llamas",tallow("llamas",3)); + this.add("tallow_from_mules",tallow("mules",3)); + this.add("tallow_from_pandas",tallow("pandas",3)); + this.add("tallow_from_pigs",tallow("pigs",2)); + this.add("tallow_from_sheep",tallow("sheep",2)); + } +} diff --git a/src/main/java/com/klikli_dev/occultism/loot/AddItemModifier.java b/src/main/java/com/klikli_dev/occultism/loot/AddItemModifier.java index dd6279eae..5c6433d2c 100644 --- a/src/main/java/com/klikli_dev/occultism/loot/AddItemModifier.java +++ b/src/main/java/com/klikli_dev/occultism/loot/AddItemModifier.java @@ -51,7 +51,7 @@ public class AddItemModifier extends LootModifier { private final Item addedItem; private final int count; - protected AddItemModifier(LootItemCondition[] conditionsIn, Item addedItemIn, int count) { + public AddItemModifier(LootItemCondition[] conditionsIn, Item addedItemIn, int count) { super(conditionsIn); this.addedItem = addedItemIn; this.count = count;