1 package com.irtimaled.bbor.client.providers;
3 import com.irtimaled.bbor.client.Player;
4 import com.irtimaled.bbor.common.models.BoundingBoxBeacon;
5 import com.irtimaled.bbor.common.models.Coords;
7 import java.util.HashMap;
9 import java.util.concurrent.ConcurrentHashMap;
11 public class CustomBeaconProvider implements IBoundingBoxProvider<BoundingBoxBeacon> {
12 private static final Map<Integer, Map<Coords, BoundingBoxBeacon>> dimensionsCache = new HashMap<>();
14 private static Map<Coords, BoundingBoxBeacon> getCache(int dimensionId) {
15 return dimensionsCache.computeIfAbsent(dimensionId, i -> new ConcurrentHashMap<>());
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);
24 public static boolean remove(Coords coords) {
25 int dimensionId = Player.getDimensionId();
26 return getCache(dimensionId).remove(coords) != null;
29 public static void clear() {
30 dimensionsCache.values().forEach(Map::clear);
33 public Iterable<BoundingBoxBeacon> get(int dimensionId) {
34 return getCache(dimensionId).values();