diff --git a/api/src/main/java/org/codemc/worldguardwrapper/selection/IPolygonalSelection.java b/api/src/main/java/org/codemc/worldguardwrapper/selection/IPolygonalSelection.java index 44c20b6..2af47e2 100644 --- a/api/src/main/java/org/codemc/worldguardwrapper/selection/IPolygonalSelection.java +++ b/api/src/main/java/org/codemc/worldguardwrapper/selection/IPolygonalSelection.java @@ -2,12 +2,13 @@ package org.codemc.worldguardwrapper.selection; import org.bukkit.Location; +import java.util.List; import java.util.Set; @SuppressWarnings("unused") public interface IPolygonalSelection extends ISelection { - Set getPoints(); + List getPoints(); int getMinimumY(); diff --git a/api/src/main/java/org/codemc/worldguardwrapper/utility/SelectionUtilities.java b/api/src/main/java/org/codemc/worldguardwrapper/utility/SelectionUtilities.java index fb63df1..f02bc68 100644 --- a/api/src/main/java/org/codemc/worldguardwrapper/utility/SelectionUtilities.java +++ b/api/src/main/java/org/codemc/worldguardwrapper/utility/SelectionUtilities.java @@ -5,9 +5,8 @@ import org.bukkit.Location; import org.codemc.worldguardwrapper.selection.ICuboidSelection; import org.codemc.worldguardwrapper.selection.IPolygonalSelection; -import java.util.Collection; -import java.util.HashSet; -import java.util.Set; +import java.util.*; +import java.util.stream.Collectors; @SuppressWarnings("unused") @UtilityClass @@ -54,8 +53,9 @@ public class SelectionUtilities { public IPolygonalSelection createPolygonalSelection(Collection points, int minY, int maxY) { return new IPolygonalSelection() { @Override - public Set getPoints() { - return new HashSet<>(points); + public List getPoints() { + //recoreHosting -> set to list , maintains order but remove duplicates + return new ArrayList<>(points).stream().distinct().collect(Collectors.toList()); } @Override diff --git a/implementation/legacy/src/main/java/org/codemc/worldguardwrapper/implementation/legacy/WorldGuardImplementation.java b/implementation/legacy/src/main/java/org/codemc/worldguardwrapper/implementation/legacy/WorldGuardImplementation.java index befed55..5734b98 100644 --- a/implementation/legacy/src/main/java/org/codemc/worldguardwrapper/implementation/legacy/WorldGuardImplementation.java +++ b/implementation/legacy/src/main/java/org/codemc/worldguardwrapper/implementation/legacy/WorldGuardImplementation.java @@ -314,8 +314,9 @@ public class WorldGuardImplementation implements IWorldGuardImplementation { } else if (selection instanceof Polygonal2DSelection) { return new IPolygonalSelection() { @Override - public Set getPoints() { + public List getPoints() { return ((Polygonal2DSelection) selection).getNativePoints().stream() + .distinct() .map(vector -> new BlockVector(vector.toVector())) .map(vector -> WorldGuardVectorUtilities.fromBlockVector( @@ -323,7 +324,7 @@ public class WorldGuardImplementation implements IWorldGuardImplementation { vector ) ) - .collect(Collectors.toSet()); + .collect(Collectors.toList()); } @Override diff --git a/implementation/legacy/src/main/java/org/codemc/worldguardwrapper/implementation/legacy/region/WrappedRegion.java b/implementation/legacy/src/main/java/org/codemc/worldguardwrapper/implementation/legacy/region/WrappedRegion.java index 16d2257..e3cd234 100644 --- a/implementation/legacy/src/main/java/org/codemc/worldguardwrapper/implementation/legacy/region/WrappedRegion.java +++ b/implementation/legacy/src/main/java/org/codemc/worldguardwrapper/implementation/legacy/region/WrappedRegion.java @@ -46,11 +46,12 @@ public class WrappedRegion implements IWrappedRegion { } else if (handle instanceof ProtectedPolygonalRegion) { return new IPolygonalSelection() { @Override - public Set getPoints() { + public List getPoints() { return handle.getPoints().stream() + .distinct() .map(vector -> new BlockVector(vector.toVector())) .map(vector -> WorldGuardVectorUtilities.fromBlockVector(world, vector)) - .collect(Collectors.toSet()); + .collect(Collectors.toList()); } @Override diff --git a/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/WorldGuardImplementation.java b/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/WorldGuardImplementation.java index f1f19c2..b3154c1 100644 --- a/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/WorldGuardImplementation.java +++ b/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/WorldGuardImplementation.java @@ -381,8 +381,9 @@ public class WorldGuardImplementation implements IWorldGuardImplementation { } else if (selection instanceof Polygonal2DSelection) { return new IPolygonalSelection() { @Override - public Set getPoints() { + public List getPoints() { return ((Polygonal2DSelection) selection).getNativePoints().stream() + .distinct() .map(vector -> new BlockVector(vector.toVector())) .map(vector -> WorldGuardVectorUtilities.fromBlockVector( @@ -390,7 +391,7 @@ public class WorldGuardImplementation implements IWorldGuardImplementation { vector ) ) - .collect(Collectors.toSet()); + .collect(Collectors.toList()); } @Override diff --git a/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/region/WrappedRegion.java b/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/region/WrappedRegion.java index d2e8c4d..e228c97 100644 --- a/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/region/WrappedRegion.java +++ b/implementation/v6/src/main/java/org/codemc/worldguardwrapper/implementation/v6/region/WrappedRegion.java @@ -46,11 +46,12 @@ public class WrappedRegion implements IWrappedRegion { } else if (handle instanceof ProtectedPolygonalRegion) { return new IPolygonalSelection() { @Override - public Set getPoints() { + public List getPoints() { return handle.getPoints().stream() + .distinct() .map(vector -> new BlockVector(vector.toVector())) .map(vector -> WorldGuardVectorUtilities.fromBlockVector(world, vector)) - .collect(Collectors.toSet()); + .collect(Collectors.toList()); } @Override diff --git a/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/WorldGuardImplementation.java b/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/WorldGuardImplementation.java index da1e2a4..e385b99 100644 --- a/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/WorldGuardImplementation.java +++ b/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/WorldGuardImplementation.java @@ -383,11 +383,12 @@ public class WorldGuardImplementation implements IWorldGuardImplementation { } else if (selection instanceof Polygonal2DRegion) { return new IPolygonalSelection() { @Override - public Set getPoints() { + public List getPoints() { return ((Polygonal2DRegion) selection).getPoints().stream() + .distinct() .map(BlockVector2::toBlockVector3) .map(vector -> BukkitAdapter.adapt(world, vector)) - .collect(Collectors.toSet()); + .collect(Collectors.toList()); } @Override diff --git a/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/region/WrappedRegion.java b/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/region/WrappedRegion.java index 6540783..ebebc26 100644 --- a/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/region/WrappedRegion.java +++ b/implementation/v7/src/main/java/org/codemc/worldguardwrapper/implementation/v7/region/WrappedRegion.java @@ -46,11 +46,12 @@ public class WrappedRegion implements IWrappedRegion { } else if (handle instanceof ProtectedPolygonalRegion) { return new IPolygonalSelection() { @Override - public Set getPoints() { + public List getPoints() { return handle.getPoints().stream() + .distinct() .map(BlockVector2::toBlockVector3) .map(vector -> BukkitAdapter.adapt(world, vector)) - .collect(Collectors.toSet()); + .collect(Collectors.toList()); } @Override