Update dependencies, bump version, enhance code style

This commit is contained in:
Gabriele C 2023-06-24 20:48:09 +02:00
parent b553ccba91
commit 38104d506d
34 changed files with 322 additions and 151 deletions

View File

@ -10,6 +10,7 @@ A wrapper for the WorldGuard API that allows plugins to support both v6 and v7 A
How to include WorldEditWrapper into your maven project: How to include WorldEditWrapper into your maven project:
```xml ```xml
<project>
<repositories> <repositories>
<repository> <repository>
<id>codemc-repo</id> <id>codemc-repo</id>
@ -21,9 +22,10 @@ How to include WorldEditWrapper into your maven project:
<dependency> <dependency>
<groupId>org.codemc.worldguardwrapper</groupId> <groupId>org.codemc.worldguardwrapper</groupId>
<artifactId>worldguardwrapper</artifactId> <artifactId>worldguardwrapper</artifactId>
<version>1.2.0-SNAPSHOT</version> <version>1.2.1-SNAPSHOT</version>
</dependency> </dependency>
</dependencies> </dependencies>
</project>
``` ```
Remember to include/relocate the library into your final jar, example: Remember to include/relocate the library into your final jar, example:

View File

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.codemc.worldguardwrapper</groupId> <groupId>org.codemc.worldguardwrapper</groupId>
<artifactId>worldguardwrapper-parent</artifactId> <artifactId>worldguardwrapper-parent</artifactId>
<version>1.2.0-SNAPSHOT</version> <version>1.2.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -1,6 +1,7 @@
package org.codemc.worldguardwrapper.event; package org.codemc.worldguardwrapper.event;
import lombok.Getter; import lombok.Getter;
import lombok.NonNull;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
@ -20,10 +21,12 @@ public class WrappedDamageEntityEvent extends AbstractWrappedEvent {
private final Entity entity; private final Entity entity;
@Override @Override
@NonNull
public HandlerList getHandlers() { public HandlerList getHandlers() {
return handlers; return handlers;
} }
@SuppressWarnings("unused")
public static HandlerList getHandlerList() { public static HandlerList getHandlerList() {
return handlers; return handlers;
} }

View File

@ -1,6 +1,7 @@
package org.codemc.worldguardwrapper.event; package org.codemc.worldguardwrapper.event;
import lombok.Getter; import lombok.Getter;
import lombok.NonNull;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.Event; import org.bukkit.event.Event;
@ -17,10 +18,12 @@ public class WrappedDisallowedPVPEvent extends AbstractWrappedEvent {
private final Event cause; private final Event cause;
@Override @Override
@NonNull
public HandlerList getHandlers() { public HandlerList getHandlers() {
return handlers; return handlers;
} }
@SuppressWarnings("unused")
public static HandlerList getHandlerList() { public static HandlerList getHandlerList() {
return handlers; return handlers;
} }

View File

@ -1,6 +1,7 @@
package org.codemc.worldguardwrapper.event; package org.codemc.worldguardwrapper.event;
import lombok.Getter; import lombok.Getter;
import lombok.NonNull;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.World; import org.bukkit.World;
@ -24,10 +25,12 @@ public class WrappedUseBlockEvent extends AbstractWrappedEvent {
private final Material effectiveMaterial; private final Material effectiveMaterial;
@Override @Override
@NonNull
public HandlerList getHandlers() { public HandlerList getHandlers() {
return handlers; return handlers;
} }
@SuppressWarnings("unused")
public static HandlerList getHandlerList() { public static HandlerList getHandlerList() {
return handlers; return handlers;
} }

View File

@ -1,6 +1,7 @@
package org.codemc.worldguardwrapper.event; package org.codemc.worldguardwrapper.event;
import lombok.Getter; import lombok.Getter;
import lombok.NonNull;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
@ -20,10 +21,12 @@ public class WrappedUseEntityEvent extends AbstractWrappedEvent {
private final Entity entity; private final Entity entity;
@Override @Override
@NonNull
public HandlerList getHandlers() { public HandlerList getHandlers() {
return handlers; return handlers;
} }
@SuppressWarnings("unused")
public static HandlerList getHandlerList() { public static HandlerList getHandlerList() {
return handlers; return handlers;
} }

View File

@ -2,6 +2,7 @@ package org.codemc.worldguardwrapper.flag;
import java.util.Optional; import java.util.Optional;
@SuppressWarnings("unused")
public interface IWrappedFlag<T> { public interface IWrappedFlag<T> {
String getName(); String getName();

View File

@ -1,4 +1,5 @@
package org.codemc.worldguardwrapper.flag; package org.codemc.worldguardwrapper.flag;
@SuppressWarnings("unused")
public interface IWrappedStatusFlag extends IWrappedFlag<WrappedState> { public interface IWrappedStatusFlag extends IWrappedFlag<WrappedState> {
} }

View File

@ -1,5 +1,6 @@
package org.codemc.worldguardwrapper.flag; package org.codemc.worldguardwrapper.flag;
@SuppressWarnings("unused")
public enum WrappedState { public enum WrappedState {
ALLOW, ALLOW,
DENY; DENY;

View File

@ -8,17 +8,31 @@ import org.codemc.worldguardwrapper.region.IWrappedRegionSet;
import java.util.Set; import java.util.Set;
@SuppressWarnings("unused")
public interface IHandler { public interface IHandler {
default void initialize(Player player, Location current, IWrappedRegionSet regionSet) { default void initialize(Player player, Location current, IWrappedRegionSet regionSet) {
} }
default boolean testMoveTo(Player player, Location from, Location to, IWrappedRegionSet regionSet, String moveType) { default boolean testMoveTo(
Player player,
Location from,
Location to,
IWrappedRegionSet regionSet,
String moveType
) {
return true; return true;
} }
default boolean onCrossBoundary(Player player, Location from, Location to, IWrappedRegionSet toSet, default boolean onCrossBoundary(
Set<IWrappedRegion> entered, Set<IWrappedRegion> exited, String moveType) { Player player,
Location from,
Location to,
IWrappedRegionSet toSet,
Set<IWrappedRegion> entered,
Set<IWrappedRegion> exited,
String moveType
) {
return true; return true;
} }

View File

@ -16,6 +16,7 @@ import org.codemc.worldguardwrapper.selection.ISelection;
import java.util.*; import java.util.*;
import java.util.function.Supplier; import java.util.function.Supplier;
@SuppressWarnings("unused")
public interface IWorldGuardImplementation { public interface IWorldGuardImplementation {
/** /**
@ -58,7 +59,7 @@ public interface IWorldGuardImplementation {
* *
* @param name The flag name * @param name The flag name
* @param type The flag type * @param type The flag type
* @return The flag, empty if it doesn't exists * @return The flag, empty if it doesn't exist
*/ */
<T> Optional<IWrappedFlag<T>> getFlag(String name, Class<T> type); <T> Optional<IWrappedFlag<T>> getFlag(String name, Class<T> type);
@ -149,7 +150,11 @@ public interface IWorldGuardImplementation {
* @param point2 The second point of the region * @param point2 The second point of the region
* @return The added region * @return The added region
*/ */
default Optional<IWrappedRegion> addCuboidRegion(@NonNull String id, @NonNull Location point1, @NonNull Location point2) { default Optional<IWrappedRegion> addCuboidRegion(
@NonNull String id,
@NonNull Location point1,
@NonNull Location point2
) {
return addRegion(id, Arrays.asList(point1, point2), 0, 0); return addRegion(id, Arrays.asList(point1, point2), 0, 0);
} }
@ -168,7 +173,8 @@ public interface IWorldGuardImplementation {
IPolygonalSelection sel = (IPolygonalSelection) selection; IPolygonalSelection sel = (IPolygonalSelection) selection;
return addRegion(id, new ArrayList<>(sel.getPoints()), sel.getMinimumY(), sel.getMaximumY()); return addRegion(id, new ArrayList<>(sel.getPoints()), sel.getMinimumY(), sel.getMaximumY());
} else { } else {
throw new UnsupportedOperationException("Unknown " + selection.getClass().getSimpleName() + " selection type!"); throw new UnsupportedOperationException("Unknown " + selection.getClass().getSimpleName()
+ " selection type!");
} }
} }

View File

@ -3,6 +3,7 @@ package org.codemc.worldguardwrapper.region;
import java.util.Set; import java.util.Set;
import java.util.UUID; import java.util.UUID;
@SuppressWarnings("unused")
public interface IWrappedDomain { public interface IWrappedDomain {
Set<UUID> getPlayers(); Set<UUID> getPlayers();

View File

@ -7,6 +7,7 @@ import org.codemc.worldguardwrapper.selection.ISelection;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
@SuppressWarnings("unused")
public interface IWrappedRegion { public interface IWrappedRegion {
ISelection getSelection(); ISelection getSelection();

View File

@ -7,6 +7,7 @@ import java.util.Collection;
import java.util.Optional; import java.util.Optional;
import java.util.Set; import java.util.Set;
@SuppressWarnings("unused")
public interface IWrappedRegionSet extends Iterable<IWrappedRegion> { public interface IWrappedRegionSet extends Iterable<IWrappedRegion> {
boolean isVirtual(); boolean isVirtual();

View File

@ -2,6 +2,7 @@ package org.codemc.worldguardwrapper.selection;
import org.bukkit.Location; import org.bukkit.Location;
@SuppressWarnings("unused")
public interface ICuboidSelection extends ISelection { public interface ICuboidSelection extends ISelection {
Location getMinimumPoint(); Location getMinimumPoint();

View File

@ -4,6 +4,7 @@ import org.bukkit.Location;
import java.util.Set; import java.util.Set;
@SuppressWarnings("unused")
public interface IPolygonalSelection extends ISelection { public interface IPolygonalSelection extends ISelection {
Set<Location> getPoints(); Set<Location> getPoints();

View File

@ -1,4 +1,5 @@
package org.codemc.worldguardwrapper.selection; package org.codemc.worldguardwrapper.selection;
@SuppressWarnings("unused")
public interface ISelection { public interface ISelection {
} }

View File

@ -9,6 +9,7 @@ import java.util.Collection;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
@SuppressWarnings("unused")
@UtilityClass @UtilityClass
public class SelectionUtilities { public class SelectionUtilities {

View File

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.codemc.worldguardwrapper</groupId> <groupId>org.codemc.worldguardwrapper</groupId>
<artifactId>worldguardwrapper-implementation</artifactId> <artifactId>worldguardwrapper-implementation</artifactId>
<version>1.2.0-SNAPSHOT</version> <version>1.2.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>
@ -29,7 +29,7 @@
<dependency> <dependency>
<groupId>${project.groupId}</groupId> <groupId>${project.groupId}</groupId>
<artifactId>worldguardwrapper-api</artifactId> <artifactId>worldguardwrapper-api</artifactId>
<version>1.2.0-SNAPSHOT</version> <version>1.2.1-SNAPSHOT</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>

View File

@ -62,23 +62,31 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
} }
private Optional<ApplicableRegionSet> getApplicableRegions(@NonNull Location location) { private Optional<ApplicableRegionSet> getApplicableRegions(@NonNull Location location) {
return getWorldManager(location.getWorld()).map(manager -> manager.getApplicableRegions(location)); return getWorldManager(Objects.requireNonNull(location.getWorld()))
.map(manager -> manager.getApplicableRegions(location));
} }
private Optional<ApplicableRegionSet> getApplicableRegions(@NonNull Location minimum, @NonNull Location maximum) { private Optional<ApplicableRegionSet> getApplicableRegions(@NonNull Location minimum, @NonNull Location maximum) {
return getWorldManager(minimum.getWorld()).map(manager -> manager.getApplicableRegions( return getWorldManager(Objects.requireNonNull(minimum.getWorld()))
new ProtectedCuboidRegion("temp", WorldGuardVectorUtilities.toBlockVector(minimum), WorldGuardVectorUtilities.toBlockVector(maximum)))); .map(manager ->
manager.getApplicableRegions(
new ProtectedCuboidRegion(
"temp",
WorldGuardVectorUtilities.toBlockVector(minimum),
WorldGuardVectorUtilities.toBlockVector(maximum)
)
)
);
} }
private <V> Optional<V> queryValue(Player player, @NonNull Location location, @NonNull Flag<V> flag) { private <V> Optional<V> queryValue(Player player, @NonNull Location location, @NonNull Flag<V> flag) {
return getApplicableRegions(location).map(applicableRegions -> applicableRegions.queryValue(wrapPlayer(player) return getApplicableRegions(location)
.orElse(null), flag)); .map(applicableRegions -> applicableRegions.queryValue(wrapPlayer(player).orElse(null), flag));
} }
private IWrappedRegionSet wrapRegionSet(@NonNull World world, @NonNull ApplicableRegionSet regionSet) { private IWrappedRegionSet wrapRegionSet(@NonNull World world, @NonNull ApplicableRegionSet regionSet) {
return new IWrappedRegionSet() { return new IWrappedRegionSet() {
@SuppressWarnings("NullableProblems")
@Override @Override
public Iterator<IWrappedRegion> iterator() { public Iterator<IWrappedRegion> iterator() {
return Iterators.transform(regionSet.iterator(), region -> new WrappedRegion(world, region)); return Iterators.transform(regionSet.iterator(), region -> new WrappedRegion(world, region));
@ -159,7 +167,7 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
} }
@Override @Override
public <T> Optional<T> queryFlag(Player player, Location location, IWrappedFlag<T> flag) { public <T> Optional<T> queryFlag(Player player, @NonNull Location location, @NonNull IWrappedFlag<T> flag) {
AbstractWrappedFlag<T> wrappedFlag = (AbstractWrappedFlag<T>) flag; AbstractWrappedFlag<T> wrappedFlag = (AbstractWrappedFlag<T>) flag;
return queryValue(player, location, wrappedFlag.getHandle()).flatMap(wrappedFlag::fromWGValue); return queryValue(player, location, wrappedFlag.getHandle()).flatMap(wrappedFlag::fromWGValue);
@ -198,19 +206,19 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
} }
@Override @Override
public <T> Optional<IWrappedFlag<T>> registerFlag(String name, Class<T> type, T defaultValue) { public <T> Optional<IWrappedFlag<T>> registerFlag(@NonNull String name, @NonNull Class<T> type, T defaultValue) {
throw new UnsupportedOperationException("Custom flags aren't supported in this version of WorldGuard!"); throw new UnsupportedOperationException("Custom flags aren't supported in this version of WorldGuard!");
} }
@Override @Override
public Optional<IWrappedRegion> getRegion(World world, String id) { public Optional<IWrappedRegion> getRegion(@NonNull World world, @NonNull String id) {
return getWorldManager(world) return getWorldManager(world)
.map(regionManager -> regionManager.getRegion(id)) .map(regionManager -> regionManager.getRegion(id))
.map(region -> new WrappedRegion(world, region)); .map(region -> new WrappedRegion(world, region));
} }
@Override @Override
public Map<String, IWrappedRegion> getRegions(World world) { public Map<String, IWrappedRegion> getRegions(@NonNull World world) {
RegionManager regionManager = worldGuardPlugin.getRegionManager(world); RegionManager regionManager = worldGuardPlugin.getRegionManager(world);
Map<String, ProtectedRegion> regions = regionManager.getRegions(); Map<String, ProtectedRegion> regions = regionManager.getRegions();
@ -221,7 +229,7 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
} }
@Override @Override
public Set<IWrappedRegion> getRegions(Location location) { public Set<IWrappedRegion> getRegions(@NonNull Location location) {
ApplicableRegionSet regionSet = getApplicableRegions(location).orElse(null); ApplicableRegionSet regionSet = getApplicableRegions(location).orElse(null);
Set<IWrappedRegion> set = new HashSet<>(); Set<IWrappedRegion> set = new HashSet<>();
@ -234,7 +242,7 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
} }
@Override @Override
public Set<IWrappedRegion> getRegions(Location minimum, Location maximum) { public Set<IWrappedRegion> getRegions(@NonNull Location minimum, @NonNull Location maximum) {
ApplicableRegionSet regionSet = getApplicableRegions(minimum, maximum).orElse(null); ApplicableRegionSet regionSet = getApplicableRegions(minimum, maximum).orElse(null);
Set<IWrappedRegion> set = new HashSet<>(); Set<IWrappedRegion> set = new HashSet<>();
@ -248,17 +256,27 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
@Override @Override
public Optional<IWrappedRegionSet> getRegionSet(@NonNull Location location) { public Optional<IWrappedRegionSet> getRegionSet(@NonNull Location location) {
return getApplicableRegions(location).map(regionSet -> wrapRegionSet(location.getWorld(), regionSet)); return getApplicableRegions(location)
.map(regionSet -> wrapRegionSet(Objects.requireNonNull(location.getWorld()), regionSet));
} }
@Override @Override
public Optional<IWrappedRegion> addRegion(String id, List<Location> points, int minY, int maxY) { public Optional<IWrappedRegion> addRegion(@NonNull String id, @NonNull List<Location> points, int minY, int maxY) {
ProtectedRegion region; ProtectedRegion region;
World world = points.get(0).getWorld(); World world = Objects.requireNonNull(points.get(0).getWorld());
if (points.size() == 2) { if (points.size() == 2) {
region = new ProtectedCuboidRegion(id, WorldGuardVectorUtilities.toBlockVector(points.get(0)), WorldGuardVectorUtilities.toBlockVector(points.get(1))); region = new ProtectedCuboidRegion(
id,
WorldGuardVectorUtilities.toBlockVector(points.get(0)),
WorldGuardVectorUtilities.toBlockVector(points.get(1))
);
} else { } else {
region = new ProtectedPolygonalRegion(id, WorldGuardVectorUtilities.toBlockVector2DList(points), minY, maxY); region = new ProtectedPolygonalRegion(
id,
WorldGuardVectorUtilities.toBlockVector2DList(points),
minY,
maxY
);
} }
Optional<RegionManager> manager = getWorldManager(world); Optional<RegionManager> manager = getWorldManager(world);
@ -271,7 +289,7 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
} }
@Override @Override
public Optional<Set<IWrappedRegion>> removeRegion(World world, String id) { public Optional<Set<IWrappedRegion>> removeRegion(@NonNull World world, @NonNull String id) {
Optional<Set<ProtectedRegion>> set = getWorldManager(world).map(manager -> manager.removeRegion(id)); Optional<Set<ProtectedRegion>> set = getWorldManager(world).map(manager -> manager.removeRegion(id));
return set.map(protectedRegions -> protectedRegions.stream().map(region -> new WrappedRegion(world, region)) return set.map(protectedRegions -> protectedRegions.stream().map(region -> new WrappedRegion(world, region))
.collect(Collectors.toSet())); .collect(Collectors.toSet()));
@ -299,7 +317,12 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
public Set<Location> getPoints() { public Set<Location> getPoints() {
return ((Polygonal2DSelection) selection).getNativePoints().stream() return ((Polygonal2DSelection) selection).getNativePoints().stream()
.map(vector -> new BlockVector(vector.toVector())) .map(vector -> new BlockVector(vector.toVector()))
.map(vector -> WorldGuardVectorUtilities.fromBlockVector(selection.getWorld(), vector)) .map(vector ->
WorldGuardVectorUtilities.fromBlockVector(
selection.getWorld(),
vector
)
)
.collect(Collectors.toSet()); .collect(Collectors.toSet());
} }
@ -314,7 +337,8 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
} }
}; };
} else { } else {
throw new UnsupportedOperationException("Unsupported " + selection.getClass().getSimpleName() + " selection!"); throw new UnsupportedOperationException("Unsupported " + selection.getClass().getSimpleName()
+ " selection!");
} }
}); });
} }

View File

@ -64,7 +64,8 @@ public class WorldGuardFlagUtilities {
public Map.Entry<IWrappedFlag<?>, Object> wrap(Flag<?> flag, Object value) { public Map.Entry<IWrappedFlag<?>, Object> wrap(Flag<?> flag, Object value) {
IWrappedFlag<?> wrappedFlag = wrapFixType(flag, value.getClass()); IWrappedFlag<?> wrappedFlag = wrapFixType(flag, value.getClass());
Object wrappedValue = ((AbstractWrappedFlag<?>) wrappedFlag).fromWGValue(value).get(); // value is non-null Object wrappedValue = ((AbstractWrappedFlag<?>) wrappedFlag).fromWGValue(value)
.orElseThrow(NullPointerException::new); // value should never be null
return Maps.immutableEntry(wrappedFlag, wrappedValue); return Maps.immutableEntry(wrappedFlag, wrappedValue);
} }
@ -90,4 +91,4 @@ public class WorldGuardFlagUtilities {
new com.sk89q.worldedit.Vector(location.getX(), location.getY(), location.getZ())); new com.sk89q.worldedit.Vector(location.getX(), location.getY(), location.getZ()));
} }
} }

View File

@ -21,7 +21,9 @@ public class WorldGuardVectorUtilities {
} }
public List<BlockVector2D> toBlockVector2DList(List<Location> locations) { public List<BlockVector2D> toBlockVector2DList(List<Location> locations) {
return locations.stream().map(location -> new BlockVector2D(location.getX(), location.getZ())).collect(Collectors.toList()); return locations.stream()
.map(location -> new BlockVector2D(location.getX(), location.getZ()))
.collect(Collectors.toList());
} }
} }

View File

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.codemc.worldguardwrapper</groupId> <groupId>org.codemc.worldguardwrapper</groupId>
<artifactId>worldguardwrapper-parent</artifactId> <artifactId>worldguardwrapper-parent</artifactId>
<version>1.2.0-SNAPSHOT</version> <version>1.2.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.codemc.worldguardwrapper</groupId> <groupId>org.codemc.worldguardwrapper</groupId>
<artifactId>worldguardwrapper-implementation</artifactId> <artifactId>worldguardwrapper-implementation</artifactId>
<version>1.2.0-SNAPSHOT</version> <version>1.2.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>
@ -29,7 +29,7 @@
<dependency> <dependency>
<groupId>${project.groupId}</groupId> <groupId>${project.groupId}</groupId>
<artifactId>worldguardwrapper-api</artifactId> <artifactId>worldguardwrapper-api</artifactId>
<version>1.2.0-SNAPSHOT</version> <version>1.2.1-SNAPSHOT</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>

View File

@ -64,8 +64,12 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
} }
private Optional<LocalPlayer> wrapPlayer(OfflinePlayer player) { private Optional<LocalPlayer> wrapPlayer(OfflinePlayer player) {
return Optional.ofNullable(player).map(bukkitPlayer -> bukkitPlayer.isOnline() ? return Optional.ofNullable(player).map(bukkitPlayer -> {
worldGuardPlugin.wrapPlayer((Player) bukkitPlayer) : worldGuardPlugin.wrapOfflinePlayer(bukkitPlayer)); if (bukkitPlayer.isOnline()) {
return worldGuardPlugin.wrapPlayer((Player) bukkitPlayer);
}
return worldGuardPlugin.wrapOfflinePlayer(bukkitPlayer);
});
} }
private Optional<RegionManager> getWorldManager(@NonNull World world) { private Optional<RegionManager> getWorldManager(@NonNull World world) {
@ -73,23 +77,29 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
} }
private Optional<ApplicableRegionSet> getApplicableRegions(@NonNull Location location) { private Optional<ApplicableRegionSet> getApplicableRegions(@NonNull Location location) {
return getWorldManager(location.getWorld()).map(manager -> manager.getApplicableRegions(location)); return getWorldManager(Objects.requireNonNull(location.getWorld()))
.map(manager -> manager.getApplicableRegions(location));
} }
private Optional<ApplicableRegionSet> getApplicableRegions(@NonNull Location minimum, @NonNull Location maximum) { private Optional<ApplicableRegionSet> getApplicableRegions(@NonNull Location minimum, @NonNull Location maximum) {
return getWorldManager(minimum.getWorld()).map(manager -> manager.getApplicableRegions( return getWorldManager(Objects.requireNonNull(minimum.getWorld()))
new ProtectedCuboidRegion("temp", WorldGuardVectorUtilities.toBlockVector(minimum), WorldGuardVectorUtilities.toBlockVector(maximum)))); .map(manager -> manager.getApplicableRegions(
new ProtectedCuboidRegion(
"temp",
WorldGuardVectorUtilities.toBlockVector(minimum),
WorldGuardVectorUtilities.toBlockVector(maximum)
)
));
} }
private <V> Optional<V> queryValue(Player player, @NonNull Location location, @NonNull Flag<V> flag) { private <V> Optional<V> queryValue(Player player, @NonNull Location location, @NonNull Flag<V> flag) {
return getApplicableRegions(location).map(applicableRegions -> applicableRegions.queryValue(wrapPlayer(player) return getApplicableRegions(location)
.orElse(null), flag)); .map(applicableRegions -> applicableRegions.queryValue(wrapPlayer(player).orElse(null), flag));
} }
public IWrappedRegionSet wrapRegionSet(@NonNull World world, @NonNull ApplicableRegionSet regionSet) { public IWrappedRegionSet wrapRegionSet(@NonNull World world, @NonNull ApplicableRegionSet regionSet) {
return new IWrappedRegionSet() { return new IWrappedRegionSet() {
@SuppressWarnings("NullableProblems")
@Override @Override
public Iterator<IWrappedRegion> iterator() { public Iterator<IWrappedRegion> iterator() {
return Iterators.transform(regionSet.iterator(), region -> new WrappedRegion(world, region)); return Iterators.transform(regionSet.iterator(), region -> new WrappedRegion(world, region));
@ -138,8 +148,10 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
@Override @Override
public Set<IWrappedRegion> getRegions() { public Set<IWrappedRegion> getRegions() {
return regionSet.getRegions().stream() return regionSet.getRegions()
.map(region -> new WrappedRegion(world, region)).collect(Collectors.toSet()); .stream()
.map(region -> new WrappedRegion(world, region))
.collect(Collectors.toSet());
} }
}; };
} }
@ -165,7 +177,11 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
try { try {
//noinspection unchecked //noinspection unchecked
handlerClass = (Class<? extends ProxyHandler>) proxyFactory.createClass(); handlerClass = (Class<? extends ProxyHandler>) proxyFactory.createClass();
handlerConstructor = handlerClass.getDeclaredConstructor(WorldGuardImplementation.class, IHandler.class, Session.class); handlerConstructor = handlerClass.getDeclaredConstructor(
WorldGuardImplementation.class,
IHandler.class,
Session.class
);
} catch (NoSuchMethodException e) { } catch (NoSuchMethodException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
@ -190,7 +206,7 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
} }
@Override @Override
public <T> Optional<T> queryFlag(Player player, Location location, IWrappedFlag<T> flag) { public <T> Optional<T> queryFlag(Player player, @NonNull Location location, @NonNull IWrappedFlag<T> flag) {
AbstractWrappedFlag<T> wrappedFlag = (AbstractWrappedFlag<T>) flag; AbstractWrappedFlag<T> wrappedFlag = (AbstractWrappedFlag<T>) flag;
return queryValue(player, location, wrappedFlag.getHandle()).flatMap(wrappedFlag::fromWGValue); return queryValue(player, location, wrappedFlag.getHandle()).flatMap(wrappedFlag::fromWGValue);
} }
@ -229,7 +245,7 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
@SuppressWarnings({"unchecked", "rawtypes"}) @SuppressWarnings({"unchecked", "rawtypes"})
@Override @Override
public <T> Optional<IWrappedFlag<T>> registerFlag(String name, Class<T> type, T defaultValue) { public <T> Optional<IWrappedFlag<T>> registerFlag(@NonNull String name, @NonNull Class<T> type, T defaultValue) {
final Flag<?> flag; final Flag<?> flag;
if (type.equals(WrappedState.class)) { if (type.equals(WrappedState.class)) {
flag = new StateFlag(name, defaultValue == WrappedState.ALLOW); flag = new StateFlag(name, defaultValue == WrappedState.ALLOW);
@ -259,14 +275,14 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
} }
@Override @Override
public Optional<IWrappedRegion> getRegion(World world, String id) { public Optional<IWrappedRegion> getRegion(@NonNull World world, @NonNull String id) {
return getWorldManager(world) return getWorldManager(world)
.map(regionManager -> regionManager.getRegion(id)) .map(regionManager -> regionManager.getRegion(id))
.map(region -> new WrappedRegion(world, region)); .map(region -> new WrappedRegion(world, region));
} }
@Override @Override
public Map<String, IWrappedRegion> getRegions(World world) { public Map<String, IWrappedRegion> getRegions(@NonNull World world) {
RegionManager regionManager = worldGuardPlugin.getRegionManager(world); RegionManager regionManager = worldGuardPlugin.getRegionManager(world);
Map<String, ProtectedRegion> regions = regionManager.getRegions(); Map<String, ProtectedRegion> regions = regionManager.getRegions();
@ -277,7 +293,7 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
} }
@Override @Override
public Set<IWrappedRegion> getRegions(Location location) { public Set<IWrappedRegion> getRegions(@NonNull Location location) {
ApplicableRegionSet regionSet = getApplicableRegions(location).orElse(null); ApplicableRegionSet regionSet = getApplicableRegions(location).orElse(null);
Set<IWrappedRegion> set = new HashSet<>(); Set<IWrappedRegion> set = new HashSet<>();
@ -290,7 +306,7 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
} }
@Override @Override
public Set<IWrappedRegion> getRegions(Location minimum, Location maximum) { public Set<IWrappedRegion> getRegions(@NonNull Location minimum, @NonNull Location maximum) {
ApplicableRegionSet regionSet = getApplicableRegions(minimum, maximum).orElse(null); ApplicableRegionSet regionSet = getApplicableRegions(minimum, maximum).orElse(null);
Set<IWrappedRegion> set = new HashSet<>(); Set<IWrappedRegion> set = new HashSet<>();
@ -304,17 +320,27 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
@Override @Override
public Optional<IWrappedRegionSet> getRegionSet(@NonNull Location location) { public Optional<IWrappedRegionSet> getRegionSet(@NonNull Location location) {
return getApplicableRegions(location).map(regionSet -> wrapRegionSet(location.getWorld(), regionSet)); return getApplicableRegions(location)
.map(regionSet -> wrapRegionSet(Objects.requireNonNull(location.getWorld()), regionSet));
} }
@Override @Override
public Optional<IWrappedRegion> addRegion(String id, List<Location> points, int minY, int maxY) { public Optional<IWrappedRegion> addRegion(@NonNull String id, @NonNull List<Location> points, int minY, int maxY) {
ProtectedRegion region; ProtectedRegion region;
World world = points.get(0).getWorld(); World world = Objects.requireNonNull(points.get(0).getWorld());
if (points.size() == 2) { if (points.size() == 2) {
region = new ProtectedCuboidRegion(id, WorldGuardVectorUtilities.toBlockVector(points.get(0)), WorldGuardVectorUtilities.toBlockVector(points.get(1))); region = new ProtectedCuboidRegion(
id,
WorldGuardVectorUtilities.toBlockVector(points.get(0)),
WorldGuardVectorUtilities.toBlockVector(points.get(1))
);
} else { } else {
region = new ProtectedPolygonalRegion(id, WorldGuardVectorUtilities.toBlockVector2DList(points), minY, maxY); region = new ProtectedPolygonalRegion(
id,
WorldGuardVectorUtilities.toBlockVector2DList(points),
minY,
maxY
);
} }
Optional<RegionManager> manager = getWorldManager(world); Optional<RegionManager> manager = getWorldManager(world);
@ -327,10 +353,13 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
} }
@Override @Override
public Optional<Set<IWrappedRegion>> removeRegion(World world, String id) { public Optional<Set<IWrappedRegion>> removeRegion(@NonNull World world, @NonNull String id) {
Optional<Set<ProtectedRegion>> set = getWorldManager(world).map(manager -> manager.removeRegion(id)); Optional<Set<ProtectedRegion>> set = getWorldManager(world).map(manager -> manager.removeRegion(id));
return set.map(protectedRegions -> protectedRegions.stream().map(region -> new WrappedRegion(world, region)) return set.map(protectedRegions ->
.collect(Collectors.toSet())); protectedRegions.stream()
.map(region -> new WrappedRegion(world, region))
.collect(Collectors.toSet())
);
} }
@Override @Override
@ -355,7 +384,12 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
public Set<Location> getPoints() { public Set<Location> getPoints() {
return ((Polygonal2DSelection) selection).getNativePoints().stream() return ((Polygonal2DSelection) selection).getNativePoints().stream()
.map(vector -> new BlockVector(vector.toVector())) .map(vector -> new BlockVector(vector.toVector()))
.map(vector -> WorldGuardVectorUtilities.fromBlockVector(selection.getWorld(), vector)) .map(vector ->
WorldGuardVectorUtilities.fromBlockVector(
selection.getWorld(),
vector
)
)
.collect(Collectors.toSet()); .collect(Collectors.toSet());
} }
@ -370,7 +404,8 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
} }
}; };
} else { } else {
throw new UnsupportedOperationException("Unsupported " + selection.getClass().getSimpleName() + " selection!"); throw new UnsupportedOperationException("Unsupported " + selection.getClass().getSimpleName()
+ " selection!");
} }
}); });
} }

View File

@ -17,6 +17,7 @@ import org.codemc.worldguardwrapper.implementation.v6.region.WrappedRegion;
import org.codemc.worldguardwrapper.region.IWrappedRegion; import org.codemc.worldguardwrapper.region.IWrappedRegion;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.Objects;
import java.util.Set; import java.util.Set;
public class ProxyHandler extends Handler { public class ProxyHandler extends Handler {
@ -32,19 +33,48 @@ public class ProxyHandler extends Handler {
@Override @Override
public void initialize(Player player, Location current, ApplicableRegionSet set) { public void initialize(Player player, Location current, ApplicableRegionSet set) {
handler.initialize(player, current, implementation.wrapRegionSet(current.getWorld(), set)); handler.initialize(
player,
current,
implementation.wrapRegionSet(Objects.requireNonNull(current.getWorld()), set)
);
} }
@Override @Override
public boolean testMoveTo(Player player, Location from, Location to, ApplicableRegionSet toSet, MoveType moveType) { public boolean testMoveTo(Player player, Location from, Location to, ApplicableRegionSet toSet, MoveType moveType) {
return handler.testMoveTo(player, from, to, implementation.wrapRegionSet(to.getWorld(), toSet), moveType.name()); return handler.testMoveTo(player,
from,
to,
implementation.wrapRegionSet(Objects.requireNonNull(to.getWorld()), toSet),
moveType.name()
);
} }
@Override @Override
public boolean onCrossBoundary(Player player, Location from, Location to, ApplicableRegionSet toSet, Set<ProtectedRegion> entered, Set<ProtectedRegion> exited, MoveType moveType) { public boolean onCrossBoundary(
Set<IWrappedRegion> mappedEntered = ImmutableSet.copyOf(Collections2.transform(entered, region -> new WrappedRegion(to.getWorld(), region))); Player player,
Set<IWrappedRegion> mappedExited = ImmutableSet.copyOf(Collections2.transform(exited, region -> new WrappedRegion(from.getWorld(), region))); Location from,
return handler.onCrossBoundary(player, from, to, implementation.wrapRegionSet(to.getWorld(), toSet), mappedEntered, mappedExited, moveType.name()); Location to,
ApplicableRegionSet toSet,
Set<ProtectedRegion> entered,
Set<ProtectedRegion> exited,
MoveType moveType
) {
Set<IWrappedRegion> mappedEntered = ImmutableSet.copyOf(
Collections2.transform(entered, region -> new WrappedRegion(to.getWorld(), region))
);
Set<IWrappedRegion> mappedExited = ImmutableSet.copyOf(
Collections2.transform(exited, region -> new WrappedRegion(from.getWorld(), region))
);
return handler.onCrossBoundary(
player,
from,
to,
implementation.wrapRegionSet(Objects.requireNonNull(to.getWorld()), toSet),
mappedEntered,
mappedExited,
moveType.name()
);
} }
@Override @Override

View File

@ -88,4 +88,4 @@ public class WorldGuardFlagUtilities {
location.getX(), location.getY(), location.getZ()); location.getX(), location.getY(), location.getZ());
} }
} }

