1 package com.irtimaled.bbor.common;
3 import com.irtimaled.bbor.Logger;
4 import com.irtimaled.bbor.ReflectionHelper;
5 import com.irtimaled.bbor.config.ConfigManager;
6 import net.minecraft.world.DimensionType;
7 import net.minecraft.world.World;
8 import net.minecraft.world.chunk.Chunk;
9 import net.minecraft.world.chunk.IChunkProvider;
10 import net.minecraft.world.gen.ChunkProviderServer;
11 import net.minecraft.world.gen.IChunkGenerator;
13 import java.util.HashSet;
16 public class CommonProxy {
17 protected DimensionCache dimensionCache;
18 protected Set<VillageProcessor> villageProcessors = new HashSet<>();
20 private IVillageEventHandler eventHandler = null;
22 public void worldLoaded(World world) {
23 IChunkProvider chunkProvider = world.getChunkProvider();
24 if (chunkProvider instanceof ChunkProviderServer) {
25 IChunkGenerator chunkGenerator = ReflectionHelper.getPrivateValue(ChunkProviderServer.class, (ChunkProviderServer) chunkProvider, IChunkGenerator.class);
26 dimensionCache.setWorldData(world.getSeed(), world.getWorldInfo().getSpawnX(), world.getWorldInfo().getSpawnZ());
27 DimensionType dimensionType = world.provider.getDimensionType();
28 Logger.info("create world dimension: %s, %s (chunkprovider: %s) (seed: %d)", dimensionType, world.getClass().toString(), chunkGenerator.getClass().toString(), world.getSeed());
29 DimensionProcessor boundingBoxCache = new DimensionProcessor(dimensionType, chunkGenerator);
30 dimensionCache.put(dimensionType, boundingBoxCache);
31 if (ConfigManager.drawVillages.getBoolean()) {
32 villageProcessors.add(new VillageProcessor(world, dimensionType, eventHandler, boundingBoxCache));
37 public void chunkLoaded(Chunk chunk) {
38 DimensionType dimensionType = chunk.getWorld().provider.getDimensionType();
39 dimensionCache.refresh(dimensionType);
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;