From 9cb980aaf6607e481895cd455982d691f2c75cfa Mon Sep 17 00:00:00 2001 From: Qveshn Date: Wed, 27 Oct 2021 06:17:13 +0300 Subject: [PATCH 1/3] Some gradle changes (remove sources from jar, substitute in plugin.yml, improve clean task) - Remove sources from jar - Add version substitute in plugin.yml - Add target dir to clean task --- build.gradle | 11 ++++++++++- resources/plugin.yml | 2 +- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index ea66881..f8fd4f9 100644 --- a/build.gradle +++ b/build.gradle @@ -36,6 +36,13 @@ sourceSets { } } +processResources{ + from (sourceSets.main.resources.srcDirs) { + expand 'version': project.version + include 'plugin.yml' + } +} + repositories { mavenCentral() jcenter() @@ -68,12 +75,14 @@ compileJava { jar { - from sourceSets.main.java.srcDirs from 'LICENSE' archiveName = jar.archiveName } +clean{ + projectDirectoryPath.resolve("target").deleteDir(); +} task copyFinalJarToTarget(type: DefaultTask) {doLast{ Path targetJarDirectory = projectDirectoryPath.resolve("target") diff --git a/resources/plugin.yml b/resources/plugin.yml index 97e7fd7..8267d21 100644 --- a/resources/plugin.yml +++ b/resources/plugin.yml @@ -1,7 +1,7 @@ name: WGExtender main: wgextender.WGExtender api-version: 1.13 -version: 3.0 +version: ${version} author: _Shevchik_ depend: [WorldGuard, WorldEdit, Vault] commands: From 4328ed86a3032d2be455fc47efde848d0fb4b83d Mon Sep 17 00:00:00 2001 From: Qveshn Date: Wed, 27 Oct 2021 06:31:41 +0300 Subject: [PATCH 2/3] Fix issue with adding auto flags in claim command (players may not have permission for these flags) - Use fake Actor while adding auto flags in claim command --- build.gradle | 2 +- .../claimcommand/WGRegionCommandWrapper.java | 2 +- src/wgextender/utils/FakeActor.java | 82 +++++++++++++++++++ src/wgextender/utils/WGRegionUtils.java | 1 + 4 files changed, 85 insertions(+), 2 deletions(-) create mode 100644 src/wgextender/utils/FakeActor.java diff --git a/build.gradle b/build.gradle index f8fd4f9..752209d 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ defaultTasks 'build' group 'org.hurricanegames' -version '3.0' +version '3.0.1' import java.nio.file.Path diff --git a/src/wgextender/features/claimcommand/WGRegionCommandWrapper.java b/src/wgextender/features/claimcommand/WGRegionCommandWrapper.java index e166df1..1e2b1ac 100644 --- a/src/wgextender/features/claimcommand/WGRegionCommandWrapper.java +++ b/src/wgextender/features/claimcommand/WGRegionCommandWrapper.java @@ -78,7 +78,7 @@ public boolean execute(CommandSender sender, String label, String[] args) { try { WEClaimCommand.claim(regionname, sender); if (!hasRegion && config.claimAutoFlagsEnabled) { - AutoFlags.setFlagsForRegion(WGRegionUtils.wrapPlayer(player), player.getWorld(), config, regionname); + AutoFlags.setFlagsForRegion(WGRegionUtils.FAKE_ACTOR, player.getWorld(), config, regionname); } } catch (CommandException ex) { sender.sendMessage(ChatColor.RED + ex.getMessage()); diff --git a/src/wgextender/utils/FakeActor.java b/src/wgextender/utils/FakeActor.java new file mode 100644 index 0000000..e3aab9c --- /dev/null +++ b/src/wgextender/utils/FakeActor.java @@ -0,0 +1,82 @@ +package wgextender.utils; + +import com.sk89q.worldedit.extension.platform.Actor; +import com.sk89q.worldedit.internal.cui.CUIEvent; +import com.sk89q.worldedit.session.SessionKey; +import com.sk89q.worldedit.util.auth.AuthorizationException; +import com.sk89q.worldedit.util.formatting.text.Component; +import org.bukkit.Bukkit; + +import java.io.File; +import java.util.Locale; +import java.util.UUID; + +final class FakeActor implements Actor { + + FakeActor(){ + } + + @Override + public String getName() { + return Bukkit.getConsoleSender().getName(); + } + @Override + public UUID getUniqueId() { + return null; + } + @Override + public SessionKey getSessionKey() { + return null; + } + @Override + public boolean hasPermission(String arg0) { + return true; + } + @Override + public void checkPermission(String arg0) throws AuthorizationException { + } + @Override + public String[] getGroups() { + return null; + } + @Override + public boolean canDestroyBedrock() { + return false; + } + @Override + public void dispatchCUIEvent(CUIEvent arg0) { + } + + @Override + public Locale getLocale() { + return null; + } + + @Override + public boolean isPlayer() { + return false; + } + @Override + public File openFileOpenDialog(String[] arg0) { + return null; + } + @Override + public File openFileSaveDialog(String[] arg0) { + return null; + } + @Override + public void print(String arg0) { + } + @Override + public void printDebug(String arg0) { + } + @Override + public void printError(String arg0) { + } + @Override + public void printRaw(String arg0) { + } + @Override + public void print(Component arg0) { + } +} diff --git a/src/wgextender/utils/WGRegionUtils.java b/src/wgextender/utils/WGRegionUtils.java index 4926670..0c01926 100644 --- a/src/wgextender/utils/WGRegionUtils.java +++ b/src/wgextender/utils/WGRegionUtils.java @@ -36,6 +36,7 @@ import com.sk89q.worldguard.protection.regions.RegionQuery; public class WGRegionUtils { + public static FakeActor FAKE_ACTOR = new FakeActor(); public static final RegionQuery REGION_QUERY = getRegionContainer().createQuery(); From 0664f009607371ec36234e63f903125de048317d Mon Sep 17 00:00:00 2001 From: Qveshn Date: Wed, 27 Oct 2021 06:52:02 +0300 Subject: [PATCH 3/3] Add the ability to claim polygonal regions who have permission "worldguard.region.unlimited" (as in latest WorldGuard) --- build.gradle | 2 +- .../features/claimcommand/WEClaimCommand.java | 22 ++++++++++++++----- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/build.gradle b/build.gradle index 752209d..28f899f 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ defaultTasks 'build' group 'org.hurricanegames' -version '3.0.1' +version '3.0.2' import java.nio.file.Path diff --git a/src/wgextender/features/claimcommand/WEClaimCommand.java b/src/wgextender/features/claimcommand/WEClaimCommand.java index e668874..18807ae 100644 --- a/src/wgextender/features/claimcommand/WEClaimCommand.java +++ b/src/wgextender/features/claimcommand/WEClaimCommand.java @@ -1,5 +1,7 @@ package wgextender.features.claimcommand; +import com.sk89q.worldedit.regions.Polygonal2DRegion; +import com.sk89q.worldguard.protection.regions.ProtectedPolygonalRegion; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -58,9 +60,10 @@ protected static void claim(String id, CommandSender sender) throws CommandExcep throw new CommandException("Регион с таким именем уже существует, выберите другое."); } - ProtectedRegion region = createProtectedRegionFromSelection(player, id); + boolean mayClaimRegionsUnbounded = permModel.mayClaimRegionsUnbounded(); + ProtectedRegion region = createProtectedRegionFromSelection(player, id, mayClaimRegionsUnbounded); - if (!permModel.mayClaimRegionsUnbounded()) { + if (!mayClaimRegionsUnbounded) { int maxRegionCount = wcfg.getMaxRegionCount(localPlayer); if ((maxRegionCount >= 0) && (manager.getRegionCountOfPlayer(localPlayer) >= maxRegionCount)) { throw new CommandException("У вас слишком много регионов, удалите один из них перед тем как заприватить новый."); @@ -92,16 +95,23 @@ protected static void claim(String id, CommandSender sender) throws CommandExcep } } - private static ProtectedRegion createProtectedRegionFromSelection(Player player, String id) throws CommandException { + private static ProtectedRegion createProtectedRegionFromSelection(Player player, String id, boolean mayClaimRegionsUnbounded) throws CommandException { try { Region selection = WEUtils.getSelection(player); - if (selection instanceof CuboidRegion) { + if (selection instanceof Polygonal2DRegion && mayClaimRegionsUnbounded) { + Polygonal2DRegion polySel = (Polygonal2DRegion) selection; + int minY = polySel.getMinimumPoint().getBlockY(); + int maxY = polySel.getMaximumPoint().getBlockY(); + return new ProtectedPolygonalRegion(id, polySel.getPoints(), minY, maxY); + } else if (selection instanceof CuboidRegion) { return new ProtectedCuboidRegion(id, selection.getMinimumPoint(), selection.getMaximumPoint()); } else { - throw new CommandException("Вы можете использовать только кубическкую территорию."); + throw new CommandException(mayClaimRegionsUnbounded + ?"Вы можете использовать только кубическую или полигональную территорию." + :"Вы можете использовать только кубическую территорию."); } } catch (IncompleteRegionException e) { - throw new CommandException("Сначала выделите территорию. " + "Используйте WorldEdit для выделения " + "(wiki: http://wiki.sk89q.com/wiki/WorldEdit)."); + throw new CommandException("Сначала выделите территорию. " + "Используйте WorldEdit для выделения " + "(wiki: https://worldedit.enginehub.org)."); } }