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:
@@ -56,7 +56,7 @@ public class WorldEditSelectionSaver implements Listener {
|
|||||||
Class<? extends RegionSelector> clazz = (Class<? extends RegionSelector>) Class.forName(bufferedReader.readLine());
|
Class<? extends RegionSelector> clazz = (Class<? extends RegionSelector>) Class.forName(bufferedReader.readLine());
|
||||||
List<Location> locations = bufferedReader.lines()
|
List<Location> locations = bufferedReader.lines()
|
||||||
.map(s -> s.split(" "))
|
.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());
|
.collect(Collectors.toList());
|
||||||
WorldEditUtils.setVertices(event.getPlayer(), clazz, locations);
|
WorldEditUtils.setVertices(event.getPlayer(), clazz, locations);
|
||||||
} catch (IOException | ClassNotFoundException e) {
|
} catch (IOException | ClassNotFoundException e) {
|
||||||
@@ -74,7 +74,11 @@ public class WorldEditSelectionSaver implements Listener {
|
|||||||
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)));
|
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)));
|
||||||
bufferedWriter.write(data.getKey().getTypeName());
|
bufferedWriter.write(data.getKey().getTypeName());
|
||||||
for (Location location : data.getValue()) {
|
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();
|
bufferedWriter.close();
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
|||||||
@@ -42,7 +42,6 @@ import org.bukkit.World;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@UtilityClass
|
@UtilityClass
|
||||||
@@ -92,8 +91,7 @@ public class WorldEditUtils {
|
|||||||
.getRegionSelector(BukkitAdapter.adapt(player.getWorld()));
|
.getRegionSelector(BukkitAdapter.adapt(player.getWorld()));
|
||||||
return new Pair<>(regionSelector.getClass(), regionSelector.getVertices()
|
return new Pair<>(regionSelector.getClass(), regionSelector.getVertices()
|
||||||
.stream()
|
.stream()
|
||||||
.filter(Objects::nonNull)
|
.map(blockVector3 -> blockVector3 == null ? null : adapt(player.getWorld(), blockVector3))
|
||||||
.map(blockVector3 -> adapt(player.getWorld(), blockVector3))
|
|
||||||
.collect(Collectors.toList()));
|
.collect(Collectors.toList()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -109,9 +107,14 @@ public class WorldEditUtils {
|
|||||||
if (vertices.isEmpty()) return;
|
if (vertices.isEmpty()) return;
|
||||||
|
|
||||||
SelectorLimits selectorLimits = ActorSelectorLimits.forActor(BukkitAdapter.adapt(player));
|
SelectorLimits selectorLimits = ActorSelectorLimits.forActor(BukkitAdapter.adapt(player));
|
||||||
regionSelector.selectPrimary(BukkitAdapter.adapt(vertices.get(0)).toBlockPoint(), selectorLimits);
|
for (int i = 0; i < vertices.size(); i++) {
|
||||||
for (int i = 1; i < vertices.size(); i++) {
|
Location location = vertices.get(i);
|
||||||
regionSelector.selectSecondary(BukkitAdapter.adapt(vertices.get(i)).toBlockPoint(), selectorLimits);
|
if (location == null) continue;
|
||||||
|
if (i == 0) {
|
||||||
|
regionSelector.selectPrimary(BukkitAdapter.adapt(location).toBlockPoint(), selectorLimits);
|
||||||
|
} else {
|
||||||
|
regionSelector.selectSecondary(BukkitAdapter.adapt(location).toBlockPoint(), selectorLimits);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user