1 package com.irtimaled.bbor.client;
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;
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);
26 public ClientProxy() {
27 ConfigManager.loadConfig();
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());
39 ClientRenderer.registerProvider(new CacheProvider(this::getCache));
44 private void disconnectedFromServer() {
45 ClientRenderer.deactivate();
46 if (ConfigManager.keepCacheBetweenSessions.get()) return;
50 private void clear() {
51 SlimeChunkProvider.clear();
52 WorldSpawnProvider.clear();
53 SpawningSphereProvider.clear();
54 CustomBeaconProvider.clear();
55 CustomBoxProvider.clear();
56 BiomeBorderProvider.clear();
60 private void addBoundingBox(AddBoundingBoxReceived event) {
61 BoundingBoxCache cache = getOrCreateCache(event.getDimensionId());
62 if (cache == null) return;
64 cache.addBoundingBoxes(event.getKey(), event.getBoundingBoxes());
67 private void onInitializeClientReceived(InitializeClientReceived event) {
68 setWorldSpawn(event.getSpawnX(), event.getSpawnZ());
69 setSeed(event.getSeed());
72 private void onUpdateWorldSpawnReceived(UpdateWorldSpawnReceived event) {
73 setWorldSpawn(event.getSpawnX(), event.getSpawnZ());
77 protected void setSeed(long seed) {
79 SlimeChunkProvider.setSeed(seed);
83 protected void setWorldSpawn(int spawnX, int spawnZ) {
84 super.setWorldSpawn(spawnX, spawnZ);
85 WorldSpawnProvider.setWorldSpawn(spawnX, spawnZ);