]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - src/main/java/com/irtimaled/bbor/client/providers/CustomBeaconProvider.java
Move client only boxes to client only namespace
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / client / providers / CustomBeaconProvider.java
1 package com.irtimaled.bbor.client.providers;
2
3 import com.irtimaled.bbor.client.Player;
4 import com.irtimaled.bbor.client.models.BoundingBoxBeacon;
5 import com.irtimaled.bbor.common.models.Coords;
6
7 import java.util.HashMap;
8 import java.util.Map;
9 import java.util.concurrent.ConcurrentHashMap;
10
11 public class CustomBeaconProvider implements IBoundingBoxProvider<BoundingBoxBeacon> {
12     private static final Map<Integer, Map<Coords, BoundingBoxBeacon>> dimensionsCache = new HashMap<>();
13
14     private static Map<Coords, BoundingBoxBeacon> getCache(int dimensionId) {
15         return dimensionsCache.computeIfAbsent(dimensionId, i -> new ConcurrentHashMap<>());
16     }
17
18     public static void add(Coords coords, int level) {
19         int dimensionId = Player.getDimensionId();
20         BoundingBoxBeacon beacon = BoundingBoxBeacon.from(coords, level);
21         getCache(dimensionId).put(coords, beacon);
22     }
23
24     public static boolean remove(Coords coords) {
25         int dimensionId = Player.getDimensionId();
26         return getCache(dimensionId).remove(coords) != null;
27     }
28
29     public static void clear() {
30         dimensionsCache.values().forEach(Map::clear);
31     }
32
33     public Iterable<BoundingBoxBeacon> get(int dimensionId) {
34         return getCache(dimensionId).values();
35     }
36 }