]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - src/main/java/com/irtimaled/bbor/common/CommonProxy.java
Move files ready for gradle builds
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / common / CommonProxy.java
1 package com.irtimaled.bbor.common;
2
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;
12
13 import java.util.HashSet;
14 import java.util.Set;
15
16 public class CommonProxy {
17     protected DimensionCache dimensionCache;
18     protected Set<VillageProcessor> villageProcessors = new HashSet<>();
19
20     private IVillageEventHandler eventHandler = null;
21
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));
33             }
34         }
35     }
36
37     public void chunkLoaded(Chunk chunk) {
38         DimensionType dimensionType = chunk.getWorld().provider.getDimensionType();
39         dimensionCache.refresh(dimensionType);
40     }
41
42     public void tick() {
43         villageProcessors.forEach(VillageProcessor::process);
44     }
45
46     public void init() {
47         dimensionCache = new DimensionCache();
48     }
49
50     public void setEventHandler(IVillageEventHandler eventHandler) {
51         this.eventHandler = eventHandler;
52     }
53
54     public DimensionCache getDimensionCache() {
55         return dimensionCache;
56     }
57 }