3
0
Fork 0

Started with waiting rows

This commit is contained in:
stijnb1234 2020-06-03 16:27:33 +02:00
parent 328b8d670f
commit 2f7c90be62
7 changed files with 99 additions and 34 deletions

View file

@ -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;