From ec6677947411d1f3e674d99a01fdce7e25ccd613 Mon Sep 17 00:00:00 2001 From: gnembon Date: Sat, 11 May 2019 01:06:48 -0300 Subject: [PATCH] basic inits --- src/main/java/carpet/CarpetServer.java | 1 - src/main/java/carpet/CarpetSettings.java | 2 +- .../CommandManagerMixin.java | 2 +- .../carpetServer/IntegratedServerMixin.java | 23 ++++++++++++++ .../carpetServer/MinecraftClientMixin.java | 21 +++++++++++++ .../MinecraftDedicatedServerMixin.java | 30 +++++++++++++++++++ .../MinecraftServerMixin.java | 15 ++++++---- src/main/resources/carpet.mixins.json | 9 ++++-- 8 files changed, 93 insertions(+), 10 deletions(-) rename src/main/java/carpet/mixins/{ => carpetServer}/CommandManagerMixin.java (95%) create mode 100644 src/main/java/carpet/mixins/carpetServer/IntegratedServerMixin.java create mode 100644 src/main/java/carpet/mixins/carpetServer/MinecraftClientMixin.java create mode 100644 src/main/java/carpet/mixins/carpetServer/MinecraftDedicatedServerMixin.java rename src/main/java/carpet/mixins/{ => carpetServer}/MinecraftServerMixin.java (79%) diff --git a/src/main/java/carpet/CarpetServer.java b/src/main/java/carpet/CarpetServer.java index b0af8590..b78ec21f 100644 --- a/src/main/java/carpet/CarpetServer.java +++ b/src/main/java/carpet/CarpetServer.java @@ -44,7 +44,6 @@ public class CarpetServer // static for now - easier to handle all around the co public static void tick(MinecraftServer server) { - CarpetSettings.LOG.error("ticking..."); //TickSpeed.tick(server); //HUDController.update_hud(server); } diff --git a/src/main/java/carpet/CarpetSettings.java b/src/main/java/carpet/CarpetSettings.java index 297a5887..3cc88844 100644 --- a/src/main/java/carpet/CarpetSettings.java +++ b/src/main/java/carpet/CarpetSettings.java @@ -221,7 +221,7 @@ public class CarpetSettings private static void notifyPlayersCommandsChanged() { - if (CarpetServer.minecraft_server == null) + if (CarpetServer.minecraft_server == null || CarpetServer.minecraft_server.getPlayerManager() == null) { return; } diff --git a/src/main/java/carpet/mixins/CommandManagerMixin.java b/src/main/java/carpet/mixins/carpetServer/CommandManagerMixin.java similarity index 95% rename from src/main/java/carpet/mixins/CommandManagerMixin.java rename to src/main/java/carpet/mixins/carpetServer/CommandManagerMixin.java index 7f1262e9..4c4fa3de 100644 --- a/src/main/java/carpet/mixins/CommandManagerMixin.java +++ b/src/main/java/carpet/mixins/carpetServer/CommandManagerMixin.java @@ -1,4 +1,4 @@ -package carpet.mixins; +package carpet.mixins.carpetServer; import carpet.CarpetServer; import com.mojang.brigadier.CommandDispatcher; diff --git a/src/main/java/carpet/mixins/carpetServer/IntegratedServerMixin.java b/src/main/java/carpet/mixins/carpetServer/IntegratedServerMixin.java new file mode 100644 index 00000000..c2fc216d --- /dev/null +++ b/src/main/java/carpet/mixins/carpetServer/IntegratedServerMixin.java @@ -0,0 +1,23 @@ +package carpet.mixins.carpetServer; + +import carpet.CarpetServer; +import net.minecraft.server.integrated.IntegratedServer; +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.CallbackInfoReturnable; + +@Mixin(IntegratedServer.class) +public class IntegratedServerMixin +{ + @Inject(method = "setupServer", + at = @At( + value = "INVOKE", + shift = At.Shift.AFTER, + target = "Lnet/minecraft/server/integrated/IntegratedServer;setKeyPair(Ljava/security/KeyPair;)V" + ) + ) + private void onSetupServerIntegrated(CallbackInfoReturnable cir) { + CarpetServer.onServerLoaded((IntegratedServer) (Object) this); + } +} diff --git a/src/main/java/carpet/mixins/carpetServer/MinecraftClientMixin.java b/src/main/java/carpet/mixins/carpetServer/MinecraftClientMixin.java new file mode 100644 index 00000000..c7e319ed --- /dev/null +++ b/src/main/java/carpet/mixins/carpetServer/MinecraftClientMixin.java @@ -0,0 +1,21 @@ +package carpet.mixins.carpetServer; + +import carpet.CarpetServer; +import net.minecraft.client.MinecraftClient; +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; + +@Mixin(MinecraftClient.class) +public class MinecraftClientMixin +{ + //to inject right before + // this.tickWorlds(booleanSupplier_1); + @Inject(method = "init", at = @At(value = "RETURN") + ) + private void onInit(CallbackInfo ci) { + //CM start game hook + CarpetServer.onGameStarted(); + } +} diff --git a/src/main/java/carpet/mixins/carpetServer/MinecraftDedicatedServerMixin.java b/src/main/java/carpet/mixins/carpetServer/MinecraftDedicatedServerMixin.java new file mode 100644 index 00000000..2605e933 --- /dev/null +++ b/src/main/java/carpet/mixins/carpetServer/MinecraftDedicatedServerMixin.java @@ -0,0 +1,30 @@ +package carpet.mixins.carpetServer; + +import carpet.CarpetServer; +import net.minecraft.server.dedicated.MinecraftDedicatedServer; +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.CallbackInfoReturnable; + +@Mixin(MinecraftDedicatedServer.class) +public class MinecraftDedicatedServerMixin +{ + //to inject right before + // this.tickWorlds(booleanSupplier_1); + @Inject( + method = "setupServer", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/util/UserCache;setUseRemote(Z)V", + shift = At.Shift.AFTER, + ordinal = 0 + ) + ) + private void onSetupServer(CallbackInfoReturnable cir) { + //CM init - all stuff loaded from the server, just before worlds loading + CarpetServer.onServerLoaded((MinecraftDedicatedServer) (Object) this); + //CM start game hook + CarpetServer.onGameStarted(); + } +} diff --git a/src/main/java/carpet/mixins/MinecraftServerMixin.java b/src/main/java/carpet/mixins/carpetServer/MinecraftServerMixin.java similarity index 79% rename from src/main/java/carpet/mixins/MinecraftServerMixin.java rename to src/main/java/carpet/mixins/carpetServer/MinecraftServerMixin.java index 8436a314..3f49f4ad 100644 --- a/src/main/java/carpet/mixins/MinecraftServerMixin.java +++ b/src/main/java/carpet/mixins/carpetServer/MinecraftServerMixin.java @@ -1,4 +1,4 @@ -package carpet.mixins; +package carpet.mixins.carpetServer; import carpet.CarpetServer; import com.mojang.authlib.GameProfileRepository; @@ -21,22 +21,27 @@ import java.util.function.BooleanSupplier; @Mixin(MinecraftServer.class) public abstract class MinecraftServerMixin { - // Called during game start - @Inject(method = "", at = @At(value = "HEAD")) + @Inject(method = "", at = @At(value = "RETURN")) private void onMinecraftServerCTOR(File file_1, Proxy proxy_1, DataFixer dataFixer_1, CommandManager serverCommandManager_1, YggdrasilAuthenticationService yggdrasilAuthenticationService_1, MinecraftSessionService minecraftSessionService_1, GameProfileRepository gameProfileRepository_1, UserCache userCache_1, WorldGenerationProgressListenerFactory worldGenerationProgressListenerFactory_1, String string_1, CallbackInfo ci) { + // Called during game start CarpetServer.init((MinecraftServer) (Object) this); } //to inject right before // this.tickWorlds(booleanSupplier_1); @Inject( - method = "Lnet/minecraft/server/MinecraftServer;tick(Ljava/util/function/BooleanSupplier;)V", - at = @At(value = "INVOKE", target = "Lnet/minecraft/server/MinecraftServer;tickWorlds(Ljava/util/function/BooleanSupplier;)V", shift = At.Shift.BEFORE, ordinal = 0) + method = "tick", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/server/MinecraftServer;tickWorlds(Ljava/util/function/BooleanSupplier;)V", + shift = At.Shift.BEFORE, + ordinal = 0 + ) ) private void onTick(BooleanSupplier booleanSupplier_1, CallbackInfo ci) { CarpetServer.tick((MinecraftServer) (Object) this); diff --git a/src/main/resources/carpet.mixins.json b/src/main/resources/carpet.mixins.json index ee4411e6..ab776bde 100644 --- a/src/main/resources/carpet.mixins.json +++ b/src/main/resources/carpet.mixins.json @@ -3,10 +3,15 @@ "package": "carpet.mixins", "compatibilityLevel": "JAVA_8", "mixins": [ - "CommandManagerMixin" + "carpetServer/CommandManagerMixin", + "carpetServer/MinecraftServerMixin" ], "client": [ - "CommandManagerMixin" + "carpetServer/MinecraftClientMixin", + "carpetServer/IntegratedServerMixin" + ], + "server": [ + "carpetServer/MinecraftDedicatedServerMixin" ], "injectors": { "defaultRequire": 1