1 package com.irtimaled.bbor.client;
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.keyboard.Key;
12 import com.irtimaled.bbor.client.keyboard.KeyListener;
13 import com.irtimaled.bbor.client.providers.CacheProvider;
14 import com.irtimaled.bbor.client.providers.SlimeChunkProvider;
15 import com.irtimaled.bbor.client.providers.WorldSpawnProvider;
16 import com.irtimaled.bbor.common.BoundingBoxCache;
17 import com.irtimaled.bbor.common.CommonProxy;
18 import com.irtimaled.bbor.common.EventBus;
20 public class ClientProxy extends CommonProxy {
21 public static void registerKeyBindings() {
22 Key mainKey = KeyListener.register("bbor.key.toggleActive", "key.keyboard.b")
23 .onKeyPressHandler(ClientRenderer::toggleActive);
24 mainKey.register("key.keyboard.g")
25 .onKeyPressHandler(SettingsScreen::show);
26 mainKey.register("key.keyboard.o")
27 .onKeyPressHandler(() -> ConfigManager.Toggle(ConfigManager.outerBoxesOnly));
28 mainKey.register("key.keyboard.l")
29 .onKeyPressHandler(LoadSavesScreen::show);
32 public ClientProxy() {
33 ConfigManager.loadConfig();
39 EventBus.subscribe(DisconnectedFromRemoteServer.class, e -> disconnectedFromServer());
40 EventBus.subscribe(InitializeClientReceived.class, this::onInitializeClientReceived);
41 EventBus.subscribe(AddBoundingBoxReceived.class, this::addBoundingBox);
42 EventBus.subscribe(UpdateWorldSpawnReceived.class, this::onUpdateWorldSpawnReceived);
43 EventBus.subscribe(SaveLoaded.class, e -> clear());
45 ClientRenderer.registerProvider(new CacheProvider(this::getCache));
50 private void disconnectedFromServer() {
51 ClientRenderer.deactivate();
52 if (ConfigManager.keepCacheBetweenSessions.get()) return;
56 private void clear() {
57 ClientRenderer.clear();
61 private void addBoundingBox(AddBoundingBoxReceived event) {
62 BoundingBoxCache cache = getOrCreateCache(event.getDimensionId());
63 if (cache == null) return;
65 cache.addBoundingBoxes(event.getKey(), event.getBoundingBoxes());
68 private void onInitializeClientReceived(InitializeClientReceived event) {
69 setWorldSpawn(event.getSpawnX(), event.getSpawnZ());
70 setSeed(event.getSeed());
73 private void onUpdateWorldSpawnReceived(UpdateWorldSpawnReceived event) {
74 setWorldSpawn(event.getSpawnX(), event.getSpawnZ());
78 protected void setSeed(long seed) {
80 SlimeChunkProvider.setSeed(seed);
81 // FlowerForestHelper.setSeed(seed);
85 protected void setWorldSpawn(int spawnX, int spawnZ) {
86 super.setWorldSpawn(spawnX, spawnZ);
87 WorldSpawnProvider.setWorldSpawn(spawnX, spawnZ);