]> git.lizzy.rs Git - LightOverlay.git/blob - forge/src/main/java/me/shedaniel/lightoverlay/forge/LightOverlayClient.java
create ko_kr.json (#71)
[LightOverlay.git] / forge / src / main / java / me / shedaniel / lightoverlay / forge / LightOverlayClient.java
1 package me.shedaniel.lightoverlay.forge;
2
3 import me.shedaniel.lightoverlay.common.AbstractPlatform;
4 import me.shedaniel.lightoverlay.common.LightOverlayCore;
5 import net.minecraft.client.renderer.culling.ClippingHelper;
6 import net.minecraft.client.settings.KeyBinding;
7 import net.minecraft.network.IPacket;
8 import net.minecraft.network.play.server.SChangeBlockPacket;
9 import net.minecraft.network.play.server.SChunkDataPacket;
10 import net.minecraft.network.play.server.SMultiBlockChangePacket;
11 import net.minecraft.network.play.server.SUpdateLightPacket;
12 import net.minecraft.util.math.ChunkPos;
13 import net.minecraftforge.api.distmarker.Dist;
14 import net.minecraftforge.common.MinecraftForge;
15 import net.minecraftforge.event.TickEvent;
16 import net.minecraftforge.fml.DistExecutor;
17 import net.minecraftforge.fml.client.registry.ClientRegistry;
18 import net.minecraftforge.fml.loading.FMLPaths;
19
20 import java.nio.file.Path;
21
22 public class LightOverlayClient {
23     private static Runnable debugRenderer = () -> {};
24     
25     public static void register() {
26         LightOverlayCore.register(new AbstractPlatform() {
27             @Override
28             public Path getConfigDir() {
29                 return FMLPaths.CONFIGDIR.get();
30             }
31             
32             @Override
33             public void registerClientTick(Runnable runnable) {
34                 MinecraftForge.EVENT_BUS.<TickEvent.ClientTickEvent>addListener(event -> runnable.run());
35             }
36             
37             @Override
38             public void registerDebugRenderer(Runnable runnable) {
39                 debugRenderer = runnable;
40             }
41             
42             @Override
43             public KeyBinding registerKeyBinding(KeyBinding keyBinding) {
44                 ClientRegistry.registerKeyBinding(keyBinding);
45                 return keyBinding;
46             }
47             
48             @Override
49             public boolean isFrustumVisible(ClippingHelper clippingHelper, double v, double v1, double v2, double v3, double v4, double v5) {
50                 return FrustumHelper.isVisible(clippingHelper, v, v1, v2, v3, v4, v5);
51             }
52         });
53         
54         try {
55             //noinspection Convert2MethodRef
56             DistExecutor.runWhenOn(Dist.CLIENT, () -> () -> LightOverlayCloth.register());
57         } catch (Exception e) {
58             e.printStackTrace();
59         }
60     }
61     
62     public static void renderWorldLast() {
63         debugRenderer.run();
64     }
65     
66     public static void processPacket(IPacket<?> packet) {
67         if (packet instanceof SChangeBlockPacket) {
68             LightOverlayCore.queueChunkAndNear(new ChunkPos(((SChangeBlockPacket) packet).getPos()));
69         } else if (packet instanceof SChunkDataPacket) {
70             LightOverlayCore.queueChunkAndNear(new ChunkPos(((SChunkDataPacket) packet).getX(), ((SChunkDataPacket) packet).getZ()));
71         } else if (packet instanceof SMultiBlockChangePacket) {
72             LightOverlayCore.queueChunkAndNear(new ChunkPos(((SMultiBlockChangePacket) packet).sectionPos.getX(), ((SMultiBlockChangePacket) packet).sectionPos.getZ()));
73         } else if (packet instanceof SUpdateLightPacket) {
74             LightOverlayCore.queueChunkAndNear(new ChunkPos(((SUpdateLightPacket) packet).getX(), ((SUpdateLightPacket) packet).getZ()));
75         }
76     }
77 }