SteamWar/BauSystem2.0
Archiviert
12
0

Rename to *19
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful

Signed-off-by: yoyosource <yoyosource@nidido.de>
Dieser Commit ist enthalten in:
yoyosource 2023-09-09 16:55:33 +02:00
Ursprung 85527f7004
Commit 7f7081adfe
8 geänderte Dateien mit 85 neuen und 81 gelöschten Zeilen

Datei anzeigen

@ -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<Pos> 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<Pos19> 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<Pos> poss = new ArrayList<>();
List<Pos19> 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<Pos> poss = possibleCollisions();
List<Pos19> 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);

Datei anzeigen

@ -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<Pos> affectedBlocks = new HashSet<>();
public void calculate(SimulatorData19 simulatorData) {
Set<Pos19> 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;

Datei anzeigen

@ -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);

Datei anzeigen

@ -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;

Datei anzeigen

@ -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<TNT, Record.TNTRecord> recordMap = new IdentityHashMap<>();
private Map<TNT19, Record.TNTRecord> 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<TNT> remove = new ArrayList<>();
for (TNT tnt : simulatorData.tntList) {
List<TNT19> 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);

Datei anzeigen

@ -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<TNT> tntList = new ArrayList<>();
final Set<Pos> airBlocks = new HashSet<>();
final Map<Pos, Material> blockTypesMap = new HashMap<>();
final Map<Pos, BlockData> blockDataMap = new HashMap<>();
final Map<Pos, VoxelShape> collisionDataMap = new HashMap<>();
final List<TNT19> tntList = new ArrayList<>();
final Set<Pos19> airBlocks = new HashSet<>();
final Map<Pos19, Material> blockTypesMap = new HashMap<>();
final Map<Pos19, BlockData> blockDataMap = new HashMap<>();
final Map<Pos19, VoxelShape> 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<Pos> poss) {
public void clearBlocks(Set<Pos19> poss) {
poss.forEach(this::clearBlock);
}
@ -106,7 +106,7 @@ public class SimulatorData {
public Predicate<Vector> 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);
};
}

Datei anzeigen

@ -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) {

Datei anzeigen

@ -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;