diff --git a/BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/AxisMovementLimiter.java b/BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/AxisMovementLimiter19.java similarity index 88% rename from BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/AxisMovementLimiter.java rename to BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/AxisMovementLimiter19.java index 47596f80..98d679e0 100644 --- a/BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/AxisMovementLimiter.java +++ b/BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/AxisMovementLimiter19.java @@ -26,7 +26,7 @@ import org.bukkit.util.VoxelShape; import java.util.ArrayList; import java.util.List; -public class AxisMovementLimiter { +public class AxisMovementLimiter19 { private double x; private double y; @@ -41,7 +41,7 @@ public class AxisMovementLimiter { private double minZ; private double maxZ; - public AxisMovementLimiter(double x, double y, double z, Axis axis, double movement) { + public AxisMovementLimiter19(double x, double y, double z, Axis axis, double movement) { this.x = x; this.y = y; this.z = z; @@ -84,19 +84,19 @@ public class AxisMovementLimiter { // System.out.println(axis + " " + minX + " -> " + maxX + " " + minY + " -> " + maxY + " " + minZ + " -> " + maxZ); } - private List possibleCollisions() { - int minX = TNT.floor(this.minX); - int maxX = TNT.floor(this.maxX); - int minY = TNT.floor(this.minY) - 1; - int maxY = TNT.floor(this.maxY); - int minZ = TNT.floor(this.minZ); - int maxZ = TNT.floor(this.maxZ); + private List possibleCollisions() { + int minX = TNT19.floor(this.minX); + int maxX = TNT19.floor(this.maxX); + int minY = TNT19.floor(this.minY) - 1; + int maxY = TNT19.floor(this.maxY); + int minZ = TNT19.floor(this.minZ); + int maxZ = TNT19.floor(this.maxZ); - List poss = new ArrayList<>(); + List poss = new ArrayList<>(); for (int x = minX; x <= maxX; x++) { for (int y = minY; y <= maxY; y++) { for (int z = minZ; z <= maxZ; z++) { - poss.add(new Pos(x, y, z)); + poss.add(new Pos19(x, y, z)); } } } @@ -104,14 +104,14 @@ public class AxisMovementLimiter { } // TODO: This can be optimized by optimizing the x,y,z loop layout - public double run(SimulatorData simulatorData) { + public double run(SimulatorData19 simulatorData) { if (movement == 0.0) return 0.0; BoundingBox movementBoundingBox = new BoundingBox(minX, minY, minZ, maxX, maxY, maxZ); - List poss = possibleCollisions(); + List poss = possibleCollisions(); Double collision = null; - for (Pos pos : poss) { + for (Pos19 pos : poss) { VoxelShape voxelShape = simulatorData.getVoxelShape(pos); for (BoundingBox boundingBox : voxelShape.getBoundingBoxes()) { boundingBox = boundingBox.clone().shift(pos.x, pos.y, pos.z); diff --git a/BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/Explosion.java b/BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/Explosion19.java similarity index 90% rename from BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/Explosion.java rename to BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/Explosion19.java index 0e391e21..be9d9432 100644 --- a/BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/Explosion.java +++ b/BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/Explosion19.java @@ -24,7 +24,7 @@ import org.bukkit.block.data.Waterlogged; import java.util.*; -public class Explosion { +public class Explosion19 { private static final double[] FACE_BLOCKS = new double[(16 * 16 * 2 + 14 * 16 * 2 + 14 * 14 * 2) * 3]; @@ -60,21 +60,21 @@ public class Explosion { private static final Random RANDOM = new Random(); private static final float POWER = 4.0F; - private final TNT tnt; + private final TNT19 tnt; private final double x; private final double y; private final double z; - public Explosion(TNT tnt, double x, double y, double z) { + public Explosion19(TNT19 tnt, double x, double y, double z) { this.tnt = tnt; this.x = x; this.y = y; this.z = z; } - public void calculate(SimulatorData simulatorData) { - Set affectedBlocks = new HashSet<>(); + public void calculate(SimulatorData19 simulatorData) { + Set affectedBlocks = new HashSet<>(); for (int i = 0; i < FACE_BLOCKS.length; i += 3) { double d = FACE_BLOCKS[i + 0]; double e = FACE_BLOCKS[i + 1]; @@ -86,9 +86,9 @@ public class Explosion { double o = z; for (; h > 0.0F; h -= 0.22500001F) { - int x = TNT.floor(m); - int y = TNT.floor(n); - int z = TNT.floor(o); + int x = TNT19.floor(m); + int y = TNT19.floor(n); + int z = TNT19.floor(o); Material material = simulatorData.getBlockType(x, y, z); if (!material.isAir()) { @@ -102,7 +102,7 @@ public class Explosion { } if (h > 0.0F) { - affectedBlocks.add(new Pos(x, y, z)); + affectedBlocks.add(new Pos19(x, y, z)); } m += d * 0.30000001192092896; @@ -120,7 +120,7 @@ public class Explosion { int t = floor(z - q - 1.0D); int u = floor(z + q + 1.0D); - for (TNT currentTNT : simulatorData.tntList) { + for (TNT19 currentTNT : simulatorData.tntList) { if (currentTNT == tnt) continue; if (!(currentTNT.getX() >= k && currentTNT.getY() >= r && currentTNT.getZ() >= t && currentTNT.getX() <= l && currentTNT.getY() <= s && currentTNT.getZ() <= u)) { continue; @@ -160,7 +160,7 @@ public class Explosion { private static final double EXPOSURE_CONSTANT_1 = 1.0 / (SIZE * 2 + 1.0); private static final double EXPOSURE_CONSTANT_2 = (1.0 - Math.floor(1.0 / EXPOSURE_CONSTANT_1) * EXPOSURE_CONSTANT_1) / 2.0; - private static float getExposure(SimulatorData simulatorData, double x, double y, double z) { + private static float getExposure(SimulatorData19 simulatorData, double x, double y, double z) { float blockMisses = 0; float blockTotal = 0; @@ -186,7 +186,7 @@ public class Explosion { return start + delta * (end - start); } - public static boolean rayTrace(SimulatorData simulatorData, double sX, double sY, double sZ, double dX, double dY, double dZ) { + public static boolean rayTrace(SimulatorData19 simulatorData, double sX, double sY, double sZ, double dX, double dY, double dZ) { double x = sX; double y = sY; double z = sZ; diff --git a/BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/OptimizedAxisMovementLimiter.java b/BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/OptimizedAxisMovementLimiter19.java similarity index 89% rename from BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/OptimizedAxisMovementLimiter.java rename to BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/OptimizedAxisMovementLimiter19.java index f6e92865..0b65cb2e 100644 --- a/BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/OptimizedAxisMovementLimiter.java +++ b/BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/OptimizedAxisMovementLimiter19.java @@ -23,7 +23,7 @@ import org.bukkit.Axis; import org.bukkit.util.BoundingBox; import org.bukkit.util.VoxelShape; -public class OptimizedAxisMovementLimiter { +public class OptimizedAxisMovementLimiter19 { private Axis axis; private double movement; @@ -44,7 +44,7 @@ public class OptimizedAxisMovementLimiter { private BoundingBox movementBoundingBox; - public OptimizedAxisMovementLimiter(double x, double y, double z, Axis axis, double movement) { + public OptimizedAxisMovementLimiter19(double x, double y, double z, Axis axis, double movement) { this.axis = axis; this.movement = movement; @@ -82,17 +82,17 @@ public class OptimizedAxisMovementLimiter { break; } - minIX = TNT.floor(minX); - maxIX = TNT.floor(maxX); - minIY = TNT.floor(minY) - 1; - maxIY = TNT.floor(maxY); - minIZ = TNT.floor(minZ); - maxIZ = TNT.floor(maxZ); + minIX = TNT19.floor(minX); + maxIX = TNT19.floor(maxX); + minIY = TNT19.floor(minY) - 1; + maxIY = TNT19.floor(maxY); + minIZ = TNT19.floor(minZ); + maxIZ = TNT19.floor(maxZ); movementBoundingBox = new BoundingBox(minX, minY, minZ, maxX, maxY, maxZ); } - public double run(SimulatorData simulatorData) { + public double run(SimulatorData19 simulatorData) { if (movement == 0.0) return 0.0; switch (axis) { case X: @@ -117,12 +117,12 @@ public class OptimizedAxisMovementLimiter { } } - private double runNX(SimulatorData simulatorData) { + private double runNX(SimulatorData19 simulatorData) { Double collision = null; for (int x = maxIX - 1; x >= minIX; x--) { for (int y = minIY; y < maxIY; y++) { for (int z = minIZ; z < maxIZ; z++) { - Pos pos = new Pos(x, y, z); + Pos19 pos = new Pos19(x, y, z); VoxelShape voxelShape = simulatorData.getVoxelShape(pos); for (BoundingBox boundingBox : voxelShape.getBoundingBoxes()) { boundingBox = boundingBox.clone().shift(x, y, z); @@ -147,12 +147,12 @@ public class OptimizedAxisMovementLimiter { return movement + (collision - minX); } - private double runPX(SimulatorData simulatorData) { + private double runPX(SimulatorData19 simulatorData) { Double collision = null; for (int x = minIX; x < maxIX; x++) { for (int y = minIY; y < maxIY; y++) { for (int z = minIZ; z < maxIZ; z++) { - Pos pos = new Pos(x, y, z); + Pos19 pos = new Pos19(x, y, z); VoxelShape voxelShape = simulatorData.getVoxelShape(pos); for (BoundingBox boundingBox : voxelShape.getBoundingBoxes()) { boundingBox = boundingBox.clone().shift(x, y, z); @@ -177,12 +177,12 @@ public class OptimizedAxisMovementLimiter { return movement + (collision - minX); } - private double runNY(SimulatorData simulatorData) { + private double runNY(SimulatorData19 simulatorData) { Double collision = null; for (int y = maxIY - 1; y >= minIY; y--) { for (int x = minIX; x < maxIX; x++) { for (int z = minIZ; z < maxIZ; z++) { - Pos pos = new Pos(x, y, z); + Pos19 pos = new Pos19(x, y, z); VoxelShape voxelShape = simulatorData.getVoxelShape(pos); for (BoundingBox boundingBox : voxelShape.getBoundingBoxes()) { boundingBox = boundingBox.clone().shift(x, y, z); @@ -207,12 +207,12 @@ public class OptimizedAxisMovementLimiter { return movement + (collision - minY); } - private double runPY(SimulatorData simulatorData) { + private double runPY(SimulatorData19 simulatorData) { Double collision = null; for (int y = minIY; y < maxIY; y++) { for (int x = minIX; x < maxIX; x++) { for (int z = minIZ; z < maxIZ; z++) { - Pos pos = new Pos(x, y, z); + Pos19 pos = new Pos19(x, y, z); VoxelShape voxelShape = simulatorData.getVoxelShape(pos); for (BoundingBox boundingBox : voxelShape.getBoundingBoxes()) { boundingBox = boundingBox.clone().shift(x, y, z); @@ -237,12 +237,12 @@ public class OptimizedAxisMovementLimiter { return movement + (collision - minY); } - private double runNZ(SimulatorData simulatorData) { + private double runNZ(SimulatorData19 simulatorData) { Double collision = null; for (int z = maxIZ - 1; z >= minIZ; z--) { for (int x = minIX; x < maxIX; x++) { for (int y = minIY; y < maxIY; y++) { - Pos pos = new Pos(x, y, z); + Pos19 pos = new Pos19(x, y, z); VoxelShape voxelShape = simulatorData.getVoxelShape(pos); for (BoundingBox boundingBox : voxelShape.getBoundingBoxes()) { boundingBox = boundingBox.clone().shift(x, y, z); @@ -267,12 +267,12 @@ public class OptimizedAxisMovementLimiter { return movement + (collision - minZ); } - private double runPZ(SimulatorData simulatorData) { + private double runPZ(SimulatorData19 simulatorData) { Double collision = null; for (int z = minIZ; z < maxIZ; z++) { for (int x = minIX; x < maxIX; x++) { for (int y = minIY; y < maxIY; y++) { - Pos pos = new Pos(x, y, z); + Pos19 pos = new Pos19(x, y, z); VoxelShape voxelShape = simulatorData.getVoxelShape(pos); for (BoundingBox boundingBox : voxelShape.getBoundingBoxes()) { boundingBox = boundingBox.clone().shift(x, y, z); diff --git a/BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/Pos.java b/BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/Pos19.java similarity index 97% rename from BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/Pos.java rename to BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/Pos19.java index 82a94b9a..0791efd1 100644 --- a/BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/Pos.java +++ b/BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/Pos19.java @@ -22,7 +22,7 @@ package de.steamwar.bausystem.features.simulator.preview; import lombok.Data; @Data -public class Pos { +public class Pos19 { public final int x; public final int y; public final int z; diff --git a/BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/Simulator19.java b/BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/Simulator19.java index a3c64d3b..dbe126cc 100644 --- a/BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/Simulator19.java +++ b/BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/Simulator19.java @@ -42,10 +42,10 @@ public class Simulator19 implements Simulator { if (toCalculate == null) return null; BukkitRunnable bukkitRunnable = new BukkitRunnable() { - private SimulatorData simulatorData = new SimulatorData(); + private SimulatorData19 simulatorData = new SimulatorData19(); private PreviewRecord previewRecord = new PreviewRecord(); private int currentTick = 0; - private Map recordMap = new IdentityHashMap<>(); + private Map recordMap = new IdentityHashMap<>(); @Override public void run() { @@ -63,7 +63,7 @@ public class Simulator19 implements Simulator { pairs.forEach(pair -> { if (pair.getValue() > 0) { hasSomeLeft.set(true); - TNT tnt = new TNT(pair.getKey().location.getX(), pair.getKey().location.getY(), pair.getKey().location.getZ()); + TNT19 tnt = new TNT19(pair.getKey().location.getX(), pair.getKey().location.getY(), pair.getKey().location.getZ()); if (!pair.getKey().xVelocity) tnt.setVx(0.0); if (!pair.getKey().yVelocity) tnt.setVy(0.0); if (!pair.getKey().zVelocity) tnt.setVz(0.0); @@ -80,8 +80,8 @@ public class Simulator19 implements Simulator { } currentTick++; - List remove = new ArrayList<>(); - for (TNT tnt : simulatorData.tntList) { + List remove = new ArrayList<>(); + for (TNT19 tnt : simulatorData.tntList) { // System.out.println("CALC: " + simulatorData.blockTypesMap.size() + "/" + simulatorData.blockDataMap.size() + "/" + simulatorData.collisionDataMap.size() + "/" + simulatorData.airBlocks.size() + " " + recordMap.size()); if (tnt.tick(simulatorData)) { remove.add(tnt); diff --git a/BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/SimulatorData.java b/BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/SimulatorData19.java similarity index 83% rename from BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/SimulatorData.java rename to BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/SimulatorData19.java index 2c10b231..1a22815d 100644 --- a/BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/SimulatorData.java +++ b/BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/SimulatorData19.java @@ -29,7 +29,7 @@ import java.util.*; import java.util.function.Predicate; import java.util.stream.Collectors; -public class SimulatorData { +public class SimulatorData19 { private static final BlockData AIR_BLOCK_DATA = Material.AIR.createBlockData(); private static final VoxelShape AIR_VOXEL_SHAPE = new VoxelShape() { @@ -47,15 +47,15 @@ public class SimulatorData { long accessed = 0; long cacheMisses = 0; long aired = 0; - final List tntList = new ArrayList<>(); - final Set airBlocks = new HashSet<>(); - final Map blockTypesMap = new HashMap<>(); - final Map blockDataMap = new HashMap<>(); - final Map collisionDataMap = new HashMap<>(); + final List tntList = new ArrayList<>(); + final Set airBlocks = new HashSet<>(); + final Map blockTypesMap = new HashMap<>(); + final Map blockDataMap = new HashMap<>(); + final Map collisionDataMap = new HashMap<>(); public Material getBlockType(int x, int y, int z) { // Get BlockType of Chunk Data array? accessed++; - Pos pos = new Pos(x, y, z); + Pos19 pos = new Pos19(x, y, z); if (airBlocks.contains(pos)) { return Material.AIR; } @@ -67,7 +67,7 @@ public class SimulatorData { public BlockData getBlockData(int x, int y, int z) { accessed++; - Pos pos = new Pos(x, y, z); + Pos19 pos = new Pos19(x, y, z); if (airBlocks.contains(pos)) { return AIR_BLOCK_DATA; } @@ -77,7 +77,7 @@ public class SimulatorData { }); } - public VoxelShape getVoxelShape(Pos pos) { + public VoxelShape getVoxelShape(Pos19 pos) { accessed++; if (airBlocks.contains(pos)) { return AIR_VOXEL_SHAPE; @@ -88,7 +88,7 @@ public class SimulatorData { }); } - public void clearBlock(Pos pos) { + public void clearBlock(Pos19 pos) { aired++; airBlocks.add(pos); blockTypesMap.remove(pos); @@ -96,7 +96,7 @@ public class SimulatorData { collisionDataMap.remove(pos); } - public void clearBlocks(Set poss) { + public void clearBlocks(Set poss) { poss.forEach(this::clearBlock); } @@ -106,7 +106,7 @@ public class SimulatorData { public Predicate accessedBlocks() { return vector -> { - Pos pos = new Pos(vector.getBlockX(), vector.getBlockY(), vector.getBlockZ()); + Pos19 pos = new Pos19(vector.getBlockX(), vector.getBlockY(), vector.getBlockZ()); return airBlocks.contains(pos) || blockTypesMap.containsKey(pos) || blockDataMap.containsKey(pos) || collisionDataMap.containsKey(pos); }; } diff --git a/BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/TNT.java b/BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/TNT19.java similarity index 89% rename from BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/TNT.java rename to BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/TNT19.java index eacc8862..2f67219a 100644 --- a/BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/TNT.java +++ b/BauSystem_19/src/de/steamwar/bausystem/features/simulator/preview/TNT19.java @@ -31,12 +31,11 @@ import org.bukkit.block.data.type.*; import org.bukkit.craftbukkit.v1_19_R2.CraftWorld; import org.bukkit.util.Vector; -import java.util.ArrayList; import java.util.Random; @Getter @Setter -public class TNT { +public class TNT19 { private static final Random R = new Random(); @@ -58,7 +57,7 @@ public class TNT { private boolean verticalCollision = false; private Vector movementMultiplier = new Vector(0, 0, 0); - public TNT(double x, double y, double z) { + public TNT19(double x, double y, double z) { this.x = x; this.y = y; this.z = z; @@ -71,7 +70,7 @@ public class TNT { this.fuse = 80; } - public boolean tick(SimulatorData simulatorData) { + public boolean tick(SimulatorData19 simulatorData) { this.vy -= 0.04; move(simulatorData, new Vector(this.vx, this.vy, this.vz)); @@ -82,14 +81,16 @@ public class TNT { this.fuse--; if (this.fuse <= 0) { - Explosion explosion = new Explosion(this, x, y + 0.98 * 0.0625, z); + Explosion19 explosion = new Explosion19(this, x, y + 0.98 * 0.0625, z); explosion.calculate(simulatorData); return true; + } else { + // TODO: Update Water and Lava Flowing } return false; } - private void move(SimulatorData simulatorData, Vector movement) { + private void move(SimulatorData19 simulatorData, Vector movement) { if (movementMultiplier.lengthSquared() > 1.0E-7) { movement.multiply(movementMultiplier); movementMultiplier = new Vector(0, 0, 0); @@ -160,21 +161,21 @@ public class TNT { this.vz *= j; } - private Vector adjustMovementForCollisions(SimulatorData simulatorData, Vector movement) { + private Vector adjustMovementForCollisions(SimulatorData19 simulatorData, Vector movement) { if (movement.lengthSquared() == 0.0) { return movement; } - double mY = new AxisMovementLimiter(x, y, z, Axis.Y, movement.getY()).run(simulatorData); + double mY = new AxisMovementLimiter19(x, y, z, Axis.Y, movement.getY()).run(simulatorData); boolean bl = Math.abs(movement.getX()) < Math.abs(movement.getZ()); if (bl) { - double mZ = new AxisMovementLimiter(x, y + mY, z, Axis.Z, movement.getZ()).run(simulatorData); - double mX = new AxisMovementLimiter(x, y + mY, z + mZ, Axis.X, movement.getX()).run(simulatorData); + double mZ = new AxisMovementLimiter19(x, y + mY, z, Axis.Z, movement.getZ()).run(simulatorData); + double mX = new AxisMovementLimiter19(x, y + mY, z + mZ, Axis.X, movement.getX()).run(simulatorData); return new Vector(mX, mY, mZ); } else { - double mX = new AxisMovementLimiter(x, y + mY, z, Axis.X, movement.getX()).run(simulatorData); - double mZ = new AxisMovementLimiter(x + mX, y + mY, z, Axis.Z, movement.getZ()).run(simulatorData); + double mX = new AxisMovementLimiter19(x, y + mY, z, Axis.X, movement.getX()).run(simulatorData); + double mZ = new AxisMovementLimiter19(x + mX, y + mY, z, Axis.Z, movement.getZ()).run(simulatorData); return new Vector(mX, mY, mZ); } } @@ -188,7 +189,7 @@ public class TNT { return value < (double)i ? i - 1 : i; } - private Vector getLandingPos(SimulatorData simulatorData) { + private Vector getLandingPos(SimulatorData19 simulatorData) { int x = floor(this.x); int y = floor(this.y - 0.2F); int z = floor(this.z); @@ -210,7 +211,7 @@ public class TNT { } } - private void checkBlockCollision(SimulatorData simulatorData) { + private void checkBlockCollision(SimulatorData19 simulatorData) { int x1 = floor(x + 1.0E-7); int y1 = floor(y + 1.0E-7); int z1 = floor(z + 1.0E-7); @@ -278,7 +279,7 @@ public class TNT { return d + 1.0E-7 > f || e + 1.0E-7 > f; } - private float getVelocityMultiplier(SimulatorData simulatorData) { + private float getVelocityMultiplier(SimulatorData19 simulatorData) { Material material = simulatorData.getBlockType(floor(x), floor(y), floor(z)); float f = 1F; if (material == Material.SOUL_SAND) { diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/simulator/TNTSimulator.java b/BauSystem_Main/src/de/steamwar/bausystem/features/simulator/TNTSimulator.java index 071a9aff..f87ee867 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/simulator/TNTSimulator.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/simulator/TNTSimulator.java @@ -149,7 +149,10 @@ public class TNTSimulator { if (!force && previewRecord == null) { return; } - if (currentlyCalculating != null) currentlyCalculating.cancel(); + if (currentlyCalculating != null) { + System.out.println("Cancelled"); + currentlyCalculating.cancel(); + } currentlyCalculating = Simulator.impl.run(locations(true), newRecord -> { currentlyCalculating = null;