]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blobdiff - src/main/java/com/irtimaled/bbor/common/interop/CommonInterop.java
Performance improvements
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / common / interop / CommonInterop.java
index 72dc2c8c74da9ae454e0155851c3d289a05317ac..321c4c7d2db50a1a995c92c3f0921af27ae5f66b 100644 (file)
@@ -1,38 +1,46 @@
 package com.irtimaled.bbor.common.interop;
 
+import com.irtimaled.bbor.client.ClientRenderer;
+import com.irtimaled.bbor.client.renderers.AbstractRenderer;
 import com.irtimaled.bbor.common.EventBus;
-import com.irtimaled.bbor.common.events.*;
-import com.irtimaled.bbor.common.models.Coords;
+import com.irtimaled.bbor.common.events.PlayerLoggedIn;
+import com.irtimaled.bbor.common.events.PlayerLoggedOut;
+import com.irtimaled.bbor.common.events.PlayerSubscribed;
+import com.irtimaled.bbor.common.events.ServerTick;
+import com.irtimaled.bbor.common.events.StructuresLoaded;
+import com.irtimaled.bbor.common.events.WorldLoaded;
+import com.irtimaled.bbor.common.models.AbstractBoundingBox;
+import com.irtimaled.bbor.common.models.DimensionId;
 import com.irtimaled.bbor.common.models.ServerPlayer;
-import com.irtimaled.bbor.config.ConfigManager;
-import net.minecraft.block.Block;
-import net.minecraft.block.BlockMobSpawner;
-import net.minecraft.entity.player.EntityPlayerMP;
-import net.minecraft.network.NetHandlerPlayServer;
-import net.minecraft.network.NetworkManager;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.World;
-import net.minecraft.world.WorldServer;
-import net.minecraft.world.chunk.Chunk;
+import net.fabricmc.api.EnvType;
+import net.fabricmc.loader.api.FabricLoader;
+import net.minecraft.network.ClientConnection;
+import net.minecraft.server.network.ServerPlayNetworkHandler;
+import net.minecraft.server.network.ServerPlayerEntity;
+import net.minecraft.server.world.ServerWorld;
+import net.minecraft.structure.StructureStart;
+import net.minecraft.world.chunk.WorldChunk;
 
-import java.io.File;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.function.Supplier;
 
 public class CommonInterop {
-    public static void init() {
-        ConfigManager.loadConfig(new File("."));
+    public static void chunkLoaded(WorldChunk chunk) {
+        DimensionId dimensionId = DimensionId.from(chunk.getWorld().getRegistryKey());
+        Map<String, StructureStart<?>> structures = new HashMap<>();
+        chunk.getStructureStarts().entrySet().forEach(es -> structures.put(es.getKey().getName(), es.getValue()));
+        if (structures.size() > 0) EventBus.publish(new StructuresLoaded(structures, dimensionId));
     }
 
-    public static void chunkLoaded(Chunk chunk) {
-        EventBus.publish(new ChunkLoaded(chunk));
-    }
-
-    public static void loadWorlds(WorldServer[] worlds) {
-        for (WorldServer world : worlds) {
+    public static void loadWorlds(Collection<ServerWorld> worlds) {
+        for (ServerWorld world : worlds) {
             loadWorld(world);
         }
     }
 
-    public static void loadWorld(WorldServer world) {
+    public static void loadWorld(ServerWorld world) {
         EventBus.publish(new WorldLoaded(world));
     }
 
@@ -40,27 +48,28 @@ public class CommonInterop {
         EventBus.publish(new ServerTick());
     }
 
-    public static void worldTick(WorldServer worldServer) {
-        EventBus.publish(new ServerWorldTick(worldServer));
-    }
-
-    public static void playerLoggedIn(EntityPlayerMP player) {
-        NetHandlerPlayServer connection = player.connection;
+    public static void playerLoggedIn(ServerPlayerEntity player) {
+        ServerPlayNetworkHandler connection = player.networkHandler;
         if (connection == null) return;
 
-        NetworkManager networkManager = connection.netManager;
-        if (networkManager.isLocalChannel()) return;
+        ClientConnection networkManager = connection.connection;
+        if (networkManager.isLocal()) return;
 
         EventBus.publish(new PlayerLoggedIn(new ServerPlayer(player)));
     }
 
-    public static void playerLoggedOut(EntityPlayerMP player) {
-        EventBus.publish(new PlayerLoggedOut(player.getEntityId()));
+    public static void playerLoggedOut(ServerPlayerEntity player) {
+        EventBus.publish(new PlayerLoggedOut(player.getId()));
+    }
+
+    public static void playerSubscribed(ServerPlayerEntity player) {
+        EventBus.publish(new PlayerSubscribed(player.getId(), new ServerPlayer(player)));
     }
 
-    public static void tryHarvestBlock(Block block, BlockPos pos, World world) {
-        if (block instanceof BlockMobSpawner) {
-            EventBus.publish(new MobSpawnerBroken(world.dimension.getType().getId(), new Coords(pos)));
+    public static <T extends AbstractBoundingBox> AbstractRenderer<T> registerRenderer(Class<? extends T> type, Supplier<AbstractRenderer<T>> renderer) {
+        if (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT) {
+            return ClientRenderer.registerRenderer(type, renderer);
         }
+        return null;
     }
 }