1 package com.irtimaled.bbor.mixin.network.play.server;
3 import com.irtimaled.bbor.common.EventBus;
4 import com.irtimaled.bbor.common.messages.*;
5 import net.minecraft.client.network.NetHandlerPlayClient;
6 import net.minecraft.network.PacketBuffer;
7 import net.minecraft.network.play.INetHandlerPlayClient;
8 import net.minecraft.network.play.server.SPacketCustomPayload;
9 import net.minecraft.util.ResourceLocation;
10 import org.spongepowered.asm.mixin.Mixin;
11 import org.spongepowered.asm.mixin.Shadow;
12 import org.spongepowered.asm.mixin.injection.At;
13 import org.spongepowered.asm.mixin.injection.Redirect;
15 @Mixin(SPacketCustomPayload.class)
16 public abstract class MixinSPacketCustomPayload {
18 private String channel;
20 @Redirect(method = "processPacket", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/play/INetHandlerPlayClient;handleCustomPayload(Lnet/minecraft/network/play/server/SPacketCustomPayload;)V"))
21 private void processPacket(INetHandlerPlayClient netHandlerPlayClient, SPacketCustomPayload packet) {
22 if (this.channel.startsWith("bbor:")) {
23 PacketBuffer data = null;
25 data = packet.getBufferData();
26 PayloadReader reader = new PayloadReader(data);
27 switch (this.channel) {
28 case InitializeClient.NAME: {
29 EventBus.publish(InitializeClient.getEvent(reader));
30 ((NetHandlerPlayClient) netHandlerPlayClient).sendPacket(SubscribeToServer.getPayload().build());
33 case AddBoundingBox.NAME: {
34 EventBus.publish(AddBoundingBox.getEvent(reader));
37 case RemoveBoundingBox.NAME: {
38 EventBus.publish(RemoveBoundingBox.getEvent(reader));
47 netHandlerPlayClient.handleCustomPayload(packet);