Skip to content

Commit fcb0d37

Browse files
committed
Merge remote-tracking branch 'origin/master-1.20-lts' into master-1.21-lts
2 parents e87581a + b4fba33 commit fcb0d37

2 files changed

Lines changed: 36 additions & 1 deletion

File tree

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package org.cyclops.integratedscripting.api.evaluate.translation;
2+
3+
import net.neoforged.fml.ModContainer;
4+
import net.neoforged.fml.event.lifecycle.ModLifecycleEvent;
5+
6+
/**
7+
* This event is emitted on the mod lifecycle bus.
8+
* @author rubensworks
9+
*/
10+
public class ValueTranslatorRegisterEvent extends ModLifecycleEvent {
11+
12+
private final IValueTranslatorRegistry registry;
13+
14+
public ValueTranslatorRegisterEvent(ModContainer container, IValueTranslatorRegistry registry) {
15+
super(container);
16+
this.registry = registry;
17+
}
18+
19+
public IValueTranslatorRegistry getRegistry() {
20+
return registry;
21+
}
22+
}

src/main/java/org/cyclops/integratedscripting/evaluate/translation/ValueTranslators.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package org.cyclops.integratedscripting.evaluate.translation;
22

3+
import net.neoforged.fml.ModList;
4+
import net.neoforged.fml.javafmlmod.FMLModContainer;
35
import org.cyclops.cyclopscore.helper.MinecraftHelpers;
46
import org.cyclops.integrateddynamics.core.evaluate.variable.ValueTypes;
57
import org.cyclops.integratedscripting.IntegratedScripting;
68
import org.cyclops.integratedscripting.api.evaluate.translation.IValueTranslatorRegistry;
9+
import org.cyclops.integratedscripting.api.evaluate.translation.ValueTranslatorRegisterEvent;
710
import org.cyclops.integratedscripting.evaluate.translation.translator.*;
811

912
/**
@@ -16,7 +19,7 @@ public class ValueTranslators {
1619

1720
private static IValueTranslatorRegistry constructRegistry() {
1821
// This also allows this registry to be used outside of a minecraft environment.
19-
if(MinecraftHelpers.isModdedEnvironment()) {
22+
if (MinecraftHelpers.isModdedEnvironment()) {
2023
return IntegratedScripting._instance.getRegistryManager().getRegistry(IValueTranslatorRegistry.class);
2124
} else {
2225
return ValueTranslatorRegistry.getInstance();
@@ -41,6 +44,16 @@ public static void load() {
4144
REGISTRY.register(new ValueTranslatorObjectAdapter<>("id_ingredients", ValueTypes.OBJECT_INGREDIENTS));
4245
REGISTRY.register(new ValueTranslatorObjectAdapter<>("id_recipe", ValueTypes.OBJECT_RECIPE));
4346

47+
// Allow others mod to register translators
48+
if (MinecraftHelpers.isModdedEnvironment()) {
49+
ValueTranslatorRegisterEvent registerEvent = new ValueTranslatorRegisterEvent(IntegratedScripting._instance.getContainer(), REGISTRY);
50+
ModList.get().forEachModContainer((name, container) -> {
51+
if (container instanceof FMLModContainer fmlModContainer) {
52+
fmlModContainer.getEventBus().post(registerEvent);
53+
}
54+
});
55+
}
56+
4457
// NBT has last priority
4558
REGISTRY.register(TRANSLATOR_NBT = new ValueTranslatorNbt());
4659
}

0 commit comments

Comments
 (0)