mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2025-07-20 14:24:44 +02:00
Compare commits
2 Commits
feat/plotL
...
feat/v7/ve
Author | SHA1 | Date | |
---|---|---|---|
fe2cfd9b89 | |||
3dc4410a1e |
@ -1,77 +0,0 @@
|
|||||||
/*
|
|
||||||
* PlotSquared, a land and world management plugin for Minecraft.
|
|
||||||
* Copyright (C) IntellectualSites <https://intellectualsites.com>
|
|
||||||
* Copyright (C) IntellectualSites team and contributors
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
package com.plotsquared.core.events;
|
|
||||||
|
|
||||||
import com.plotsquared.core.player.PlotPlayer;
|
|
||||||
import org.checkerframework.checker.index.qual.NonNegative;
|
|
||||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Called every time after PlotSquared calculated a players plot limit based on their permission.
|
|
||||||
* <p>
|
|
||||||
* May be used to grant a player more plots based on another rank or bought feature.
|
|
||||||
*
|
|
||||||
* @since TODO
|
|
||||||
*/
|
|
||||||
public class PlayerPlotLimitEvent {
|
|
||||||
|
|
||||||
private final PlotPlayer<?> player;
|
|
||||||
|
|
||||||
private int limit;
|
|
||||||
|
|
||||||
public PlayerPlotLimitEvent(@NonNull final PlotPlayer<?> player, @NonNegative final int limit) {
|
|
||||||
this.player = player;
|
|
||||||
this.limit = limit;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Overrides the previously calculated or set plot limit for {@link #player()}.
|
|
||||||
*
|
|
||||||
* @param limit The amount of plots a player may claim. Must be {@code 0} or greater.
|
|
||||||
* @since TODO
|
|
||||||
*/
|
|
||||||
public void limit(@NonNegative final int limit) {
|
|
||||||
if (limit < 0) {
|
|
||||||
throw new IllegalArgumentException("Player plot limit must be greater or equal 0");
|
|
||||||
}
|
|
||||||
this.limit = limit;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the previous set limit, if none was overridden before this event handler the default limit based on the players
|
|
||||||
* permissions node is returned.
|
|
||||||
*
|
|
||||||
* @return The currently defined plot limit of this player.
|
|
||||||
* @since TODO
|
|
||||||
*/
|
|
||||||
public @NonNegative int limit() {
|
|
||||||
return limit;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The player for which the limit is queried.
|
|
||||||
*
|
|
||||||
* @return the player.
|
|
||||||
* @since TODO
|
|
||||||
*/
|
|
||||||
public @NonNull PlotPlayer<?> player() {
|
|
||||||
return player;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -59,6 +59,9 @@ public enum Permission implements ComponentLike {
|
|||||||
PERMISSION_ADMIN_DESTROY_VEHICLE_UNOWNED("plots.admin.vehicle.break.unowned"),
|
PERMISSION_ADMIN_DESTROY_VEHICLE_UNOWNED("plots.admin.vehicle.break.unowned"),
|
||||||
PERMISSION_ADMIN_DESTROY_VEHICLE_OTHER("plots.admin.vehicle.break.other"),
|
PERMISSION_ADMIN_DESTROY_VEHICLE_OTHER("plots.admin.vehicle.break.other"),
|
||||||
PERMISSION_ADMIN_PVE("plots.admin.pve"),
|
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_PVP("plots.admin.pvp"),
|
||||||
PERMISSION_ADMIN_BUILD_ROAD("plots.admin.build.road"),
|
PERMISSION_ADMIN_BUILD_ROAD("plots.admin.build.road"),
|
||||||
PERMISSION_ADMIN_PROJECTILE_ROAD("plots.admin.projectile.road"),
|
PERMISSION_ADMIN_PROJECTILE_ROAD("plots.admin.projectile.road"),
|
||||||
|
@ -306,8 +306,7 @@ public abstract class PlotPlayer<P> implements CommandCaller, OfflinePlotPlayer,
|
|||||||
* @return number of allowed plots within the scope (globally, or in the player's current world as defined in the settings.yml)
|
* @return number of allowed plots within the scope (globally, or in the player's current world as defined in the settings.yml)
|
||||||
*/
|
*/
|
||||||
public int getAllowedPlots() {
|
public int getAllowedPlots() {
|
||||||
final int calculatedLimit = hasPermissionRange("plots.plot", Settings.Limit.MAX_PLOTS);
|
return hasPermissionRange("plots.plot", Settings.Limit.MAX_PLOTS);
|
||||||
return this.eventDispatcher.callPlayerPlotLimit(this, calculatedLimit).limit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -30,7 +30,6 @@ import com.plotsquared.core.events.PlayerEnterPlotEvent;
|
|||||||
import com.plotsquared.core.events.PlayerLeavePlotEvent;
|
import com.plotsquared.core.events.PlayerLeavePlotEvent;
|
||||||
import com.plotsquared.core.events.PlayerPlotDeniedEvent;
|
import com.plotsquared.core.events.PlayerPlotDeniedEvent;
|
||||||
import com.plotsquared.core.events.PlayerPlotHelperEvent;
|
import com.plotsquared.core.events.PlayerPlotHelperEvent;
|
||||||
import com.plotsquared.core.events.PlayerPlotLimitEvent;
|
|
||||||
import com.plotsquared.core.events.PlayerPlotTrustedEvent;
|
import com.plotsquared.core.events.PlayerPlotTrustedEvent;
|
||||||
import com.plotsquared.core.events.PlayerTeleportToPlotEvent;
|
import com.plotsquared.core.events.PlayerTeleportToPlotEvent;
|
||||||
import com.plotsquared.core.events.PlotAutoMergeEvent;
|
import com.plotsquared.core.events.PlotAutoMergeEvent;
|
||||||
@ -309,12 +308,6 @@ public class EventDispatcher {
|
|||||||
return event;
|
return event;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PlayerPlotLimitEvent callPlayerPlotLimit(PlotPlayer<?> player, int calculatedLimit) {
|
|
||||||
PlayerPlotLimitEvent event = new PlayerPlotLimitEvent(player, calculatedLimit);
|
|
||||||
eventBus.post(event);
|
|
||||||
return event;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void doJoinTask(final PlotPlayer<?> player) {
|
public void doJoinTask(final PlotPlayer<?> player) {
|
||||||
if (player == null) {
|
if (player == null) {
|
||||||
return; //possible future warning message to figure out where we are retrieving null
|
return; //possible future warning message to figure out where we are retrieving null
|
||||||
@ -382,14 +375,10 @@ public class EventDispatcher {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return player.hasPermission(
|
return player.hasPermission(Permission.PERMISSION_ADMIN_INTERACT_ROAD, notifyPerms);
|
||||||
Permission.PERMISSION_ADMIN_INTERACT_ROAD.toString(), notifyPerms
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
if (!plot.hasOwner()) {
|
if (!plot.hasOwner()) {
|
||||||
return player.hasPermission(
|
return player.hasPermission(Permission.PERMISSION_ADMIN_INTERACT_UNOWNED, notifyPerms);
|
||||||
Permission.PERMISSION_ADMIN_INTERACT_UNOWNED.toString(), notifyPerms
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
final List<BlockTypeWrapper> use = plot.getFlag(UseFlag.class);
|
final List<BlockTypeWrapper> use = plot.getFlag(UseFlag.class);
|
||||||
for (final BlockTypeWrapper blockTypeWrapper : use) {
|
for (final BlockTypeWrapper blockTypeWrapper : use) {
|
||||||
@ -398,7 +387,7 @@ public class EventDispatcher {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (player.hasPermission(Permission.PERMISSION_ADMIN_INTERACT_OTHER.toString(), false)) {
|
if (player.hasPermission(Permission.PERMISSION_ADMIN_INTERACT_OTHER, false)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
// we check for the EditSignFlag in the PlayerSignOpenEvent again, but we must not cancel the interact event
|
// we check for the EditSignFlag in the PlayerSignOpenEvent again, but we must not cancel the interact event
|
||||||
@ -423,14 +412,10 @@ public class EventDispatcher {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return player.hasPermission(
|
return player.hasPermission(Permission.PERMISSION_ADMIN_INTERACT_ROAD, false);
|
||||||
Permission.PERMISSION_ADMIN_INTERACT_ROAD.toString(), false
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
if (!plot.hasOwner()) {
|
if (!plot.hasOwner()) {
|
||||||
return player.hasPermission(
|
return player.hasPermission(Permission.PERMISSION_ADMIN_INTERACT_UNOWNED, false);
|
||||||
Permission.PERMISSION_ADMIN_INTERACT_UNOWNED.toString(), false
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
if (plot.getFlag(DeviceInteractFlag.class)) {
|
if (plot.getFlag(DeviceInteractFlag.class)) {
|
||||||
return true;
|
return true;
|
||||||
@ -442,21 +427,14 @@ public class EventDispatcher {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return player.hasPermission(
|
return player.hasPermission(Permission.PERMISSION_ADMIN_INTERACT_OTHER, false);
|
||||||
Permission.PERMISSION_ADMIN_INTERACT_OTHER.toString(),
|
|
||||||
false
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
case SPAWN_MOB -> {
|
case SPAWN_MOB -> {
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
return player.hasPermission(
|
return player.hasPermission(Permission.PERMISSION_ADMIN_INTERACT_ROAD, notifyPerms);
|
||||||
Permission.PERMISSION_ADMIN_INTERACT_ROAD.toString(), notifyPerms
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
if (!plot.hasOwner()) {
|
if (!plot.hasOwner()) {
|
||||||
return player.hasPermission(
|
return player.hasPermission(Permission.PERMISSION_ADMIN_INTERACT_UNOWNED, notifyPerms);
|
||||||
Permission.PERMISSION_ADMIN_INTERACT_UNOWNED.toString(), notifyPerms
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
if (plot.getFlag(MobPlaceFlag.class)) {
|
if (plot.getFlag(MobPlaceFlag.class)) {
|
||||||
return true;
|
return true;
|
||||||
@ -468,10 +446,7 @@ public class EventDispatcher {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (player.hasPermission(
|
if (player.hasPermission(Permission.PERMISSION_ADMIN_INTERACT_OTHER, false)) {
|
||||||
Permission.PERMISSION_ADMIN_INTERACT_OTHER.toString(),
|
|
||||||
false
|
|
||||||
)) {
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (notifyPerms) {
|
if (notifyPerms) {
|
||||||
@ -491,14 +466,10 @@ public class EventDispatcher {
|
|||||||
}
|
}
|
||||||
case PLACE_MISC -> {
|
case PLACE_MISC -> {
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
return player.hasPermission(
|
return player.hasPermission(Permission.PERMISSION_ADMIN_INTERACT_ROAD, notifyPerms);
|
||||||
Permission.PERMISSION_ADMIN_INTERACT_ROAD.toString(), notifyPerms
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
if (!plot.hasOwner()) {
|
if (!plot.hasOwner()) {
|
||||||
return player.hasPermission(
|
return player.hasPermission(Permission.PERMISSION_ADMIN_INTERACT_UNOWNED, notifyPerms);
|
||||||
Permission.PERMISSION_ADMIN_INTERACT_UNOWNED.toString(), notifyPerms
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
if (plot.getFlag(MiscPlaceFlag.class)) {
|
if (plot.getFlag(MiscPlaceFlag.class)) {
|
||||||
return true;
|
return true;
|
||||||
@ -510,10 +481,7 @@ public class EventDispatcher {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (player.hasPermission(
|
if (player.hasPermission(Permission.PERMISSION_ADMIN_INTERACT_OTHER, false)) {
|
||||||
Permission.PERMISSION_ADMIN_INTERACT_OTHER.toString(),
|
|
||||||
false
|
|
||||||
)) {
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (notifyPerms) {
|
if (notifyPerms) {
|
||||||
@ -533,16 +501,28 @@ public class EventDispatcher {
|
|||||||
}
|
}
|
||||||
case PLACE_VEHICLE -> {
|
case PLACE_VEHICLE -> {
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
return player.hasPermission(
|
return player.hasPermission(Permission.PERMISSION_ADMIN_PLACE_VEHICLE_ROAD, notifyPerms);
|
||||||
Permission.PERMISSION_ADMIN_INTERACT_ROAD.toString(), notifyPerms
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
if (!plot.hasOwner()) {
|
if (!plot.hasOwner()) {
|
||||||
return player.hasPermission(
|
return player.hasPermission(Permission.PERMISSION_ADMIN_PLACE_VEHICLE_UNOWNED, notifyPerms);
|
||||||
Permission.PERMISSION_ADMIN_INTERACT_UNOWNED.toString(), 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 -> {
|
default -> {
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user