forked from LogBlock/LogBlock
Do not require WorldEdit for CuboidRegion
This commit is contained in:
@ -2,8 +2,8 @@ package de.diddiz.LogBlock;
|
|||||||
|
|
||||||
import de.diddiz.LogBlock.config.Config;
|
import de.diddiz.LogBlock.config.Config;
|
||||||
import de.diddiz.util.BukkitUtils;
|
import de.diddiz.util.BukkitUtils;
|
||||||
|
import de.diddiz.util.CuboidRegion;
|
||||||
import de.diddiz.util.Utils;
|
import de.diddiz.util.Utils;
|
||||||
import de.diddiz.worldedit.CuboidRegion;
|
|
||||||
import de.diddiz.worldedit.WorldEditHelper;
|
import de.diddiz.worldedit.WorldEditHelper;
|
||||||
|
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
@ -792,11 +792,7 @@ public final class QueryParams implements Cloneable {
|
|||||||
if (player == null) {
|
if (player == null) {
|
||||||
throw new IllegalArgumentException("You have to be a player to use selection");
|
throw new IllegalArgumentException("You have to be a player to use selection");
|
||||||
}
|
}
|
||||||
if (WorldEditHelper.hasWorldEdit()) {
|
setSelection(WorldEditHelper.getSelectedRegion(player));
|
||||||
setSelection(CuboidRegion.fromPlayerSelection(player));
|
|
||||||
} else {
|
|
||||||
throw new IllegalArgumentException("WorldEdit not found!");
|
|
||||||
}
|
|
||||||
} else if (param.equals("time") || param.equals("since")) {
|
} else if (param.equals("time") || param.equals("since")) {
|
||||||
since = values.length > 0 ? parseTimeSpec(values) : defaultTime;
|
since = values.length > 0 ? parseTimeSpec(values) : defaultTime;
|
||||||
if (since == -1) {
|
if (since == -1) {
|
||||||
|
@ -2,7 +2,7 @@ package de.diddiz.LogBlock.listeners;
|
|||||||
|
|
||||||
import de.diddiz.LogBlock.*;
|
import de.diddiz.LogBlock.*;
|
||||||
import de.diddiz.util.BukkitUtils;
|
import de.diddiz.util.BukkitUtils;
|
||||||
import de.diddiz.worldedit.CuboidRegion;
|
import de.diddiz.util.CuboidRegion;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
package de.diddiz.worldedit;
|
package de.diddiz.util;
|
||||||
|
|
||||||
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;
|
|
||||||
|
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.plugin.Plugin;
|
|
||||||
import org.bukkit.util.BlockVector;
|
import org.bukkit.util.BlockVector;
|
||||||
|
|
||||||
public class CuboidRegion implements Cloneable {
|
public class CuboidRegion implements Cloneable {
|
||||||
@ -29,31 +20,6 @@ public class CuboidRegion implements Cloneable {
|
|||||||
this.max.setZ(Math.max(first.getBlockZ(), second.getBlockZ()));
|
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) {
|
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()));
|
return new CuboidRegion(world, new BlockVector(first.getBlockX(), first.getBlockY(), first.getBlockZ()), new BlockVector(second.getBlockX(), second.getBlockY(), second.getBlockZ()));
|
||||||
}
|
}
|
@ -11,10 +11,12 @@ import java.util.logging.Level;
|
|||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.World;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
|
import org.bukkit.util.BlockVector;
|
||||||
import com.sk89q.jnbt.CompoundTag;
|
import com.sk89q.jnbt.CompoundTag;
|
||||||
import com.sk89q.jnbt.DoubleTag;
|
import com.sk89q.jnbt.DoubleTag;
|
||||||
import com.sk89q.jnbt.FloatTag;
|
import com.sk89q.jnbt.FloatTag;
|
||||||
@ -24,11 +26,15 @@ import com.sk89q.jnbt.NBTOutputStream;
|
|||||||
import com.sk89q.jnbt.NamedTag;
|
import com.sk89q.jnbt.NamedTag;
|
||||||
import com.sk89q.jnbt.ShortTag;
|
import com.sk89q.jnbt.ShortTag;
|
||||||
import com.sk89q.jnbt.Tag;
|
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.BukkitAdapter;
|
||||||
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
|
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
|
||||||
import com.sk89q.worldedit.entity.BaseEntity;
|
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.LogBlock.LogBlock;
|
||||||
|
import de.diddiz.util.CuboidRegion;
|
||||||
|
|
||||||
public class WorldEditHelper {
|
public class WorldEditHelper {
|
||||||
private static boolean checkedForWorldEdit;
|
private static boolean checkedForWorldEdit;
|
||||||
@ -58,9 +64,19 @@ public class WorldEditHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static Entity restoreEntity(Location location, EntityType type, byte[] serialized) {
|
public static Entity restoreEntity(Location location, EntityType type, byte[] serialized) {
|
||||||
|
if (!hasWorldEdit()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
return Internal.restoreEntity(location, type, serialized);
|
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 class Internal {
|
||||||
private static WorldEditPlugin worldEdit;
|
private static WorldEditPlugin worldEdit;
|
||||||
private static Method getBukkitImplAdapter;
|
private static Method getBukkitImplAdapter;
|
||||||
@ -133,5 +149,28 @@ public class WorldEditHelper {
|
|||||||
return null;
|
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()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user