forked from SteamWar/SteamWar
Improve WorldEditRendererWrapper20
This commit is contained in:
@@ -87,9 +87,7 @@ public class WorldEditRendererWrapper20 implements WorldEditRendererWrapper {
|
|||||||
box = new CWireframe(server);
|
box = new CWireframe(server);
|
||||||
boxPair.set(clipboard, box);
|
boxPair.set(clipboard, box);
|
||||||
}
|
}
|
||||||
box.setPos1(null).setPos2(null);
|
box.setPos1And2(pos1.toLocation(player.getWorld()), pos2.toLocation(player.getWorld()));
|
||||||
box.setPos1(pos1.toLocation(player.getWorld()));
|
|
||||||
box.setPos2(pos2.toLocation(player.getWorld()));
|
|
||||||
box.setWidth(width);
|
box.setWidth(width);
|
||||||
box.setBlock(block);
|
box.setBlock(block);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,6 +59,14 @@ public class CLine extends CEntity {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public CLine setFromAndTo(Location from, Location to) {
|
||||||
|
if (Objects.equals(from, this.from) && Objects.equals(to, this.to)) return this;
|
||||||
|
this.from = from;
|
||||||
|
this.to = to;
|
||||||
|
tick();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public CLine setFrom(Location from) {
|
public CLine setFrom(Location from) {
|
||||||
return checkAndSet(this.from, from, location -> this.from = location);
|
return checkAndSet(this.from, from, location -> this.from = location);
|
||||||
}
|
}
|
||||||
@@ -99,7 +107,16 @@ public class CLine extends CEntity {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
void tick() {
|
void tick() {
|
||||||
if (from == null || to == null) return;
|
if (from == null || to == null) {
|
||||||
|
if (startLine != null) startLine.hide(true);
|
||||||
|
if (middleLine != null) middleLine.hide(true);
|
||||||
|
if (endLine != null) endLine.hide(true);
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
if (startLine != null) startLine.hide(false);
|
||||||
|
if (middleLine != null) middleLine.hide(false);
|
||||||
|
if (endLine != null) endLine.hide(false);
|
||||||
|
}
|
||||||
if (hide) return;
|
if (hide) return;
|
||||||
updateStart();
|
updateStart();
|
||||||
updateMiddle();
|
updateMiddle();
|
||||||
|
|||||||
@@ -22,11 +22,9 @@ package de.steamwar.entity;
|
|||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
import org.bukkit.util.Consumer;
|
|
||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compound Box (12 CLine)
|
* Compound Box (12 CLine)
|
||||||
@@ -46,6 +44,13 @@ public class CWireframe extends CEntity {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public CWireframe setPos1And2(Location pos1, Location pos2) {
|
||||||
|
this.pos1 = pos1;
|
||||||
|
this.pos2 = pos2;
|
||||||
|
updateAndSpawnLines();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public CWireframe setPos1(Location pos1) {
|
public CWireframe setPos1(Location pos1) {
|
||||||
this.pos1 = pos1;
|
this.pos1 = pos1;
|
||||||
updateAndSpawnLines();
|
updateAndSpawnLines();
|
||||||
@@ -75,29 +80,30 @@ public class CWireframe extends CEntity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateAndSpawnLines() {
|
private void updateAndSpawnLines() {
|
||||||
if (pos1 == null || pos2 == null) return;
|
List<CLine> lines = getEntitiesByType(CLine.class);
|
||||||
|
if (pos1 == null || pos2 == null) {
|
||||||
|
lines.forEach(line -> line.setFrom(null).setTo(null));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
World world = pos1.getWorld();
|
World world = pos1.getWorld();
|
||||||
Vector min = Vector.getMinimum(pos1.toVector(), pos2.toVector());
|
Vector min = Vector.getMinimum(pos1.toVector(), pos2.toVector());
|
||||||
Vector max = Vector.getMaximum(pos1.toVector(), pos2.toVector())
|
Vector max = Vector.getMaximum(pos1.toVector(), pos2.toVector())
|
||||||
.add(new Vector(1 - width, 1 - width, 1 - width));
|
.add(new Vector(1 - width, 1 - width, 1 - width));
|
||||||
|
|
||||||
List<CLine> lines = getEntitiesByType(CLine.class);
|
lines.get(0).setFromAndTo(new Vector(min.getX(), min.getY(), min.getZ()).toLocation(world), new Vector(max.getX() + width, min.getY(), min.getZ()).toLocation(world));
|
||||||
lines.forEach(line -> line.setFrom(null).setTo(null));
|
lines.get(1).setFromAndTo(new Vector(min.getX(), max.getY(), min.getZ()).toLocation(world), new Vector(max.getX() + width, max.getY(), min.getZ()).toLocation(world));
|
||||||
|
lines.get(2).setFromAndTo(new Vector(min.getX(), min.getY(), max.getZ()).toLocation(world), new Vector(max.getX() + width, min.getY(), max.getZ()).toLocation(world));
|
||||||
|
lines.get(3).setFromAndTo(new Vector(min.getX(), max.getY(), max.getZ()).toLocation(world), new Vector(max.getX() + width, max.getY(), max.getZ()).toLocation(world));
|
||||||
|
|
||||||
lines.get(0).setFrom(new Vector(min.getX(), min.getY(), min.getZ()).toLocation(world)).setTo(new Vector(max.getX() + width, min.getY(), min.getZ()).toLocation(world));
|
lines.get(4).setFromAndTo(new Vector(min.getX(), min.getY(), min.getZ()).toLocation(world), new Vector(min.getX(), max.getY() + width, min.getZ()).toLocation(world));
|
||||||
lines.get(1).setFrom(new Vector(min.getX(), max.getY(), min.getZ()).toLocation(world)).setTo(new Vector(max.getX() + width, max.getY(), min.getZ()).toLocation(world));
|
lines.get(5).setFromAndTo(new Vector(max.getX(), min.getY(), min.getZ()).toLocation(world), new Vector(max.getX(), max.getY() + width, min.getZ()).toLocation(world));
|
||||||
lines.get(2).setFrom(new Vector(min.getX(), min.getY(), max.getZ()).toLocation(world)).setTo(new Vector(max.getX() + width, min.getY(), max.getZ()).toLocation(world));
|
lines.get(6).setFromAndTo(new Vector(min.getX(), min.getY(), max.getZ()).toLocation(world), new Vector(min.getX(), max.getY() + width, max.getZ()).toLocation(world));
|
||||||
lines.get(3).setFrom(new Vector(min.getX(), max.getY(), max.getZ()).toLocation(world)).setTo(new Vector(max.getX() + width, max.getY(), max.getZ()).toLocation(world));
|
lines.get(7).setFromAndTo(new Vector(max.getX(), min.getY(), max.getZ()).toLocation(world), new Vector(max.getX(), max.getY() + width, max.getZ()).toLocation(world));
|
||||||
|
|
||||||
lines.get(4).setFrom(new Vector(min.getX(), min.getY(), min.getZ()).toLocation(world)).setTo(new Vector(min.getX(), max.getY() + width, min.getZ()).toLocation(world));
|
lines.get(8).setFromAndTo(new Vector(min.getX(), min.getY(), min.getZ()).toLocation(world), new Vector(min.getX(), min.getY(), max.getZ() + width).toLocation(world));
|
||||||
lines.get(5).setFrom(new Vector(max.getX(), min.getY(), min.getZ()).toLocation(world)).setTo(new Vector(max.getX(), max.getY() + width, min.getZ()).toLocation(world));
|
lines.get(9).setFromAndTo(new Vector(max.getX(), min.getY(), min.getZ()).toLocation(world), new Vector(max.getX(), min.getY(), max.getZ() + width).toLocation(world));
|
||||||
lines.get(6).setFrom(new Vector(min.getX(), min.getY(), max.getZ()).toLocation(world)).setTo(new Vector(min.getX(), max.getY() + width, max.getZ()).toLocation(world));
|
lines.get(10).setFromAndTo(new Vector(min.getX(), max.getY(), min.getZ()).toLocation(world), new Vector(min.getX(), max.getY(), max.getZ() + width).toLocation(world));
|
||||||
lines.get(7).setFrom(new Vector(max.getX(), min.getY(), max.getZ()).toLocation(world)).setTo(new Vector(max.getX(), max.getY() + width, max.getZ()).toLocation(world));
|
lines.get(11).setFromAndTo(new Vector(max.getX(), max.getY(), min.getZ()).toLocation(world), new Vector(max.getX(), max.getY(), max.getZ() + width).toLocation(world));
|
||||||
|
|
||||||
lines.get(8).setFrom(new Vector(min.getX(), min.getY(), min.getZ()).toLocation(world)).setTo(new Vector(min.getX(), min.getY(), max.getZ() + width).toLocation(world));
|
|
||||||
lines.get(9).setFrom(new Vector(max.getX(), min.getY(), min.getZ()).toLocation(world)).setTo(new Vector(max.getX(), min.getY(), max.getZ() + width).toLocation(world));
|
|
||||||
lines.get(10).setFrom(new Vector(min.getX(), max.getY(), min.getZ()).toLocation(world)).setTo(new Vector(min.getX(), max.getY(), max.getZ() + width).toLocation(world));
|
|
||||||
lines.get(11).setFrom(new Vector(max.getX(), max.getY(), min.getZ()).toLocation(world)).setTo(new Vector(max.getX(), max.getY(), max.getZ() + width).toLocation(world));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user