From 394891ab5fd7af031eff1a7f5eaf90f84e97f7b9 Mon Sep 17 00:00:00 2001 From: gnembon Date: Fri, 10 May 2019 16:48:02 -0300 Subject: [PATCH] carpet server ticking --- src/main/java/carpet/CarpetServer.java | 1 + .../carpet/mixins/MinecraftServerMixin.java | 44 +++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 src/main/java/carpet/mixins/MinecraftServerMixin.java diff --git a/src/main/java/carpet/CarpetServer.java b/src/main/java/carpet/CarpetServer.java index b78ec21f..b0af8590 100644 --- a/src/main/java/carpet/CarpetServer.java +++ b/src/main/java/carpet/CarpetServer.java @@ -44,6 +44,7 @@ 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/mixins/MinecraftServerMixin.java b/src/main/java/carpet/mixins/MinecraftServerMixin.java new file mode 100644 index 00000000..8436a314 --- /dev/null +++ b/src/main/java/carpet/mixins/MinecraftServerMixin.java @@ -0,0 +1,44 @@ +package carpet.mixins; + +import carpet.CarpetServer; +import com.mojang.authlib.GameProfileRepository; +import com.mojang.authlib.minecraft.MinecraftSessionService; +import com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService; +import com.mojang.datafixers.DataFixer; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.WorldGenerationProgressListenerFactory; +import net.minecraft.server.command.CommandManager; +import net.minecraft.util.UserCache; +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 java.io.File; +import java.net.Proxy; +import java.util.function.BooleanSupplier; + +@Mixin(MinecraftServer.class) +public abstract class MinecraftServerMixin +{ + // Called during game start + @Inject(method = "", at = @At(value = "HEAD")) + 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) + { + 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) + ) + private void onTick(BooleanSupplier booleanSupplier_1, CallbackInfo ci) { + CarpetServer.tick((MinecraftServer) (Object) this); + } +}