From 20acd7abbed480931c5023cfe81889557686e0b7 Mon Sep 17 00:00:00 2001 From: YoyoNow Date: Wed, 21 Aug 2024 21:15:00 +0200 Subject: [PATCH] Fix WorldEditSelectionSaver finally --- .../features/world/WorldEditSelectionSaver.java | 8 ++++++-- .../steamwar/bausystem/utils/WorldEditUtils.java | 15 +++++++++------ 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/world/WorldEditSelectionSaver.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/world/WorldEditSelectionSaver.java index 397f7d5f..3b80bf53 100644 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/world/WorldEditSelectionSaver.java +++ b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/world/WorldEditSelectionSaver.java @@ -56,7 +56,7 @@ public class WorldEditSelectionSaver implements Listener { Class clazz = (Class) Class.forName(bufferedReader.readLine()); List locations = bufferedReader.lines() .map(s -> s.split(" ")) - .map(strings -> new Location(event.getPlayer().getWorld(), Integer.parseInt(strings[0]), Integer.parseInt(strings[1]), Integer.parseInt(strings[2]))) + .map(strings -> strings.length != 3 ? null : new Location(event.getPlayer().getWorld(), Integer.parseInt(strings[0]), Integer.parseInt(strings[1]), Integer.parseInt(strings[2]))) .collect(Collectors.toList()); WorldEditUtils.setVertices(event.getPlayer(), clazz, locations); } catch (IOException | ClassNotFoundException e) { @@ -74,7 +74,11 @@ public class WorldEditSelectionSaver implements Listener { BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file))); bufferedWriter.write(data.getKey().getTypeName()); for (Location location : data.getValue()) { - bufferedWriter.write("\n" + location.getBlockX() + " " + location.getBlockY() + " " + location.getBlockZ()); + if (location == null) { + bufferedWriter.write("\n"); + } else { + bufferedWriter.write("\n" + location.getBlockX() + " " + location.getBlockY() + " " + location.getBlockZ()); + } } bufferedWriter.close(); } catch (IOException e) { diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/utils/WorldEditUtils.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/utils/WorldEditUtils.java index 25029fae..4d20f346 100644 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/utils/WorldEditUtils.java +++ b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/utils/WorldEditUtils.java @@ -42,7 +42,6 @@ import org.bukkit.World; import org.bukkit.entity.Player; import java.util.List; -import java.util.Objects; import java.util.stream.Collectors; @UtilityClass @@ -92,8 +91,7 @@ public class WorldEditUtils { .getRegionSelector(BukkitAdapter.adapt(player.getWorld())); return new Pair<>(regionSelector.getClass(), regionSelector.getVertices() .stream() - .filter(Objects::nonNull) - .map(blockVector3 -> adapt(player.getWorld(), blockVector3)) + .map(blockVector3 -> blockVector3 == null ? null : adapt(player.getWorld(), blockVector3)) .collect(Collectors.toList())); } @@ -109,9 +107,14 @@ public class WorldEditUtils { if (vertices.isEmpty()) return; SelectorLimits selectorLimits = ActorSelectorLimits.forActor(BukkitAdapter.adapt(player)); - regionSelector.selectPrimary(BukkitAdapter.adapt(vertices.get(0)).toBlockPoint(), selectorLimits); - for (int i = 1; i < vertices.size(); i++) { - regionSelector.selectSecondary(BukkitAdapter.adapt(vertices.get(i)).toBlockPoint(), selectorLimits); + for (int i = 0; i < vertices.size(); i++) { + Location location = vertices.get(i); + if (location == null) continue; + if (i == 0) { + regionSelector.selectPrimary(BukkitAdapter.adapt(location).toBlockPoint(), selectorLimits); + } else { + regionSelector.selectSecondary(BukkitAdapter.adapt(location).toBlockPoint(), selectorLimits); + } } }