- @Inject(method = "genericsFtw", at = @At("HEAD"))
- private static void handlePacket(Packet packet, PacketListener listener, CallbackInfo ci) {
- if (packet instanceof ClientboundBlockUpdatePacket) {
- LightOverlay.queueChunkAndNear(new CubicChunkPos(((ClientboundBlockUpdatePacket) packet).getPos()));
- } else if (packet instanceof ClientboundSetChunkCacheCenterPacket) {
- for (int y = 0; y <= 15; y++) {
- LightOverlay.queueChunkAndNear(new CubicChunkPos(((ClientboundSetChunkCacheCenterPacket) packet).getX(), y, ((ClientboundSetChunkCacheCenterPacket) packet).getZ()));
- }
- } else if (packet instanceof ClientboundSectionBlocksUpdatePacket) {
- for (int y = 0; y <= 15; y++) {
- LightOverlay.queueChunkAndNear(new CubicChunkPos(((ClientboundSectionBlocksUpdatePacket) packet).sectionPos.getX(), y, ((ClientboundSectionBlocksUpdatePacket) packet).sectionPos.getZ()));
- }
- } else if (packet instanceof ClientboundLightUpdatePacket) {
- for (int y = 0; y <= 15; y++) {
- LightOverlay.queueChunk(new CubicChunkPos(((ClientboundLightUpdatePacket) packet).getX(), y, ((ClientboundLightUpdatePacket) packet).getZ()));
+// @Inject(method = "genericsFtw", at = @At("HEAD"))
+// private static void handlePacket(Packet packet, PacketListener listener, CallbackInfo ci) {
+//
+// }
+ public static void handlePacket(Packet packet, PacketListener listener) {
+ try {
+ if (!(listener instanceof ClientPacketListener packetListener)) return;
+ var level = packetListener.getLevel();
+ if (level == null) return;
+ if (packet instanceof ClientboundBlockUpdatePacket p) {
+ LightOverlay.queueChunkAndNear(new CubicChunkPos(p.getPos()));
+ } else if (packet instanceof ClientboundSetChunkCacheCenterPacket p) {
+ var height = Mth.ceil(level.getHeight() / 32.0);
+ var start = Math.floorDiv(level.getMinBuildHeight(), 32);
+ for (int y = start; y < start + height; y++) {
+ LightOverlay.queueChunkAndNear(new CubicChunkPos(p.getX(), y, p.getZ()));
+ }
+ } else if (packet instanceof ClientboundSectionBlocksUpdatePacket p) {
+ LightOverlay.queueChunkAndNear(new CubicChunkPos(p.sectionPos.getX(), p.sectionPos.getY() >> 1, p.sectionPos.getZ()));
+ } else if (packet instanceof ClientboundLightUpdatePacket p) {
+ var height = Mth.ceil(level.getHeight() / 32.0);
+ var start = Math.floorDiv(level.getMinBuildHeight(), 32);
+ for (int y = start; y < start + height; y++) {
+ LightOverlay.queueChunk(new CubicChunkPos(p.getX(), y, p.getZ()));
+ }