11package org .cyclops .integratedscripting .evaluate .translation ;
22
3+ import net .neoforged .fml .ModList ;
4+ import net .neoforged .fml .javafmlmod .FMLModContainer ;
35import org .cyclops .cyclopscore .helper .MinecraftHelpers ;
46import org .cyclops .integrateddynamics .core .evaluate .variable .ValueTypes ;
57import org .cyclops .integratedscripting .IntegratedScripting ;
68import org .cyclops .integratedscripting .api .evaluate .translation .IValueTranslatorRegistry ;
9+ import org .cyclops .integratedscripting .api .evaluate .translation .ValueTranslatorRegisterEvent ;
710import 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