From 8c44b2d2d2dee79fe2076e40be7cfd34128a9e9a Mon Sep 17 00:00:00 2001 From: Jordan Date: Sun, 7 Jan 2024 15:57:36 +0100 Subject: [PATCH] feat: add specific admin permissions for placing vehicles (#4258) - fixes #3850 --- .../core/permissions/Permission.java | 3 + .../core/util/EventDispatcher.java | 73 ++++++++----------- 2 files changed, 33 insertions(+), 43 deletions(-) diff --git a/Core/src/main/java/com/plotsquared/core/permissions/Permission.java b/Core/src/main/java/com/plotsquared/core/permissions/Permission.java index 94b71761b..4afbda3d3 100644 --- a/Core/src/main/java/com/plotsquared/core/permissions/Permission.java +++ b/Core/src/main/java/com/plotsquared/core/permissions/Permission.java @@ -59,6 +59,9 @@ public enum Permission implements ComponentLike { PERMISSION_ADMIN_DESTROY_VEHICLE_UNOWNED("plots.admin.vehicle.break.unowned"), PERMISSION_ADMIN_DESTROY_VEHICLE_OTHER("plots.admin.vehicle.break.other"), PERMISSION_ADMIN_PVE("plots.admin.pve"), + PERMISSION_ADMIN_PLACE_VEHICLE_ROAD("plots.admin.vehicle.place.road"), + PERMISSION_ADMIN_PLACE_VEHICLE_UNOWNED("plots.admin.vehicle.place.unowned"), + PERMISSION_ADMIN_PLACE_VEHICLE_OTHER("plots.admin.vehicle.place.other"), PERMISSION_ADMIN_PVP("plots.admin.pvp"), PERMISSION_ADMIN_BUILD_ROAD("plots.admin.build.road"), PERMISSION_ADMIN_PROJECTILE_ROAD("plots.admin.projectile.road"), diff --git a/Core/src/main/java/com/plotsquared/core/util/EventDispatcher.java b/Core/src/main/java/com/plotsquared/core/util/EventDispatcher.java index df7d4b416..e71d17443 100644 --- a/Core/src/main/java/com/plotsquared/core/util/EventDispatcher.java +++ b/Core/src/main/java/com/plotsquared/core/util/EventDispatcher.java @@ -382,14 +382,10 @@ public class EventDispatcher { return true; } } - return player.hasPermission( - Permission.PERMISSION_ADMIN_INTERACT_ROAD.toString(), notifyPerms - ); + return player.hasPermission(Permission.PERMISSION_ADMIN_INTERACT_ROAD, notifyPerms); } if (!plot.hasOwner()) { - return player.hasPermission( - Permission.PERMISSION_ADMIN_INTERACT_UNOWNED.toString(), notifyPerms - ); + return player.hasPermission(Permission.PERMISSION_ADMIN_INTERACT_UNOWNED, notifyPerms); } final List use = plot.getFlag(UseFlag.class); for (final BlockTypeWrapper blockTypeWrapper : use) { @@ -398,7 +394,7 @@ public class EventDispatcher { return true; } } - if (player.hasPermission(Permission.PERMISSION_ADMIN_INTERACT_OTHER.toString(), false)) { + if (player.hasPermission(Permission.PERMISSION_ADMIN_INTERACT_OTHER, false)) { return true; } // we check for the EditSignFlag in the PlayerSignOpenEvent again, but we must not cancel the interact event @@ -423,14 +419,10 @@ public class EventDispatcher { return true; } } - return player.hasPermission( - Permission.PERMISSION_ADMIN_INTERACT_ROAD.toString(), false - ); + return player.hasPermission(Permission.PERMISSION_ADMIN_INTERACT_ROAD, false); } if (!plot.hasOwner()) { - return player.hasPermission( - Permission.PERMISSION_ADMIN_INTERACT_UNOWNED.toString(), false - ); + return player.hasPermission(Permission.PERMISSION_ADMIN_INTERACT_UNOWNED, false); } if (plot.getFlag(DeviceInteractFlag.class)) { return true; @@ -442,21 +434,14 @@ public class EventDispatcher { return true; } } - return player.hasPermission( - Permission.PERMISSION_ADMIN_INTERACT_OTHER.toString(), - false - ); + return player.hasPermission(Permission.PERMISSION_ADMIN_INTERACT_OTHER, false); } case SPAWN_MOB -> { if (plot == null) { - return player.hasPermission( - Permission.PERMISSION_ADMIN_INTERACT_ROAD.toString(), notifyPerms - ); + return player.hasPermission(Permission.PERMISSION_ADMIN_INTERACT_ROAD, notifyPerms); } if (!plot.hasOwner()) { - return player.hasPermission( - Permission.PERMISSION_ADMIN_INTERACT_UNOWNED.toString(), notifyPerms - ); + return player.hasPermission(Permission.PERMISSION_ADMIN_INTERACT_UNOWNED, notifyPerms); } if (plot.getFlag(MobPlaceFlag.class)) { return true; @@ -468,10 +453,7 @@ public class EventDispatcher { return true; } } - if (player.hasPermission( - Permission.PERMISSION_ADMIN_INTERACT_OTHER.toString(), - false - )) { + if (player.hasPermission(Permission.PERMISSION_ADMIN_INTERACT_OTHER, false)) { return true; } if (notifyPerms) { @@ -491,14 +473,10 @@ public class EventDispatcher { } case PLACE_MISC -> { if (plot == null) { - return player.hasPermission( - Permission.PERMISSION_ADMIN_INTERACT_ROAD.toString(), notifyPerms - ); + return player.hasPermission(Permission.PERMISSION_ADMIN_INTERACT_ROAD, notifyPerms); } if (!plot.hasOwner()) { - return player.hasPermission( - Permission.PERMISSION_ADMIN_INTERACT_UNOWNED.toString(), notifyPerms - ); + return player.hasPermission(Permission.PERMISSION_ADMIN_INTERACT_UNOWNED, notifyPerms); } if (plot.getFlag(MiscPlaceFlag.class)) { return true; @@ -510,10 +488,7 @@ public class EventDispatcher { return true; } } - if (player.hasPermission( - Permission.PERMISSION_ADMIN_INTERACT_OTHER.toString(), - false - )) { + if (player.hasPermission(Permission.PERMISSION_ADMIN_INTERACT_OTHER, false)) { return true; } if (notifyPerms) { @@ -533,16 +508,28 @@ public class EventDispatcher { } case PLACE_VEHICLE -> { if (plot == null) { - return player.hasPermission( - Permission.PERMISSION_ADMIN_INTERACT_ROAD.toString(), notifyPerms - ); + return player.hasPermission(Permission.PERMISSION_ADMIN_PLACE_VEHICLE_ROAD, notifyPerms); } if (!plot.hasOwner()) { - return player.hasPermission( - Permission.PERMISSION_ADMIN_INTERACT_UNOWNED.toString(), notifyPerms + return player.hasPermission(Permission.PERMISSION_ADMIN_PLACE_VEHICLE_UNOWNED, notifyPerms); + } + if (plot.getFlag(VehiclePlaceFlag.class)) { + return true; + } + if (player.hasPermission(Permission.PERMISSION_ADMIN_PLACE_VEHICLE_OTHER, false)) { + return true; + } + if (notifyPerms) { + player.sendMessage( + TranslatableCaption.of("commandconfig.flag_tutorial_usage"), + TagResolver.resolver( + "flag", + Tag.inserting( + PlotFlag.getFlagNameComponent(VehiclePlaceFlag.class) + ) + ) ); } - return plot.getFlag(VehiclePlaceFlag.class); } default -> { }