From 991e53f5f18d089972aa58535065d1a446635569 Mon Sep 17 00:00:00 2001 From: lhx Date: Thu, 5 Feb 2026 00:05:36 +0800 Subject: [PATCH 1/4] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=BA=86create=5F?= =?UTF-8?q?sub=E6=9D=83=E9=99=90=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dominion/handler/DominionProviderHandler.java | 2 ++ .../java/cn/lunadeer/dominion/misc/Asserts.java | 15 +++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/core/src/main/java/cn/lunadeer/dominion/handler/DominionProviderHandler.java b/core/src/main/java/cn/lunadeer/dominion/handler/DominionProviderHandler.java index c69d2d0a..26ccb005 100644 --- a/core/src/main/java/cn/lunadeer/dominion/handler/DominionProviderHandler.java +++ b/core/src/main/java/cn/lunadeer/dominion/handler/DominionProviderHandler.java @@ -113,6 +113,8 @@ public CompletableFuture createDominion(@NotNull CommandSender oper assertPlayerDominionAmount(event.getOperator(), event.getWorld().getUID()); // size check assertDominionSize(event.getOperator(), event.getWorld().getUID(), event.getCuboid()); + //permission check + ifOperatorHasPermission(event.getOperator(),parent); // parent check assertWithinParent(event.getOperator(), toBeCreated, event.getCuboid()); assertSubDepth(event.getOperator(), toBeCreated); diff --git a/core/src/main/java/cn/lunadeer/dominion/misc/Asserts.java b/core/src/main/java/cn/lunadeer/dominion/misc/Asserts.java index 5b805509..17f6e3f4 100644 --- a/core/src/main/java/cn/lunadeer/dominion/misc/Asserts.java +++ b/core/src/main/java/cn/lunadeer/dominion/misc/Asserts.java @@ -24,6 +24,7 @@ import java.util.List; import java.util.UUID; +import static cn.lunadeer.dominion.Dominion.adminPermission; import static cn.lunadeer.dominion.misc.Converts.toWorld; import static cn.lunadeer.dominion.misc.Others.bypassLimit; @@ -66,6 +67,7 @@ public static class AssertsText extends ConfigurationPart { public String cantContainChild = "Dominion {0} can not contain it's child dominion {1}."; public String missingParentDom = "Parent dominion of {0} is missing."; public String subDomTooDeep = "Player {0} can't create sub-dominion of depth more than {1}."; + public String subPermissionError = "Player {0} doesn't has permission of dominion {1}"; public String withDrawMoney = "Successfully paid {0} for dominion."; public String depositMoney = "Successfully refunded {0} from dominion."; @@ -295,6 +297,19 @@ public static void assertWithinParent(@NotNull CommandSender operator, @NotNull } } + /** + * Check the sub_dom can be created by checking the uuid between the parent and operator + * and make the admin permission to bypass it + */ + public static void ifOperatorHasPermission(@NotNull CommandSender operator, DominionDTO parent){ + if ((parent == null)||operator.hasPermission(adminPermission)) return; //handle if there isn't a parent dom or the operator is admin + if (operator instanceof Player operatorplayer){ + if(operatorplayer.getUniqueId() != parent.getOwner()){ + throw new DominionException(Language.assertsText.subPermissionError, operator.getName(), parent.getName()); + };//check if the owner is same; + } + } + /** * Asserts that the sub-dominion depth is within the allowed limit. * This method checks if the recursion depth of sub-dominions is valid From a725ccbffed33998d12b4e5e0ff6fc3196c77744 Mon Sep 17 00:00:00 2001 From: lhx28 Date: Thu, 5 Feb 2026 07:54:26 +0800 Subject: [PATCH 2/4] Update function param --- core/src/main/java/cn/lunadeer/dominion/misc/Asserts.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/src/main/java/cn/lunadeer/dominion/misc/Asserts.java b/core/src/main/java/cn/lunadeer/dominion/misc/Asserts.java index 17f6e3f4..af5a905e 100644 --- a/core/src/main/java/cn/lunadeer/dominion/misc/Asserts.java +++ b/core/src/main/java/cn/lunadeer/dominion/misc/Asserts.java @@ -300,6 +300,9 @@ public static void assertWithinParent(@NotNull CommandSender operator, @NotNull /** * Check the sub_dom can be created by checking the uuid between the parent and operator * and make the admin permission to bypass it + * + * @param operator the command operator (usually operator) + * @param parent the parent dominion */ public static void ifOperatorHasPermission(@NotNull CommandSender operator, DominionDTO parent){ if ((parent == null)||operator.hasPermission(adminPermission)) return; //handle if there isn't a parent dom or the operator is admin From 2f9fe203abe266fc3e308e5c7060e87ac0a66cfa Mon Sep 17 00:00:00 2001 From: lhx28 Date: Thu, 5 Feb 2026 08:37:11 +0800 Subject: [PATCH 3/4] =?UTF-8?q?refactor:=20=E6=8C=89=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E5=BB=BA=E8=AE=AE=E5=A4=8D=E7=94=A8assertDominionOwner?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=E5=AD=90=E9=A2=86=E5=9C=B0=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dominion/handler/DominionProviderHandler.java | 5 ++++- .../java/cn/lunadeer/dominion/misc/Asserts.java | 14 -------------- 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/core/src/main/java/cn/lunadeer/dominion/handler/DominionProviderHandler.java b/core/src/main/java/cn/lunadeer/dominion/handler/DominionProviderHandler.java index 26ccb005..0bc6b771 100644 --- a/core/src/main/java/cn/lunadeer/dominion/handler/DominionProviderHandler.java +++ b/core/src/main/java/cn/lunadeer/dominion/handler/DominionProviderHandler.java @@ -114,7 +114,10 @@ public CompletableFuture createDominion(@NotNull CommandSender oper // size check assertDominionSize(event.getOperator(), event.getWorld().getUID(), event.getCuboid()); //permission check - ifOperatorHasPermission(event.getOperator(),parent); + if (parent != null) { + assertDominionOwner(event.getOperator(), parent); + } + // parent check assertWithinParent(event.getOperator(), toBeCreated, event.getCuboid()); assertSubDepth(event.getOperator(), toBeCreated); diff --git a/core/src/main/java/cn/lunadeer/dominion/misc/Asserts.java b/core/src/main/java/cn/lunadeer/dominion/misc/Asserts.java index 17f6e3f4..e80f6a89 100644 --- a/core/src/main/java/cn/lunadeer/dominion/misc/Asserts.java +++ b/core/src/main/java/cn/lunadeer/dominion/misc/Asserts.java @@ -67,7 +67,6 @@ public static class AssertsText extends ConfigurationPart { public String cantContainChild = "Dominion {0} can not contain it's child dominion {1}."; public String missingParentDom = "Parent dominion of {0} is missing."; public String subDomTooDeep = "Player {0} can't create sub-dominion of depth more than {1}."; - public String subPermissionError = "Player {0} doesn't has permission of dominion {1}"; public String withDrawMoney = "Successfully paid {0} for dominion."; public String depositMoney = "Successfully refunded {0} from dominion."; @@ -297,19 +296,6 @@ public static void assertWithinParent(@NotNull CommandSender operator, @NotNull } } - /** - * Check the sub_dom can be created by checking the uuid between the parent and operator - * and make the admin permission to bypass it - */ - public static void ifOperatorHasPermission(@NotNull CommandSender operator, DominionDTO parent){ - if ((parent == null)||operator.hasPermission(adminPermission)) return; //handle if there isn't a parent dom or the operator is admin - if (operator instanceof Player operatorplayer){ - if(operatorplayer.getUniqueId() != parent.getOwner()){ - throw new DominionException(Language.assertsText.subPermissionError, operator.getName(), parent.getName()); - };//check if the owner is same; - } - } - /** * Asserts that the sub-dominion depth is within the allowed limit. * This method checks if the recursion depth of sub-dominions is valid From 2cf3a5cb4fa4b7ce1fabfdb8fbc3e2c9eb07bda8 Mon Sep 17 00:00:00 2001 From: lhx28 Date: Thu, 5 Feb 2026 08:39:33 +0800 Subject: [PATCH 4/4] =?UTF-8?q?refactor:=20=E6=8C=89=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E5=BB=BA=E8=AE=AE=E5=A4=8D=E7=94=A8assertDominionOwner?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=E5=AD=90=E9=A2=86=E5=9C=B0=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/src/main/java/cn/lunadeer/dominion/misc/Asserts.java | 1 - 1 file changed, 1 deletion(-) diff --git a/core/src/main/java/cn/lunadeer/dominion/misc/Asserts.java b/core/src/main/java/cn/lunadeer/dominion/misc/Asserts.java index e80f6a89..5b805509 100644 --- a/core/src/main/java/cn/lunadeer/dominion/misc/Asserts.java +++ b/core/src/main/java/cn/lunadeer/dominion/misc/Asserts.java @@ -24,7 +24,6 @@ import java.util.List; import java.util.UUID; -import static cn.lunadeer.dominion.Dominion.adminPermission; import static cn.lunadeer.dominion.misc.Converts.toWorld; import static cn.lunadeer.dominion.misc.Others.bypassLimit;