Skip to content

Commit

Permalink
rework reagent data generation
Browse files Browse the repository at this point in the history
  • Loading branch information
dphaldes committed Dec 15, 2024
1 parent fe0d70c commit 7cd6917
Show file tree
Hide file tree
Showing 8 changed files with 105 additions and 126 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,6 @@
"minecraft:sugar_cane": {
"#c:crops": 0.5
},
"minecraft:sunflower": {
"#enderio:sunflower": 1.0
},
"minecraft:torchflower": {
"#enderio:sunflower": 1.2
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
{
"values": [
"minecraft:tnt",
"minecraft:fire_charge",
"minecraft:firework_star",
"minecraft:firework_rocket",
"minecraft:fire_charge"
"minecraft:gunpowder",
"minecraft:tnt"
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
"minecraft:sea_pickle",
"minecraft:glow_ink_sac",
"minecraft:glow_lichen",
"minecraft:glow_berries"
"minecraft:glow_berries",
"minecraft:glowstone",
"minecraft:sea_lantern"
]
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"values": [
"minecraft:sunflower",
"minecraft:torchflower"
"minecraft:torchflower",
"minecraft:sunflower"
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import com.enderio.machines.common.menu.PreviewMachineSlot;
import com.enderio.machines.common.tag.MachineTags;
import com.enderio.machines.data.advancements.MachinesAdvancementGenerator;
import com.enderio.machines.data.reagentdata.ReagentDataProvider;
import com.enderio.machines.data.reagentdata.ReagentProvider;
import com.enderio.machines.data.recipes.AlloyRecipeProvider;
import com.enderio.machines.data.recipes.EnchanterRecipeProvider;
import com.enderio.machines.data.recipes.FermentingRecipeProvider;
Expand Down Expand Up @@ -115,8 +115,8 @@ public static void gatherData(GatherDataEvent event) {
provider.addSubProvider(event.includeServer(), new MachineEntityTypeTagsProvider(packOutput, lookupProvider, event.getExistingFileHelper()));
var b = new MachineBlockTagsProvider(packOutput, lookupProvider, event.getExistingFileHelper());
provider.addSubProvider(event.includeServer(), b);
provider.addSubProvider(event.includeServer(), new ReagentProvider(packOutput, lookupProvider)); // Reagent Data needs to be before ItemTags
provider.addSubProvider(event.includeServer(), new MachineItemTagsProvider(packOutput, lookupProvider, b.contentsGetter(), event.getExistingFileHelper()));
provider.addSubProvider(event.includeServer(), new ReagentDataProvider(packOutput, lookupProvider, event.getExistingFileHelper()));

generator.addProvider(true, provider);
provider.addSubProvider(event.includeServer(), new AdvancementProvider(packOutput, event.getLookupProvider(), event.getExistingFileHelper(),
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package com.enderio.machines.data.reagentdata;

import com.enderio.machines.common.datamap.VatReagent;
import com.enderio.machines.common.tag.MachineTags;
import com.enderio.machines.data.tag.MachineItemTagsProvider;
import net.minecraft.core.HolderLookup;
import net.minecraft.data.PackOutput;
import net.minecraft.tags.TagKey;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.Items;
import net.neoforged.neoforge.common.Tags;
import net.neoforged.neoforge.common.data.DataMapProvider;

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.CompletableFuture;

public class ReagentProvider extends DataMapProvider {

private final Map<Item, Map<TagKey<Item>, Double>> dataMap = new HashMap<>();

public ReagentProvider(PackOutput packOutput, CompletableFuture<HolderLookup.Provider> lookupProvider) {
super(packOutput, lookupProvider);
}

protected void gather() {
reagent(Items.SUGAR_CANE, Tags.Items.CROPS, 0.5D);

reagent(Items.GLOWSTONE_DUST, MachineTags.ItemTags.NATURAL_LIGHTS, 0.25D);
reagent(Items.SEA_PICKLE, MachineTags.ItemTags.NATURAL_LIGHTS, 0.25D);
reagent(Items.GLOW_INK_SAC, MachineTags.ItemTags.NATURAL_LIGHTS, 0.5D);
reagent(Items.GLOW_LICHEN, MachineTags.ItemTags.NATURAL_LIGHTS, 0.20D);
reagent(Items.GLOW_BERRIES, MachineTags.ItemTags.NATURAL_LIGHTS, 0.15D);

reagent(Items.FIRE_CHARGE, MachineTags.ItemTags.EXPLOSIVES, 0.5D);
reagent(Items.FIREWORK_STAR, MachineTags.ItemTags.EXPLOSIVES, 0.4D);
reagent(Items.FIREWORK_ROCKET, MachineTags.ItemTags.EXPLOSIVES, 0.4D);
reagent(Items.GUNPOWDER, MachineTags.ItemTags.EXPLOSIVES, 0.25D);

reagent(Items.TORCHFLOWER, MachineTags.ItemTags.SUNFLOWER, 1.2D);

var builder = builder(VatReagent.DATA_MAP);
dataMap.forEach((item, map) -> {
builder.add(item.builtInRegistryHolder(), map, false);
});
}

public void reagent(Item item, TagKey<Item> tag, double value) {
MachineItemTagsProvider.tag(tag, item);
reagentValue(tag, item, value);
}

public void reagentValue(TagKey<Item> tag, Item item, double value) {
dataMap.computeIfAbsent(item, it -> new HashMap<>()).put(tag, value);
}

@Override
public String getName() {
return "Fermenting Reagent Datamaps";
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,52 @@
import net.minecraft.core.HolderLookup;
import net.minecraft.data.PackOutput;
import net.minecraft.data.tags.ItemTagsProvider;
import net.minecraft.tags.TagKey;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.Items;
import net.minecraft.world.level.block.Block;
import net.neoforged.neoforge.common.data.ExistingFileHelper;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;

public class MachineItemTagsProvider extends ItemTagsProvider {

private static final Map<TagKey<Item>, List<Item>> tags = new HashMap<>();

public MachineItemTagsProvider(PackOutput output, CompletableFuture<HolderLookup.Provider> lookupProvider, CompletableFuture<TagLookup<Block>> blockTags, ExistingFileHelper existingFileHelper) {
super(output, lookupProvider, blockTags, EnderIOBase.REGISTRY_NAMESPACE, existingFileHelper);
}

@Override
protected void addTags(HolderLookup.Provider provider) {
tag(MachineTags.ItemTags.EXPLOSIVES).add(Items.TNT, Items.FIREWORK_STAR, Items.FIREWORK_ROCKET, Items.FIRE_CHARGE);
tag(MachineTags.ItemTags.NATURAL_LIGHTS).add(Items.GLOWSTONE_DUST, Items.GLOWSTONE, Items.SEA_LANTERN, Items.SEA_PICKLE, Items.GLOW_LICHEN, Items.GLOW_BERRIES, Items.GLOW_INK_SAC);
tag(MachineTags.ItemTags.SUNFLOWER).add(Items.SUNFLOWER);
tag(MachineTags.ItemTags.BLAZE_POWDER).add(Items.BLAZE_POWDER);
tag(MachineTags.ItemTags.EXPLOSIVES, Items.TNT, Items.FIREWORK_STAR, Items.FIREWORK_ROCKET, Items.FIRE_CHARGE);
tag(MachineTags.ItemTags.NATURAL_LIGHTS, Items.GLOWSTONE_DUST, Items.GLOWSTONE, Items.SEA_LANTERN, Items.SEA_PICKLE, Items.GLOW_LICHEN, Items.GLOW_BERRIES, Items.GLOW_INK_SAC);
tag(MachineTags.ItemTags.SUNFLOWER, Items.SUNFLOWER);
tag(MachineTags.ItemTags.BLAZE_POWDER, Items.BLAZE_POWDER);

tags.forEach((key, list) -> {
var holder = tag(key);
list.forEach(holder::add);
}
);
}

// helpers for tags. since tags can be added by external files, this prevents duplicates.
public static void tag(TagKey<Item> tag, Item item) {
var items = tags.computeIfAbsent(tag, t -> new ArrayList<>());
if(!items.contains(item))
items.add(item);
}

public static void tag(TagKey<Item> tag, Item ... itemList) {
var items = tags.computeIfAbsent(tag, t -> new ArrayList<>());
for (Item item: itemList) {
if(!items.contains(item))
items.add(item);
}
}
}

0 comments on commit 7cd6917

Please sign in to comment.