From 40f4af2a06641f5cf6bf5345c67776917d85c2e7 Mon Sep 17 00:00:00 2001 From: D4rkr34lm Date: Thu, 29 Feb 2024 21:27:21 +0100 Subject: [PATCH] Started adapting laufbau --- .../laufbau/states/FilteringTracesState.java | 23 +++++++++++-------- .../laufbau/states/ProcessingTracesState.java | 21 +++++++++-------- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/states/FilteringTracesState.java b/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/states/FilteringTracesState.java index 55e4a0fa..1aafbcfd 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/states/FilteringTracesState.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/states/FilteringTracesState.java @@ -20,10 +20,12 @@ package de.steamwar.bausystem.features.slaves.laufbau.states; import de.steamwar.bausystem.BauSystem; -import de.steamwar.bausystem.features.tracer.TNTPosition; +import de.steamwar.bausystem.features.tracer.Trace; +import de.steamwar.bausystem.features.tracer.TraceManager; import de.steamwar.bausystem.features.tracer.show.Record; import de.steamwar.bausystem.features.tracer.show.StoredRecords; import de.steamwar.bausystem.utils.FlatteningWrapper; +import de.steamwar.linkage.LinkedInstance; import lombok.Getter; import org.bukkit.Location; import org.bukkit.World; @@ -35,21 +37,24 @@ import java.util.function.BiPredicate; public class FilteringTracesState implements LaufbauState { + @LinkedInstance + TraceManager traceManager; private long start = System.currentTimeMillis(); private World world; private BiPredicate inRegionCheck; - private int totalRecord; - private List recordList; + private final int totalRecord; + + List traces; private List tntRecords = new ArrayList<>(); @Getter private List tntPositions = new ArrayList<>(); public FilteringTracesState(World world, BiPredicate inRegionCheck) { - recordList = new ArrayList<>(StoredRecords.getRecords()); - totalRecord = recordList.size(); + List traces = new ArrayList<>(traceManager.getAll()); + totalRecord = traces.size(); this.world = world; this.inRegionCheck = inRegionCheck; @@ -57,19 +62,19 @@ public class FilteringTracesState implements LaufbauState { @Override public String actionBarMessage(Player p) { - return BauSystem.MESSAGE.parse("LAUFBAU_SIMPLE_PROGRESS", p, BauSystem.MESSAGE.parse("LAUFBAU_STATE_FILTERING_TRACES", p), totalRecord - recordList.size(), totalRecord, eta(p, start, totalRecord - recordList.size(), totalRecord)); + return BauSystem.MESSAGE.parse("LAUFBAU_SIMPLE_PROGRESS", p, BauSystem.MESSAGE.parse("LAUFBAU_STATE_FILTERING_TRACES", p), totalRecord - traces.size(), totalRecord, eta(p, start, totalRecord - traces.size(), totalRecord)); } @Override public boolean hasNext() { - return !recordList.isEmpty() || !tntRecords.isEmpty(); + return !traces.isEmpty() || !tntRecords.isEmpty(); } @Override public void next() { if (tntRecords.isEmpty()) { - Record record = recordList.remove(0); - tntRecords.addAll(record.getTnt()); + Trace trace = traces.remove(0); + tntRecords.addAll(trace.getTnt()); } if (tntRecords.isEmpty()) { return; diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/states/ProcessingTracesState.java b/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/states/ProcessingTracesState.java index 320efaaa..97970e40 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/states/ProcessingTracesState.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/states/ProcessingTracesState.java @@ -21,9 +21,10 @@ package de.steamwar.bausystem.features.slaves.laufbau.states; import de.steamwar.bausystem.BauSystem; import de.steamwar.bausystem.features.slaves.laufbau.Cuboid; -import de.steamwar.bausystem.features.tracer.TNTPosition; +import de.steamwar.bausystem.features.tracer.TNTRecord; import de.steamwar.bausystem.region.Point; import lombok.Getter; +import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.util.Vector; @@ -35,7 +36,7 @@ public class ProcessingTracesState implements LaufbauState { private long start = System.currentTimeMillis(); private int totalCuboids; - private List tntPositionList; + private List tntPositionList; private BiPredicate inRegionCheck; private int factor; @@ -49,9 +50,9 @@ public class ProcessingTracesState implements LaufbauState { @Getter private Map> cuboidIntersectionCache = new HashMap<>(); - public ProcessingTracesState(List tntPositionList, BiPredicate inRegionCheck, int factor) { + public ProcessingTracesState(List tntPositionList, BiPredicate inRegionCheck, int factor) { this.tntPositionList = tntPositionList; - this.totalCuboids = tntPositionList.stream().mapToInt(tntPosition -> tntPosition.getPreviousLocation() == null ? 1 : 3).sum(); + this.totalCuboids = tntPositionList.stream().mapToInt(tntPosition -> tntPosition.getPrevious() == null ? 1 : 3).sum(); this.inRegionCheck = inRegionCheck; this.factor = factor; } @@ -72,21 +73,21 @@ public class ProcessingTracesState implements LaufbauState { Cuboid cuboid = toExpand.remove(0); expandCuboid(cuboid); } else { - TNTPosition tntPosition = tntPositionList.remove(0); + TNTRecord tntPosition = tntPositionList.remove(0); createCuboid(tntPosition); } } - private void createCuboid(TNTPosition tntPosition) { - Vector location = tntPosition.getLocation(); - Vector previousLocation = tntPosition.getPreviousLocation(); + private void createCuboid(TNTRecord tntPosition) { + Location location = tntPosition.getLocation(); + Location previousLocation = tntPosition.getPrevious().getLocation(); if (previousLocation == null) { toExpand.add(new Cuboid(location.getX() - 0.49, location.getY(), location.getZ() - 0.49, 0.98, 0.98, 0.98)); } else { - Vector movement = location.clone().subtract(previousLocation); + Location movement = location.clone().subtract(previousLocation); toExpand.add(new Cuboid(previousLocation.getX() - 0.49, Math.min(previousLocation.getY(), location.getY()), previousLocation.getZ() - 0.49, 0.98, Math.abs(movement.getY()) + 0.98, 0.98)); - if (tntPosition.getUpdateOrder() == TNTPosition.UpdateOrder.X) { + if (tntPosition.getVelocity().getX() >= tntPosition.getVelocity().getZ()) { toExpand.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)); toExpand.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 {