mirror of
				https://github.com/IntellectualSites/PlotSquared.git
				synced 2025-10-31 09:33:43 +01:00 
			
		
		
		
	Compare commits
	
		
			10 Commits
		
	
	
		
			7.3.1
			...
			fix/compon
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | c77037ce47 | ||
|   | 746bf93813 | ||
|   | a1d94af242 | ||
| ![renovate[bot]](/assets/img/avatar_default.png)  | 6371cd4c5a | ||
|   | e4613cfc62 | ||
|   | 8c44b2d2d2 | ||
|   | 449af2f3a4 | ||
|   | ead7acdd76 | ||
|   | 1991142d48 | ||
|   | 63ae11b3d3 | 
| @@ -261,7 +261,10 @@ public class BlockEventListener implements Listener { | ||||
|                 final BlockFace facing = piston.getFacing(); | ||||
|                 location = location.add(facing.getModX(), facing.getModY(), facing.getModZ()); | ||||
|                 Plot newPlot = area.getOwnedPlotAbs(location); | ||||
|                 if (!plot.equals(newPlot)) { | ||||
|                 if (plot.equals(newPlot)) { | ||||
|                     return; | ||||
|                 } | ||||
|                 if (!plot.isMerged() || !plot.getConnectedPlots().contains(newPlot)) { | ||||
|                     event.setCancelled(true); | ||||
|                     plot.debug("Prevented piston update because of invalid edge piston detection"); | ||||
|                 } | ||||
|   | ||||
| @@ -252,7 +252,8 @@ public class PlayerEventListener implements Listener { | ||||
|                 } | ||||
|                 Plot plot = location.getOwnedPlot(); | ||||
|                 if (plot == null) { | ||||
|                     if (PlotFlagUtil.isAreaRoadFlagsAndFlagEquals(area, EditSignFlag.class, false)) { | ||||
|                     if (PlotFlagUtil.isAreaRoadFlagsAndFlagEquals(area, EditSignFlag.class, false) | ||||
|                             && !event.getPlayer().hasPermission(Permission.PERMISSION_ADMIN_INTERACT_ROAD.toString())) { | ||||
|                         event.setCancelled(true); | ||||
|                     } | ||||
|                     return; | ||||
| @@ -260,7 +261,8 @@ public class PlayerEventListener implements Listener { | ||||
|                 if (plot.isAdded(event.getPlayer().getUniqueId())) { | ||||
|                     return; // allow for added players | ||||
|                 } | ||||
|                 if (!plot.getFlag(EditSignFlag.class)) { | ||||
|                 if (!plot.getFlag(EditSignFlag.class) | ||||
|                         && !event.getPlayer().hasPermission(Permission.PERMISSION_ADMIN_INTERACT_OTHER.toString())) { | ||||
|                     plot.debug(event.getPlayer().getName() + " could not color the sign because of edit-sign = false"); | ||||
|                     event.setCancelled(true); | ||||
|                 } | ||||
|   | ||||
| @@ -20,6 +20,7 @@ package com.plotsquared.bukkit.listener; | ||||
|  | ||||
| import com.plotsquared.bukkit.util.BukkitUtil; | ||||
| import com.plotsquared.core.location.Location; | ||||
| import com.plotsquared.core.permissions.Permission; | ||||
| import com.plotsquared.core.plot.Plot; | ||||
| import com.plotsquared.core.plot.PlotArea; | ||||
| import com.plotsquared.core.plot.flag.implementations.EditSignFlag; | ||||
| @@ -46,7 +47,8 @@ public class PlayerEventListener1201 implements Listener { | ||||
|         } | ||||
|         Plot plot = location.getOwnedPlot(); | ||||
|         if (plot == null) { | ||||
|             if (PlotFlagUtil.isAreaRoadFlagsAndFlagEquals(area, EditSignFlag.class, false)) { | ||||
|             if (PlotFlagUtil.isAreaRoadFlagsAndFlagEquals(area, EditSignFlag.class, false) | ||||
|                     && !event.getPlayer().hasPermission(Permission.PERMISSION_ADMIN_INTERACT_ROAD.toString())) { | ||||
|                 event.setCancelled(true); | ||||
|             } | ||||
|             return; | ||||
| @@ -54,7 +56,8 @@ public class PlayerEventListener1201 implements Listener { | ||||
|         if (plot.isAdded(event.getPlayer().getUniqueId())) { | ||||
|             return; // allow for added players | ||||
|         } | ||||
|         if (!plot.getFlag(EditSignFlag.class)) { | ||||
|         if (!plot.getFlag(EditSignFlag.class) | ||||
|                 && !event.getPlayer().hasPermission(Permission.PERMISSION_ADMIN_INTERACT_OTHER.toString())) { | ||||
|             plot.debug(event.getPlayer().getName() + " could not edit the sign because of edit-sign = false"); | ||||
|             event.setCancelled(true); | ||||
|         } | ||||
|   | ||||
| @@ -55,6 +55,14 @@ public class TranslationUpdateManager { | ||||
|         String userMove = "userMove"; | ||||
|         String userMoveReplacement = "user_move"; | ||||
|  | ||||
|         // tag opening / closing characters are important, as the locale keys exist as well, which should not be replaced | ||||
|         String listInfoUnknown = "<info.unknown>"; | ||||
|         String listInfoUnknownReplacement = "<unknown>"; | ||||
|         String listInfoServer = "<info.server>"; | ||||
|         String listInfoServerReplacement = "<server>"; | ||||
|         String listInfoEveryone = "<info.everyone>"; | ||||
|         String listInfoEveryoneReplacement = "<everyone>"; | ||||
|  | ||||
|         try (Stream<Path> paths = Files.walk(Paths.get(PlotSquared.platform().getDirectory().toPath().resolve("lang").toUri()))) { | ||||
|             paths | ||||
|                     .filter(Files::isRegularFile) | ||||
| @@ -68,6 +76,9 @@ public class TranslationUpdateManager { | ||||
|                         replaceInFile(p, minimumRadius, minimumRadiusReplacement); | ||||
|                         replaceInFile(p, maximumMoves, maximumMovesReplacement); | ||||
|                         replaceInFile(p, userMove, userMoveReplacement); | ||||
|                         replaceInFile(p, listInfoUnknown, listInfoUnknownReplacement); | ||||
|                         replaceInFile(p, listInfoServer, listInfoServerReplacement); | ||||
|                         replaceInFile(p, listInfoEveryone, listInfoEveryoneReplacement); | ||||
|                     }); | ||||
|         } | ||||
|     } | ||||
|   | ||||
| @@ -37,7 +37,9 @@ import com.sk89q.worldedit.regions.CuboidRegion; | ||||
| import com.sk89q.worldedit.world.biome.BiomeType; | ||||
| import org.checkerframework.checker.nullness.qual.NonNull; | ||||
| import org.checkerframework.checker.nullness.qual.Nullable; | ||||
| import org.jetbrains.annotations.NotNull; | ||||
|  | ||||
| import java.util.Objects; | ||||
| import java.util.Set; | ||||
|  | ||||
| public class FaweRegionManager extends BukkitRegionManager { | ||||
| @@ -59,7 +61,10 @@ public class FaweRegionManager extends BukkitRegionManager { | ||||
|             @Nullable PlotPlayer<?> actor, | ||||
|             @Nullable QueueCoordinator queue | ||||
|     ) { | ||||
|         return delegate.setCuboids(area, regions, blocks, minY, maxY, queue.getCompleteTask()); | ||||
|         return delegate.setCuboids( | ||||
|                 area, regions, blocks, minY, maxY, | ||||
|                 Objects.requireNonNullElseGet(queue, area::getQueue).getCompleteTask() | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
| @@ -111,7 +116,7 @@ public class FaweRegionManager extends BukkitRegionManager { | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public boolean regenerateRegion(final Location pos1, final Location pos2, boolean ignore, final Runnable whenDone) { | ||||
|     public boolean regenerateRegion(final @NotNull Location pos1, final @NotNull Location pos2, boolean ignore, final Runnable whenDone) { | ||||
|         return delegate.regenerateRegion(pos1, pos2, ignore, whenDone); | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -465,7 +465,7 @@ public class ListCmd extends SubCommand { | ||||
|                 TextComponent.Builder builder = Component.text(); | ||||
|                 if (plot.getFlag(ServerPlotFlag.class)) { | ||||
|                     TagResolver serverResolver = TagResolver.resolver( | ||||
|                             "info.server", | ||||
|                             "server", | ||||
|                             Tag.inserting(TranslatableCaption.of("info.server").toComponent(player)) | ||||
|                     ); | ||||
|                     builder.append(MINI_MESSAGE.deserialize(server, serverResolver)); | ||||
| @@ -483,13 +483,13 @@ public class ListCmd extends SubCommand { | ||||
|                                 builder.append(MINI_MESSAGE.deserialize(online, resolver)); | ||||
|                             } else if (uuidMapping.username().equalsIgnoreCase("unknown")) { | ||||
|                                 TagResolver unknownResolver = TagResolver.resolver( | ||||
|                                         "info.unknown", | ||||
|                                         "unknown", | ||||
|                                         Tag.inserting(TranslatableCaption.of("info.unknown").toComponent(player)) | ||||
|                                 ); | ||||
|                                 builder.append(MINI_MESSAGE.deserialize(unknown, unknownResolver)); | ||||
|                             } else if (uuidMapping.uuid().equals(DBFunc.EVERYONE)) { | ||||
|                                 TagResolver everyoneResolver = TagResolver.resolver( | ||||
|                                         "info.everyone", | ||||
|                                         "everyone", | ||||
|                                         Tag.inserting(TranslatableCaption.of("info.everyone").toComponent(player)) | ||||
|                                 ); | ||||
|                                 builder.append(MINI_MESSAGE.deserialize(everyone, everyoneResolver)); | ||||
|   | ||||
| @@ -2401,7 +2401,8 @@ public class SQLManager implements AbstractDB { | ||||
|         addPlotTask(plot, new UniqueStatement("setPosition") { | ||||
|             @Override | ||||
|             public void set(PreparedStatement statement) throws SQLException { | ||||
|                 statement.setString(1, position == null ? "" : position); | ||||
|                 // Please see the table creation statement. There is the default value of "default" | ||||
|                 statement.setString(1, position == null ? "DEFAULT" : position); | ||||
|                 statement.setInt(2, getId(plot)); | ||||
|             } | ||||
|  | ||||
|   | ||||
| @@ -364,7 +364,6 @@ public class PlotListener { | ||||
|     public boolean plotExit(final PlotPlayer<?> player, Plot plot) { | ||||
|         try (final MetaDataAccess<Plot> lastPlot = player.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LAST_PLOT)) { | ||||
|             final Plot previous = lastPlot.remove(); | ||||
|             this.eventDispatcher.callLeave(player, plot); | ||||
|  | ||||
|             List<StatusEffect> effects = playerEffects.remove(player.getUUID()); | ||||
|             if (effects != null) { | ||||
| @@ -467,6 +466,8 @@ public class PlotListener { | ||||
|                 feedRunnable.remove(player.getUUID()); | ||||
|                 healRunnable.remove(player.getUUID()); | ||||
|             } | ||||
|         } finally { | ||||
|             this.eventDispatcher.callLeave(player, plot); | ||||
|         } | ||||
|         return true; | ||||
|     } | ||||
|   | ||||
| @@ -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"), | ||||
|   | ||||
| @@ -1483,7 +1483,7 @@ public class Plot { | ||||
|      */ | ||||
|     public void setHome(BlockLoc location) { | ||||
|         Plot plot = this.getBasePlot(false); | ||||
|         if (BlockLoc.ZERO.equals(location) || BlockLoc.MINY.equals(location)) { | ||||
|         if (location != null && (BlockLoc.ZERO.equals(location) || BlockLoc.MINY.equals(location))) { | ||||
|             return; | ||||
|         } | ||||
|         plot.getSettings().setPosition(location); | ||||
|   | ||||
| @@ -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<BlockTypeWrapper> 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 -> { | ||||
|             } | ||||
|   | ||||
| @@ -381,9 +381,9 @@ | ||||
|   "info.plot_list_default": "<gold><plot></gold>", | ||||
|   "info.plot_list_player_online": "<dark_aqua><prefix></dark_aqua><hover:show_text:'<dark_aqua>Online</dark_aqua>'><gold><player></gold></hover>", | ||||
|   "info.plot_list_player_offline": "<dark_aqua><prefix></dark_aqua><hover:show_text:'<dark_gray>Offline</dark_gray>'><gold><player></gold></hover>", | ||||
|   "info.plot_list_player_unknown": "<hover:show_text:'<red>The owner of this plot is unknown</red>'><white><info.unknown></white></hover>", | ||||
|   "info.plot_list_player_server": "<hover:show_text:'<red>The plot is owned by the server</red>'><white><info.server></white></hover>", | ||||
|   "info.plot_list_player_everyone": "<hover:show_text:'<blue>The plot is owned by everyone</blue>'><white><info.everyone></white></hover>", | ||||
|   "info.plot_list_player_unknown": "<hover:show_text:'<red>The owner of this plot is unknown</red>'><white><unknown></white></hover>", | ||||
|   "info.plot_list_player_server": "<hover:show_text:'<red>The plot is owned by the server</red>'><white><server></white></hover>", | ||||
|   "info.plot_list_player_everyone": "<hover:show_text:'<blue>The plot is owned by everyone</blue>'><white><everyone></white></hover>", | ||||
|   "info.area_info_format": "<header>\n<reset><gold>Name: </gold><gray><name></gray>\n<gold>Type: </gold><gray><type></gray>\n<gold>Terrain: </gold><gray><terrain></gray>\n<gold>Usage: </gold><gray><usage>%</gray>\n<gold>Claimed: </gold><gray><claimed></gray>\n<gold>Clusters: </gold><gray><clusters></gray>\n<gold>Region: </gold><gray><region></gray>\n<gold>Generator: </gold><gray><generator></gray>\n<footer>", | ||||
|   "info.area_list_tooltip": "<gold>Claimed=</gold><gray><claimed></gray>\n<gold>Usage=</gold><gray><usage></gray>\n<gold>Clusters=</gold><gray><clusters></gray>\n<gold>Region=</gold><gray><region></gray>\n<gold>Generator=</gold><gray><generator></gray>", | ||||
|   "info.area_list_item": "<click:run_command:'<command_tp>'><hover:show_text:'<command_tp>'><dark_gray>[</dark_gray><gold><number></gold><dark_gray>]</dark_gray></hover></click> <click:run_command:'<command_info>'><hover:show_text:'<hover_info>'><gold><area_name></gold></hover></click><gray> - </gray><gray><area_type>:<area_terrain></gray>", | ||||
|   | ||||
| @@ -22,7 +22,7 @@ plugins { | ||||
| } | ||||
|  | ||||
| group = "com.intellectualsites.plotsquared" | ||||
| version = "7.3.1" | ||||
| version = "7.3.2-SNAPSHOT" | ||||
|  | ||||
| if (!File("$rootDir/.git").exists()) { | ||||
|     logger.lifecycle(""" | ||||
|   | ||||
| @@ -13,7 +13,7 @@ log4j = "2.19.0" | ||||
|  | ||||
| # Plugins | ||||
| worldedit = "7.2.18" | ||||
| fawe = "2.8.3" | ||||
| fawe = "2.8.4" | ||||
| placeholderapi = "2.11.5" | ||||
| luckperms = "5.4" | ||||
| essentialsx = "2.20.1" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user