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;
15 import java.util.HashMap;
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));
26 public static void loadWorlds(Collection<ServerWorld> worlds) {
27 for (ServerWorld world : worlds) {
32 public static void loadWorld(ServerWorld world) {
33 EventBus.publish(new WorldLoaded(world));
36 public static void tick() {
37 EventBus.publish(new ServerTick());
40 public static void playerLoggedIn(ServerPlayerEntity player) {
41 ServerPlayNetworkHandler connection = player.networkHandler;
42 if (connection == null) return;
44 ClientConnection networkManager = connection.connection;
45 if (networkManager.isLocal()) return;
47 EventBus.publish(new PlayerLoggedIn(new ServerPlayer(player)));
50 public static void playerLoggedOut(ServerPlayerEntity player) {
51 EventBus.publish(new PlayerLoggedOut(player.getId()));
54 public static void playerSubscribed(ServerPlayerEntity player) {
55 EventBus.publish(new PlayerSubscribed(player.getId(), new ServerPlayer(player)));