SteamWar/BauSystem2.0
Archiviert
12
0

Update TNTSimulator
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful

Signed-off-by: yoyosource <yoyosource@nidido.de>
Dieser Commit ist enthalten in:
yoyosource 2021-12-11 12:16:19 +01:00
Ursprung 161341da72
Commit d76f499a4e
5 geänderte Dateien mit 151 neuen und 62 gelöschten Zeilen

Datei anzeigen

@ -521,13 +521,16 @@ BLOCK_COUNTER_DISABLE = §7BlockCounter ausgemacht
# Trace
TRACE_RECORD=§aan
TRACE_RECORD-AUTO=§aan
TRACE_RECORD-SINGLE=§aan
TRACE_IDLE=§caus
TRACE_IDLE-AUTO=§eauto
TRACE_IDLE-SINGLE=§esingle
TRACE_MESSAGE-AUTO_RECORD=§cTNT-Tracer muss gestoppt werden
TRACE_MESSAGE-AUTO_RECORD-AUTO=§cTNT-Tracer darf nicht aufnehmen
TRACE_MESSAGE-AUTO_IDLE=§cAuto-Tracer gestoppt
TRACE_MESSAGE-AUTO_IDLE-AUTO = §aAuto-Tracer gestartet
TRACE_MESSAGE_START = §aTNT-Tracer gestartet
TRACE_MESSAGE_SINGLE = §aSingle-Tracer gestartet
TRACE_MESSAGE_STOP = §cTNT-Tracer gestoppt
TRACE_MESSAGE_DELETE = §cAlle TNT-Positionen gelöscht
TRACE_MESSAGE_SHOW = §aAlle TNT-Positionen angezeigt

Datei anzeigen

