1 package com.irtimaled.bbor.mixin.network.play.server;
3 import com.irtimaled.bbor.common.EventBus;
4 import com.irtimaled.bbor.common.messages.AddBoundingBox;
5 import com.irtimaled.bbor.common.messages.InitializeClient;
6 import com.irtimaled.bbor.common.messages.PayloadReader;
7 import com.irtimaled.bbor.common.messages.SubscribeToServer;
8 import net.minecraft.client.network.ClientPlayNetworkHandler;
9 import net.minecraft.network.PacketByteBuf;
10 import net.minecraft.network.listener.ClientPlayPacketListener;
11 import net.minecraft.network.packet.s2c.play.CustomPayloadS2CPacket;
12 import net.minecraft.util.Identifier;
13 import org.spongepowered.asm.mixin.Mixin;
14 import org.spongepowered.asm.mixin.Shadow;
15 import org.spongepowered.asm.mixin.injection.At;
16 import org.spongepowered.asm.mixin.injection.Redirect;
18 @Mixin(CustomPayloadS2CPacket.class)
19 public abstract class MixinSCustomPayloadPlayPacket {
21 private Identifier channel;
23 @Redirect(method = "apply", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/listener/ClientPlayPacketListener;onCustomPayload(Lnet/minecraft/network/packet/s2c/play/CustomPayloadS2CPacket;)V"))
24 private void processPacket(ClientPlayPacketListener netHandlerPlayClient, CustomPayloadS2CPacket packet) {
25 String channelName = channel.toString();
26 if (channelName.startsWith("bbor:")) {
27 PacketByteBuf data = null;
29 data = packet.getData();
30 PayloadReader reader = new PayloadReader(data);
31 switch (channelName) {
32 case InitializeClient.NAME: {
33 EventBus.publish(InitializeClient.getEvent(reader));
34 ((ClientPlayNetworkHandler) netHandlerPlayClient).sendPacket(SubscribeToServer.getPayload().build());
37 case AddBoundingBox.NAME: {
38 EventBus.publish(AddBoundingBox.getEvent(reader));
47 netHandlerPlayClient.onCustomPayload(packet);