]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blobdiff - src/main/java/com/irtimaled/bbor/client/providers/SpawningSphereProvider.java
Port to 1.19
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / client / providers / SpawningSphereProvider.java
index a5a2a1ef9393cd9c4e15a2f18fe0c002456caa09..ec0ee309ea9a71256541a8d20d98944b11e8b931 100644 (file)
@@ -6,41 +6,32 @@ import com.irtimaled.bbor.client.config.ConfigManager;
 import com.irtimaled.bbor.client.interop.BlockProcessor;
 import com.irtimaled.bbor.client.interop.SpawningSphereHelper;
 import com.irtimaled.bbor.client.models.BoundingBoxSpawningSphere;
+import com.irtimaled.bbor.client.models.Point;
 import com.irtimaled.bbor.common.BoundingBoxType;
 import com.irtimaled.bbor.common.MathHelper;
-import com.irtimaled.bbor.common.models.Point;
-import net.minecraft.client.Minecraft;
+import com.irtimaled.bbor.common.models.DimensionId;
+import net.minecraft.client.MinecraftClient;
 
 import java.util.HashSet;
 import java.util.Set;
 
-public class SpawningSphereProvider implements IBoundingBoxProvider<BoundingBoxSpawningSphere> {
-    public static final Minecraft minecraft = Minecraft.getInstance();
+public class SpawningSphereProvider implements IBoundingBoxProvider<BoundingBoxSpawningSphere>, ICachingProvider {
+    public static final MinecraftClient minecraft = MinecraftClient.getInstance();
     private static Long lastGameTime = null;
 
     private static Set<BoundingBoxSpawningSphere> lastBoundingBox = null;
     private static BoundingBoxSpawningSphere spawningSphere;
-    private static Integer dimensionId;
-
-    public static void setSphere(double x, double y, double z) {
-        Point point = new Point(snapToNearestHalf(x), y, snapToNearestHalf(z));
+    private static DimensionId dimensionId;
 
+    public static void setSphere(Point point) {
         if (spawningSphere != null && spawningSphere.getPoint().equals(point)) return;
-        clear();
 
         dimensionId = Player.getDimensionId();
         spawningSphere = new BoundingBoxSpawningSphere(point);
         lastBoundingBox = null;
     }
 
-    private static double snapToNearestHalf(double value) {
-        int floor = MathHelper.floor(value);
-        int fraction = MathHelper.floor((value - floor) * 4.0);
-        if (fraction % 2 == 1) fraction++;
-        return floor + (fraction / 4.0);
-    }
-
-    public static boolean clear() {
+    public static boolean clearSphere() {
         if (spawningSphere != null) {
             lastBoundingBox = null;
             spawningSphere = null;
@@ -50,6 +41,10 @@ public class SpawningSphereProvider implements IBoundingBoxProvider<BoundingBoxS
         return false;
     }
 
+    public void clearCache() {
+        clearSphere();
+    }
+
     public static void calculateSpawnableSpacesCount(BlockProcessor blockProcessor) {
         if (spawningSphere != null) {
             Point sphereCenter = spawningSphere.getPoint();
@@ -62,7 +57,7 @@ public class SpawningSphereProvider implements IBoundingBoxProvider<BoundingBoxS
         return hasSpawningSphereInDimension(Player.getDimensionId()) && spawningSphere.isWithinSphere(Player.getPoint());
     }
 
-    public static boolean hasSpawningSphereInDimension(int dimensionId) {
+    public static boolean hasSpawningSphereInDimension(DimensionId dimensionId) {
         return spawningSphere != null && SpawningSphereProvider.dimensionId == dimensionId;
     }
 
@@ -73,13 +68,13 @@ public class SpawningSphereProvider implements IBoundingBoxProvider<BoundingBoxS
     }
 
     @Override
-    public boolean canProvide(int dimensionId) {
+    public boolean canProvide(DimensionId dimensionId) {
         return hasSpawningSphereInDimension(dimensionId) && BoundingBoxTypeHelper.shouldRender(BoundingBoxType.AFKSphere);
     }
 
     @Override
-    public Iterable<BoundingBoxSpawningSphere> get(int dimensionId) {
-        long gameTime = minecraft.world.getGameTime();
+    public Iterable<BoundingBoxSpawningSphere> get(DimensionId dimensionId) {
+        long gameTime = minecraft.world.getTime();
         if (lastBoundingBox == null || (!((Long) gameTime).equals(lastGameTime) && gameTime % 2L == 0L)) {
             lastGameTime = gameTime;
             lastBoundingBox = getSpawningSphere();