48 lines
2.1 KiB
Java
48 lines
2.1 KiB
Java
package com.sekwah.advancedportals.bukkit.util;
|
|
|
|
import com.sk89q.worldedit.IncompleteRegionException;
|
|
import com.sk89q.worldedit.LocalSession;
|
|
import com.sk89q.worldedit.WorldEdit;
|
|
import com.sk89q.worldedit.bukkit.BukkitAdapter;
|
|
import com.sk89q.worldedit.regions.CuboidRegion;
|
|
import com.sk89q.worldedit.regions.Region;
|
|
import com.sk89q.worldedit.regions.RegionSelector;
|
|
import com.sk89q.worldedit.regions.selector.CuboidRegionSelector;
|
|
import org.bukkit.Location;
|
|
import org.bukkit.entity.Player;
|
|
|
|
public class WorldEditIntegration {
|
|
private static Region getCurrentSelection(Player player) {
|
|
LocalSession localSession = WorldEdit.getInstance().getSessionManager().get(BukkitAdapter.adapt(player));
|
|
try {
|
|
return localSession.getSelection(BukkitAdapter.adapt(player.getWorld()));
|
|
} catch (IncompleteRegionException e) {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public static boolean validateSelection(Player player) {
|
|
return getCurrentSelection(player) instanceof CuboidRegion;
|
|
}
|
|
|
|
public static Location getPos1(Player player) {
|
|
Region currentSelection = getCurrentSelection(player);
|
|
if (!(currentSelection instanceof CuboidRegion)) return null;
|
|
return BukkitAdapter.adapt(player.getWorld(), ((CuboidRegion) currentSelection).getPos1());
|
|
}
|
|
|
|
public static Location getPos2(Player player) {
|
|
Region currentSelection = getCurrentSelection(player);
|
|
if (currentSelection == null) return null;;
|
|
return BukkitAdapter.adapt(player.getWorld(), ((CuboidRegion) currentSelection).getPos2());
|
|
}
|
|
|
|
public static void explainRegion(Player player, Location pos1, Location pos2) {
|
|
LocalSession localSession = WorldEdit.getInstance().getSessionManager().get(BukkitAdapter.adapt(player));
|
|
RegionSelector selector = new CuboidRegionSelector(BukkitAdapter.adapt(player.getWorld()), BukkitAdapter.asBlockVector(pos1), BukkitAdapter.asBlockVector(pos2));
|
|
localSession.setRegionSelector(BukkitAdapter.adapt(player.getWorld()), selector);
|
|
selector.explainRegionAdjust(BukkitAdapter.adapt(player), localSession);
|
|
|
|
}
|
|
}
|