]> git.lizzy.rs Git - LightOverlay.git/blob - forge/src/main/java/me/shedaniel/lightoverlay/forge/mixin/MixinClientConnection.java
02f46debc4b81a21200f7446fbda208629220010
[LightOverlay.git] / forge / src / main / java / me / shedaniel / lightoverlay / forge / mixin / MixinClientConnection.java
1 package me.shedaniel.lightoverlay.forge.mixin;
2
3 import me.shedaniel.lightoverlay.common.CubicChunkPos;
4 import me.shedaniel.lightoverlay.common.LightOverlay;
5 import net.minecraft.network.Connection;
6 import net.minecraft.network.PacketListener;
7 import net.minecraft.network.protocol.Packet;
8 import net.minecraft.network.protocol.game.ClientboundBlockUpdatePacket;
9 import net.minecraft.network.protocol.game.ClientboundLightUpdatePacket;
10 import net.minecraft.network.protocol.game.ClientboundSectionBlocksUpdatePacket;
11 import net.minecraft.network.protocol.game.ClientboundSetChunkCacheCenterPacket;
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;
16
17 @Mixin(Connection.class)
18 public class MixinClientConnection {
19     @Inject(method = "genericsFtw", at = @At("HEAD"))
20     private static void handlePacket(Packet packet, PacketListener listener, CallbackInfo ci) {
21         if (packet instanceof ClientboundBlockUpdatePacket) {
22             LightOverlay.queueChunkAndNear(new CubicChunkPos(((ClientboundBlockUpdatePacket) packet).getPos()));
23         } else if (packet instanceof ClientboundSetChunkCacheCenterPacket) {
24             for (int y = 0; y <= 15; y++) {
25                 LightOverlay.queueChunkAndNear(new CubicChunkPos(((ClientboundSetChunkCacheCenterPacket) packet).getX(), y, ((ClientboundSetChunkCacheCenterPacket) packet).getZ()));
26             }
27         } else if (packet instanceof ClientboundSectionBlocksUpdatePacket) {
28             for (int y = 0; y <= 15; y++) {
29                 LightOverlay.queueChunkAndNear(new CubicChunkPos(((ClientboundSectionBlocksUpdatePacket) packet).sectionPos.getX(), y, ((ClientboundSectionBlocksUpdatePacket) packet).sectionPos.getZ()));
30             }
31         } else if (packet instanceof ClientboundLightUpdatePacket) {
32             for (int y = 0; y <= 15; y++) {
33                 LightOverlay.queueChunk(new CubicChunkPos(((ClientboundLightUpdatePacket) packet).getX(), y, ((ClientboundLightUpdatePacket) packet).getZ()));
34             }
35         }
36     }
37 }