From a7967e9b1ef7816f1082e0f7191a063844cf45e6 Mon Sep 17 00:00:00 2001 From: Brokkonaut Date: Tue, 27 Aug 2019 20:10:12 +0200 Subject: [PATCH] Do not require WorldEdit for CuboidRegion --- .../java/de/diddiz/LogBlock/QueryParams.java | 8 +--- .../LogBlock/listeners/ToolListener.java | 2 +- .../{worldedit => util}/CuboidRegion.java | 36 +--------------- .../de/diddiz/worldedit/WorldEditHelper.java | 43 ++++++++++++++++++- 4 files changed, 45 insertions(+), 44 deletions(-) rename src/main/java/de/diddiz/{worldedit => util}/CuboidRegion.java (51%) diff --git a/src/main/java/de/diddiz/LogBlock/QueryParams.java b/src/main/java/de/diddiz/LogBlock/QueryParams.java index 4af9a46..5c1c46a 100644 --- a/src/main/java/de/diddiz/LogBlock/QueryParams.java +++ b/src/main/java/de/diddiz/LogBlock/QueryParams.java @@ -2,8 +2,8 @@ package de.diddiz.LogBlock; import de.diddiz.LogBlock.config.Config; import de.diddiz.util.BukkitUtils; +import de.diddiz.util.CuboidRegion; import de.diddiz.util.Utils; -import de.diddiz.worldedit.CuboidRegion; import de.diddiz.worldedit.WorldEditHelper; import org.bukkit.Location; @@ -792,11 +792,7 @@ public final class QueryParams implements Cloneable { if (player == null) { throw new IllegalArgumentException("You have to be a player to use selection"); } - if (WorldEditHelper.hasWorldEdit()) { - setSelection(CuboidRegion.fromPlayerSelection(player)); - } else { - throw new IllegalArgumentException("WorldEdit not found!"); - } + setSelection(WorldEditHelper.getSelectedRegion(player)); } else if (param.equals("time") || param.equals("since")) { since = values.length > 0 ? parseTimeSpec(values) : defaultTime; if (since == -1) { diff --git a/src/main/java/de/diddiz/LogBlock/listeners/ToolListener.java b/src/main/java/de/diddiz/LogBlock/listeners/ToolListener.java index 342eb39..df889d7 100644 --- a/src/main/java/de/diddiz/LogBlock/listeners/ToolListener.java +++ b/src/main/java/de/diddiz/LogBlock/listeners/ToolListener.java @@ -2,7 +2,7 @@ package de.diddiz.LogBlock.listeners; import de.diddiz.LogBlock.*; import de.diddiz.util.BukkitUtils; -import de.diddiz.worldedit.CuboidRegion; +import de.diddiz.util.CuboidRegion; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.block.Block; diff --git a/src/main/java/de/diddiz/worldedit/CuboidRegion.java b/src/main/java/de/diddiz/util/CuboidRegion.java similarity index 51% rename from src/main/java/de/diddiz/worldedit/CuboidRegion.java rename to src/main/java/de/diddiz/util/CuboidRegion.java index 15dc1cc..a704609 100644 --- a/src/main/java/de/diddiz/worldedit/CuboidRegion.java +++ b/src/main/java/de/diddiz/util/CuboidRegion.java @@ -1,16 +1,7 @@ -package de.diddiz.worldedit; - -import com.sk89q.worldedit.IncompleteRegionException; -import com.sk89q.worldedit.LocalSession; -import com.sk89q.worldedit.bukkit.BukkitAdapter; -import com.sk89q.worldedit.bukkit.WorldEditPlugin; -import com.sk89q.worldedit.math.BlockVector3; -import com.sk89q.worldedit.regions.Region; +package de.diddiz.util; import org.bukkit.Location; import org.bukkit.World; -import org.bukkit.entity.Player; -import org.bukkit.plugin.Plugin; import org.bukkit.util.BlockVector; public class CuboidRegion implements Cloneable { @@ -29,31 +20,6 @@ public class CuboidRegion implements Cloneable { this.max.setZ(Math.max(first.getBlockZ(), second.getBlockZ())); } - public static CuboidRegion fromPlayerSelection(Player player) { - Plugin worldEditPlugin = player.getServer().getPluginManager().getPlugin("WorldEdit"); - LocalSession session = ((WorldEditPlugin) worldEditPlugin).getSession(player); - World world = player.getWorld(); - com.sk89q.worldedit.world.World weWorld = BukkitAdapter.adapt(world); - if (!weWorld.equals(session.getSelectionWorld())) { - throw new IllegalArgumentException("No selection defined"); - } - Region selection; - try { - selection = session.getSelection(weWorld); - } catch (IncompleteRegionException e) { - throw new IllegalArgumentException("No selection defined"); - } - if (selection == null) { - throw new IllegalArgumentException("No selection defined"); - } - if (!(selection instanceof com.sk89q.worldedit.regions.CuboidRegion)) { - throw new IllegalArgumentException("You have to define a cuboid selection"); - } - BlockVector3 min = selection.getMinimumPoint(); - BlockVector3 max = selection.getMaximumPoint(); - return new CuboidRegion(world, new BlockVector(min.getBlockX(), min.getBlockY(), min.getBlockZ()), new BlockVector(max.getBlockX(), max.getBlockY(), max.getBlockZ())); - } - public static CuboidRegion fromCorners(World world, Location first, Location second) { return new CuboidRegion(world, new BlockVector(first.getBlockX(), first.getBlockY(), first.getBlockZ()), new BlockVector(second.getBlockX(), second.getBlockY(), second.getBlockZ())); } diff --git a/src/main/java/de/diddiz/worldedit/WorldEditHelper.java b/src/main/java/de/diddiz/worldedit/WorldEditHelper.java index 2df370d..b3cf56f 100644 --- a/src/main/java/de/diddiz/worldedit/WorldEditHelper.java +++ b/src/main/java/de/diddiz/worldedit/WorldEditHelper.java @@ -11,10 +11,12 @@ import java.util.logging.Level; import org.bukkit.Bukkit; import org.bukkit.Location; +import org.bukkit.World; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; +import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; - +import org.bukkit.util.BlockVector; import com.sk89q.jnbt.CompoundTag; import com.sk89q.jnbt.DoubleTag; import com.sk89q.jnbt.FloatTag; @@ -24,11 +26,15 @@ import com.sk89q.jnbt.NBTOutputStream; import com.sk89q.jnbt.NamedTag; import com.sk89q.jnbt.ShortTag; import com.sk89q.jnbt.Tag; +import com.sk89q.worldedit.IncompleteRegionException; +import com.sk89q.worldedit.LocalSession; import com.sk89q.worldedit.bukkit.BukkitAdapter; import com.sk89q.worldedit.bukkit.WorldEditPlugin; import com.sk89q.worldedit.entity.BaseEntity; - +import com.sk89q.worldedit.math.BlockVector3; +import com.sk89q.worldedit.regions.Region; import de.diddiz.LogBlock.LogBlock; +import de.diddiz.util.CuboidRegion; public class WorldEditHelper { private static boolean checkedForWorldEdit; @@ -58,9 +64,19 @@ public class WorldEditHelper { } public static Entity restoreEntity(Location location, EntityType type, byte[] serialized) { + if (!hasWorldEdit()) { + return null; + } return Internal.restoreEntity(location, type, serialized); } + public static CuboidRegion getSelectedRegion(Player player) throws IllegalArgumentException { + if (!hasWorldEdit()) { + throw new IllegalArgumentException("WorldEdit not found!"); + } + return Internal.getSelectedRegion(player); + } + private static class Internal { private static WorldEditPlugin worldEdit; private static Method getBukkitImplAdapter; @@ -133,5 +149,28 @@ public class WorldEditHelper { return null; } + public static CuboidRegion getSelectedRegion(Player player) throws IllegalArgumentException { + LocalSession session = worldEdit.getSession(player); + World world = player.getWorld(); + com.sk89q.worldedit.world.World weWorld = BukkitAdapter.adapt(world); + if (!weWorld.equals(session.getSelectionWorld())) { + throw new IllegalArgumentException("No selection defined"); + } + Region selection; + try { + selection = session.getSelection(weWorld); + } catch (IncompleteRegionException e) { + throw new IllegalArgumentException("No selection defined"); + } + if (selection == null) { + throw new IllegalArgumentException("No selection defined"); + } + if (!(selection instanceof com.sk89q.worldedit.regions.CuboidRegion)) { + throw new IllegalArgumentException("You have to define a cuboid selection"); + } + BlockVector3 min = selection.getMinimumPoint(); + BlockVector3 max = selection.getMaximumPoint(); + return new CuboidRegion(world, new BlockVector(min.getBlockX(), min.getBlockY(), min.getBlockZ()), new BlockVector(max.getBlockX(), max.getBlockY(), max.getBlockZ())); + } } }