Signed-off-by: yoyosource <yoyosource@nidido.de>
Dieser Commit ist enthalten in:
Ursprung
38ff383023
Commit
99d007aef5
@ -241,7 +241,7 @@ public class BlockBoundingBox {
|
|||||||
addPixel(endRodNorthSouth, 6, 6, 0, 4, 4, 16);
|
addPixel(endRodNorthSouth, 6, 6, 0, 4, 4, 16);
|
||||||
|
|
||||||
Directional endRodEastWest = (Directional) Material.END_ROD.createBlockData();
|
Directional endRodEastWest = (Directional) Material.END_ROD.createBlockData();
|
||||||
endRodNorthSouth.setFacing(BlockFace.EAST);
|
endRodEastWest.setFacing(BlockFace.EAST);
|
||||||
addPixel(endRodEastWest, 0, 6, 6, 16, 4, 4);
|
addPixel(endRodEastWest, 0, 6, 6, 16, 4, 4);
|
||||||
|
|
||||||
Waterlogged conduit = (Waterlogged) Material.CONDUIT.createBlockData();
|
Waterlogged conduit = (Waterlogged) Material.CONDUIT.createBlockData();
|
||||||
|
@ -28,6 +28,10 @@ import org.bukkit.World;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class Laufbau {
|
public class Laufbau {
|
||||||
|
|
||||||
private World world;
|
private World world;
|
||||||
@ -44,6 +48,8 @@ public class Laufbau {
|
|||||||
private CreatingInnerBlocksState creatingInnerBlocksState = null;
|
private CreatingInnerBlocksState creatingInnerBlocksState = null;
|
||||||
private CreatingOuterBlocksState creatingOuterBlocksState = null;
|
private CreatingOuterBlocksState creatingOuterBlocksState = null;
|
||||||
|
|
||||||
|
private List<BlockBoundingBox> elements = new ArrayList<>(BlockBoundingBox.elements);
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private EditSession editSession;
|
private EditSession editSession;
|
||||||
|
|
||||||
@ -57,6 +63,23 @@ public class Laufbau {
|
|||||||
filteringTracesState = new FilteringTracesState(world, this::inRegion);
|
filteringTracesState = new FilteringTracesState(world, this::inRegion);
|
||||||
|
|
||||||
editSession = WorldEditUtils.getEditSession(world);
|
editSession = WorldEditUtils.getEditSession(world);
|
||||||
|
|
||||||
|
if (preferingBlastResistance) {
|
||||||
|
elements.sort(Comparator.comparing(blockBoundingBox -> {
|
||||||
|
double element = 1;
|
||||||
|
if (blockBoundingBox.cuboid.getDx() != 0) {
|
||||||
|
element *= blockBoundingBox.cuboid.getDx();
|
||||||
|
}
|
||||||
|
if (blockBoundingBox.cuboid.getDy() != 0) {
|
||||||
|
element *= blockBoundingBox.cuboid.getDy();
|
||||||
|
}
|
||||||
|
if (blockBoundingBox.cuboid.getDz() != 0) {
|
||||||
|
element *= blockBoundingBox.cuboid.getDz();
|
||||||
|
}
|
||||||
|
element *= blockBoundingBox.blockData.getMaterial().getBlastResistance();
|
||||||
|
return -element;
|
||||||
|
}));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private LaufbauState getActive() {
|
private LaufbauState getActive() {
|
||||||
@ -90,7 +113,7 @@ public class Laufbau {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (shrinkingOuterPointsState != null) {
|
if (shrinkingOuterPointsState != null) {
|
||||||
creatingInnerBlocksState = new CreatingInnerBlocksState(splittingPointsState.getInnerPoints(), world, processingTracesState.getCuboidList(), splittingPointsState.getIntersectedCuboid(), editSession, preferingBlastResistance);
|
creatingInnerBlocksState = new CreatingInnerBlocksState(splittingPointsState.getInnerPoints(), world, processingTracesState.getCuboidList(), splittingPointsState.getIntersectedCuboid(), editSession, elements, preferingBlastResistance);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (splittingPointsState != null) {
|
if (splittingPointsState != null) {
|
||||||
|
@ -31,9 +31,7 @@ import org.bukkit.World;
|
|||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
public class CreatingInnerBlocksState implements LaufbauState {
|
public class CreatingInnerBlocksState implements LaufbauState {
|
||||||
|
|
||||||
@ -44,14 +42,16 @@ public class CreatingInnerBlocksState implements LaufbauState {
|
|||||||
private List<Cuboid> cuboidList;
|
private List<Cuboid> cuboidList;
|
||||||
private Map<Point, List<Cuboid>> intersectedCuboid;
|
private Map<Point, List<Cuboid>> intersectedCuboid;
|
||||||
private EditSession editSession;
|
private EditSession editSession;
|
||||||
|
private List<BlockBoundingBox> elements;
|
||||||
private boolean preferingBlastResistance;
|
private boolean preferingBlastResistance;
|
||||||
|
|
||||||
public CreatingInnerBlocksState(List<Point> innerBlocks, World world, List<Cuboid> cuboidList, Map<Point, List<Cuboid>> intersectedCuboid, EditSession editSession, boolean preferingBlastResistance) {
|
public CreatingInnerBlocksState(List<Point> innerBlocks, World world, List<Cuboid> cuboidList, Map<Point, List<Cuboid>> intersectedCuboid, EditSession editSession, List<BlockBoundingBox> elements, boolean preferingBlastResistance) {
|
||||||
this.innerBlocks = innerBlocks;
|
this.innerBlocks = innerBlocks;
|
||||||
this.world = world;
|
this.world = world;
|
||||||
this.cuboidList = cuboidList;
|
this.cuboidList = cuboidList;
|
||||||
this.intersectedCuboid = intersectedCuboid;
|
this.intersectedCuboid = intersectedCuboid;
|
||||||
this.editSession = editSession;
|
this.editSession = editSession;
|
||||||
|
this.elements = elements;
|
||||||
this.preferingBlastResistance = preferingBlastResistance;
|
this.preferingBlastResistance = preferingBlastResistance;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,7 +72,7 @@ public class CreatingInnerBlocksState implements LaufbauState {
|
|||||||
|
|
||||||
List<Cuboid> neededCuboids = intersectedCuboid.get(point);
|
List<Cuboid> neededCuboids = intersectedCuboid.get(point);
|
||||||
List<BlockBoundingBox> blockDataWithBoundingBoxList = new ArrayList<>();
|
List<BlockBoundingBox> blockDataWithBoundingBoxList = new ArrayList<>();
|
||||||
for (BlockBoundingBox blockDataWithBoundingBox : BlockBoundingBox.elements) {
|
for (BlockBoundingBox blockDataWithBoundingBox : elements) {
|
||||||
Cuboid tempCuboid = blockDataWithBoundingBox.cuboid.add(point);
|
Cuboid tempCuboid = blockDataWithBoundingBox.cuboid.add(point);
|
||||||
|
|
||||||
List<Cuboid> extendedCuboids = null;
|
List<Cuboid> extendedCuboids = null;
|
||||||
|
@ -28,10 +28,7 @@ import org.bukkit.World;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.function.BiPredicate;
|
import java.util.function.BiPredicate;
|
||||||
|
|
||||||
public class ExpandingTracesState implements LaufbauState {
|
public class ExpandingTracesState implements LaufbauState {
|
||||||
@ -70,7 +67,8 @@ public class ExpandingTracesState implements LaufbauState {
|
|||||||
for (double z = cuboid.getZ() - 2; z < cuboid.getZ() + cuboid.getDz() + 2; z++) {
|
for (double z = cuboid.getZ() - 2; z < cuboid.getZ() + cuboid.getDz() + 2; z++) {
|
||||||
Location location = new Location(world, x, y, z);
|
Location location = new Location(world, x, y, z);
|
||||||
if (inRegionCheck.test(new Vector(location.getBlockX(), location.getBlockY(), location.getBlockZ()), 0)) {
|
if (inRegionCheck.test(new Vector(location.getBlockX(), location.getBlockY(), location.getBlockZ()), 0)) {
|
||||||
blocks.add(new Point(location.getBlockX(), location.getBlockY(), location.getBlockZ()));
|
Point point = new Point(location.getBlockX(), location.getBlockY(), location.getBlockZ());
|
||||||
|
blocks.add(point);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren