Skip to content

Commit 780413a

Browse files
committed
Allow searching by mekasuit piece/mekatool in EMI to display supported modules (mekanism/Mekanism-Feature-Requests#688)
1 parent 8969df7 commit 780413a

File tree

8 files changed

+205
-6
lines changed

8 files changed

+205
-6
lines changed

src/datagen/generated/mekanism/.cache/c2007283a832f570d2167eeffdb50ecb2f811654

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/datagen/generated/mekanism/assets/emi/aliases/mekanism.json

Lines changed: 145 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/datagen/generated/mekanismgenerators/.cache/94507507da148bcdf0ef759163aca13369d21ac5

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/datagen/generated/mekanismgenerators/assets/emi/aliases/mekanismgenerators.json

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/datagen/generators/java/mekanism/generators/client/integration/emi/GeneratorsEmiAliasProvider.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
import mekanism.generators.client.integration.GeneratorsAliases;
1212
import mekanism.generators.common.MekanismGenerators;
1313
import mekanism.generators.common.registries.GeneratorsBlocks;
14-
import mekanism.generators.common.registries.GeneratorsFluids;
1514
import mekanism.generators.common.registries.GeneratorsChemicals;
15+
import mekanism.generators.common.registries.GeneratorsFluids;
1616
import mekanism.generators.common.registries.GeneratorsItems;
1717
import net.minecraft.core.HolderLookup;
1818
import net.minecraft.data.PackOutput;
@@ -29,6 +29,7 @@ protected void addAliases(HolderLookup.Provider lookupProvider) {
2929
addChemicalAliases();
3030
addMultiblockAliases();
3131
addAliases(GeneratorsBlocks.GAS_BURNING_GENERATOR, GeneratorsAliases.GBG_ETHENE, GeneratorsAliases.GBG_ETHYLENE);
32+
addModuleAliases(GeneratorsItems.ITEMS);
3233
}
3334

3435
private void addChemicalAliases() {

src/datagen/main/java/mekanism/client/integration/emi/BaseEmiAliasProvider.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,16 @@
2323
import java.util.function.Function;
2424
import mekanism.api.SerializationConstants;
2525
import mekanism.api.annotations.NothingNullByDefault;
26+
import mekanism.api.gear.IModuleHelper;
2627
import mekanism.api.providers.IChemicalProvider;
2728
import mekanism.api.providers.IFluidProvider;
2829
import mekanism.api.text.IHasTranslationKey;
2930
import mekanism.client.recipe_viewer.emi.ChemicalEmiStack;
3031
import mekanism.common.DataGenSerializationConstants;
32+
import mekanism.common.content.gear.IModuleItem;
3133
import mekanism.common.integration.MekanismHooks;
3234
import mekanism.common.lib.collection.HashList;
35+
import mekanism.common.registration.impl.ItemDeferredRegister;
3336
import net.minecraft.core.HolderLookup;
3437
import net.minecraft.data.CachedOutput;
3538
import net.minecraft.data.DataProvider;
@@ -38,7 +41,9 @@
3841
import net.minecraft.data.PackOutput.Target;
3942
import net.minecraft.resources.ResourceLocation;
4043
import net.minecraft.util.ExtraCodecs;
44+
import net.minecraft.world.item.Item;
4145
import net.minecraft.world.level.ItemLike;
46+
import net.neoforged.neoforge.registries.DeferredHolder;
4247

4348
@NothingNullByDefault
4449
public abstract class BaseEmiAliasProvider implements DataProvider {
@@ -125,6 +130,18 @@ protected void addAliases(List<EmiIngredient> stacks, IHasTranslationKey... alia
125130
}
126131
}
127132

133+
protected void addModuleAliases(ItemDeferredRegister items) {
134+
for (DeferredHolder<Item, ? extends Item> entry : items.getEntries()) {
135+
if (entry.get() instanceof IModuleItem module) {
136+
addAliases(entry.get(), IModuleHelper.INSTANCE.getSupported(module.getModuleData())
137+
.stream()
138+
.map(item -> (IHasTranslationKey) item::getDescriptionId)
139+
.toArray(IHasTranslationKey[]::new)
140+
);
141+
}
142+
}
143+
}
144+
128145
@Override
129146
public String getName() {
130147
return "EMI Alias Provider: " + modid;

src/datagen/main/java/mekanism/client/integration/emi/MekanismEmiAliasProvider.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
import mekanism.common.item.block.ItemBlockEnergyCube;
1313
import mekanism.common.registration.impl.BlockRegistryObject;
1414
import mekanism.common.registries.MekanismBlocks;
15-
import mekanism.common.registries.MekanismFluids;
1615
import mekanism.common.registries.MekanismChemicals;
16+
import mekanism.common.registries.MekanismFluids;
1717
import mekanism.common.registries.MekanismItems;
1818
import mekanism.common.resource.IResource;
1919
import mekanism.common.tier.FactoryTier;
@@ -77,6 +77,8 @@ private void addUnitAliases() {
7777
addAliases(MekanismItems.MODULE_MOTORIZED_SERVO, getTranslationKey(Enchantments.SWIFT_SNEAK));
7878
addAliases(MekanismItems.MODULE_LOCOMOTIVE_BOOSTING, MobEffects.MOVEMENT_SPEED.value()::getDescriptionId);
7979
addAliases(MekanismItems.MODULE_SOUL_SURFER, getTranslationKey(Enchantments.SOUL_SPEED));
80+
81+
addModuleAliases(MekanismItems.ITEMS);
8082
}
8183

8284
private IHasTranslationKey getTranslationKey(ResourceKey<Enchantment> enchantmentKey) {

src/datagen/main/java/mekanism/common/MekanismDataGenerator.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,10 @@
1212
import java.lang.reflect.Constructor;
1313
import java.lang.reflect.Method;
1414
import java.nio.file.Path;
15+
import java.util.ArrayList;
1516
import java.util.EnumMap;
1617
import java.util.LinkedHashMap;
18+
import java.util.List;
1719
import java.util.Set;
1820
import java.util.concurrent.CompletableFuture;
1921
import java.util.function.Function;
@@ -37,10 +39,15 @@
3739
import net.minecraft.data.DataProvider;
3840
import net.minecraft.data.PackOutput;
3941
import net.neoforged.bus.api.SubscribeEvent;
42+
import net.neoforged.fml.DeferredWorkQueue;
43+
import net.neoforged.fml.ModContainer;
44+
import net.neoforged.fml.ModList;
4045
import net.neoforged.fml.common.EventBusSubscriber;
4146
import net.neoforged.fml.config.ConfigTracker;
4247
import net.neoforged.fml.config.ModConfig;
4348
import net.neoforged.fml.event.config.ModConfigEvent;
49+
import net.neoforged.fml.event.lifecycle.InterModEnqueueEvent;
50+
import net.neoforged.fml.event.lifecycle.InterModProcessEvent;
4451
import net.neoforged.fml.util.ObfuscationReflectionHelper;
4552
import net.neoforged.neoforge.common.data.ExistingFileHelper;
4653
import net.neoforged.neoforge.data.event.GatherDataEvent;
@@ -72,6 +79,7 @@ private MekanismDataGenerator() {
7279
@SubscribeEvent
7380
public static void gatherData(GatherDataEvent event) {
7481
bootstrapConfigs(Mekanism.MODID);
82+
bootstrapIMC();
7583
DataGenerator gen = event.getGenerator();
7684
PackOutput output = gen.getPackOutput();
7785
ExistingFileHelper existingFileHelper = event.getExistingFileHelper();
@@ -125,6 +133,24 @@ public static void bootstrapConfigs(String modid) {
125133
}
126134
}
127135

136+
private static void bootstrapIMC() {
137+
List<ModContainer> mods = new ArrayList<>();
138+
DeferredWorkQueue enqueueIMC = new DeferredWorkQueue("IMC Bootstrap: Enqueue IMC");
139+
for (ModContainer mod : ModList.get().getSortedMods()) {
140+
//Handle all our modules
141+
if (mod.getModId().startsWith(Mekanism.MODID)) {
142+
mods.add(mod);
143+
mod.getEventBus().post(new InterModEnqueueEvent(mod, enqueueIMC));
144+
}
145+
}
146+
enqueueIMC.runTasks();
147+
DeferredWorkQueue processIMC = new DeferredWorkQueue("IMC Bootstrap: Process IMC");
148+
for (ModContainer mod : mods) {
149+
mod.getEventBus().post(new InterModProcessEvent(mod, processIMC));
150+
}
151+
processIMC.runTasks();
152+
}
153+
128154
/**
129155
* Basically a copy of {@link DataProvider#saveStable(CachedOutput, JsonElement, Path)} but it takes a consumer of the output stream instead of serializes json using
130156
* GSON. Use it to write arbitrary files.

0 commit comments

Comments
 (0)