]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - src/main/java/com/irtimaled/bbor/common/CommonProxy.java
Adjust structure loading based on 1.13 changes
[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.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;
10
11 import java.util.HashSet;
12 import java.util.Set;
13
14 public class CommonProxy {
15     protected DimensionCache dimensionCache;
16     protected Set<VillageProcessor> villageProcessors = new HashSet<>();
17
18     private IVillageEventHandler eventHandler = null;
19
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));
30             }
31         }
32     }
33
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);
39         }
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 }