diff --git a/src/main/java/cn/nukkit/Player.java b/src/main/java/cn/nukkit/Player.java index 3c6c42f0e6e..0037a1785ba 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); } @@ -3385,6 +3391,44 @@ public void setViewDistance(int distance) { this.dataPacket(pk); } + /** + * Get an Array with nearby Players 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 Entities 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; } 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