]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blobdiff - src/main/java/com/irtimaled/bbor/client/ClientProxy.java
Upgrade to 1.14.2
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / client / ClientProxy.java
index c41da42758bc734dfa1bab45e9e9003b46f0fe35..c09764cd08f55fd508af0df7857ccfb5abe04aea 100644 (file)
@@ -1,87 +1,60 @@
 package com.irtimaled.bbor.client;
 
+import com.irtimaled.bbor.client.config.ConfigManager;
 import com.irtimaled.bbor.client.events.*;
+import com.irtimaled.bbor.client.gui.LoadSavesScreen;
 import com.irtimaled.bbor.client.gui.SettingsScreen;
+import com.irtimaled.bbor.client.keyboard.Key;
 import com.irtimaled.bbor.client.keyboard.KeyListener;
+import com.irtimaled.bbor.client.providers.*;
 import com.irtimaled.bbor.common.BoundingBoxCache;
 import com.irtimaled.bbor.common.CommonProxy;
 import com.irtimaled.bbor.common.EventBus;
-import com.irtimaled.bbor.common.VillageColorCache;
-import com.irtimaled.bbor.config.ConfigManager;
-import com.irtimaled.bbor.config.Setting;
-
-import java.net.InetSocketAddress;
 
 public class ClientProxy extends CommonProxy {
-    public static final String Name = "Bounding Box Outline Reloaded";
-    public static boolean active;
-
-    static {
-        KeyListener.register("Toggle Active", 0x42, Name)
-                .onKeyPressHandler(ClientProxy::toggleActive)
-                .onLongKeyPressHandler(60, SettingsScreen::show);
-        KeyListener.register("Toggle Outer Box Only", 0x4f, Name)
-                .onKeyPressHandler(ClientProxy::toggleOuterBoxesOnly);
-    }
-
-    private static ClientProxy instance;
-    public static ClientProxy getInstance() {
-        if(instance == null)
-            instance = new ClientProxy();
-        return instance;
+    public static void registerKeyBindings() {
+        Key mainKey = KeyListener.register("bbor.key.toggleActive", "key.keyboard.b")
+                .onKeyPressHandler(ClientRenderer::toggleActive);
+        mainKey.register("key.keyboard.g")
+                .onKeyPressHandler(SettingsScreen::show);
+        mainKey.register("key.keyboard.o")
+                .onKeyPressHandler(() -> ConfigManager.Toggle(ConfigManager.outerBoxesOnly));
+        mainKey.register("key.keyboard.l")
+                .onKeyPressHandler(LoadSavesScreen::show);
     }
 
-    private ClientProxy() {
+    public ClientProxy() {
+        ConfigManager.loadConfig();
     }
 
-    private boolean ready;
-
-    public static void toggleActive() {
-        active = !active;
-        if (active)
-            PlayerCoords.setActiveY();
-    }
-
-    private static void toggleOuterBoxesOnly() {
-        Setting<Boolean> outerBoxesOnly = ConfigManager.outerBoxesOnly;
-        outerBoxesOnly.set(!outerBoxesOnly.get());
-    }
-
-    private ClientRenderer renderer;
-
     @Override
     public void init() {
         super.init();
-        EventBus.subscribe(Render.class, this::render);
-        EventBus.subscribe(ConnectedToRemoteServer.class, this::connectedToServer);
         EventBus.subscribe(DisconnectedFromRemoteServer.class, e -> disconnectedFromServer());
         EventBus.subscribe(InitializeClientReceived.class, this::onInitializeClientReceived);
         EventBus.subscribe(AddBoundingBoxReceived.class, this::addBoundingBox);
-        EventBus.subscribe(RemoveBoundingBoxReceived.class, this::onRemoveBoundingBoxReceived);
         EventBus.subscribe(UpdateWorldSpawnReceived.class, this::onUpdateWorldSpawnReceived);
+        EventBus.subscribe(SaveLoaded.class, e -> clear());
 
-        renderer = new ClientRenderer(this::getCache);
-        KeyListener.init();
-    }
-
-    private void render(Render event) {
-        if (!active || !ready) return;
-
-        renderer.render(event.getDimensionId(), ConfigManager.outerBoxesOnly.get());
-    }
+        ClientRenderer.registerProvider(new CacheProvider(this::getCache));
 
-    private void connectedToServer(ConnectedToRemoteServer event) {
-        InetSocketAddress internetAddress = event.getInternetAddress();
-        NBTFileParser.loadLocalDatFiles(internetAddress.getHostName(), internetAddress.getPort(), this::setWorldData, this::getOrCreateCache);
+        KeyListener.init();
     }
 
     private void disconnectedFromServer() {
-        active = false;
+        ClientRenderer.deactivate();
         if (ConfigManager.keepCacheBetweenSessions.get()) return;
-        ready = false;
-        VillageColorCache.clear();
+        clear();
+    }
+
+    private void clear() {
+        SlimeChunkProvider.clear();
+        WorldSpawnProvider.clear();
+        SpawningSphereProvider.clear();
+        CustomBeaconProvider.clear();
+        CustomBoxProvider.clear();
+        BiomeBorderProvider.clear();
         clearCaches();
-        renderer.clear();
     }
 
     private void addBoundingBox(AddBoundingBoxReceived event) {
@@ -91,10 +64,6 @@ public class ClientProxy extends CommonProxy {
         cache.addBoundingBoxes(event.getKey(), event.getBoundingBoxes());
     }
 
-    private void onRemoveBoundingBoxReceived(RemoveBoundingBoxReceived event) {
-        super.removeBoundingBox(event.getDimensionId(), event.getKey());
-    }
-
     private void onInitializeClientReceived(InitializeClientReceived event) {
         setWorldSpawn(event.getSpawnX(), event.getSpawnZ());
         setSeed(event.getSeed());
@@ -104,21 +73,15 @@ public class ClientProxy extends CommonProxy {
         setWorldSpawn(event.getSpawnX(), event.getSpawnZ());
     }
 
-    private void setWorldData(long seed, int spawnX, int spawnZ) {
-        setWorldSpawn(spawnX,spawnZ);
-        setSeed(seed);
-    }
-
     @Override
-    public void setSeed(long seed) {
+    protected void setSeed(long seed) {
         super.setSeed(seed);
-        renderer.setSeed(seed);
-        ready = true;
+        SlimeChunkProvider.setSeed(seed);
     }
 
     @Override
     protected void setWorldSpawn(int spawnX, int spawnZ) {
         super.setWorldSpawn(spawnX, spawnZ);
-        renderer.setWorldSpawn(spawnX, spawnZ);
+        WorldSpawnProvider.setWorldSpawn(spawnX, spawnZ);
     }
 }