}
private void clear() {
- SlimeChunkProvider.clear();
- WorldSpawnProvider.clear();
- SpawningSphereProvider.clear();
- CustomBeaconProvider.clear();
- CustomBoxProvider.clear();
- BiomeBorderProvider.clear();
+ ClientRenderer.clear();
clearCaches();
}
import com.irtimaled.bbor.client.providers.*;
import com.irtimaled.bbor.client.renderers.*;
import com.irtimaled.bbor.common.MathHelper;
+import com.irtimaled.bbor.common.TypeHelper;
import com.irtimaled.bbor.common.models.AbstractBoundingBox;
import com.irtimaled.bbor.common.models.BoundingBoxCuboid;
import com.irtimaled.bbor.common.models.DimensionId;
.comparingDouble((AbstractBoundingBox boundingBox) -> boundingBox.getDistance(point.getX(), point.getY(), point.getZ())).reversed());
}
+ public static void clear() {
+ for(IBoundingBoxProvider<?> provider : providers) {
+ TypeHelper.doIfType(provider, ICachingProvider.class, ICachingProvider::clearCache);
+ }
+ }
}
.executes(SpawningSphereCommand::setSphere))
.then(Commands.literal(ArgumentNames.CLEAR)
.executes(context -> {
- boolean cleared = SpawningSphereProvider.clear();
+ boolean cleared = SpawningSphereProvider.clearSphere();
String format = cleared ? "bbor.commands.spawningSphere.cleared" : "bbor.commands.spawningSphere.notSet";
CommandHelper.feedback(context, format);
import java.util.HashMap;
import java.util.Map;
-public class BiomeBorderProvider implements IBoundingBoxProvider<BoundingBoxBiomeBorder> {
+public class BiomeBorderProvider implements IBoundingBoxProvider<BoundingBoxBiomeBorder>, ICachingProvider {
private static Coords lastPlayerCoords = null;
private static Boolean lastRenderAllTransitions = null;
private static Integer lastRenderDistance = null;
return lastBorders.values();
}
- public static void clear() {
+ public void clearCache() {
lastBorders = new HashMap<>();
lastPlayerCoords = null;
}
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
-public class CustomBeaconProvider implements IBoundingBoxProvider<BoundingBoxBeacon> {
+public class CustomBeaconProvider implements IBoundingBoxProvider<BoundingBoxBeacon>, ICachingProvider {
private static final Map<DimensionId, Map<Coords, BoundingBoxBeacon>> dimensionsCache = new HashMap<>();
private static Map<Coords, BoundingBoxBeacon> getCache(DimensionId dimensionId) {
dimensionsCache.values().forEach(Map::clear);
}
+ public void clearCache() {
+ clear();
+ }
+
@Override
public Iterable<BoundingBoxBeacon> get(DimensionId dimensionId) {
return getCache(dimensionId).values();
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
-public class CustomBoxProvider implements IBoundingBoxProvider<BoundingBoxCuboid> {
+public class CustomBoxProvider implements IBoundingBoxProvider<BoundingBoxCuboid>, ICachingProvider {
private static final Map<DimensionId, Map<Integer, BoundingBoxCuboid>> dimensionCache = new HashMap<>();
private static int getHashKey(Coords minCoords, Coords maxCoords) {
dimensionCache.values().forEach(Map::clear);
}
+ public void clearCache() {
+ clear();
+ }
+
@Override
public Iterable<BoundingBoxCuboid> get(DimensionId dimensionId) {
return getCache(dimensionId).values();
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
-public class CustomLineProvider implements IBoundingBoxProvider<BoundingBoxLine> {
+public class CustomLineProvider implements IBoundingBoxProvider<BoundingBoxLine>, ICachingProvider {
private static final Map<DimensionId, Map<Integer, BoundingBoxLine>> dimensionCache = new HashMap<>();
private static int getHashKey(Point minPoint, Point maxPoint) {
dimensionCache.values().forEach(Map::clear);
}
+ public void clearCache() {
+ clear();
+ }
+
@Override
public Iterable<BoundingBoxLine> get(DimensionId dimensionId) {
return getCache(dimensionId).values();
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
-public class CustomSphereProvider implements IBoundingBoxProvider<BoundingBoxSphere> {
+public class CustomSphereProvider implements IBoundingBoxProvider<BoundingBoxSphere>, ICachingProvider {
private static final Map<DimensionId, Map<Integer, BoundingBoxSphere>> dimensionCache = new HashMap<>();
private static Map<Integer, BoundingBoxSphere> getCache(DimensionId dimensionId) {
dimensionCache.values().forEach(Map::clear);
}
+ public void clearCache() {
+ clear();
+ }
+
@Override
public Iterable<BoundingBoxSphere> get(DimensionId dimensionId) {
return getCache(dimensionId).values();
import java.util.HashMap;
import java.util.Map;
-public class FlowerForestProvider implements IBoundingBoxProvider<BoundingBoxFlowerForest> {
+public class FlowerForestProvider implements IBoundingBoxProvider<BoundingBoxFlowerForest>, ICachingProvider {
public static final int FLOWER_FOREST_BIOME_ID = Registry.BIOME.getId(Biomes.FLOWER_FOREST);
private static Coords lastPlayerCoords = null;
private static Integer lastRenderDistance = null;
return lastBoundingBoxes.values();
}
- public static void clear() {
+ public void clearCache() {
lastBoundingBoxes = new HashMap<>();
lastPlayerCoords = null;
}
--- /dev/null
+package com.irtimaled.bbor.client.providers;
+
+public interface ICachingProvider {
+ void clearCache();
+}
import java.util.HashSet;
import java.util.Set;
-public class SlimeChunkProvider implements IBoundingBoxProvider<BoundingBoxSlimeChunk> {
+public class SlimeChunkProvider implements IBoundingBoxProvider<BoundingBoxSlimeChunk>, ICachingProvider {
private static final double CHUNK_SIZE = 16d;
private static Long seed;
return SharedSeedRandom.seedSlimeChunk(chunkX, chunkZ,seed, 987234911L).nextInt(10) == 0;
}
- public static void clear() {
+ public void clearCache() {
seed = null;
}
import java.util.HashSet;
import java.util.Set;
-public class SpawnableBlocksProvider implements IBoundingBoxProvider<BoundingBoxSpawnableBlocks> {
+public class SpawnableBlocksProvider implements IBoundingBoxProvider<BoundingBoxSpawnableBlocks>, ICachingProvider {
public static final Minecraft minecraft = Minecraft.getInstance();
private static Long lastGameTime = null;
private static Set<BoundingBoxSpawnableBlocks> lastBoundingBox = null;
- public static void clear() {
+ public void clearCache() {
+ lastGameTime = null;
lastBoundingBox = null;
}
import java.util.HashSet;
import java.util.Set;
-public class SpawningSphereProvider implements IBoundingBoxProvider<BoundingBoxSpawningSphere> {
+public class SpawningSphereProvider implements IBoundingBoxProvider<BoundingBoxSpawningSphere>, ICachingProvider {
public static final Minecraft minecraft = Minecraft.getInstance();
private static Long lastGameTime = null;
public static void setSphere(Point point) {
if (spawningSphere != null && spawningSphere.getPoint().equals(point)) return;
- clear();
dimensionId = Player.getDimensionId();
spawningSphere = new BoundingBoxSpawningSphere(point);
lastBoundingBox = null;
}
- public static boolean clear() {
+ public static boolean clearSphere() {
if (spawningSphere != null) {
lastBoundingBox = null;
spawningSphere = null;
return false;
}
+ public void clearCache() {
+ clearSphere();
+ }
+
public static void calculateSpawnableSpacesCount(BlockProcessor blockProcessor) {
if (spawningSphere != null) {
Point sphereCenter = spawningSphere.getPoint();
import java.util.HashSet;
import java.util.Set;
-public class WorldSpawnProvider implements IBoundingBoxProvider<BoundingBoxWorldSpawn> {
+public class WorldSpawnProvider implements IBoundingBoxProvider<BoundingBoxWorldSpawn>, ICachingProvider {
private static final double CHUNK_SIZE = 16d;
private static BoundingBoxWorldSpawn spawnChunks;
private static BoundingBoxWorldSpawn lazyChunks;
lazyChunks = buildSpawnChunksBoundingBox(spawnX, spawnZ, 16, BoundingBoxType.LazySpawnChunks);
}
- public static void clear() {
+ public void clearCache() {
worldSpawn = null;
spawnChunks = null;
lazyChunks = null;