]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - 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
1 package com.irtimaled.bbor.client;
2
3 import com.irtimaled.bbor.client.config.ConfigManager;
4 import com.irtimaled.bbor.client.events.*;
5 import com.irtimaled.bbor.client.gui.LoadSavesScreen;
6 import com.irtimaled.bbor.client.gui.SettingsScreen;
7 import com.irtimaled.bbor.client.keyboard.Key;
8 import com.irtimaled.bbor.client.keyboard.KeyListener;
9 import com.irtimaled.bbor.client.providers.*;
10 import com.irtimaled.bbor.common.BoundingBoxCache;
11 import com.irtimaled.bbor.common.CommonProxy;
12 import com.irtimaled.bbor.common.EventBus;
13
14 public class ClientProxy extends CommonProxy {
15     public static void registerKeyBindings() {
16         Key mainKey = KeyListener.register("bbor.key.toggleActive", "key.keyboard.b")
17                 .onKeyPressHandler(ClientRenderer::toggleActive);
18         mainKey.register("key.keyboard.g")
19                 .onKeyPressHandler(SettingsScreen::show);
20         mainKey.register("key.keyboard.o")
21                 .onKeyPressHandler(() -> ConfigManager.Toggle(ConfigManager.outerBoxesOnly));
22         mainKey.register("key.keyboard.l")
23                 .onKeyPressHandler(LoadSavesScreen::show);
24     }
25
26     public ClientProxy() {
27         ConfigManager.loadConfig();
28     }
29
30     @Override
31     public void init() {
32         super.init();
33         EventBus.subscribe(DisconnectedFromRemoteServer.class, e -> disconnectedFromServer());
34         EventBus.subscribe(InitializeClientReceived.class, this::onInitializeClientReceived);
35         EventBus.subscribe(AddBoundingBoxReceived.class, this::addBoundingBox);
36         EventBus.subscribe(UpdateWorldSpawnReceived.class, this::onUpdateWorldSpawnReceived);
37         EventBus.subscribe(SaveLoaded.class, e -> clear());
38
39         ClientRenderer.registerProvider(new CacheProvider(this::getCache));
40
41         KeyListener.init();
42     }
43
44     private void disconnectedFromServer() {
45         ClientRenderer.deactivate();
46         if (ConfigManager.keepCacheBetweenSessions.get()) return;
47         clear();
48     }
49
50     private void clear() {
51         SlimeChunkProvider.clear();
52         WorldSpawnProvider.clear();
53         SpawningSphereProvider.clear();
54         CustomBeaconProvider.clear();
55         CustomBoxProvider.clear();
56         BiomeBorderProvider.clear();
57         clearCaches();
58     }
59
60     private void addBoundingBox(AddBoundingBoxReceived event) {
61         BoundingBoxCache cache = getOrCreateCache(event.getDimensionId());
62         if (cache == null) return;
63
64         cache.addBoundingBoxes(event.getKey(), event.getBoundingBoxes());
65     }
66
67     private void onInitializeClientReceived(InitializeClientReceived event) {
68         setWorldSpawn(event.getSpawnX(), event.getSpawnZ());
69         setSeed(event.getSeed());
70     }
71
72     private void onUpdateWorldSpawnReceived(UpdateWorldSpawnReceived event) {
73         setWorldSpawn(event.getSpawnX(), event.getSpawnZ());
74     }
75
76     @Override
77     protected void setSeed(long seed) {
78         super.setSeed(seed);
79         SlimeChunkProvider.setSeed(seed);
80     }
81
82     @Override
83     protected void setWorldSpawn(int spawnX, int spawnZ) {
84         super.setWorldSpawn(spawnX, spawnZ);
85         WorldSpawnProvider.setWorldSpawn(spawnX, spawnZ);
86     }
87 }