From: Irtimaled Date: Mon, 25 May 2020 23:45:04 +0000 (-0700) Subject: Tidy up Mixins X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=3b12a7e2452fbc737015843b196cb7664996232a;p=BoundingBoxOutlineReloaded.git Tidy up Mixins --- diff --git a/src/main/java/com/irtimaled/bbor/mixin/client/MixinGameSettings.java b/src/main/java/com/irtimaled/bbor/mixin/client/MixinGameSettings.java new file mode 100644 index 0000000..678a16b --- /dev/null +++ b/src/main/java/com/irtimaled/bbor/mixin/client/MixinGameSettings.java @@ -0,0 +1,36 @@ +package com.irtimaled.bbor.mixin.client; + +import com.irtimaled.bbor.client.ClientProxy; +import com.irtimaled.bbor.client.keyboard.KeyListener; +import net.minecraft.client.GameSettings; +import net.minecraft.client.Minecraft; +import net.minecraft.client.settings.KeyBinding; +import org.apache.commons.lang3.ArrayUtils; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.Shadow; +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; + +@Mixin(GameSettings.class) +public abstract class MixinGameSettings { + @Mutable + @Final + @Shadow + public KeyBinding[] keyBindings; + + @Shadow + public abstract void loadOptions(); + + @Inject(method = "", at = @At("RETURN")) + private void init(Minecraft minecraft, File file, CallbackInfo ci) { + ClientProxy.registerKeyBindings(); + keyBindings = ArrayUtils.addAll(keyBindings, KeyListener.keyBindings()); + this.loadOptions(); + } + +} diff --git a/src/main/java/com/irtimaled/bbor/mixin/client/entity/MixinEntityPlayerSP.java b/src/main/java/com/irtimaled/bbor/mixin/client/entity/MixinEntityPlayerSP.java deleted file mode 100644 index eb155b7..0000000 --- a/src/main/java/com/irtimaled/bbor/mixin/client/entity/MixinEntityPlayerSP.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.irtimaled.bbor.mixin.client.entity; - -import com.irtimaled.bbor.client.interop.ClientInterop; -import net.minecraft.client.entity.player.ClientPlayerEntity; -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(ClientPlayerEntity.class) -public abstract class MixinEntityPlayerSP { - @Inject(method = "sendChatMessage", at = @At("HEAD"), cancellable = true) - private void sendChatMessage(String message, CallbackInfo ci) { - if (ClientInterop.interceptChatMessage(message)) - ci.cancel(); - } -} diff --git a/src/main/java/com/irtimaled/bbor/mixin/client/entity/player/MixinClientPlayerEntity.java b/src/main/java/com/irtimaled/bbor/mixin/client/entity/player/MixinClientPlayerEntity.java new file mode 100644 index 0000000..ad0aa28 --- /dev/null +++ b/src/main/java/com/irtimaled/bbor/mixin/client/entity/player/MixinClientPlayerEntity.java @@ -0,0 +1,17 @@ +package com.irtimaled.bbor.mixin.client.entity.player; + +import com.irtimaled.bbor.client.interop.ClientInterop; +import net.minecraft.client.entity.player.ClientPlayerEntity; +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(ClientPlayerEntity.class) +public class MixinClientPlayerEntity { + @Inject(method = "sendChatMessage", at = @At("HEAD"), cancellable = true) + private void sendChatMessage(String message, CallbackInfo ci) { + if (ClientInterop.interceptChatMessage(message)) + ci.cancel(); + } +} diff --git a/src/main/java/com/irtimaled/bbor/mixin/client/gui/MixinGuiChat.java b/src/main/java/com/irtimaled/bbor/mixin/client/gui/MixinGuiChat.java deleted file mode 100644 index 2b11c83..0000000 --- a/src/main/java/com/irtimaled/bbor/mixin/client/gui/MixinGuiChat.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.irtimaled.bbor.mixin.client.gui; - -import com.irtimaled.bbor.client.gui.ListScreen; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screen.ChatScreen; -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(ChatScreen.class) -public class MixinGuiChat { - @Inject(method = "keyPressed", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;displayGuiScreen(Lnet/minecraft/client/gui/screen/Screen;)V", shift = At.Shift.BEFORE), cancellable = true) - private void keyPressed(CallbackInfoReturnable cir) { - if (Minecraft.getInstance().currentScreen instanceof ListScreen) { - cir.setReturnValue(true); - cir.cancel(); - } - } -} diff --git a/src/main/java/com/irtimaled/bbor/mixin/client/gui/MixinGuiOptions.java b/src/main/java/com/irtimaled/bbor/mixin/client/gui/MixinGuiOptions.java deleted file mode 100644 index 5ba8d56..0000000 --- a/src/main/java/com/irtimaled/bbor/mixin/client/gui/MixinGuiOptions.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.irtimaled.bbor.mixin.client.gui; - -import com.irtimaled.bbor.client.gui.SettingsScreenButton; -import net.minecraft.client.gui.screen.OptionsScreen; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.widget.Widget; -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(OptionsScreen.class) -public class MixinGuiOptions extends Screen { - private MixinGuiOptions() { - super(null); - } - - @Inject(method = "init", at = @At("RETURN")) - private void initGui(CallbackInfo ci) { - //shuffle middle buttons up by 12 px to make space - int top = this.height / 6 + 42; - int bottom = this.height / 6 + 168; - - for (Widget button : buttons) { - if (button.y >= top && button.y < bottom) - button.y -= 12; - } - SettingsScreenButton button = new SettingsScreenButton(this.width / 2 - 155, top + 84, 150, "BBOR", this); - this.buttons.add(this.buttons.size() - 1, button); - this.children.add(this.children.size() - 1, button); - } -} diff --git a/src/main/java/com/irtimaled/bbor/mixin/client/gui/screen/MixinChatScreen.java b/src/main/java/com/irtimaled/bbor/mixin/client/gui/screen/MixinChatScreen.java new file mode 100644 index 0000000..a348566 --- /dev/null +++ b/src/main/java/com/irtimaled/bbor/mixin/client/gui/screen/MixinChatScreen.java @@ -0,0 +1,20 @@ +package com.irtimaled.bbor.mixin.client.gui.screen; + +import com.irtimaled.bbor.client.gui.ListScreen; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screen.ChatScreen; +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(ChatScreen.class) +public class MixinChatScreen { + @Inject(method = "keyPressed", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;displayGuiScreen(Lnet/minecraft/client/gui/screen/Screen;)V", shift = At.Shift.BEFORE), cancellable = true) + private void keyPressed(CallbackInfoReturnable cir) { + if (Minecraft.getInstance().currentScreen instanceof ListScreen) { + cir.setReturnValue(true); + cir.cancel(); + } + } +} diff --git a/src/main/java/com/irtimaled/bbor/mixin/client/gui/screen/MixinOptionsScreen.java b/src/main/java/com/irtimaled/bbor/mixin/client/gui/screen/MixinOptionsScreen.java new file mode 100644 index 0000000..39e07f2 --- /dev/null +++ b/src/main/java/com/irtimaled/bbor/mixin/client/gui/screen/MixinOptionsScreen.java @@ -0,0 +1,32 @@ +package com.irtimaled.bbor.mixin.client.gui.screen; + +import com.irtimaled.bbor.client.gui.SettingsScreenButton; +import net.minecraft.client.gui.screen.OptionsScreen; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.widget.Widget; +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(OptionsScreen.class) +public class MixinOptionsScreen extends Screen { + private MixinOptionsScreen() { + super(null); + } + + @Inject(method = "init", at = @At("RETURN")) + private void initGui(CallbackInfo ci) { + //shuffle middle buttons up by 12 px to make space + int top = this.height / 6 + 42; + int bottom = this.height / 6 + 168; + + for (Widget button : buttons) { + if (button.y >= top && button.y < bottom) + button.y -= 12; + } + SettingsScreenButton button = new SettingsScreenButton(this.width / 2 - 155, top + 84, 150, "BBOR", this); + this.buttons.add(this.buttons.size() - 1, button); + this.children.add(this.children.size() - 1, button); + } +} diff --git a/src/main/java/com/irtimaled/bbor/mixin/client/multiplayer/MixinWorldClient.java b/src/main/java/com/irtimaled/bbor/mixin/client/multiplayer/MixinWorldClient.java deleted file mode 100644 index 7796ba7..0000000 --- a/src/main/java/com/irtimaled/bbor/mixin/client/multiplayer/MixinWorldClient.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.irtimaled.bbor.mixin.client.multiplayer; - -import com.irtimaled.bbor.client.interop.ClientInterop; -import net.minecraft.client.world.ClientWorld; -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(ClientWorld.class) -public class MixinWorldClient { - @Inject(method = "sendQuittingDisconnectingPacket", at = @At("RETURN")) - private void sendQuittingDisconnectingPacket(CallbackInfo ci) { - ClientInterop.disconnectedFromRemoteServer(); - } -} diff --git a/src/main/java/com/irtimaled/bbor/mixin/client/network/MixinNetHandlerLoginClient.java b/src/main/java/com/irtimaled/bbor/mixin/client/network/MixinNetHandlerLoginClient.java deleted file mode 100644 index e85bde1..0000000 --- a/src/main/java/com/irtimaled/bbor/mixin/client/network/MixinNetHandlerLoginClient.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.irtimaled.bbor.mixin.client.network; - -import com.irtimaled.bbor.client.interop.ClientInterop; -import net.minecraft.client.network.login.ClientLoginNetHandler; -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(ClientLoginNetHandler.class) -public abstract class MixinNetHandlerLoginClient { - @Inject(method = "onDisconnect", at = @At("HEAD")) - private void onDisconnect(CallbackInfo ci) { - ClientInterop.disconnectedFromRemoteServer(); - } -} diff --git a/src/main/java/com/irtimaled/bbor/mixin/client/network/MixinNetHandlerPlayClient.java b/src/main/java/com/irtimaled/bbor/mixin/client/network/MixinNetHandlerPlayClient.java deleted file mode 100644 index d76ee62..0000000 --- a/src/main/java/com/irtimaled/bbor/mixin/client/network/MixinNetHandlerPlayClient.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.irtimaled.bbor.mixin.client.network; - -import com.irtimaled.bbor.client.interop.ClientInterop; -import net.minecraft.client.network.play.ClientPlayNetHandler; -import net.minecraft.network.play.server.SChunkDataPacket; -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(ClientPlayNetHandler.class) -public class MixinNetHandlerPlayClient { - @Inject(method = "onDisconnect", at = @At("HEAD")) - private void onDisconnect(CallbackInfo ci) { - ClientInterop.disconnectedFromRemoteServer(); - } - - @Inject(method = "handleChunkData", at = @At("RETURN")) - private void onChunkData(SChunkDataPacket packet, CallbackInfo ci) { - ClientInterop.receivedChunk(packet.getChunkX(), packet.getChunkZ()); - } -} diff --git a/src/main/java/com/irtimaled/bbor/mixin/client/network/login/MixinClientLoginNetHandler.java b/src/main/java/com/irtimaled/bbor/mixin/client/network/login/MixinClientLoginNetHandler.java new file mode 100644 index 0000000..69fc156 --- /dev/null +++ b/src/main/java/com/irtimaled/bbor/mixin/client/network/login/MixinClientLoginNetHandler.java @@ -0,0 +1,16 @@ +package com.irtimaled.bbor.mixin.client.network.login; + +import com.irtimaled.bbor.client.interop.ClientInterop; +import net.minecraft.client.network.login.ClientLoginNetHandler; +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(ClientLoginNetHandler.class) +public class MixinClientLoginNetHandler { + @Inject(method = "onDisconnect", at = @At("HEAD")) + private void onDisconnect(CallbackInfo ci) { + ClientInterop.disconnectedFromRemoteServer(); + } +} diff --git a/src/main/java/com/irtimaled/bbor/mixin/client/network/play/MixinClientPlayNetHandler.java b/src/main/java/com/irtimaled/bbor/mixin/client/network/play/MixinClientPlayNetHandler.java new file mode 100644 index 0000000..64232ba --- /dev/null +++ b/src/main/java/com/irtimaled/bbor/mixin/client/network/play/MixinClientPlayNetHandler.java @@ -0,0 +1,16 @@ +package com.irtimaled.bbor.mixin.client.network.play; + +import com.irtimaled.bbor.client.interop.ClientInterop; +import net.minecraft.client.network.play.ClientPlayNetHandler; +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(ClientPlayNetHandler.class) +public class MixinClientPlayNetHandler { + @Inject(method = "onDisconnect", at = @At("HEAD")) + private void onDisconnect(CallbackInfo ci) { + ClientInterop.disconnectedFromRemoteServer(); + } +} diff --git a/src/main/java/com/irtimaled/bbor/mixin/client/renderer/MixinEntityRenderer.java b/src/main/java/com/irtimaled/bbor/mixin/client/renderer/MixinEntityRenderer.java deleted file mode 100644 index f7ab468..0000000 --- a/src/main/java/com/irtimaled/bbor/mixin/client/renderer/MixinEntityRenderer.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.irtimaled.bbor.mixin.client.renderer; - -import com.irtimaled.bbor.client.interop.ClientInterop; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.GameRenderer; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(GameRenderer.class) -public class MixinEntityRenderer { - @Shadow - @Final - private Minecraft mc; - - @Inject(method = "updateCameraAndRender(FJ)V", at = @At(value = "INVOKE_STRING", target = "Lnet/minecraft/profiler/IProfiler;endStartSection(Ljava/lang/String;)V", args = "ldc=hand", shift = At.Shift.BEFORE)) - private void render(float partialTicks, long ignored, CallbackInfo ci) { - ClientInterop.render(partialTicks, this.mc.player); - } -} diff --git a/src/main/java/com/irtimaled/bbor/mixin/client/renderer/MixinGameRenderer.java b/src/main/java/com/irtimaled/bbor/mixin/client/renderer/MixinGameRenderer.java new file mode 100644 index 0000000..815bfe4 --- /dev/null +++ b/src/main/java/com/irtimaled/bbor/mixin/client/renderer/MixinGameRenderer.java @@ -0,0 +1,23 @@ +package com.irtimaled.bbor.mixin.client.renderer; + +import com.irtimaled.bbor.client.interop.ClientInterop; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.GameRenderer; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(GameRenderer.class) +public class MixinGameRenderer { + @Shadow + @Final + private Minecraft mc; + + @Inject(method = "updateCameraAndRender(FJ)V", at = @At(value = "INVOKE_STRING", target = "Lnet/minecraft/profiler/IProfiler;endStartSection(Ljava/lang/String;)V", args = "ldc=hand", shift = At.Shift.BEFORE)) + private void render(float partialTicks, long ignored, CallbackInfo ci) { + ClientInterop.render(partialTicks, this.mc.player); + } +} diff --git a/src/main/java/com/irtimaled/bbor/mixin/client/settings/MixinGameSettings.java b/src/main/java/com/irtimaled/bbor/mixin/client/settings/MixinGameSettings.java deleted file mode 100644 index a69e3d6..0000000 --- a/src/main/java/com/irtimaled/bbor/mixin/client/settings/MixinGameSettings.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.irtimaled.bbor.mixin.client.settings; - -import com.irtimaled.bbor.client.ClientProxy; -import com.irtimaled.bbor.client.keyboard.KeyListener; -import net.minecraft.client.GameSettings; -import net.minecraft.client.Minecraft; -import net.minecraft.client.settings.KeyBinding; -import org.apache.commons.lang3.ArrayUtils; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Mutable; -import org.spongepowered.asm.mixin.Shadow; -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; - -@Mixin(GameSettings.class) -public abstract class MixinGameSettings { - @Mutable - @Final - @Shadow - public KeyBinding[] keyBindings; - - @Shadow - public abstract void loadOptions(); - - @Inject(method = "", at = @At("RETURN")) - private void init(Minecraft minecraft, File file, CallbackInfo ci) { - ClientProxy.registerKeyBindings(); - keyBindings = ArrayUtils.addAll(keyBindings, KeyListener.keyBindings()); - this.loadOptions(); - } - -} diff --git a/src/main/java/com/irtimaled/bbor/mixin/client/world/MixinClientWorld.java b/src/main/java/com/irtimaled/bbor/mixin/client/world/MixinClientWorld.java new file mode 100644 index 0000000..caa8be7 --- /dev/null +++ b/src/main/java/com/irtimaled/bbor/mixin/client/world/MixinClientWorld.java @@ -0,0 +1,16 @@ +package com.irtimaled.bbor.mixin.client.world; + +import com.irtimaled.bbor.client.interop.ClientInterop; +import net.minecraft.client.world.ClientWorld; +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(ClientWorld.class) +public class MixinClientWorld { + @Inject(method = "sendQuittingDisconnectingPacket", at = @At("RETURN")) + private void sendQuittingDisconnectingPacket(CallbackInfo ci) { + ClientInterop.disconnectedFromRemoteServer(); + } +} diff --git a/src/main/java/com/irtimaled/bbor/mixin/network/play/client/MixinCCustomPayloadPacket.java b/src/main/java/com/irtimaled/bbor/mixin/network/play/client/MixinCCustomPayloadPacket.java new file mode 100644 index 0000000..ab8bf76 --- /dev/null +++ b/src/main/java/com/irtimaled/bbor/mixin/network/play/client/MixinCCustomPayloadPacket.java @@ -0,0 +1,27 @@ +package com.irtimaled.bbor.mixin.network.play.client; + +import com.irtimaled.bbor.common.interop.CommonInterop; +import com.irtimaled.bbor.common.messages.SubscribeToServer; +import net.minecraft.network.play.IServerPlayNetHandler; +import net.minecraft.network.play.ServerPlayNetHandler; +import net.minecraft.network.play.client.CCustomPayloadPacket; +import net.minecraft.util.ResourceLocation; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(CCustomPayloadPacket.class) +public class MixinCCustomPayloadPacket { + @Shadow + private ResourceLocation channel; + + @Redirect(method = "processPacket", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/play/IServerPlayNetHandler;processCustomPayload(Lnet/minecraft/network/play/client/CCustomPayloadPacket;)V")) + private void processPacket(IServerPlayNetHandler netHandlerPlayServer, CCustomPayloadPacket packet) { + if (this.channel.toString().equals(SubscribeToServer.NAME)) { + CommonInterop.playerSubscribed(((ServerPlayNetHandler) netHandlerPlayServer).player); + } else { + netHandlerPlayServer.processCustomPayload(packet); + } + } +} diff --git a/src/main/java/com/irtimaled/bbor/mixin/network/play/client/MixinCPacketCustomPayload.java b/src/main/java/com/irtimaled/bbor/mixin/network/play/client/MixinCPacketCustomPayload.java deleted file mode 100644 index 2bcbd71..0000000 --- a/src/main/java/com/irtimaled/bbor/mixin/network/play/client/MixinCPacketCustomPayload.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.irtimaled.bbor.mixin.network.play.client; - -import com.irtimaled.bbor.common.interop.CommonInterop; -import com.irtimaled.bbor.common.messages.SubscribeToServer; -import net.minecraft.network.play.IServerPlayNetHandler; -import net.minecraft.network.play.ServerPlayNetHandler; -import net.minecraft.network.play.client.CCustomPayloadPacket; -import net.minecraft.util.ResourceLocation; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -@Mixin(CCustomPayloadPacket.class) -public class MixinCPacketCustomPayload { - @Shadow - private ResourceLocation channel; - - @Redirect(method = "processPacket", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/play/IServerPlayNetHandler;processCustomPayload(Lnet/minecraft/network/play/client/CCustomPayloadPacket;)V")) - private void processPacket(IServerPlayNetHandler netHandlerPlayServer, CCustomPayloadPacket packet) { - if (this.channel.toString().equals(SubscribeToServer.NAME)) { - CommonInterop.playerSubscribed(((ServerPlayNetHandler) netHandlerPlayServer).player); - } else { - netHandlerPlayServer.processCustomPayload(packet); - } - } -} diff --git a/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSChatPacket.java b/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSChatPacket.java new file mode 100644 index 0000000..70b279e --- /dev/null +++ b/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSChatPacket.java @@ -0,0 +1,21 @@ +package com.irtimaled.bbor.mixin.network.play.server; + +import com.irtimaled.bbor.client.interop.ClientInterop; +import net.minecraft.network.play.server.SChatPacket; +import net.minecraft.util.text.ITextComponent; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(SChatPacket.class) +public class MixinSChatPacket { + @Shadow + private ITextComponent chatComponent; + + @Inject(method = "processPacket", at = @At("RETURN")) + private void processPacket(CallbackInfo ci) { + ClientInterop.handleSeedMessage(this.chatComponent); + } +} diff --git a/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSChunkDataPacket.java b/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSChunkDataPacket.java new file mode 100644 index 0000000..ef2525f --- /dev/null +++ b/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSChunkDataPacket.java @@ -0,0 +1,24 @@ +package com.irtimaled.bbor.mixin.network.play.server; + +import com.irtimaled.bbor.client.interop.ClientInterop; +import net.minecraft.client.network.play.IClientPlayNetHandler; +import net.minecraft.network.play.server.SChunkDataPacket; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(SChunkDataPacket.class) +public class MixinSChunkDataPacket { + @Shadow + private int chunkX; + + @Shadow + private int chunkZ; + + @Inject(method = "processPacket", at = @At("RETURN")) + private void processPacket(IClientPlayNetHandler netHandlerPlayClient, CallbackInfo ci) { + ClientInterop.receivedChunk(this.chunkX, this.chunkZ); + } +} diff --git a/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSCommandListPacket.java b/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSCommandListPacket.java new file mode 100644 index 0000000..7263509 --- /dev/null +++ b/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSCommandListPacket.java @@ -0,0 +1,20 @@ +package com.irtimaled.bbor.mixin.network.play.server; + +import com.irtimaled.bbor.client.interop.ClientInterop; +import com.irtimaled.bbor.common.TypeHelper; +import net.minecraft.client.network.play.ClientPlayNetHandler; +import net.minecraft.client.network.play.IClientPlayNetHandler; +import net.minecraft.network.play.server.SCommandListPacket; +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(SCommandListPacket.class) +public class MixinSCommandListPacket { + @Inject(method = "processPacket", at = @At("RETURN")) + private void processPacket(IClientPlayNetHandler netHandlerPlayClient, CallbackInfo ci) { + TypeHelper.doIfType(netHandlerPlayClient, ClientPlayNetHandler.class, handler -> + ClientInterop.registerClientCommands(handler.func_195515_i())); + } +} diff --git a/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSCustomPayloadPlayPacket.java b/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSCustomPayloadPlayPacket.java new file mode 100644 index 0000000..137dba1 --- /dev/null +++ b/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSCustomPayloadPlayPacket.java @@ -0,0 +1,51 @@ +package com.irtimaled.bbor.mixin.network.play.server; + +import com.irtimaled.bbor.common.EventBus; +import com.irtimaled.bbor.common.messages.AddBoundingBox; +import com.irtimaled.bbor.common.messages.InitializeClient; +import com.irtimaled.bbor.common.messages.PayloadReader; +import com.irtimaled.bbor.common.messages.SubscribeToServer; +import net.minecraft.client.network.play.ClientPlayNetHandler; +import net.minecraft.client.network.play.IClientPlayNetHandler; +import net.minecraft.network.PacketBuffer; +import net.minecraft.network.play.server.SCustomPayloadPlayPacket; +import net.minecraft.util.ResourceLocation; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(SCustomPayloadPlayPacket.class) +public abstract class MixinSCustomPayloadPlayPacket { + @Shadow + private ResourceLocation channel; + + @Redirect(method = "processPacket", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/play/IClientPlayNetHandler;handleCustomPayload(Lnet/minecraft/network/play/server/SCustomPayloadPlayPacket;)V")) + private void processPacket(IClientPlayNetHandler netHandlerPlayClient, SCustomPayloadPlayPacket packet) { + String channelName = channel.toString(); + if (channelName.startsWith("bbor:")) { + PacketBuffer data = null; + try { + data = packet.getBufferData(); + PayloadReader reader = new PayloadReader(data); + switch (channelName) { + case InitializeClient.NAME: { + EventBus.publish(InitializeClient.getEvent(reader)); + ((ClientPlayNetHandler) netHandlerPlayClient).sendPacket(SubscribeToServer.getPayload().build()); + break; + } + case AddBoundingBox.NAME: + case AddBoundingBox.LEGACY: { + EventBus.publish(AddBoundingBox.getEvent(reader, channelName)); + break; + } + } + } finally { + if (data != null) + data.release(); + } + } else { + netHandlerPlayClient.handleCustomPayload(packet); + } + } +} diff --git a/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSPacketChat.java b/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSPacketChat.java deleted file mode 100644 index 06198c2..0000000 --- a/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSPacketChat.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.irtimaled.bbor.mixin.network.play.server; - -import com.irtimaled.bbor.client.interop.ClientInterop; -import net.minecraft.network.play.server.SChatPacket; -import net.minecraft.util.text.ITextComponent; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(SChatPacket.class) -public class MixinSPacketChat { - @Shadow - private ITextComponent chatComponent; - - @Inject(method = "processPacket", at = @At("RETURN")) - private void processPacket(CallbackInfo ci) { - ClientInterop.handleSeedMessage(this.chatComponent); - } -} diff --git a/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSPacketCommandList.java b/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSPacketCommandList.java deleted file mode 100644 index 1550151..0000000 --- a/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSPacketCommandList.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.irtimaled.bbor.mixin.network.play.server; - -import com.irtimaled.bbor.client.interop.ClientInterop; -import com.irtimaled.bbor.common.TypeHelper; -import net.minecraft.client.network.play.ClientPlayNetHandler; -import net.minecraft.client.network.play.IClientPlayNetHandler; -import net.minecraft.network.play.server.SCommandListPacket; -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(SCommandListPacket.class) -public class MixinSPacketCommandList { - @Inject(method = "processPacket", at = @At("RETURN")) - private void processPacket(IClientPlayNetHandler netHandlerPlayClient, CallbackInfo ci) { - TypeHelper.doIfType(netHandlerPlayClient, ClientPlayNetHandler.class, handler -> - ClientInterop.registerClientCommands(handler.func_195515_i())); - } -} diff --git a/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSPacketCustomPayload.java b/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSPacketCustomPayload.java deleted file mode 100644 index 719d14a..0000000 --- a/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSPacketCustomPayload.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.irtimaled.bbor.mixin.network.play.server; - -import com.irtimaled.bbor.common.EventBus; -import com.irtimaled.bbor.common.messages.AddBoundingBox; -import com.irtimaled.bbor.common.messages.InitializeClient; -import com.irtimaled.bbor.common.messages.PayloadReader; -import com.irtimaled.bbor.common.messages.SubscribeToServer; -import net.minecraft.client.network.play.ClientPlayNetHandler; -import net.minecraft.client.network.play.IClientPlayNetHandler; -import net.minecraft.network.PacketBuffer; -import net.minecraft.network.play.server.SCustomPayloadPlayPacket; -import net.minecraft.util.ResourceLocation; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -@Mixin(SCustomPayloadPlayPacket.class) -public abstract class MixinSPacketCustomPayload { - @Shadow - private ResourceLocation channel; - - @Redirect(method = "processPacket", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/play/IClientPlayNetHandler;handleCustomPayload(Lnet/minecraft/network/play/server/SCustomPayloadPlayPacket;)V")) - private void processPacket(IClientPlayNetHandler netHandlerPlayClient, SCustomPayloadPlayPacket packet) { - String channelName = channel.toString(); - if (channelName.startsWith("bbor:")) { - PacketBuffer data = null; - try { - data = packet.getBufferData(); - PayloadReader reader = new PayloadReader(data); - switch (channelName) { - case InitializeClient.NAME: { - EventBus.publish(InitializeClient.getEvent(reader)); - ((ClientPlayNetHandler) netHandlerPlayClient).sendPacket(SubscribeToServer.getPayload().build()); - break; - } - case AddBoundingBox.NAME: - case AddBoundingBox.LEGACY: { - EventBus.publish(AddBoundingBox.getEvent(reader, channelName)); - break; - } - } - } finally { - if (data != null) - data.release(); - } - } else { - netHandlerPlayClient.handleCustomPayload(packet); - } - } -} diff --git a/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSPacketSpawnPosition.java b/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSPacketSpawnPosition.java deleted file mode 100644 index 36123c3..0000000 --- a/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSPacketSpawnPosition.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.irtimaled.bbor.mixin.network.play.server; - -import com.irtimaled.bbor.client.interop.ClientInterop; -import net.minecraft.network.play.server.SSpawnPositionPacket; -import net.minecraft.util.math.BlockPos; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(SSpawnPositionPacket.class) -public abstract class MixinSPacketSpawnPosition { - @Shadow - private BlockPos spawnBlockPos; - - @Inject(method = "processPacket", at = @At("RETURN")) - private void afterProcessPacket(CallbackInfo ci) { - ClientInterop.updateWorldSpawnReceived(spawnBlockPos); - } -} diff --git a/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSSpawnPositionPacket.java b/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSSpawnPositionPacket.java new file mode 100644 index 0000000..fb8ae64 --- /dev/null +++ b/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSSpawnPositionPacket.java @@ -0,0 +1,21 @@ +package com.irtimaled.bbor.mixin.network.play.server; + +import com.irtimaled.bbor.client.interop.ClientInterop; +import net.minecraft.network.play.server.SSpawnPositionPacket; +import net.minecraft.util.math.BlockPos; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(SSpawnPositionPacket.class) +public abstract class MixinSSpawnPositionPacket { + @Shadow + private BlockPos spawnBlockPos; + + @Inject(method = "processPacket", at = @At("RETURN")) + private void afterProcessPacket(CallbackInfo ci) { + ClientInterop.updateWorldSpawnReceived(spawnBlockPos); + } +} diff --git a/src/main/resources/mixins.bbor.json b/src/main/resources/mixins.bbor.json index 657649e..4a469cb 100644 --- a/src/main/resources/mixins.bbor.json +++ b/src/main/resources/mixins.bbor.json @@ -6,26 +6,27 @@ "package": "com.irtimaled.bbor.mixin", "refmap": "mixins.bbor.refmap.json", "mixins": [ - "network.play.client.MixinCPacketCustomPayload", + "network.play.client.MixinCCustomPayloadPacket", "server.MixinMinecraftServer", "server.management.MixinPlayerList", "world.chunk.MixinChunk" ], "client": [ + "client.MixinGameSettings", "client.MixinMinecraft", - "client.entity.MixinEntityPlayerSP", - "client.gui.MixinGuiChat", - "client.gui.MixinGuiOptions", - "client.multiplayer.MixinWorldClient", - "client.network.MixinNetHandlerLoginClient", - "client.network.MixinNetHandlerPlayClient", - "client.renderer.MixinEntityRenderer", - "client.settings.MixinGameSettings", + "client.entity.player.MixinClientPlayerEntity", + "client.gui.screen.MixinChatScreen", + "client.gui.screen.MixinOptionsScreen", + "client.network.login.MixinClientLoginNetHandler", + "client.network.play.MixinClientPlayNetHandler", + "client.renderer.MixinGameRenderer", + "client.world.MixinClientWorld", "client.settings.MixinKeyBinding", - "network.play.server.MixinSPacketChat", - "network.play.server.MixinSPacketCommandList", - "network.play.server.MixinSPacketCustomPayload", - "network.play.server.MixinSPacketSpawnPosition" + "network.play.server.MixinSChatPacket", + "network.play.server.MixinSChunkDataPacket", + "network.play.server.MixinSCommandListPacket", + "network.play.server.MixinSCustomPayloadPlayPacket", + "network.play.server.MixinSSpawnPositionPacket" ], "server": [ "server.dedicated.MixinDedicatedServer"