From 42feb6d4b822f55cb5b319c5185fa57191095025 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Thu, 17 Jun 2021 22:53:31 +0300 Subject: [PATCH] Integrations init fix --- gradle.properties | 2 +- .../java/ru/bclib/api/ModIntegrationAPI.java | 14 +++++++++++--- .../mixin/common/EntrypointServerMixin.java | 19 +++++++++++++++++++ src/main/resources/bclib.mixins.common.json | 1 + 4 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 src/main/java/ru/bclib/mixin/common/EntrypointServerMixin.java diff --git a/gradle.properties b/gradle.properties index bd09ede1..e0e3aef0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ yarn_mappings=6 loader_version=0.11.3 # Mod Properties -mod_version = 0.1.36 +mod_version = 0.1.37 maven_group = ru.bclib archives_base_name = bclib diff --git a/src/main/java/ru/bclib/api/ModIntegrationAPI.java b/src/main/java/ru/bclib/api/ModIntegrationAPI.java index 43f5d249..eff311dc 100644 --- a/src/main/java/ru/bclib/api/ModIntegrationAPI.java +++ b/src/main/java/ru/bclib/api/ModIntegrationAPI.java @@ -16,9 +16,6 @@ public class ModIntegrationAPI { */ public static ModIntegration register(ModIntegration integration) { INTEGRATIONS.add(integration); - if (integration.modIsInstalled()) { - integration.init(); - } return integration; } @@ -29,4 +26,15 @@ public static ModIntegration register(ModIntegration integration) { public static List getIntegrations() { return INTEGRATIONS; } + + /** + * Initialize all integrations, only for internal usage. + */ + public static void registerAll() { + INTEGRATIONS.forEach(integration -> { + if (integration.modIsInstalled()) { + integration.init(); + } + }); + } } diff --git a/src/main/java/ru/bclib/mixin/common/EntrypointServerMixin.java b/src/main/java/ru/bclib/mixin/common/EntrypointServerMixin.java new file mode 100644 index 00000000..fb570e48 --- /dev/null +++ b/src/main/java/ru/bclib/mixin/common/EntrypointServerMixin.java @@ -0,0 +1,19 @@ +package ru.bclib.mixin.common; + +import java.io.File; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import net.fabricmc.loader.entrypoint.minecraft.hooks.EntrypointServer; +import ru.bclib.api.ModIntegrationAPI; + +@Mixin(value = EntrypointServer.class, remap = false) +public class EntrypointServerMixin { + @Inject(method = "start", at = @At(value = "TAIL")) + private static void start(File runDir, Object gameInstance, CallbackInfo info) { + ModIntegrationAPI.registerAll(); + } +} diff --git a/src/main/resources/bclib.mixins.common.json b/src/main/resources/bclib.mixins.common.json index 20e03d8d..b99fbde0 100644 --- a/src/main/resources/bclib.mixins.common.json +++ b/src/main/resources/bclib.mixins.common.json @@ -5,6 +5,7 @@ "compatibilityLevel": "JAVA_8", "mixins": [ "ComposterBlockAccessor", + "EntrypointServerMixin", "PotionBrewingAccessor", "RecipeManagerAccessor", "EnchantmentMenuMixin",