1 package com.irtimaled.bbor.common.interop;
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;
14 import java.util.Collection;
17 public class CommonInterop {
18 public static void chunkLoaded(WorldChunk chunk) {
19 DimensionId dimensionId = DimensionId.from(chunk.getWorld().getDimension().getType());
20 Map<String, StructureStart> structures = chunk.getStructureStarts();
21 if (structures.size() > 0) EventBus.publish(new StructuresLoaded(structures, dimensionId));
24 public static void loadWorlds(Collection<ServerWorld> worlds) {
25 for (ServerWorld world : worlds) {
30 public static void loadWorld(ServerWorld world) {
31 EventBus.publish(new WorldLoaded(world));
34 public static void tick() {
35 EventBus.publish(new ServerTick());
38 public static void playerLoggedIn(ServerPlayerEntity player) {
39 ServerPlayNetworkHandler connection = player.networkHandler;
40 if (connection == null) return;
42 ClientConnection networkManager = connection.connection;
43 if (networkManager.isLocal()) return;
45 EventBus.publish(new PlayerLoggedIn(new ServerPlayer(player)));
48 public static void playerLoggedOut(ServerPlayerEntity player) {
49 EventBus.publish(new PlayerLoggedOut(player.getEntityId()));
52 public static void playerSubscribed(ServerPlayerEntity player) {
53 EventBus.publish(new PlayerSubscribed(player.getEntityId(), new ServerPlayer(player)));