]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - src/main/java/com/irtimaled/bbor/client/ClientProxy.java
165493a48a818ee5808aa0897e7af3d3848957e8
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / client / ClientProxy.java
1 package com.irtimaled.bbor.client;
2
3 import com.irtimaled.bbor.client.events.*;
4 import com.irtimaled.bbor.client.gui.SettingsScreen;
5 import com.irtimaled.bbor.client.keyboard.KeyListener;
6 import com.irtimaled.bbor.common.BoundingBoxType;
7 import com.irtimaled.bbor.common.CommonProxy;
8 import com.irtimaled.bbor.common.EventBus;
9 import com.irtimaled.bbor.common.VillageColorCache;
10 import com.irtimaled.bbor.common.models.BoundingBox;
11 import com.irtimaled.bbor.common.models.BoundingBoxWorldSpawn;
12 import com.irtimaled.bbor.config.ConfigManager;
13 import com.irtimaled.bbor.config.Setting;
14 import net.minecraft.client.Minecraft;
15 import net.minecraft.entity.player.EntityPlayer;
16 import net.minecraft.network.NetworkManager;
17 import net.minecraft.util.math.BlockPos;
18 import net.minecraft.world.dimension.DimensionType;
19
20 import java.net.InetSocketAddress;
21 import java.net.SocketAddress;
22
23 import static com.irtimaled.bbor.client.Constants.CHUNK_SIZE;
24
25 public class ClientProxy extends CommonProxy {
26     public static final String Name = "Bounding Box Outline Reloaded";
27     public static boolean active;
28
29     static {
30         KeyListener.register("Toggle Active", 0x42, Name)
31                 .onKeyPressHandler(ClientProxy::toggleActive)
32                 .onLongKeyPressHandler(60, SettingsScreen::show);
33         KeyListener.register("Toggle Outer Box Only", 0x4f, Name)
34                 .onKeyPressHandler(ClientProxy::toggleOuterBoxesOnly);
35     }
36
37     public static void toggleActive() {
38         active = !active;
39         if (active)
40             PlayerData.setActiveY();
41     }
42
43     private static void toggleOuterBoxesOnly() {
44         Setting<Boolean> outerBoxesOnly = ConfigManager.outerBoxesOnly;
45         outerBoxesOnly.set(!outerBoxesOnly.get());
46     }
47
48     private ClientRenderer renderer;
49
50     @Override
51     public void init() {
52         super.init();
53         EventBus.subscribe(Render.class, e -> render(e.getPartialTicks()));
54         EventBus.subscribe(ConnectedToRemoteServer.class, e -> connectedToServer(e.getNetworkManager()));
55         EventBus.subscribe(DisconnectedFromRemoteServer.class, e -> disconnectedFromServer());
56         EventBus.subscribe(InitializeClientReceived.class, e -> setWorldData(e.getSeed(), e.getSpawnX(), e.getSpawnZ()));
57         EventBus.subscribe(AddBoundingBoxReceived.class, e -> runOnCache(e.getDimensionType(), cache -> cache.addBoundingBoxes(e.getKey(), e.getBoundingBoxes())));
58         EventBus.subscribe(RemoveBoundingBoxReceived.class, e -> removeBoundingBox(e.getDimensionType(), e.getKey()));
59
60         renderer = new ClientRenderer(this::getCache);
61         KeyListener.init();
62     }
63
64     private void render(float partialTicks) {
65         EntityPlayer entityPlayer = Minecraft.getInstance().player;
66         PlayerData.setPlayerPosition(partialTicks, entityPlayer);
67
68         if (active) {
69             renderer.render(DimensionType.getById(entityPlayer.dimension), ConfigManager.outerBoxesOnly.get());
70         }
71     }
72
73     private void connectedToServer(NetworkManager networkManager) {
74         SocketAddress remoteAddress = networkManager.getRemoteAddress();
75         if (remoteAddress instanceof InetSocketAddress) {
76             InetSocketAddress socketAddress = (InetSocketAddress) remoteAddress;
77             NBTFileParser.loadLocalDatFiles(socketAddress.getHostName(), socketAddress.getPort(), this::setWorldData, this::getOrCreateCache);
78         }
79     }
80
81     private void disconnectedFromServer() {
82         active = false;
83         if (ConfigManager.keepCacheBetweenSessions.get()) return;
84         VillageColorCache.clear();
85         clearCaches();
86     }
87
88     @Override
89     protected void setWorldData(long seed, int spawnX, int spawnZ) {
90         super.setWorldData(seed, spawnX, spawnZ);
91         renderer.setWorldData(seed, spawnX, spawnZ);
92     }
93
94
95 }