@ -24,7 +24,9 @@ package de.steamwar.bausystem.features.simulator;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.SWUtils;
import de.steamwar.bausystem.config.ColorConfig;
import de.steamwar.bausystem.configplayer.Config;
import de.steamwar.bausystem.features.simulator.show.SimulatorEntityShowMode;
import de.steamwar.bausystem.features.tracer.record.RecordStateMachine;
import de.steamwar.bausystem.worlddata.SimulatorData;
import de.steamwar.inventory.SWAnvilInv;
import de.steamwar.inventory.SWInventory;
@ -88,12 +90,6 @@ public class TNTSimulator {
simulator.hide();
}
public void saveAndDelete() {
save();
TNT_SIMULATOR_MAP.remove(player);
SimulatorData.removeSimulator(player, "");
}
public void delete() {
TNTSimulator simulator = TNT_SIMULATOR_MAP.remove(player);
SimulatorData.removeSimulator(player, "");
@ -159,7 +155,7 @@ public class TNTSimulator {
return;
}
if (tntSpawns.size() == 1) {
tntSpawns.get(0).editTNT();
tntSpawns.get(0).editTNT(spawns);
} else {
showGUI(new HashSet<>(tntSpawns));
}
@ -181,6 +177,12 @@ public class TNTSimulator {
}
public void start() {
boolean simulatorAutoTrace = Config.getInstance().get(player).getPlainValueOrDefault("simulatorAutoTrace", false);
if (simulatorAutoTrace) {
RecordStateMachine.commandSingle();
player.performCommand("trace show");
}
Map<Integer, List<TNTSpawn>> first = new HashMap<>();
Map<Integer, List<TNTSpawn>> second = new HashMap<>();
int lastTick = 0;
@ -225,8 +227,7 @@ public class TNTSimulator {
}).sorted(Comparator.comparing(SWListInv.SWListEntry::getObject)).collect(Collectors.toList());
SWListInv<TNTSpawn> swListInv = new SWListInv<>(player, "Kanonensimulator", false, swListEntryList, (clickType, spawn) -> {
spawn.editTNT();
spawn.editTNT(tntSpawns);
});
swListInv.setItem(51, new SWItem(Material.BARRIER, "§cTNT löschen", clickType -> {
delete();
@ -236,9 +237,72 @@ public class TNTSimulator {
start();
player.closeInventory();
}));
boolean simulatorAutoTrace = Config.getInstance().get(player).getPlainValueOrDefault("simulatorAutoTrace", false);
swListInv.setItem(48, new SWItem(simulatorAutoTrace ? Material.CHAIN_COMMAND_BLOCK : Material.COMMAND_BLOCK, "§eAutoTrace§8: §7" + simulatorAutoTrace, clickType -> {
Config.getInstance().get(player).put("simulatorAutoTrace", !simulatorAutoTrace);
showGUI(tntSpawns);
}));
swListInv.setItem(49, new SWItem(Material.MAGENTA_GLAZED_TERRACOTTA, "§eAlle Verschieben", clickType -> {
move(tntSpawns);
}));
swListInv.open();
}
private void move(Set<TNTSpawn> tntSpawns) {
SWInventory swInventory = new SWInventory(player, 54, "TNT Verschieben");
// Position Settings
// X Position
swInventory.setItem(12, new SWItem(SWItem.getDye(10), "§7+1", Arrays.asList("§eShift §7Click für §e+0,0625"), false, clickType -> {
updatePosition(tntSpawns, vector -> vector.add(clickType.isShiftClick() ? X_VECTOR : FX_VECTOR));
move(tntSpawns);
}));
swInventory.setItem(21, new SWItem(Material.PAPER, "§7x-Position", clickType -> {
}));
swInventory.setItem(30, new SWItem(SWItem.getDye(1), "§7-1", Arrays.asList("§eShift §7Click für §e-0,0625"), false, clickType -> {
updatePosition(tntSpawns, vector -> vector.subtract(clickType.isShiftClick() ? X_VECTOR : FX_VECTOR));
move(tntSpawns);
}));
// Y Position
swInventory.setItem(13, new SWItem(SWItem.getDye(10), "§7+1", Arrays.asList("§eShift §7Click für §e+0,0625"), false, clickType -> {
updatePosition(tntSpawns, vector -> vector.add(clickType.isShiftClick() ? Y_VECTOR : FY_VECTOR));
move(tntSpawns);
}));
swInventory.setItem(22, new SWItem(Material.PAPER, "§7y-Position", clickType -> {
}));
swInventory.setItem(31, new SWItem(SWItem.getDye(1), "§7-1", Arrays.asList("§eShift §7Click für §e-0,0625"), false, clickType -> {
updatePosition(tntSpawns, vector -> vector.subtract(clickType.isShiftClick() ? Y_VECTOR : FY_VECTOR));
move(tntSpawns);
}));
// Z Position
swInventory.setItem(14, new SWItem(SWItem.getDye(10), "§7+1", Arrays.asList("§eShift §7Click für §e+0,0625"), false, clickType -> {
updatePosition(tntSpawns, vector -> vector.add(clickType.isShiftClick() ? Z_VECTOR : FZ_VECTOR));
move(tntSpawns);
}));
swInventory.setItem(23, new SWItem(Material.PAPER, "§7z-Position", clickType -> {
}));
swInventory.setItem(32, new SWItem(SWItem.getDye(1), "§7-1", Arrays.asList("§eShift §7Click für §e-0,0625"), false, clickType -> {
updatePosition(tntSpawns, vector -> vector.subtract(clickType.isShiftClick() ? Z_VECTOR : FZ_VECTOR));
move(tntSpawns);
}));
swInventory.setItem(53, new SWItem(Material.ARROW, "§eZurück", clickType -> {
showGUI(tntSpawns);
}));
swInventory.open();
}
private void updatePosition(Set<TNTSpawn> tntSpawns, Consumer<Vector> positionChanger) {
Set<Vector> vectors = new HashSet<>();
for (TNTSpawn tntSpawn : tntSpawns) {
if (vectors.add(tntSpawn.position)) {
positionChanger.accept(tntSpawn.position);
}
}
}
private List<TNTSpawn> getEntity(Entity entity) {
List<TNTSpawn> tntSpawns = new ArrayList<>();
for (TNTSpawn spawn : spawns) {
@ -331,7 +395,7 @@ public class TNTSimulator {
this.position = position;
this.entity = entity;
show();
editTNT();
editTNT(spawns);
}
private TNTSpawn(YAPIONObject yapionObject) {
@ -411,7 +475,7 @@ public class TNTSimulator {
return -Integer.compare(tickOffset, tntSpawn.tickOffset);
}
private void editTNT() {
private void editTNT(Set<TNTSpawn> tntSpawns) {
hide();
entity.setPosition(position);
show();
@ -420,49 +484,49 @@ public class TNTSimulator {
// Change Count of spawned TNT
swInventory.setItem(1, new SWItem(SWItem.getDye(10), "§7+1", Arrays.asList("§eShift §7Click für §e+5"), false, clickType -> {
setCount(count + (clickType.isShiftClick() ? 5 : 1));
editTNT();
editTNT(tntSpawns);
}));
SWItem countItem = new SWItem(Material.TNT, "§7TNT-Anzahl §8- §e" + count, LORE, false, clickType -> changeCount(player, "Anzahl TNT", count, c -> {
setCount(c);
editTNT();
}, this::editTNT));
editTNT(tntSpawns);
}, () -> editTNT(tntSpawns)));
countItem.getItemStack().setAmount(count);
swInventory.setItem(10, countItem);
swInventory.setItem(19, new SWItem(SWItem.getDye(1), "§7-1", Arrays.asList("§eShift §7Click für §e-5"), false, clickType -> {
setCount(count - (clickType.isShiftClick() ? 5 : 1));
editTNT();
editTNT(tntSpawns);
}));
// Change TickOffset
swInventory.setItem(2, new SWItem(SWItem.getDye(10), "§7+1", Arrays.asList("§eShift §7Click für §e+5"), false, clickType -> {
setTickOffset(tickOffset + (clickType.isShiftClick() ? 5 : 1));
editTNT();
editTNT(tntSpawns);
}));
SWItem tickItem = new SWItem(SWItem.getMaterial("DIODE"), "§7Tick §8- §e" + tickOffset, LORE, false, clickType -> changeCount(player, "Tick Offset", tickOffset, tick -> {
setTickOffset(tick);
editTNT();
}, this::editTNT));
editTNT(tntSpawns);
}, () -> editTNT(tntSpawns)));
tickItem.getItemStack().setAmount(Math.max(tickOffset, 1));
swInventory.setItem(11, tickItem);
swInventory.setItem(20, new SWItem(SWItem.getDye(1), "§7-1", Arrays.asList("§eShift §7Click für §e-5"), false, clickType -> {
setTickOffset(tickOffset - (clickType.isShiftClick() ? 5 : 1));
editTNT();
editTNT(tntSpawns);
}));
// Change FuseTicks
swInventory.setItem(3, new SWItem(SWItem.getDye(10), "§7+1", Arrays.asList("§eShift §7Click für §e+5"), false, clickType -> {
setFuseTicks(fuseTicks + (clickType.isShiftClick() ? 5 : 1));
editTNT();
editTNT(tntSpawns);
}));
SWItem fuseTickItem = new SWItem(Material.CLOCK, "§7Lebensdauer §8- §e" + fuseTicks, LORE, false, clickType -> changeCount(player, "Fuse-Ticks", fuseTicks, tick -> {
setFuseTicks(tick);
editTNT();
}, this::editTNT));
editTNT(tntSpawns);
}, () -> editTNT(tntSpawns)));
fuseTickItem.getItemStack().setAmount(Math.max(fuseTicks, 1));
swInventory.setItem(12, fuseTickItem);
swInventory.setItem(21, new SWItem(SWItem.getDye(1), "§7-1", Arrays.asList("§eShift §7Click für §e-5"), false, clickType -> {
setFuseTicks(fuseTicks - (clickType.isShiftClick() ? 5 : 1));
editTNT();
editTNT(tntSpawns);
}));
// Velocity Settings
@ -476,74 +540,74 @@ public class TNTSimulator {
yVelocity = true;
zVelocity = true;
}
editTNT();
editTNT(tntSpawns);
});
swInventory.setItem(46, new SWItem(getWool(xVelocity), getColor(xVelocity), "§7TNT §eSprung X §8- " + active(xVelocity), clickType -> {
xVelocity = !xVelocity;
editTNT();
editTNT(tntSpawns);
}));
swInventory.setItem(29, new SWItem(getWool(yVelocity), getColor(yVelocity), "§7TNT §eSprung Y §8- " + active(yVelocity), clickType -> {
yVelocity = !yVelocity;
editTNT();
editTNT(tntSpawns);
}));
swInventory.setItem(48, new SWItem(getWool(zVelocity), getColor(zVelocity), "§7TNT §eSprung Z §8- " + active(zVelocity), clickType -> {
zVelocity = !zVelocity;
editTNT();
editTNT(tntSpawns);
}));
// Position Settings
// X Position
swInventory.setItem(5, new SWItem(SWItem.getDye(10), "§7+0,0625", Arrays.asList("§eShift §7Click für §e+1"), false, clickType -> {
position.add(clickType.isShiftClick() ? FX_VECTOR : X_VECTOR);
editTNT();
swInventory.setItem(5, new SWItem(SWItem.getDye(10), "§7+1", Arrays.asList("§eShift §7Click für §e+0,0625"), false, clickType -> {
position.add(clickType.isShiftClick() ? X_VECTOR : FX_VECTOR);
editTNT(tntSpawns);
}));
swInventory.setItem(14, new SWItem(Material.PAPER, "§7x-Position §8- §e" + position.getX(), LORE, false, clickType -> {
changePosition(player, position.getX(), x -> {
position.setX(clamp(x));
editTNT();
}, this::editTNT);
editTNT(tntSpawns);
}, () -> editTNT(tntSpawns));
}));
swInventory.setItem(23, new SWItem(SWItem.getDye(1), "§7-0,0625", Arrays.asList("§eShift §7Click für §e-1"), false, clickType -> {
position.subtract(clickType.isShiftClick() ? FX_VECTOR : X_VECTOR);
editTNT();
swInventory.setItem(23, new SWItem(SWItem.getDye(1), "§7-1", Arrays.asList("§eShift §7Click für §e-0,0625"), false, clickType -> {
position.subtract(clickType.isShiftClick() ? X_VECTOR : FX_VECTOR);
editTNT(tntSpawns);
}));
// Y Position
swInventory.setItem(6, new SWItem(SWItem.getDye(10), "§7+0,0625", Arrays.asList("§eShift §7Click für §e+1"), false, clickType -> {
position.add(clickType.isShiftClick() ? FY_VECTOR : Y_VECTOR);
editTNT();
swInventory.setItem(6, new SWItem(SWItem.getDye(10), "§7+1", Arrays.asList("§eShift §7Click für §e+0,0625"), false, clickType -> {
position.add(clickType.isShiftClick() ? Y_VECTOR : FY_VECTOR);
editTNT(tntSpawns);
}));
swInventory.setItem(15, new SWItem(Material.PAPER, "§7y-Position §8- §e" + position.getY(), LORE, false, clickType -> {
changePosition(player, position.getY(), y -> {
position.setY(clamp(y));
editTNT();
}, this::editTNT);
editTNT(tntSpawns);
}, () -> editTNT(tntSpawns));
}));
swInventory.setItem(24, new SWItem(SWItem.getDye(1), "§7-0,0625", Arrays.asList("§eShift §7Click für §e-1"), false, clickType -> {
position.subtract(clickType.isShiftClick() ? FY_VECTOR : Y_VECTOR);
editTNT();
swInventory.setItem(24, new SWItem(SWItem.getDye(1), "§7-1", Arrays.asList("§eShift §7Click für §e-0,0625"), false, clickType -> {
position.subtract(clickType.isShiftClick() ? Y_VECTOR : FY_VECTOR);
editTNT(tntSpawns);
}));
// Z Position
swInventory.setItem(7, new SWItem(SWItem.getDye(10), "§7+0,0625", Arrays.asList("§eShift §7Click für §e+1"), false, clickType -> {
position.add(clickType.isShiftClick() ? FZ_VECTOR : Z_VECTOR);
editTNT();
swInventory.setItem(7, new SWItem(SWItem.getDye(10), "§7+1", Arrays.asList("§eShift §7Click für §e+0,0625"), false, clickType -> {
position.add(clickType.isShiftClick() ? Z_VECTOR : FZ_VECTOR);
editTNT(tntSpawns);
}));
swInventory.setItem(16, new SWItem(Material.PAPER, "§7z-Position §8- §e" + position.getZ(), LORE, false, clickType -> {
changePosition(player, position.getZ(), z -> {
position.setZ(clamp(z));
editTNT();
}, this::editTNT);
editTNT(tntSpawns);
}, () -> editTNT(tntSpawns));
}));
swInventory.setItem(25, new SWItem(SWItem.getDye(1), "§7-0,0625", Arrays.asList("§eShift §7Click für §e-1"), false, clickType -> {
position.subtract(clickType.isShiftClick() ? FZ_VECTOR : Z_VECTOR);
editTNT();
swInventory.setItem(25, new SWItem(SWItem.getDye(1), "§7-1", Arrays.asList("§eShift §7Click für §e-0,0625"), false, clickType -> {
position.subtract(clickType.isShiftClick() ? Z_VECTOR : FZ_VECTOR);
editTNT(tntSpawns);
}));
// Repeater before Comparator
swInventory.setItem(42, new SWItem(comparator ? SWItem.getMaterial("REDSTONE_COMPARATOR_OFF") : SWItem.getMaterial("DIODE"), "§7Gezündet durch §8- §e" + (comparator ? "Comparator" : "Repeater"), clickType -> {
comparator = !comparator;
editTNT();
editTNT(tntSpawns);
}));
swInventory.setItem(33, new SWItem(Material.TNT, "§eZündphase hinzufügen", clickType -> {
@ -551,7 +615,7 @@ public class TNTSimulator {
}));
swInventory.setItem(53, new SWItem(Material.ARROW, "§eZurück", clickType -> {
showGUI();
showGUI(tntSpawns);
}));
swInventory.setItem(51, new SWItem(Material.DISPENSER, "§eTNT hinzufügen", clickType -> {

Datei anzeigen

@ -263,6 +263,13 @@ public class TraceCommand extends SWCommand {
BauSystem.MESSAGE.send("TRACE_MESSAGE_START", p);
}
@Register({"single"})
public void singleCommand(Player p) {
if (!permissionCheck(p)) return;
RecordStateMachine.commandSingle();
BauSystem.MESSAGE.send("TRACE_MESSAGE_SINGLE", p);
}
@Register({"stop"})
public void stopCommand(Player p) {
if (!permissionCheck(p)) return;
@ -270,12 +277,8 @@ public class TraceCommand extends SWCommand {
BauSystem.MESSAGE.send("TRACE_MESSAGE_STOP", p);
}
@Register({"toggleauto"})
public void toggleAutoCommand(Player p) {
autoCommand(p);
}
@Register({"auto"})
@Register({"toggleauto"})
public void autoCommand(Player p) {
if (!permissionCheck(p)) return;
RecordStateMachine.commandAuto();

Datei anzeigen

@ -53,14 +53,32 @@ public class RecordStateMachine {
}
}
public static void commandSingle() {
if (recordStatus.isTracing())
return;
if (recordStatus != RecordStatus.IDLE_SINGLE) {
recordStatus = RecordStatus.IDLE_SINGLE;
autoHandler.enable();
}
}
static void autoRecord() {
recordStart();
recordStatus = RecordStatus.RECORD_AUTO;
if (recordStatus == RecordStatus.IDLE_AUTO) {
recordStatus = RecordStatus.RECORD_AUTO;
} else {
recordStatus = RecordStatus.RECORD_SINGLE;
}
}
static void autoIdle() {
recordStop();
recordStatus = RecordStatus.IDLE_AUTO;
if (recordStatus == RecordStatus.RECORD_AUTO) {
recordStatus = RecordStatus.IDLE_AUTO;
} else {
recordStatus = RecordStatus.IDLE;
}
}
private static void recordStart() {

Datei anzeigen

@ -23,8 +23,10 @@ public enum RecordStatus {
RECORD("TRACE_RECORD", true, "TRACE_MESSAGE-AUTO_RECORD"),
RECORD_AUTO("TRACE_RECORD-AUTO", true, "TRACE_MESSAGE-AUTO_RECORD-AUTO"),
RECORD_SINGLE("TRACE_RECORD-SINGLE", true, ""),
IDLE("TRACE_IDLE", false, "TRACE_MESSAGE-AUTO_IDLE"),
IDLE_AUTO("TRACE_IDLE-AUTO", false, "TRACE_MESSAGE-AUTO_IDLE-AUTO");
IDLE_AUTO("TRACE_IDLE-AUTO", false, "TRACE_MESSAGE-AUTO_IDLE-AUTO"),
IDLE_SINGLE("TRACE_IDLE-SINGLE", false, "");
String name;
boolean tracing;
@ -51,5 +53,4 @@ public enum RecordStatus {
public String getAutoMessage() {
return autoMessage;
}
}