View File

@ -21,7 +21,8 @@ public class WorldGuardVectorUtilities {
} }
public List<BlockVector2D> toBlockVector2DList(List<Location> locations) { public List<BlockVector2D> toBlockVector2DList(List<Location> locations) {
return locations.stream().map(location -> new BlockVector2D(location.getX(), location.getZ())).collect(Collectors.toList()); return locations.stream()
.map(location -> new BlockVector2D(location.getX(), location.getZ())).collect(Collectors.toList());
} }
} }

View File

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.codemc.worldguardwrapper</groupId> <groupId>org.codemc.worldguardwrapper</groupId>
<artifactId>worldguardwrapper-implementation</artifactId> <artifactId>worldguardwrapper-implementation</artifactId>
<version>1.2.0-SNAPSHOT</version> <version>1.2.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>
@ -29,13 +29,13 @@
<dependency> <dependency>
<groupId>${project.groupId}</groupId> <groupId>${project.groupId}</groupId>
<artifactId>worldguardwrapper-api</artifactId> <artifactId>worldguardwrapper-api</artifactId>
<version>1.2.0-SNAPSHOT</version> <version>1.2.1-SNAPSHOT</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.sk89q.worldguard</groupId> <groupId>com.sk89q.worldguard</groupId>
<artifactId>worldguard-bukkit</artifactId> <artifactId>worldguard-bukkit</artifactId>
<version>7.0.7</version> <version>7.0.8</version>
<scope>provided</scope> <scope>provided</scope>
<exclusions> <exclusions>
<exclusion> <exclusion>

