Split off 1.12.2 overwrite from MixinNetHandlerLoginClient
This commit is contained in:
@@ -1,35 +1,26 @@
|
|||||||
package com.replaymod.recording.mixin;
|
package com.replaymod.recording.mixin;
|
||||||
|
|
||||||
|
import com.replaymod.core.versions.MCVer;
|
||||||
import com.replaymod.recording.ReplayModRecording;
|
import com.replaymod.recording.ReplayModRecording;
|
||||||
|
import com.replaymod.recording.handler.RecordingEventHandler.RecordingEventSender;
|
||||||
import net.minecraft.client.network.ClientLoginNetworkHandler;
|
import net.minecraft.client.network.ClientLoginNetworkHandler;
|
||||||
import net.minecraft.network.ClientConnection;
|
import net.minecraft.network.ClientConnection;
|
||||||
|
import net.minecraft.network.Packet;
|
||||||
|
import net.minecraft.network.packet.s2c.login.LoginQueryRequestS2CPacket;
|
||||||
|
import net.minecraft.network.packet.s2c.login.LoginSuccessS2CPacket;
|
||||||
|
import org.spongepowered.asm.mixin.Final;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
//#if MC>=11400
|
|
||||||
import com.replaymod.core.versions.MCVer;
|
|
||||||
import com.replaymod.recording.handler.RecordingEventHandler.RecordingEventSender;
|
|
||||||
import net.minecraft.network.Packet;
|
|
||||||
import net.minecraft.network.packet.s2c.login.LoginQueryRequestS2CPacket;
|
|
||||||
import net.minecraft.network.packet.s2c.login.LoginSuccessS2CPacket;
|
|
||||||
//#else
|
|
||||||
//$$ import net.minecraftforge.fml.common.network.FMLNetworkEvent;
|
|
||||||
//#endif
|
|
||||||
|
|
||||||
@Mixin(ClientLoginNetworkHandler.class)
|
@Mixin(ClientLoginNetworkHandler.class)
|
||||||
public abstract class MixinNetHandlerLoginClient {
|
public abstract class MixinNetHandlerLoginClient {
|
||||||
|
|
||||||
@Shadow
|
@Final @Shadow
|
||||||
//#if MC>=10800
|
|
||||||
private ClientConnection connection;
|
private ClientConnection connection;
|
||||||
//#else
|
|
||||||
//$$ private NetworkManager field_147393_d;
|
|
||||||
//#endif
|
|
||||||
|
|
||||||
//#if MC>=11400
|
|
||||||
@Inject(method = "onQueryRequest", at=@At("HEAD"))
|
@Inject(method = "onQueryRequest", at=@At("HEAD"))
|
||||||
private void earlyInitiateRecording(LoginQueryRequestS2CPacket packet, CallbackInfo ci) {
|
private void earlyInitiateRecording(LoginQueryRequestS2CPacket packet, CallbackInfo ci) {
|
||||||
initiateRecording(packet);
|
initiateRecording(packet);
|
||||||
@@ -50,27 +41,4 @@ public abstract class MixinNetHandlerLoginClient {
|
|||||||
eventSender.getRecordingEventHandler().onPacket(packet);
|
eventSender.getRecordingEventHandler().onPacket(packet);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//#else
|
|
||||||
//$$ /**
|
|
||||||
//$$ * Starts the recording right before switching into PLAY state.
|
|
||||||
//$$ * We cannot use the {@link FMLNetworkEvent.ClientConnectedToServerEvent}
|
|
||||||
//$$ * as it only fires after the forge handshake.
|
|
||||||
//$$ */
|
|
||||||
//$$ @Inject(method = "handleLoginSuccess", at=@At("HEAD"))
|
|
||||||
//$$ public void replayModRecording_initiateRecording(CallbackInfo cb) {
|
|
||||||
//#if MC>=10800
|
|
||||||
//$$ ReplayModRecording.instance.initiateRecording(this.networkManager);
|
|
||||||
//#else
|
|
||||||
//$$ ReplayModRecording.instance.initiateRecording(this.field_147393_d);
|
|
||||||
//#endif
|
|
||||||
//$$ }
|
|
||||||
//#endif
|
|
||||||
|
|
||||||
// Race condition in Forge's networking (not sure if still present in 1.13)
|
|
||||||
//#if MC>=11200 && MC<11400
|
|
||||||
//$$ @Inject(method = "handleLoginSuccess", at=@At("RETURN"))
|
|
||||||
//$$ public void replayModRecording_raceConditionWorkAround(CallbackInfo cb) {
|
|
||||||
//$$ ((NetworkManagerAccessor) this.networkManager).getChannel().config().setAutoRead(true);
|
|
||||||
//$$ }
|
|
||||||
//#endif
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
package com.replaymod.recording.mixin;
|
||||||
|
|
||||||
|
import com.replaymod.recording.ReplayModRecording;
|
||||||
|
import net.minecraft.client.network.NetHandlerLoginClient;
|
||||||
|
import net.minecraft.network.NetworkManager;
|
||||||
|
import net.minecraftforge.fml.common.network.FMLNetworkEvent;
|
||||||
|
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(NetHandlerLoginClient.class)
|
||||||
|
public abstract class MixinNetHandlerLoginClient {
|
||||||
|
|
||||||
|
@Final @Shadow
|
||||||
|
private NetworkManager networkManager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Starts the recording right before switching into PLAY state.
|
||||||
|
* We cannot use the {@link FMLNetworkEvent.ClientConnectedToServerEvent}
|
||||||
|
* as it only fires after the forge handshake.
|
||||||
|
*/
|
||||||
|
@Inject(method = "handleLoginSuccess", at=@At("HEAD"))
|
||||||
|
public void replayModRecording_initiateRecording(CallbackInfo cb) {
|
||||||
|
ReplayModRecording.instance.initiateRecording(this.networkManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Race condition in Forge's networking (not sure if still present in 1.13)
|
||||||
|
//#if MC>=11200 && MC<11400
|
||||||
|
@Inject(method = "handleLoginSuccess", at=@At("RETURN"))
|
||||||
|
public void replayModRecording_raceConditionWorkAround(CallbackInfo cb) {
|
||||||
|
((NetworkManagerAccessor) this.networkManager).getChannel().config().setAutoRead(true);
|
||||||
|
}
|
||||||
|
//#endif
|
||||||
|
}
|
||||||
@@ -34,3 +34,4 @@ net.minecraftforge.fml.common.gameevent.InputEvent cpw.mods.fml.common.gameevent
|
|||||||
net.minecraft.client.renderer.tileentity.TileEntityEndPortalRenderer net.minecraft.client.renderer.tileentity.RenderEndPortal
|
net.minecraft.client.renderer.tileentity.TileEntityEndPortalRenderer net.minecraft.client.renderer.tileentity.RenderEndPortal
|
||||||
net.minecraft.network.play.server.S3FPacketCustomPayload getChannelName() func_149169_c()
|
net.minecraft.network.play.server.S3FPacketCustomPayload getChannelName() func_149169_c()
|
||||||
net.minecraft.network.play.server.S01PacketJoinGame getEntityId() func_149197_c()
|
net.minecraft.network.play.server.S01PacketJoinGame getEntityId() func_149197_c()
|
||||||
|
net.minecraft.client.network.NetHandlerLoginClient networkManager field_147393_d
|
||||||
|
|||||||
Reference in New Issue
Block a user