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