]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - src/main/java/com/irtimaled/bbor/client/ClientProxy.java
Tidy up
[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.Key;
6 import com.irtimaled.bbor.client.keyboard.KeyListener;
7 import com.irtimaled.bbor.client.providers.*;
8 import com.irtimaled.bbor.common.BoundingBoxCache;
9 import com.irtimaled.bbor.common.CommonProxy;
10 import com.irtimaled.bbor.common.EventBus;
11 import com.irtimaled.bbor.common.VillageColorCache;
12 import com.irtimaled.bbor.config.ConfigManager;
13
14 public class ClientProxy extends CommonProxy {
15     static {
16         Key mainKey = KeyListener.register("Toggle Active", "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     }
23
24     @Override
25     public void init() {
26         super.init();
27         EventBus.subscribe(DisconnectedFromRemoteServer.class, e -> disconnectedFromServer());
28         EventBus.subscribe(InitializeClientReceived.class, this::onInitializeClientReceived);
29         EventBus.subscribe(AddBoundingBoxReceived.class, this::addBoundingBox);
30         EventBus.subscribe(RemoveBoundingBoxReceived.class, this::onRemoveBoundingBoxReceived);
31         EventBus.subscribe(UpdateWorldSpawnReceived.class, this::onUpdateWorldSpawnReceived);
32
33         ClientRenderer.registerProvider(new CacheProvider(this::getCache));
34
35         KeyListener.init();
36     }
37
38     private void disconnectedFromServer() {
39         ClientRenderer.deactivate();
40         if (ConfigManager.keepCacheBetweenSessions.get()) return;
41         SlimeChunkProvider.clear();
42         WorldSpawnProvider.clear();
43         SpawningSphereProvider.clear();
44         BeaconProvider.clear();
45         CustomBoxProvider.clear();
46         BiomeBorderProvider.clear();
47         VillageColorCache.clear();
48         clearCaches();
49     }
50
51     private void addBoundingBox(AddBoundingBoxReceived event) {
52         BoundingBoxCache cache = getOrCreateCache(event.getDimensionId());
53         if (cache == null) return;
54
55         cache.addBoundingBoxes(event.getKey(), event.getBoundingBoxes());
56     }
57
58     private void onRemoveBoundingBoxReceived(RemoveBoundingBoxReceived event) {
59         super.removeBoundingBox(event.getDimensionId(), event.getKey());
60     }
61
62     private void onInitializeClientReceived(InitializeClientReceived event) {
63         setWorldSpawn(event.getSpawnX(), event.getSpawnZ());
64         setSeed(event.getSeed());
65     }
66
67     private void onUpdateWorldSpawnReceived(UpdateWorldSpawnReceived event) {
68         setWorldSpawn(event.getSpawnX(), event.getSpawnZ());
69     }
70
71     @Override
72     protected void setSeed(long seed) {
73         super.setSeed(seed);
74         SlimeChunkProvider.setSeed(seed);
75     }
76
77     @Override
78     protected void setWorldSpawn(int spawnX, int spawnZ) {
79         super.setWorldSpawn(spawnX, spawnZ);
80         WorldSpawnProvider.setWorldSpawn(spawnX, spawnZ);
81     }
82 }