Started with waiting rows
This commit is contained in:
parent
328b8d670f
commit
2f7c90be62
7 changed files with 99 additions and 34 deletions
|
@ -2,49 +2,44 @@ package nl.sbdeveloper.themeparkplus.util;
|
|||
|
||||
import com.sk89q.worldedit.IncompleteRegionException;
|
||||
import com.sk89q.worldedit.LocalSession;
|
||||
import com.sk89q.worldedit.WorldEdit;
|
||||
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
|
||||
import com.sk89q.worldedit.bukkit.selections.Polygonal2DSelection;
|
||||
import com.sk89q.worldedit.bukkit.selections.Selection;
|
||||
import com.sk89q.worldedit.regions.Polygonal2DRegion;
|
||||
import com.sk89q.worldedit.regions.Region;
|
||||
import com.sk89q.worldedit.world.World;
|
||||
import com.sk89q.worldedit.regions.RegionSelector;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class WEUtil {
|
||||
private static boolean newVersion;
|
||||
private static WorldEditPlugin wep;
|
||||
|
||||
public WEUtil() {
|
||||
newVersion = XMaterial.isNewVersion();
|
||||
wep = (WorldEditPlugin) Bukkit.getPluginManager().getPlugin("WorldEdit");
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static Region getSelection(Player p) {
|
||||
if (newVersion) {
|
||||
LocalSession l = WorldEdit.getInstance().getSessionManager().get(BukkitAdapter.adapt(p));
|
||||
Region s;
|
||||
try {
|
||||
s = l.getSelection(l.getSelectionWorld());
|
||||
} catch (IncompleteRegionException e) {
|
||||
return null;
|
||||
}
|
||||
if (s instanceof Polygonal2DSelection) {
|
||||
Polygonal2DSelection polySel = (Polygonal2DSelection) s;
|
||||
int minY = polySel.getNativeMinimumPoint().getBlockY();
|
||||
int maxY = polySel.getNativeMaximumPoint().getBlockY();
|
||||
return new Polygonal2DRegion((World) polySel.getWorld(), polySel.getNativePoints(), minY, maxY);
|
||||
}
|
||||
} else {
|
||||
Selection sel = wep.getSelection(p);
|
||||
if (sel instanceof Polygonal2DSelection) {
|
||||
Polygonal2DSelection polySel = (Polygonal2DSelection) sel;
|
||||
int minY = polySel.getNativeMinimumPoint().getBlockY();
|
||||
int maxY = polySel.getNativeMaximumPoint().getBlockY();
|
||||
return new Polygonal2DRegion((World) polySel.getWorld(), polySel.getNativePoints(), minY, maxY);
|
||||
public Region getSelection(Player p) {
|
||||
LocalSession session;
|
||||
try {
|
||||
session = wep.getSession(p);
|
||||
} catch (Exception e) {
|
||||
// sometimes after a reload getSession create errors with WorldEdit, this prevent error spam
|
||||
return null;
|
||||
}
|
||||
|
||||
return getSelectedRegion(session);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private Region getSelectedRegion(@Nullable LocalSession session) {
|
||||
if (session != null && session.getSelectionWorld() != null) {
|
||||
RegionSelector selector = session.getRegionSelector(session.getSelectionWorld());
|
||||
|
||||
if (selector.isDefined()) {
|
||||
try {
|
||||
return selector.getRegion();
|
||||
} catch (IncompleteRegionException e) {
|
||||
Bukkit.getLogger().warning("[ThemeParkPlus] Region still incomplete");
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
|
Reference in a new issue