From bac03b4156251310f3cc9525cca76519240f226d Mon Sep 17 00:00:00 2001 From: depascaldc Date: Tue, 26 Nov 2019 18:15:41 +0100 Subject: [PATCH 1/4] Adding * and negative (for * users) permissions support --- .../java/cn/nukkit/permission/PermissibleBase.java | 10 ++++++++++ src/main/resources/lang | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/cn/nukkit/permission/PermissibleBase.java b/src/main/java/cn/nukkit/permission/PermissibleBase.java index d521a475310..7b458b45986 100644 --- a/src/main/java/cn/nukkit/permission/PermissibleBase.java +++ b/src/main/java/cn/nukkit/permission/PermissibleBase.java @@ -58,6 +58,16 @@ public boolean isPermissionSet(Permission permission) { @Override public boolean hasPermission(String name) { + + // Adding * permission support and negative permissions for * user to remove some perms + if(this.isPermissionSet("*") && ((PermissionAttachmentInfo)this.permissions.get("*")).getValue()){ + if(this.isPermissionSet("-" + name) && ((PermissionAttachmentInfo)this.permissions.get("-" + name)).getValue()){ + return false; + }else{ + return true; + } + } + if (this.isPermissionSet(name)) { return this.permissions.get(name).getValue(); } diff --git a/src/main/resources/lang b/src/main/resources/lang index e39cdad344e..c63bafbc9ae 160000 --- a/src/main/resources/lang +++ b/src/main/resources/lang @@ -1 +1 @@ -Subproject commit e39cdad344ee2919e619ef352236489f32fb3cde +Subproject commit c63bafbc9aea902cac375e48d13944c4232a22c5 From 5df58dec657b177e3d42cb3647017435492c3832 Mon Sep 17 00:00:00 2001 From: depascaldc Date: Tue, 26 Nov 2019 18:17:30 +0100 Subject: [PATCH 2/4] Dispatch Command in player.chat() method when message starts with / --- src/main/java/cn/nukkit/Player.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/cn/nukkit/Player.java b/src/main/java/cn/nukkit/Player.java index 3c6c42f0e6e..bcf25545d48 100644 --- a/src/main/java/cn/nukkit/Player.java +++ b/src/main/java/cn/nukkit/Player.java @@ -3308,6 +3308,12 @@ public boolean chat(String message) { this.resetCraftingGridType(); this.craftingType = CRAFTING_SMALL; + // adding command execution like in Nukkit-DOC -> see above + if(message.startsWith("/")) { + this.server.dispatchCommand(this, message.substring(1)); + return true; + } + if (this.removeFormat) { message = TextFormat.clean(message, true); } From 99c2c563b9837b13faa5934a8432190a1011634f Mon Sep 17 00:00:00 2001 From: depascaldc Date: Tue, 26 Nov 2019 19:12:37 +0100 Subject: [PATCH 3/4] Adding method to get nearbyEntities and Players to player object --- src/main/java/cn/nukkit/Player.java | 38 +++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/main/java/cn/nukkit/Player.java b/src/main/java/cn/nukkit/Player.java index bcf25545d48..bdb0e05b4ec 100644 --- a/src/main/java/cn/nukkit/Player.java +++ b/src/main/java/cn/nukkit/Player.java @@ -3391,6 +3391,44 @@ public void setViewDistance(int distance) { this.dataPacket(pk); } + /** + * Get an Array with nearby pllayers in a defined radius around the player + * @param radiusX + * @param radiusY + * @param radiusZ + * @return nearByPlayers + */ + public Player[] getNearByPlayers(int radiusX, int radiusY, int radiusZ) { + AxisAlignedBB axisalignedbb = new SimpleAxisAlignedBB(this.x - radiusX, this.y - radiusY, this.z - radiusZ, this.x + radiusX, this.y + radiusY, this.z + radiusZ); + Entity[] nearByEntities = this.level.getNearbyEntities(axisalignedbb, this); + int i = 0; + for(Entity entity : nearByEntities) { + if(!(entity instanceof Player)) continue; + i++; + } + Player[] nearByPlayers = new Player[(i+1)]; + int x = 0; + for(Entity entity : nearByEntities) { + if(!(entity instanceof Player)) continue; + nearByPlayers[x] = (Player)entity; + x++; + } + return nearByPlayers; + } + + /** + * Get an Array with nearby pllayers in a defined radius around the player + * @param radiusX + * @param radiusY + * @param radiusZ + * @return nearbyEntities + */ + public Entity[] getNearByEntities(int radiusX, int radiusY, int radiusZ) { + AxisAlignedBB axisalignedbb = new SimpleAxisAlignedBB(this.x - radiusX, this.y - radiusY, this.z - radiusZ, this.x + radiusX, this.y + radiusY, this.z + radiusZ); + return this.level.getNearbyEntities(axisalignedbb, this); + } + + public int getViewDistance() { return this.chunkRadius; } From de5f96e5b7102b2d7dbee53fb91aa0b3e56a9013 Mon Sep 17 00:00:00 2001 From: depascaldc Date: Tue, 26 Nov 2019 19:34:01 +0100 Subject: [PATCH 4/4] Fix description getNearby --- src/main/java/cn/nukkit/Player.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/cn/nukkit/Player.java b/src/main/java/cn/nukkit/Player.java index bdb0e05b4ec..0037a1785ba 100644 --- a/src/main/java/cn/nukkit/Player.java +++ b/src/main/java/cn/nukkit/Player.java @@ -3392,7 +3392,7 @@ public void setViewDistance(int distance) { } /** - * Get an Array with nearby pllayers in a defined radius around the player + * Get an Array with nearby Players in a defined radius around the Player * @param radiusX * @param radiusY * @param radiusZ @@ -3417,7 +3417,7 @@ public Player[] getNearByPlayers(int radiusX, int radiusY, int radiusZ) { } /** - * Get an Array with nearby pllayers in a defined radius around the player + * Get an Array with nearby Entities in a defined radius around the Player * @param radiusX * @param radiusY * @param radiusZ