]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSPacketCustomPayload.java
Upgrade to 1.14.2
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / mixin / network / play / server / MixinSPacketCustomPayload.java
1 package com.irtimaled.bbor.mixin.network.play.server;
2
3 import com.irtimaled.bbor.common.EventBus;
4 import com.irtimaled.bbor.common.messages.*;
5 import net.minecraft.client.network.play.ClientPlayNetHandler;
6 import net.minecraft.client.network.play.IClientPlayNetHandler;
7 import net.minecraft.network.PacketBuffer;
8 import net.minecraft.network.play.server.SCustomPayloadPlayPacket;
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;
14
15 @Mixin(SCustomPayloadPlayPacket.class)
16 public abstract class MixinSPacketCustomPayload {
17     @Shadow
18     private ResourceLocation channel;
19
20     @Redirect(method = "processPacket", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/play/IClientPlayNetHandler;handleCustomPayload(Lnet/minecraft/network/play/server/SCustomPayloadPlayPacket;)V"))
21     private void processPacket(IClientPlayNetHandler netHandlerPlayClient, SCustomPayloadPlayPacket packet) {
22         String channelName = channel.toString();
23         if (channelName.startsWith("bbor:")) {
24             PacketBuffer data = null;
25             try {
26                 data = packet.getBufferData();
27                 PayloadReader reader = new PayloadReader(data);
28                 switch (channelName) {
29                     case InitializeClient.NAME: {
30                         EventBus.publish(InitializeClient.getEvent(reader));
31                         ((ClientPlayNetHandler) netHandlerPlayClient).sendPacket(SubscribeToServer.getPayload().build());
32                         break;
33                     }
34                     case AddBoundingBox.NAME: {
35                         EventBus.publish(AddBoundingBox.getEvent(reader));
36                         break;
37                     }
38                 }
39             } finally {
40                 if (data != null)
41                     data.release();
42             }
43         } else {
44             netHandlerPlayClient.handleCustomPayload(packet);
45         }
46     }
47 }