From 44c26e0310702e5114af9ad88dff5daf936eed78 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Thu, 3 Feb 2022 23:26:19 +0100 Subject: [PATCH] Update Laufbau Signed-off-by: yoyosource --- .../features/slaves/laufbau/Laufbau.java | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/Laufbau.java b/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/Laufbau.java index c3b1326e..b6cb5bcf 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/Laufbau.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/Laufbau.java @@ -40,15 +40,11 @@ public class Laufbau { private World world; private Location pos1; private Location pos2; - private Material blockMaterial; - private Material slabMaterial; public Laufbau(Location pos1, Location pos2, Material blockMaterial, Material slabMaterial) { this.world = pos1.getWorld(); this.pos1 = new Location(world, Math.min(pos1.getBlockX(), pos2.getBlockX()), Math.min(pos1.getBlockY(), pos2.getBlockY()), Math.min(pos1.getBlockZ(), pos2.getBlockZ())); this.pos2 = new Location(world, Math.max(pos1.getBlockX(), pos2.getBlockX()), Math.max(pos1.getBlockY(), pos2.getBlockY()), Math.max(pos1.getBlockZ(), pos2.getBlockZ())); - this.blockMaterial = blockMaterial; - this.slabMaterial = slabMaterial; StoredRecords.getRecords().forEach(record -> { record.getTnt().forEach(tntRecord -> { @@ -71,23 +67,26 @@ public class Laufbau { Vector previousLocation = tntPosition.getPreviousLocation(); if (previousLocation == null) { - cuboidList.add(new Cuboid(location.getX() - 0.49, location.getY() - 0.49, location.getZ() - 0.49, 0.98, 0.98, 0.98)); + cuboidList.add(new Cuboid(location.getX() - 0.49, location.getY(), location.getZ() - 0.49, 0.98, 0.98, 0.98)); } else { - cuboidList.add(new Cuboid(previousLocation.getX() - 0.49, previousLocation.getY() - 0.49, previousLocation.getZ() - 0.49, 0.98, location.getY() + 0.49, 0.98)); Vector movement = location.clone().subtract(previousLocation); + cuboidList.add(new Cuboid(previousLocation.getX() - 0.49, Math.min(previousLocation.getY(), location.getY()), previousLocation.getZ() - 0.49, 0.98, movement.getY() + 0.98, 0.98)); if (Math.abs(movement.getX()) > Math.abs(movement.getZ())) { - cuboidList.add(new Cuboid(previousLocation.getX() - 0.49, location.getY() - 0.49, previousLocation.getZ() - 0.49, location.getX() + 0.49, 0.98, 0.98)); - cuboidList.add(new Cuboid(location.getX() - 0.49, location.getY() - 0.49, previousLocation.getZ() - 0.49, 0.98, 0.98, location.getZ() + 0.49)); + cuboidList.add(new Cuboid(Math.min(previousLocation.getX(), location.getX()) - 0.49, location.getY(), previousLocation.getZ() - 0.49, Math.abs(movement.getX()) + 0.98, 0.98, 0.98)); + cuboidList.add(new Cuboid(location.getX() - 0.49, location.getY(), Math.min(previousLocation.getZ(), location.getZ()) - 0.49, 0.98, 0.98, Math.abs(movement.getZ()) + 0.98)); } else { - cuboidList.add(new Cuboid(previousLocation.getX() - 0.49, location.getY() - 0.49, previousLocation.getZ() - 0.49, 0.98, 0.98, location.getZ() + 0.49)); - cuboidList.add(new Cuboid(location.getX() - 0.49, location.getY() - 0.49, previousLocation.getZ() - 0.49, location.getX() + 0.49, 0.98, 0.98)); + cuboidList.add(new Cuboid(previousLocation.getX() - 0.49, location.getY(), Math.min(previousLocation.getZ(), location.getZ()) - 0.49, 0.98, 0.98, Math.abs(movement.getZ()) + 0.98)); + cuboidList.add(new Cuboid(Math.min(previousLocation.getX(), location.getX()) - 0.49, location.getY(), location.getZ() - 0.49, Math.abs(movement.getX()) + 0.98, 0.98, 0.98)); } - // TODO: Add interpolated cuboids' } } System.out.println(cuboidList); System.out.println(cuboidList.size()); + cuboidList.forEach(cuboid -> { + System.out.println(cuboid); + }); + /* BlockData fullBlock = Material.STONE.createBlockData(); Slab topBlock = (Slab) Material.STONE_SLAB.createBlockData(); @@ -149,6 +148,13 @@ public class Laufbau { private double dz; private boolean inCuboid(Vector vector) { + if (vector.getX() > x && vector.getX() < x + dx) { + if (vector.getY() > y && vector.getY() < y + dy) { + if (vector.getZ() > z && vector.getZ() < z + dz) { + return true; + } + } + } return false; } }