1 package me.shedaniel.lightoverlay.fabric.mixin;
3 import me.shedaniel.lightoverlay.fabric.LightOverlay;
4 import net.minecraft.network.ClientConnection;
5 import net.minecraft.network.Packet;
6 import net.minecraft.network.listener.PacketListener;
7 import net.minecraft.network.packet.s2c.play.BlockUpdateS2CPacket;
8 import net.minecraft.network.packet.s2c.play.ChunkDataS2CPacket;
9 import net.minecraft.network.packet.s2c.play.ChunkDeltaUpdateS2CPacket;
10 import net.minecraft.network.packet.s2c.play.LightUpdateS2CPacket;
11 import net.minecraft.util.math.ChunkPos;
12 import org.spongepowered.asm.mixin.Mixin;
13 import org.spongepowered.asm.mixin.injection.At;
14 import org.spongepowered.asm.mixin.injection.Inject;
15 import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
17 @Mixin(ClientConnection.class)
18 public class MixinClientConnection {
19 @Inject(method = "handlePacket", at = @At("HEAD"))
20 private static void handlePacket(Packet packet, PacketListener listener, CallbackInfo ci) {
21 if (packet instanceof BlockUpdateS2CPacket) {
22 LightOverlay.queueChunkAndNear(new ChunkPos(((BlockUpdateS2CPacket) packet).getPos()));
23 } else if (packet instanceof ChunkDataS2CPacket) {
24 LightOverlay.queueChunkAndNear(new ChunkPos(((ChunkDataS2CPacket) packet).getX(), ((ChunkDataS2CPacket) packet).getZ()));
25 } else if (packet instanceof ChunkDeltaUpdateS2CPacket) {
26 LightOverlay.queueChunkAndNear(new ChunkPos(((ChunkDeltaUpdateS2CPacket) packet).sectionPos.getSectionX(), ((ChunkDeltaUpdateS2CPacket) packet).sectionPos.getSectionZ()));
27 } else if (packet instanceof LightUpdateS2CPacket) {
28 LightOverlay.queueChunk(new ChunkPos(((LightUpdateS2CPacket) packet).getChunkX(), ((LightUpdateS2CPacket) packet).getChunkZ()));