Merge pull request 'Fix WorldEditSelectionSaver finally' (#35) from BauSystem/SelectionSaverTheLast into main

Reviewed-on: https://steamwar.de/devlabs/SteamWar/SteamWar/pulls/35
Reviewed-by: Lixfel <lixfel@steamwar.de>
This commit is contained in:
Lixfel
2024-08-22 10:40:37 +02:00
2 changed files with 15 additions and 8 deletions

View File

@@ -56,7 +56,7 @@ public class WorldEditSelectionSaver implements Listener {
Class<? extends RegionSelector> clazz = (Class<? extends RegionSelector>) Class.forName(bufferedReader.readLine());
List<Location> 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,8 +74,12 @@ public class WorldEditSelectionSaver implements Listener {
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)));
bufferedWriter.write(data.getKey().getTypeName());
for (Location location : data.getValue()) {
if (location == null) {
bufferedWriter.write("\n");
} else {
bufferedWriter.write("\n" + location.getBlockX() + " " + location.getBlockY() + " " + location.getBlockZ());
}
}
bufferedWriter.close();
} catch (IOException e) {
BauSystem.getInstance().getLogger().log(Level.SEVERE, e.getMessage(), e);

View File

@@ -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);
}
}
}