1 package com.irtimaled.bbor.common;
3 import com.irtimaled.bbor.Logger;
4 import com.irtimaled.bbor.config.ConfigManager;
5 import net.minecraft.world.World;
6 import net.minecraft.world.chunk.Chunk;
7 import net.minecraft.world.chunk.IChunkProvider;
8 import net.minecraft.world.dimension.DimensionType;
9 import net.minecraft.world.gen.ChunkProviderServer;
11 import java.util.HashSet;
14 public class CommonProxy {
15 protected DimensionCache dimensionCache;
16 protected Set<VillageProcessor> villageProcessors = new HashSet<>();
18 private IVillageEventHandler eventHandler = null;
20 public void worldLoaded(World world) {
21 IChunkProvider chunkProvider = world.getChunkProvider();
22 if (chunkProvider instanceof ChunkProviderServer) {
23 dimensionCache.setWorldData(world.getSeed(), world.getWorldInfo().getSpawnX(), world.getWorldInfo().getSpawnZ());
24 DimensionType dimensionType = world.dimension.getType();
25 Logger.info("create world dimension: %s, %s (seed: %d)", dimensionType, world.getClass().toString(), world.getSeed());
26 DimensionProcessor boundingBoxCache = new DimensionProcessor(dimensionType);
27 dimensionCache.put(dimensionType, boundingBoxCache);
28 if (ConfigManager.drawVillages.getBoolean()) {
29 villageProcessors.add(new VillageProcessor(world, dimensionType, eventHandler, boundingBoxCache));
34 public void chunkLoaded(Chunk chunk) {
35 DimensionType dimensionType = chunk.getWorld().dimension.getType();
36 BoundingBoxCache cache = dimensionCache.get(dimensionType);
37 if(cache instanceof DimensionProcessor) {
38 ((DimensionProcessor)cache).processChunk(chunk);
43 villageProcessors.forEach(VillageProcessor::process);
47 dimensionCache = new DimensionCache();
50 public void setEventHandler(IVillageEventHandler eventHandler) {
51 this.eventHandler = eventHandler;
54 public DimensionCache getDimensionCache() {
55 return dimensionCache;