]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - src/main/java/com/irtimaled/bbor/client/ClientProxy.java
Move files ready for gradle builds
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / client / ClientProxy.java
1 package com.irtimaled.bbor.client;
2
3 import com.irtimaled.bbor.common.CommonProxy;
4 import com.irtimaled.bbor.common.VillageColorCache;
5 import com.irtimaled.bbor.common.VillageProcessor;
6 import com.irtimaled.bbor.config.ConfigManager;
7 import net.minecraft.client.Minecraft;
8 import net.minecraft.client.settings.KeyBinding;
9 import net.minecraft.entity.player.EntityPlayer;
10 import net.minecraft.network.NetworkManager;
11 import net.minecraft.world.DimensionType;
12 import org.apache.commons.lang3.ArrayUtils;
13 import org.lwjgl.input.Keyboard;
14
15 import java.net.InetSocketAddress;
16 import java.net.SocketAddress;
17
18 public class ClientProxy extends CommonProxy {
19     private boolean active;
20     private boolean outerBoxOnly;
21     private KeyBinding activeHotKey;
22     private KeyBinding outerBoxOnlyHotKey;
23     private ClientRenderer renderer;
24     private int remoteUserCount = 0;
25
26     public void keyPressed() {
27         if (activeHotKey.isPressed()) {
28             active = !active;
29             if (active)
30                 PlayerData.setActiveY();
31         } else if (outerBoxOnlyHotKey.isPressed()) {
32             outerBoxOnly = !outerBoxOnly;
33         }
34     }
35
36     @Override
37     public void init() {
38         String category = "Bounding Box Outline Reloaded";
39         activeHotKey = new KeyBinding("Toggle On/Off", Keyboard.KEY_B, category);
40         outerBoxOnlyHotKey = new KeyBinding("Toggle Display Outer Box Only", Keyboard.KEY_O, category);
41         Minecraft.getMinecraft().gameSettings.keyBindings = ArrayUtils.addAll(Minecraft.getMinecraft().gameSettings.keyBindings, activeHotKey, outerBoxOnlyHotKey);
42         ClientDimensionCache clientDimensionCache = new ClientDimensionCache();
43         renderer = new ClientRenderer(clientDimensionCache);
44         dimensionCache = clientDimensionCache;
45     }
46
47     public void render(float partialTicks) {
48         EntityPlayer entityPlayer = Minecraft.getMinecraft().player;
49         PlayerData.setPlayerPosition(partialTicks, entityPlayer);
50
51         if (this.active) {
52             renderer.render(DimensionType.getById(entityPlayer.dimension), outerBoxOnly);
53         }
54     }
55
56     public void setRemoteUserCount(int remoteUserCount) {
57         this.remoteUserCount = remoteUserCount;
58     }
59
60     protected boolean hasRemoteUsers()    {
61         return remoteUserCount > 0;
62     }
63
64     @Override
65     public void tick() {
66         if (this.active || this.hasRemoteUsers()) {
67             super.tick();
68         }
69     }
70
71     public void playerConnectedToServer(NetworkManager networkManager) {
72         SocketAddress remoteAddress = networkManager.getRemoteAddress();
73         if (remoteAddress instanceof InetSocketAddress) {
74             InetSocketAddress socketAddress = (InetSocketAddress) remoteAddress;
75             NBTFileParser.loadLocalDatFiles(socketAddress.getHostName(), socketAddress.getPort(), dimensionCache);
76         }
77     }
78
79     public void playerDisconnectedFromServer() {
80         active = false;
81         villageProcessors.forEach(VillageProcessor::close);
82         villageProcessors.clear();
83
84         if (ConfigManager.keepCacheBetweenSessions.getBoolean()) return;
85         VillageColorCache.clear();
86         dimensionCache.clear();
87     }
88 }