44 lines
1.5 KiB
Java
44 lines
1.5 KiB
Java
package carpet.mixins;
|
|
|
|
import carpet.network.CarpetClient;
|
|
import carpet.network.ClientNetworkHandler;
|
|
import net.minecraft.client.MinecraftClient;
|
|
import net.minecraft.client.network.ClientPlayNetworkHandler;
|
|
import net.minecraft.network.packet.s2c.play.CustomPayloadS2CPacket;
|
|
import net.minecraft.network.packet.s2c.play.GameJoinS2CPacket;
|
|
import net.minecraft.text.Text;
|
|
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(ClientPlayNetworkHandler.class)
|
|
public abstract class ClientPlayNetworkHandlerMixin
|
|
{
|
|
@Shadow private MinecraftClient client;
|
|
|
|
@Inject(method = "onCustomPayload", at = @At("HEAD"), cancellable = true)
|
|
private void onOnCustomPayload(CustomPayloadS2CPacket packet, CallbackInfo ci)
|
|
{
|
|
if (CarpetClient.CARPET_CHANNEL.equals(packet.getChannel()))
|
|
{
|
|
ClientNetworkHandler.handleData(packet.getData(), client.player);
|
|
ci.cancel();
|
|
}
|
|
}
|
|
|
|
@Inject(method = "onGameJoin", at = @At("RETURN"))
|
|
private void onGameJoined(GameJoinS2CPacket packet, CallbackInfo info)
|
|
{
|
|
CarpetClient.gameJoined(client.player);
|
|
}
|
|
|
|
@Inject(method = "onDisconnected", at = @At("HEAD"))
|
|
private void onCMDisconnected(Text reason, CallbackInfo ci)
|
|
{
|
|
CarpetClient.disconnect();
|
|
}
|
|
|
|
}
|