]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - src/main/java/com/irtimaled/bbor/client/interop/BiomeBorderHelper.java
1.18.2-rc1
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / client / interop / BiomeBorderHelper.java
1 package com.irtimaled.bbor.client.interop;
2
3 import com.irtimaled.bbor.common.models.Coords;
4 import it.unimi.dsi.fastutil.longs.Long2IntOpenHashMap;
5 import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
6 import net.minecraft.client.MinecraftClient;
7 import net.minecraft.client.world.ClientWorld;
8 import net.minecraft.util.math.BlockPos;
9 import net.minecraft.util.math.ChunkPos;
10 import net.minecraft.util.registry.Registry;
11
12 public class BiomeBorderHelper {
13
14     private static final Long2ObjectOpenHashMap<Long2IntOpenHashMap> biomeCache = new Long2ObjectOpenHashMap<>();
15
16     public static void onChunkLoaded(int chunkX, int chunkZ) {
17
18     }
19
20     public static void onChunkUnload(int chunkX, int chunkZ) {
21         biomeCache.remove(ChunkPos.toLong(chunkX, chunkZ));
22     }
23
24     public static void onDisconnect() {
25         biomeCache.clear();
26     }
27
28     public static int getBiomeId(Coords coords) {
29         return getBiomeId(coords.getX(), coords.getY(), coords.getZ());
30     }
31
32     public static int getBiomeId(int x, int y, int z) {
33         BlockPos pos = new BlockPos(x, y, z);
34         final Long2IntOpenHashMap biomeArray = biomeCache.computeIfAbsent(ChunkPos.toLong(pos), key -> createNewMap());
35         final ClientWorld world = MinecraftClient.getInstance().world;
36         return biomeArray.computeIfAbsent(pos.asLong(), key -> {
37             assert world != null;
38             return world.getRegistryManager().get(Registry.BIOME_KEY).getRawId(world.getBiome(pos).value());
39         });
40     }
41
42     private static Long2IntOpenHashMap createNewMap() {
43         final Long2IntOpenHashMap long2IntOpenHashMap = new Long2IntOpenHashMap();
44         long2IntOpenHashMap.defaultReturnValue(-1);
45         return long2IntOpenHashMap;
46     }
47 }