]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - src/main/java/com/irtimaled/bbor/common/interop/CommonInterop.java
Get 1.17.1 building
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / common / interop / CommonInterop.java
1 package com.irtimaled.bbor.common.interop;
2
3 import com.irtimaled.bbor.common.EventBus;
4 import com.irtimaled.bbor.common.events.*;
5 import com.irtimaled.bbor.common.models.DimensionId;
6 import com.irtimaled.bbor.common.models.ServerPlayer;
7 import net.minecraft.network.ClientConnection;
8 import net.minecraft.server.network.ServerPlayNetworkHandler;
9 import net.minecraft.server.network.ServerPlayerEntity;
10 import net.minecraft.server.world.ServerWorld;
11 import net.minecraft.structure.StructureStart;
12 import net.minecraft.world.chunk.WorldChunk;
13
14 import java.util.Collection;
15 import java.util.HashMap;
16 import java.util.Map;
17
18 public class CommonInterop {
19     public static void chunkLoaded(WorldChunk chunk) {
20         DimensionId dimensionId = DimensionId.from(chunk.getWorld().getRegistryKey());
21         Map<String, StructureStart<?>> structures = new HashMap<>();
22         chunk.getStructureStarts().entrySet().forEach(es -> structures.put(es.getKey().getName(), es.getValue()));
23         if (structures.size() > 0) EventBus.publish(new StructuresLoaded(structures, dimensionId));
24     }
25
26     public static void loadWorlds(Collection<ServerWorld> worlds) {
27         for (ServerWorld world : worlds) {
28             loadWorld(world);
29         }
30     }
31
32     public static void loadWorld(ServerWorld world) {
33         EventBus.publish(new WorldLoaded(world));
34     }
35
36     public static void tick() {
37         EventBus.publish(new ServerTick());
38     }
39
40     public static void playerLoggedIn(ServerPlayerEntity player) {
41         ServerPlayNetworkHandler connection = player.networkHandler;
42         if (connection == null) return;
43
44         ClientConnection networkManager = connection.connection;
45         if (networkManager.isLocal()) return;
46
47         EventBus.publish(new PlayerLoggedIn(new ServerPlayer(player)));
48     }
49
50     public static void playerLoggedOut(ServerPlayerEntity player) {
51         EventBus.publish(new PlayerLoggedOut(player.getId()));
52     }
53
54     public static void playerSubscribed(ServerPlayerEntity player) {
55         EventBus.publish(new PlayerSubscribed(player.getId(), new ServerPlayer(player)));
56     }
57 }