View File

@ -13,15 +13,7 @@ import com.sk89q.worldguard.LocalPlayer;
import com.sk89q.worldguard.WorldGuard; import com.sk89q.worldguard.WorldGuard;
import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
import com.sk89q.worldguard.protection.ApplicableRegionSet; import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.flags.BooleanFlag; import com.sk89q.worldguard.protection.flags.*;
import com.sk89q.worldguard.protection.flags.DoubleFlag;
import com.sk89q.worldguard.protection.flags.EnumFlag;
import com.sk89q.worldguard.protection.flags.Flag;
import com.sk89q.worldguard.protection.flags.IntegerFlag;
import com.sk89q.worldguard.protection.flags.LocationFlag;
import com.sk89q.worldguard.protection.flags.StateFlag;
import com.sk89q.worldguard.protection.flags.StringFlag;
import com.sk89q.worldguard.protection.flags.VectorFlag;
import com.sk89q.worldguard.protection.flags.registry.FlagConflictException; import com.sk89q.worldguard.protection.flags.registry.FlagConflictException;
import com.sk89q.worldguard.protection.flags.registry.FlagRegistry; import com.sk89q.worldguard.protection.flags.registry.FlagRegistry;
import com.sk89q.worldguard.protection.managers.RegionManager; import com.sk89q.worldguard.protection.managers.RegionManager;
@ -54,15 +46,7 @@ import org.codemc.worldguardwrapper.selection.ISelection;
import java.lang.reflect.Constructor; import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.util.Collection; import java.util.*;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.function.Supplier; import java.util.function.Supplier;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -77,8 +61,12 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
} }
private Optional<LocalPlayer> wrapPlayer(OfflinePlayer player) { private Optional<LocalPlayer> wrapPlayer(OfflinePlayer player) {
return Optional.ofNullable(player).map(bukkitPlayer -> bukkitPlayer.isOnline() ? return Optional.ofNullable(player).map(bukkitPlayer -> {
WorldGuardPlugin.inst().wrapPlayer((Player) bukkitPlayer) : WorldGuardPlugin.inst().wrapOfflinePlayer(bukkitPlayer)); if (bukkitPlayer.isOnline()) {
return WorldGuardPlugin.inst().wrapPlayer((Player) bukkitPlayer);
}
return WorldGuardPlugin.inst().wrapOfflinePlayer(bukkitPlayer);
});
} }
private Optional<RegionManager> getWorldManager(@NonNull World world) { private Optional<RegionManager> getWorldManager(@NonNull World world) {
@ -86,23 +74,29 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
} }
private Optional<ApplicableRegionSet> getApplicableRegions(@NonNull Location location) { private Optional<ApplicableRegionSet> getApplicableRegions(@NonNull Location location) {
return getWorldManager(location.getWorld()).map(manager -> manager.getApplicableRegions(BukkitAdapter.asBlockVector(location))); return getWorldManager(Objects.requireNonNull(location.getWorld()))
.map(manager -> manager.getApplicableRegions(BukkitAdapter.asBlockVector(location)));
} }
private Optional<ApplicableRegionSet> getApplicableRegions(@NonNull Location minimum, @NonNull Location maximum) { private Optional<ApplicableRegionSet> getApplicableRegions(@NonNull Location minimum, @NonNull Location maximum) {
return getWorldManager(minimum.getWorld()).map(manager -> manager.getApplicableRegions( return getWorldManager(Objects.requireNonNull(minimum.getWorld()))
new ProtectedCuboidRegion("temp", BukkitAdapter.asBlockVector(minimum), BukkitAdapter.asBlockVector(maximum)))); .map(manager -> manager.getApplicableRegions(
new ProtectedCuboidRegion(
"temp",
BukkitAdapter.asBlockVector(minimum),
BukkitAdapter.asBlockVector(maximum)
)
));
} }
private <V> Optional<V> queryValue(Player player, @NonNull Location location, @NonNull Flag<V> flag) { private <V> Optional<V> queryValue(Player player, @NonNull Location location, @NonNull Flag<V> flag) {
return getApplicableRegions(location).map(applicableRegions -> applicableRegions.queryValue(wrapPlayer(player) return getApplicableRegions(location)
.orElse(null), flag)); .map(applicableRegions -> applicableRegions.queryValue(wrapPlayer(player).orElse(null), flag));
} }
public IWrappedRegionSet wrapRegionSet(@NonNull World world, @NonNull ApplicableRegionSet regionSet) { public IWrappedRegionSet wrapRegionSet(@NonNull World world, @NonNull ApplicableRegionSet regionSet) {
return new IWrappedRegionSet() { return new IWrappedRegionSet() {
@SuppressWarnings("NullableProblems")
@Override @Override
public Iterator<IWrappedRegion> iterator() { public Iterator<IWrappedRegion> iterator() {
return Iterators.transform(regionSet.iterator(), region -> new WrappedRegion(world, region)); return Iterators.transform(regionSet.iterator(), region -> new WrappedRegion(world, region));
@ -178,7 +172,11 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
try { try {
//noinspection unchecked //noinspection unchecked
handlerClass = (Class<? extends ProxyHandler>) proxyFactory.createClass(); handlerClass = (Class<? extends ProxyHandler>) proxyFactory.createClass();
handlerConstructor = handlerClass.getDeclaredConstructor(WorldGuardImplementation.class, IHandler.class, Session.class); handlerConstructor = handlerClass.getDeclaredConstructor(
WorldGuardImplementation.class,
IHandler.class,
Session.class
);
} catch (NoSuchMethodException e) { } catch (NoSuchMethodException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
@ -203,7 +201,7 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
} }
@Override @Override
public <T> Optional<T> queryFlag(Player player, Location location, IWrappedFlag<T> flag) { public <T> Optional<T> queryFlag(Player player, @NonNull Location location, @NonNull IWrappedFlag<T> flag) {
AbstractWrappedFlag<T> wrappedFlag = (AbstractWrappedFlag<T>) flag; AbstractWrappedFlag<T> wrappedFlag = (AbstractWrappedFlag<T>) flag;
return queryValue(player, location, wrappedFlag.getHandle()).flatMap(wrappedFlag::fromWGValue); return queryValue(player, location, wrappedFlag.getHandle()).flatMap(wrappedFlag::fromWGValue);
} }
@ -242,7 +240,7 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
@SuppressWarnings({"unchecked", "rawtypes"}) @SuppressWarnings({"unchecked", "rawtypes"})
@Override @Override
public <T> Optional<IWrappedFlag<T>> registerFlag(String name, Class<T> type, T defaultValue) { public <T> Optional<IWrappedFlag<T>> registerFlag(@NonNull String name, @NonNull Class<T> type, T defaultValue) {
final Flag<?> flag; final Flag<?> flag;
if (type.equals(WrappedState.class)) { if (type.equals(WrappedState.class)) {
flag = new StateFlag(name, defaultValue == WrappedState.ALLOW); flag = new StateFlag(name, defaultValue == WrappedState.ALLOW);
@ -272,14 +270,14 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
} }
@Override @Override
public Optional<IWrappedRegion> getRegion(World world, String id) { public Optional<IWrappedRegion> getRegion(@NonNull World world, @NonNull String id) {
return getWorldManager(world) return getWorldManager(world)
.map(regionManager -> regionManager.getRegion(id)) .map(regionManager -> regionManager.getRegion(id))
.map(region -> new WrappedRegion(world, region)); .map(region -> new WrappedRegion(world, region));
} }
@Override @Override
public Map<String, IWrappedRegion> getRegions(World world) { public Map<String, IWrappedRegion> getRegions(@NonNull World world) {
RegionManager regionManager = core.getPlatform().getRegionContainer().get(new BukkitWorld(world)); RegionManager regionManager = core.getPlatform().getRegionContainer().get(new BukkitWorld(world));
if (regionManager == null) { if (regionManager == null) {
return Collections.emptyMap(); return Collections.emptyMap();
@ -292,7 +290,7 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
} }
@Override @Override
public Set<IWrappedRegion> getRegions(Location location) { public Set<IWrappedRegion> getRegions(@NonNull Location location) {
ApplicableRegionSet regionSet = getApplicableRegions(location).orElse(null); ApplicableRegionSet regionSet = getApplicableRegions(location).orElse(null);
if (regionSet == null) { if (regionSet == null) {
return Collections.emptySet(); return Collections.emptySet();
@ -304,7 +302,7 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
} }
@Override @Override
public Set<IWrappedRegion> getRegions(Location minimum, Location maximum) { public Set<IWrappedRegion> getRegions(@NonNull Location minimum, @NonNull Location maximum) {
ApplicableRegionSet regionSet = getApplicableRegions(minimum, maximum).orElse(null); ApplicableRegionSet regionSet = getApplicableRegions(minimum, maximum).orElse(null);
if (regionSet == null) { if (regionSet == null) {
return Collections.emptySet(); return Collections.emptySet();
@ -321,9 +319,9 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
} }
@Override @Override
public Optional<IWrappedRegion> addRegion(String id, List<Location> points, int minY, int maxY) { public Optional<IWrappedRegion> addRegion(@NonNull String id, @NonNull List<Location> points, int minY, int maxY) {
ProtectedRegion region; ProtectedRegion region;
World world = points.get(0).getWorld(); World world = Objects.requireNonNull(points.get(0).getWorld());
if (points.size() == 2) { if (points.size() == 2) {
region = new ProtectedCuboidRegion(id, BukkitAdapter.asBlockVector(points.get(0)), region = new ProtectedCuboidRegion(id, BukkitAdapter.asBlockVector(points.get(0)),
BukkitAdapter.asBlockVector(points.get(1))); BukkitAdapter.asBlockVector(points.get(1)));
@ -345,7 +343,7 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
} }
@Override @Override
public Optional<Set<IWrappedRegion>> removeRegion(World world, String id) { public Optional<Set<IWrappedRegion>> removeRegion(@NonNull World world, @NonNull String id) {
Optional<Set<ProtectedRegion>> set = getWorldManager(world).map(manager -> manager.removeRegion(id)); Optional<Set<ProtectedRegion>> set = getWorldManager(world).map(manager -> manager.removeRegion(id));
return set.map(protectedRegions -> protectedRegions.stream() return set.map(protectedRegions -> protectedRegions.stream()
.map(region -> new WrappedRegion(world, region)).collect(Collectors.toSet())); .map(region -> new WrappedRegion(world, region)).collect(Collectors.toSet()));
@ -355,13 +353,18 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
public Optional<ISelection> getPlayerSelection(@NonNull Player player) { public Optional<ISelection> getPlayerSelection(@NonNull Player player) {
Region region; Region region;
try { try {
region = WorldEdit.getInstance().getSessionManager().get(BukkitAdapter.adapt(player)).getSelection(BukkitAdapter.adapt(player.getWorld())); region = WorldEdit.getInstance()
.getSessionManager()
.get(BukkitAdapter.adapt(player))
.getSelection(BukkitAdapter.adapt(player.getWorld()));
} catch (IncompleteRegionException e) { } catch (IncompleteRegionException e) {
region = null; region = null;
} }
return Optional.ofNullable(region) return Optional.ofNullable(region)
.map(selection -> { .map(selection -> {
World world = Optional.ofNullable(selection.getWorld()).map(BukkitAdapter::adapt).orElse(null); World world = Optional.ofNullable(selection.getWorld())
.map(BukkitAdapter::adapt)
.orElse(null);
if (world == null) { if (world == null) {
return null; return null;
} }
@ -398,7 +401,8 @@ public class WorldGuardImplementation implements IWorldGuardImplementation {
} }
}; };
} else { } else {
throw new UnsupportedOperationException("Unsupported " + selection.getClass().getSimpleName() + " selection!"); throw new UnsupportedOperationException("Unsupported " + selection.getClass().getSimpleName()
+ " selection!");
} }
}); });
} }

View File

@ -19,6 +19,7 @@ import org.codemc.worldguardwrapper.implementation.v7.region.WrappedRegion;
import org.codemc.worldguardwrapper.region.IWrappedRegion; import org.codemc.worldguardwrapper.region.IWrappedRegion;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.Objects;
import java.util.Set; import java.util.Set;
public class ProxyHandler extends Handler { public class ProxyHandler extends Handler {
@ -36,25 +37,61 @@ public class ProxyHandler extends Handler {
public void initialize(LocalPlayer player, com.sk89q.worldedit.util.Location current, ApplicableRegionSet set) { public void initialize(LocalPlayer player, com.sk89q.worldedit.util.Location current, ApplicableRegionSet set) {
Player bukkitPlayer = BukkitAdapter.adapt(player); Player bukkitPlayer = BukkitAdapter.adapt(player);
Location bukkitLocation = BukkitAdapter.adapt(current); Location bukkitLocation = BukkitAdapter.adapt(current);
handler.initialize(bukkitPlayer, bukkitLocation, implementation.wrapRegionSet(bukkitLocation.getWorld(), set)); handler.initialize(
bukkitPlayer,
bukkitLocation,
implementation.wrapRegionSet(Objects.requireNonNull(bukkitLocation.getWorld()),set)
);
} }
@Override @Override
public boolean testMoveTo(LocalPlayer player, com.sk89q.worldedit.util.Location from, com.sk89q.worldedit.util.Location to, ApplicableRegionSet toSet, MoveType moveType) { public boolean testMoveTo(
LocalPlayer player,
com.sk89q.worldedit.util.Location from,
com.sk89q.worldedit.util.Location to,
ApplicableRegionSet toSet,
MoveType moveType
) {
Player bukkitPlayer = BukkitAdapter.adapt(player); Player bukkitPlayer = BukkitAdapter.adapt(player);
Location bukkitFrom = BukkitAdapter.adapt(from); Location bukkitFrom = BukkitAdapter.adapt(from);
Location bukkitTo = BukkitAdapter.adapt(to); Location bukkitTo = BukkitAdapter.adapt(to);
return handler.testMoveTo(bukkitPlayer, bukkitFrom, bukkitTo, implementation.wrapRegionSet(bukkitTo.getWorld(), toSet), moveType.name()); return handler.testMoveTo(
bukkitPlayer,
bukkitFrom,
bukkitTo,
implementation.wrapRegionSet(Objects.requireNonNull(bukkitTo.getWorld()), toSet),
moveType.name()
);
} }
@Override @Override
public boolean onCrossBoundary(LocalPlayer player, com.sk89q.worldedit.util.Location from, com.sk89q.worldedit.util.Location to, ApplicableRegionSet toSet, Set<ProtectedRegion> entered, Set<ProtectedRegion> exited, MoveType moveType) { public boolean onCrossBoundary(
LocalPlayer player,
com.sk89q.worldedit.util.Location from,
com.sk89q.worldedit.util.Location to,
ApplicableRegionSet toSet,
Set<ProtectedRegion> entered,
Set<ProtectedRegion> exited,
MoveType moveType
) {
Player bukkitPlayer = BukkitAdapter.adapt(player); Player bukkitPlayer = BukkitAdapter.adapt(player);
Location bukkitFrom = BukkitAdapter.adapt(from); Location bukkitFrom = BukkitAdapter.adapt(from);
Location bukkitTo = BukkitAdapter.adapt(to); Location bukkitTo = BukkitAdapter.adapt(to);
Set<IWrappedRegion> mappedEntered = ImmutableSet.copyOf(Collections2.transform(entered, region -> new WrappedRegion(bukkitTo.getWorld(), region))); Set<IWrappedRegion> mappedEntered = ImmutableSet.copyOf(Collections2.transform(entered, region ->
Set<IWrappedRegion> mappedExited = ImmutableSet.copyOf(Collections2.transform(exited, region -> new WrappedRegion(bukkitFrom.getWorld(), region))); new WrappedRegion(bukkitTo.getWorld(), region)
return handler.onCrossBoundary(bukkitPlayer, bukkitFrom, bukkitTo, implementation.wrapRegionSet(bukkitTo.getWorld(), toSet), mappedEntered, mappedExited, moveType.name()); ));
Set<IWrappedRegion> mappedExited = ImmutableSet.copyOf(Collections2.transform(exited, region ->
new WrappedRegion(bukkitFrom.getWorld(), region)
));
return handler.onCrossBoundary(
bukkitPlayer,
bukkitFrom,
bukkitTo,
implementation.wrapRegionSet(Objects.requireNonNull(bukkitTo.getWorld()), toSet),
mappedEntered,
mappedExited,
moveType.name()
);
} }
@Override @Override

View File

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.codemc.worldguardwrapper</groupId> <groupId>org.codemc.worldguardwrapper</groupId>
<artifactId>worldguardwrapper-parent</artifactId> <artifactId>worldguardwrapper-parent</artifactId>
<version>1.2.0-SNAPSHOT</version> <version>1.2.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>
@ -19,25 +19,25 @@
<dependency> <dependency>
<groupId>${project.groupId}</groupId> <groupId>${project.groupId}</groupId>
<artifactId>worldguardwrapper-api</artifactId> <artifactId>worldguardwrapper-api</artifactId>
<version>1.2.0-SNAPSHOT</version> <version>1.2.1-SNAPSHOT</version>
<optional>true</optional> <optional>true</optional>
</dependency> </dependency>
<dependency> <dependency>
<groupId>${project.groupId}</groupId> <groupId>${project.groupId}</groupId>
<artifactId>worldguardwrapper-implementation-legacy</artifactId> <artifactId>worldguardwrapper-implementation-legacy</artifactId>
<version>1.2.0-SNAPSHOT</version> <version>1.2.1-SNAPSHOT</version>
<optional>true</optional> <optional>true</optional>
</dependency> </dependency>
<dependency> <dependency>
<groupId>${project.groupId}</groupId> <groupId>${project.groupId}</groupId>
<artifactId>worldguardwrapper-implementation-v6</artifactId> <artifactId>worldguardwrapper-implementation-v6</artifactId>
<version>1.2.0-SNAPSHOT</version> <version>1.2.1-SNAPSHOT</version>
<optional>true</optional> <optional>true</optional>
</dependency> </dependency>
<dependency> <dependency>
<groupId>${project.groupId}</groupId> <groupId>${project.groupId}</groupId>
<artifactId>worldguardwrapper-implementation-v7</artifactId> <artifactId>worldguardwrapper-implementation-v7</artifactId>
<version>1.2.0-SNAPSHOT</version> <version>1.2.1-SNAPSHOT</version>
<optional>true</optional> <optional>true</optional>
</dependency> </dependency>
</dependencies> </dependencies>

View File

@ -6,6 +6,8 @@ import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import org.codemc.worldguardwrapper.implementation.IWorldGuardImplementation; import org.codemc.worldguardwrapper.implementation.IWorldGuardImplementation;
@SuppressWarnings("unused")
public class WorldGuardWrapper implements IWorldGuardImplementation { public class WorldGuardWrapper implements IWorldGuardImplementation {
private static WorldGuardWrapper instance; private static WorldGuardWrapper instance;
@ -23,8 +25,8 @@ public class WorldGuardWrapper implements IWorldGuardImplementation {
} }
@Delegate @Delegate
private IWorldGuardImplementation implementation; private final IWorldGuardImplementation implementation;
private Listener listener; private final Listener listener;
private WorldGuardWrapper() { private WorldGuardWrapper() {
int targetVersion; int targetVersion;
@ -46,15 +48,6 @@ public class WorldGuardWrapper implements IWorldGuardImplementation {
implementation = new org.codemc.worldguardwrapper.implementation.legacy.WorldGuardImplementation(); implementation = new org.codemc.worldguardwrapper.implementation.legacy.WorldGuardImplementation();
listener = new org.codemc.worldguardwrapper.implementation.legacy.event.EventListener(); listener = new org.codemc.worldguardwrapper.implementation.legacy.event.EventListener();
} else { } else {
/*
if (Bukkit.getPluginManager().isPluginEnabled("FastAsyncWorldEdit")) {
implementation = new org.codemc.worldguardwrapper.implementation.v7fawe.WorldGuardImplementation();
listener = new org.codemc.worldguardwrapper.implementation.v7fawe.event.EventListener();
} else {
implementation = new org.codemc.worldguardwrapper.implementation.v7.WorldGuardImplementation();
listener = new org.codemc.worldguardwrapper.implementation.v7.event.EventListener();
}
*/
implementation = new org.codemc.worldguardwrapper.implementation.v7.WorldGuardImplementation(); implementation = new org.codemc.worldguardwrapper.implementation.v7.WorldGuardImplementation();
listener = new org.codemc.worldguardwrapper.implementation.v7.event.EventListener(); listener = new org.codemc.worldguardwrapper.implementation.v7.event.EventListener();
} }

30
pom.xml
View File

@ -6,7 +6,7 @@
<groupId>org.codemc.worldguardwrapper</groupId> <groupId>org.codemc.worldguardwrapper</groupId>
<artifactId>worldguardwrapper-parent</artifactId> <artifactId>worldguardwrapper-parent</artifactId>
<version>1.2.0-SNAPSHOT</version> <version>1.2.1-SNAPSHOT</version>
<packaging>pom</packaging> <packaging>pom</packaging>
<modules> <modules>
@ -28,7 +28,7 @@
<ciManagement> <ciManagement>
<system>jenkins</system> <system>jenkins</system>
<url>http://ci.codemc.org/job/CodeMC/job/HolographicDisplays/</url> <url>https://ci.codemc.io/job/CodeMC/job/WorldGuardWrapper/</url>
</ciManagement> </ciManagement>
<issueManagement> <issueManagement>
@ -50,7 +50,7 @@
<properties> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spigot-api.version>1.19.1-R0.1-SNAPSHOT</spigot-api.version> <spigot-api.version>1.20.1-R0.1-SNAPSHOT</spigot-api.version>
</properties> </properties>
<repositories> <repositories>
@ -89,13 +89,13 @@
<dependency> <dependency>
<groupId>org.projectlombok</groupId> <groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId> <artifactId>lombok</artifactId>
<version>1.18.24</version> <version>1.18.28</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.javassist</groupId> <groupId>org.javassist</groupId>
<artifactId>javassist</artifactId> <artifactId>javassist</artifactId>
<version>3.29.1-GA</version> <version>3.29.2-GA</version>
<optional>true</optional> <optional>true</optional>
</dependency> </dependency>
<dependency> <dependency>
@ -134,17 +134,17 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId> <artifactId>maven-clean-plugin</artifactId>
<version>3.2.0</version> <version>3.3.1</version>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId> <artifactId>maven-resources-plugin</artifactId>
<version>3.3.0</version> <version>3.3.1</version>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId> <artifactId>maven-compiler-plugin</artifactId>
<version>3.10.1</version> <version>3.11.0</version>
<configuration> <configuration>
<source>1.8</source> <source>1.8</source>
<target>1.8</target> <target>1.8</target>
@ -154,17 +154,17 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId> <artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version> <version>3.1.2</version>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId> <artifactId>maven-jar-plugin</artifactId>
<version>3.2.2</version> <version>3.3.0</version>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId> <artifactId>maven-javadoc-plugin</artifactId>
<version>3.4.1</version> <version>3.5.0</version>
<configuration> <configuration>
<show>public</show> <show>public</show>
<failOnError>false</failOnError> <failOnError>false</failOnError>
@ -173,12 +173,12 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId> <artifactId>maven-source-plugin</artifactId>
<version>3.2.1</version> <version>3.3.0</version>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId> <artifactId>maven-shade-plugin</artifactId>
<version>3.3.0</version> <version>3.5.0</version>
<configuration> <configuration>
<createDependencyReducedPom>false</createDependencyReducedPom> <createDependencyReducedPom>false</createDependencyReducedPom>
</configuration> </configuration>
@ -186,12 +186,12 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId> <artifactId>maven-install-plugin</artifactId>
<version>3.0.1</version> <version>3.1.1</version>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId> <artifactId>maven-deploy-plugin</artifactId>
<version>3.0.0</version> <version>3.1.1</version>
</plugin> </plugin>
</plugins> </plugins>
</build> </build>