diff --git a/BauSystem_Main/src/de/steamwar/bausystem/BauSystem.java b/BauSystem_Main/src/de/steamwar/bausystem/BauSystem.java index 218ae32f..88a46ddc 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/BauSystem.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/BauSystem.java @@ -22,7 +22,6 @@ package de.steamwar.bausystem; import com.comphenix.tinyprotocol.TinyProtocol; import de.steamwar.bausystem.configplayer.Config; import de.steamwar.bausystem.features.tpslimit.TPSFreezeUtils; -import de.steamwar.bausystem.features.tracer2.TraceManager; import de.steamwar.bausystem.features.world.RamUsage; import de.steamwar.bausystem.linkage.LinkageUtils; import de.steamwar.bausystem.region.loader.PrototypeLoader; 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 1aafbcfd..3e91a85b 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,9 @@ package de.steamwar.bausystem.features.slaves.laufbau.states; import de.steamwar.bausystem.BauSystem; +import de.steamwar.bausystem.features.tracer.TNTRecord; 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; @@ -47,10 +46,10 @@ public class FilteringTracesState implements LaufbauState { private final int totalRecord; List traces; - private List tntRecords = new ArrayList<>(); + private List> tntHistories = new ArrayList<>(); @Getter - private List tntPositions = new ArrayList<>(); + private List tntPositions = new ArrayList<>(); public FilteringTracesState(World world, BiPredicate inRegionCheck) { List traces = new ArrayList<>(traceManager.getAll()); @@ -67,29 +66,29 @@ public class FilteringTracesState implements LaufbauState { @Override public boolean hasNext() { - return !traces.isEmpty() || !tntRecords.isEmpty(); + return !traces.isEmpty() || !tntHistories.isEmpty(); } @Override public void next() { - if (tntRecords.isEmpty()) { + if (tntHistories.isEmpty()) { Trace trace = traces.remove(0); - tntRecords.addAll(trace.getTnt()); + tntHistories.addAll(trace.getHistories()); } - if (tntRecords.isEmpty()) { + if (tntHistories.isEmpty()) { return; } - Record.TNTRecord tntRecord = tntRecords.remove(0); - tntRecord.getPositions().forEach(tntPosition -> { - if (FlatteningWrapper.impl.inWater(world, tntPosition.getLocation())) { + List tntRecords = tntHistories.remove(0); + tntRecords.forEach(tntRecord -> { + if (FlatteningWrapper.impl.inWater(world, tntRecord.getLocation().toVector())) { return; } - if (inRegionCheck.test(tntPosition.getLocation().toLocation(world), 1)) { - tntPositions.add(tntPosition); + if (inRegionCheck.test(tntRecord.getLocation(), 1)) { + tntPositions.add(tntRecord); } - if (tntPosition.getPreviousLocation() != null && inRegionCheck.test(tntPosition.getPreviousLocation().toLocation(world), 1)) { - tntPositions.add(tntPosition); + if (tntRecord.getPrevious().isPresent() && inRegionCheck.test(tntRecord.getPrevious().get().getLocation(), 1)) { + tntPositions.add(tntRecord); } }); } 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 97970e40..b2a21dd9 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 @@ -80,11 +80,12 @@ public class ProcessingTracesState implements LaufbauState { private void createCuboid(TNTRecord tntPosition) { Location location = tntPosition.getLocation(); - Location previousLocation = tntPosition.getPrevious().getLocation(); + Optional previous = tntPosition.getPrevious(); - if (previousLocation == null) { + if (!previous.isPresent()) { toExpand.add(new Cuboid(location.getX() - 0.49, location.getY(), location.getZ() - 0.49, 0.98, 0.98, 0.98)); } else { + Location previousLocation = tntPosition.getPrevious().get().getLocation(); 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.getVelocity().getX() >= tntPosition.getVelocity().getZ()) { diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TNTRecord.java b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TNTRecord.java index 21327f67..02cc8974 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TNTRecord.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TNTRecord.java @@ -82,7 +82,7 @@ public class TNTRecord { return index == history.size() - 1 ? Optional.empty() : Optional.of(history.get(index + 1)); } - public Optional getPrev(){ + public Optional getPrevious(){ int index = history.indexOf(this); return index == 0 ? Optional.empty() : Optional.of(history.get(index - 1)); diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/Trace.java b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/Trace.java index ef263188..efd822e8 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/Trace.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/Trace.java @@ -105,7 +105,19 @@ public class Trace { this.records = records; } - //TODO default options + /** + * + */ + public Set> getHistories() { + Set> histories = new HashSet<>(); + + for(TNTRecord record: records) { + histories.add(record.getHistory()); + } + + return histories; + } + /** Renders this traces * * @param player The player the trace is rendered to