Skip to content

Commit

Permalink
feat: move Loot modifiers to datagen and modify to neoforge format (#…
Browse files Browse the repository at this point in the history
…1081)

* feat: move Loot modifiers to datagen and modify to neoforge format

* fix: fix seed drop rate and moved mobs to tags.
  • Loading branch information
GaeaKat authored Mar 14, 2024
1 parent 8603c94 commit cca0437
Show file tree
Hide file tree
Showing 16 changed files with 135 additions and 57 deletions.
Original file line number Diff line number Diff line change
@@ -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
}
Original file line number Diff line number Diff line change
@@ -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",
Expand All @@ -19,6 +19,6 @@
}
}
],
"item": "occultism:datura_seeds",
"count": 1
}
"count": 1,
"item": "occultism:datura_seeds"
}
Original file line number Diff line number Diff line change
@@ -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",
Expand All @@ -19,6 +19,6 @@
}
}
],
"item": "occultism:datura_seeds",
"count": 1
}
"count": 1,
"item": "occultism:datura_seeds"
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"type": "occultism:add_item",
"neoforge:conditions": [
"conditions": [
{
"condition": "minecraft:entity_properties",
"entity": "killer",
Expand All @@ -20,6 +20,6 @@
}
}
],
"item": "occultism:tallow",
"count": 4
"count": 4,
"item": "occultism:tallow"
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"type": "occultism:add_item",
"neoforge:conditions": [
"conditions": [
{
"condition": "minecraft:entity_properties",
"entity": "killer",
Expand All @@ -20,6 +20,6 @@
}
}
],
"item": "occultism:tallow",
"count": 3
"count": 3,
"item": "occultism:tallow"
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"type": "occultism:add_item",
"neoforge:conditions": [
"conditions": [
{
"condition": "minecraft:entity_properties",
"entity": "killer",
Expand All @@ -20,6 +20,6 @@
}
}
],
"item": "occultism:tallow",
"count": 2
"count": 2,
"item": "occultism:tallow"
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"type": "occultism:add_item",
"neoforge:conditions": [
"conditions": [
{
"condition": "minecraft:entity_properties",
"entity": "killer",
Expand All @@ -20,6 +20,6 @@
}
}
],
"item": "occultism:tallow",
"count": 4
"count": 4,
"item": "occultism:tallow"
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"type": "occultism:add_item",
"neoforge:conditions": [
"conditions": [
{
"condition": "minecraft:entity_properties",
"entity": "killer",
Expand All @@ -20,6 +20,6 @@
}
}
],
"item": "occultism:tallow",
"count": 3
"count": 3,
"item": "occultism:tallow"
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"type": "occultism:add_item",
"neoforge:conditions": [
"conditions": [
{
"condition": "minecraft:entity_properties",
"entity": "killer",
Expand All @@ -20,6 +20,6 @@
}
}
],
"item": "occultism:tallow",
"count": 3
"count": 3,
"item": "occultism:tallow"
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"type": "occultism:add_item",
"neoforge:conditions": [
"conditions": [
{
"condition": "minecraft:entity_properties",
"entity": "killer",
Expand All @@ -20,6 +20,6 @@
}
}
],
"item": "occultism:tallow",
"count": 3
"count": 3,
"item": "occultism:tallow"
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"type": "occultism:add_item",
"neoforge:conditions": [
"conditions": [
{
"condition": "minecraft:entity_properties",
"entity": "killer",
Expand All @@ -20,6 +20,6 @@
}
}
],
"item": "occultism:tallow",
"count": 3
"count": 3,
"item": "occultism:tallow"
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"type": "occultism:add_item",
"neoforge:conditions": [
"conditions": [
{
"condition": "minecraft:entity_properties",
"entity": "killer",
Expand All @@ -20,6 +20,6 @@
}
}
],
"item": "occultism:tallow",
"count": 2
"count": 2,
"item": "occultism:tallow"
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"type": "occultism:add_item",
"neoforge:conditions": [
"conditions": [
{
"condition": "minecraft:entity_properties",
"entity": "killer",
Expand All @@ -20,6 +20,6 @@
}
}
],
"item": "occultism:tallow",
"count": 2
"count": 2,
"item": "occultism:tallow"
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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));
Expand Down
Original file line number Diff line number Diff line change
@@ -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));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit cca0437

Please sign in to comment.