1 package com.irtimaled.bbor.common.interop;
3 import com.irtimaled.bbor.common.EventBus;
4 import com.irtimaled.bbor.common.events.PlayerLoggedIn;
5 import com.irtimaled.bbor.common.events.PlayerLoggedOut;
6 import com.irtimaled.bbor.common.events.PlayerSubscribed;
7 import com.irtimaled.bbor.common.events.ServerTick;
8 import com.irtimaled.bbor.common.events.StructuresLoaded;
9 import com.irtimaled.bbor.common.events.WorldLoaded;
10 import com.irtimaled.bbor.common.models.DimensionId;
11 import com.irtimaled.bbor.common.models.ServerPlayer;
12 import net.minecraft.network.ClientConnection;
13 import net.minecraft.server.network.ServerPlayNetworkHandler;
14 import net.minecraft.server.network.ServerPlayerEntity;
15 import net.minecraft.server.world.ServerWorld;
16 import net.minecraft.structure.StructureStart;
17 import net.minecraft.world.chunk.WorldChunk;
19 import java.util.Collection;
20 import java.util.HashMap;
23 public class CommonInterop {
24 public static void chunkLoaded(WorldChunk chunk) {
25 DimensionId dimensionId = DimensionId.from(chunk.getWorld().getRegistryKey());
26 Map<String, StructureStart<?>> structures = new HashMap<>();
27 chunk.getStructureStarts().entrySet().forEach(es -> structures.put(es.getKey().getName(), es.getValue()));
28 if (structures.size() > 0) EventBus.publish(new StructuresLoaded(structures, dimensionId));
31 public static void loadWorlds(Collection<ServerWorld> worlds) {
32 for (ServerWorld world : worlds) {
37 public static void loadWorld(ServerWorld world) {
38 EventBus.publish(new WorldLoaded(world));
41 public static void tick() {
42 EventBus.publish(new ServerTick());
45 public static void playerLoggedIn(ServerPlayerEntity player) {
46 ServerPlayNetworkHandler connection = player.networkHandler;
47 if (connection == null) return;
49 ClientConnection networkManager = connection.connection;
50 if (networkManager.isLocal()) return;
52 EventBus.publish(new PlayerLoggedIn(new ServerPlayer(player)));
55 public static void playerLoggedOut(ServerPlayerEntity player) {
56 EventBus.publish(new PlayerLoggedOut(player.getId()));
59 public static void playerSubscribed(ServerPlayerEntity player) {
60 EventBus.publish(new PlayerSubscribed(player.getId(), new ServerPlayer(player)));