From be7d7ed46e41bed757b020c49f29cce5a67df3d7 Mon Sep 17 00:00:00 2001 From: gnembon Date: Sat, 20 Jun 2020 23:29:50 -0300 Subject: [PATCH 1/3] moving loading of scripts to after worlds are loaded, fixes #331 --- src/main/java/carpet/CarpetExtension.java | 11 ++++++++++- src/main/java/carpet/CarpetServer.java | 7 ++++++- .../java/carpet/mixins/MinecraftServer_coreMixin.java | 7 ++++++- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/main/java/carpet/CarpetExtension.java b/src/main/java/carpet/CarpetExtension.java index 499c6c9e..6e630738 100644 --- a/src/main/java/carpet/CarpetExtension.java +++ b/src/main/java/carpet/CarpetExtension.java @@ -16,11 +16,18 @@ public interface CarpetExtension default void onGameStarted() {} /** - * Runs once per loaded world once the World files / gamerules etc are fully loaded + * Runs once per loaded world once the server / gamerules etc are fully loaded + * but before worlds are loaded * Can be loaded multiple times in SinglePlayer */ default void onServerLoaded(MinecraftServer server) {} + /** + * Runs once per loaded world once the World files are fully loaded + * Can be loaded multiple times in SinglePlayer + */ + default void onServerLoadedWorlds(MinecraftServer server) {} + /** * Runs once per game tick, as a first thing in the tick */ @@ -55,4 +62,6 @@ public interface CarpetExtension default void registerLoggers() {} default Map canHasTranslations(String lang) { return null;} + + } diff --git a/src/main/java/carpet/CarpetServer.java b/src/main/java/carpet/CarpetServer.java index 85b6d31e..57afe91e 100644 --- a/src/main/java/carpet/CarpetServer.java +++ b/src/main/java/carpet/CarpetServer.java @@ -58,12 +58,17 @@ public class CarpetServer // static for now - easier to handle all around the co e.onServerLoaded(server); }); scriptServer = new CarpetScriptServer(server); - scriptServer.loadAllWorldScripts(); MobAI.resetTrackers(); LoggerRegistry.initLoggers(); //TickSpeed.reset(); } + public static void onServerLoadedWorlds(MinecraftServer minecraftServer) + { + extensions.forEach(e -> e.onServerLoadedWorlds(minecraftServer)); + scriptServer.loadAllWorldScripts(); + } + public static void tick(MinecraftServer server) { TickSpeed.tick(server); diff --git a/src/main/java/carpet/mixins/MinecraftServer_coreMixin.java b/src/main/java/carpet/mixins/MinecraftServer_coreMixin.java index b11f9d8c..d1927c4e 100644 --- a/src/main/java/carpet/mixins/MinecraftServer_coreMixin.java +++ b/src/main/java/carpet/mixins/MinecraftServer_coreMixin.java @@ -31,13 +31,18 @@ public abstract class MinecraftServer_coreMixin CarpetServer.tick((MinecraftServer) (Object) this); } - // Dedicated server only @Inject(method = "loadWorld", at = @At("HEAD")) private void serverLoaded(String string_1, String string_2, long long_1, LevelGeneratorType levelGeneratorType_1, JsonElement jsonElement_1, CallbackInfo ci) { CarpetServer.onServerLoaded((MinecraftServer) (Object) this); } + @Inject(method = "loadWorld", at = @At("RETURN")) + private void serverLoadedWorlds(String string_1, String string_2, long long_1, LevelGeneratorType levelGeneratorType_1, JsonElement jsonElement_1, CallbackInfo ci) + { + CarpetServer.onServerLoadedWorlds((MinecraftServer) (Object) this); + } + @Inject(method = "shutdown", at = @At("HEAD")) private void serverClosed(CallbackInfo ci) { From aea09c9718d48ab723b5b00c73eb29089b75fab2 Mon Sep 17 00:00:00 2001 From: gnembon Date: Sat, 20 Jun 2020 23:30:15 -0300 Subject: [PATCH 2/3] removing stupid warning --- .../mixins/BlazeEntityShootFireballGoal_extremeMixin.java | 2 +- src/main/resources/carpet.accesswidener | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/carpet/mixins/BlazeEntityShootFireballGoal_extremeMixin.java b/src/main/java/carpet/mixins/BlazeEntityShootFireballGoal_extremeMixin.java index e0cebe60..0d5362ca 100644 --- a/src/main/java/carpet/mixins/BlazeEntityShootFireballGoal_extremeMixin.java +++ b/src/main/java/carpet/mixins/BlazeEntityShootFireballGoal_extremeMixin.java @@ -8,7 +8,7 @@ import org.spongepowered.asm.mixin.injection.Redirect; import java.util.Random; -@Mixin(targets = "net.minecraft.entity.mob.BlazeEntity$ShootFireballGoal") +@Mixin(BlazeEntity.ShootFireballGoal.class) public class BlazeEntityShootFireballGoal_extremeMixin { @Redirect(method = "tick()V", expect = 2, at = @At( diff --git a/src/main/resources/carpet.accesswidener b/src/main/resources/carpet.accesswidener index c03c46bb..81f8ff1d 100644 --- a/src/main/resources/carpet.accesswidener +++ b/src/main/resources/carpet.accesswidener @@ -1,2 +1,3 @@ accessWidener v1 named -Accessible class net/minecraft/recipe/Ingredient$Entry \ No newline at end of file +Accessible class net/minecraft/recipe/Ingredient$Entry +Accessible class net/minecraft/entity/mob/BlazeEntity$ShootFireballGoal \ No newline at end of file From f09744b04e47e67472eb4b2984b3c089cae7c9b8 Mon Sep 17 00:00:00 2001 From: gnembon Date: Sat, 20 Jun 2020 23:42:42 -0300 Subject: [PATCH 3/3] Revert "removing stupid warning" This reverts commit aea09c97 --- .../mixins/BlazeEntityShootFireballGoal_extremeMixin.java | 2 +- src/main/resources/carpet.accesswidener | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/carpet/mixins/BlazeEntityShootFireballGoal_extremeMixin.java b/src/main/java/carpet/mixins/BlazeEntityShootFireballGoal_extremeMixin.java index 0d5362ca..e0cebe60 100644 --- a/src/main/java/carpet/mixins/BlazeEntityShootFireballGoal_extremeMixin.java +++ b/src/main/java/carpet/mixins/BlazeEntityShootFireballGoal_extremeMixin.java @@ -8,7 +8,7 @@ import org.spongepowered.asm.mixin.injection.Redirect; import java.util.Random; -@Mixin(BlazeEntity.ShootFireballGoal.class) +@Mixin(targets = "net.minecraft.entity.mob.BlazeEntity$ShootFireballGoal") public class BlazeEntityShootFireballGoal_extremeMixin { @Redirect(method = "tick()V", expect = 2, at = @At( diff --git a/src/main/resources/carpet.accesswidener b/src/main/resources/carpet.accesswidener index 81f8ff1d..c03c46bb 100644 --- a/src/main/resources/carpet.accesswidener +++ b/src/main/resources/carpet.accesswidener @@ -1,3 +1,2 @@ accessWidener v1 named -Accessible class net/minecraft/recipe/Ingredient$Entry -Accessible class net/minecraft/entity/mob/BlazeEntity$ShootFireballGoal \ No newline at end of file +Accessible class net/minecraft/recipe/Ingredient$Entry \ No newline at end of file