mirror of
				https://github.com/IntellectualSites/PlotSquared.git
				synced 2025-10-31 09:33:43 +01:00 
			
		
		
		
	Compare commits
	
		
			1 Commits
		
	
	
		
			feature/mi
			...
			refactor/v
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 3e889b4d64 | 
							
								
								
									
										2
									
								
								.github/ISSUE_TEMPLATE/bug_report.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/ISSUE_TEMPLATE/bug_report.yml
									
									
									
									
										vendored
									
									
								
							| @@ -27,7 +27,7 @@ body: | ||||
|       description: Which server version version you using? If your server version is not listed, it is not supported. Update to a supported version first. | ||||
|       multiple: false | ||||
|       options: | ||||
|         - '1.20.4' | ||||
|         - '1.20.2' | ||||
|         - '1.20' | ||||
|         - '1.19.4' | ||||
|         - '1.19.3' | ||||
|   | ||||
							
								
								
									
										6
									
								
								.github/workflows/codeql.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.github/workflows/codeql.yml
									
									
									
									
										vendored
									
									
								
							| @@ -27,10 +27,10 @@ jobs: | ||||
|           distribution: temurin | ||||
|           java-version: 17 | ||||
|       - name: Initialize CodeQL | ||||
|         uses: github/codeql-action/init@v3 | ||||
|         uses: github/codeql-action/init@v2 | ||||
|         with: | ||||
|           languages: ${{ matrix.language }} | ||||
|       - name: Autobuild | ||||
|         uses: github/codeql-action/autobuild@v3 | ||||
|         uses: github/codeql-action/autobuild@v2 | ||||
|       - name: Perform CodeQL Analysis | ||||
|         uses: github/codeql-action/analyze@v3 | ||||
|         uses: github/codeql-action/analyze@v2 | ||||
|   | ||||
| @@ -41,7 +41,6 @@ dependencies { | ||||
|     compileOnly(libs.luckperms) | ||||
|     compileOnly(libs.essentialsx) | ||||
|     compileOnly(libs.mvdwapi) { isTransitive = false } | ||||
|     compileOnly(libs.miniplaceholders) { isTransitive = false } | ||||
|  | ||||
|     // Other libraries | ||||
|     implementation(libs.squirrelid) { isTransitive = false } | ||||
| @@ -68,7 +67,6 @@ tasks.named<ShadowJar>("shadowJar") { | ||||
|         exclude(dependency("org.checkerframework:")) | ||||
|     } | ||||
|  | ||||
|     relocate("net.kyori.option", "com.plotsquared.core.configuration.option") | ||||
|     relocate("net.kyori.adventure", "com.plotsquared.core.configuration.adventure") | ||||
|     relocate("net.kyori.examination", "com.plotsquared.core.configuration.examination") | ||||
|     relocate("io.papermc.lib", "com.plotsquared.bukkit.paperlib") | ||||
| @@ -107,7 +105,7 @@ tasks { | ||||
|         opt.links("https://intellectualsites.github.io/plotsquared-javadocs/core/") | ||||
|         opt.links("https://jd.advntr.dev/api/4.14.0/") | ||||
|         opt.links("https://google.github.io/guice/api-docs/" + libs.guice.get().versionConstraint.toString() + "/javadoc/") | ||||
|     //    opt.links("https://checkerframework.org/api/") | ||||
|         opt.links("https://checkerframework.org/api/") | ||||
|         opt.isLinkSource = true | ||||
|         opt.bottom(File("$rootDir/javadocfooter.html").readText()) | ||||
|         opt.isUse = true | ||||
|   | ||||
| @@ -261,10 +261,7 @@ 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)) { | ||||
|                     return; | ||||
|                 } | ||||
|                 if (!plot.isMerged() || !plot.getConnectedPlots().contains(newPlot)) { | ||||
|                 if (!plot.equals(newPlot)) { | ||||
|                     event.setCancelled(true); | ||||
|                     plot.debug("Prevented piston update because of invalid edge piston detection"); | ||||
|                 } | ||||
|   | ||||
| @@ -35,7 +35,6 @@ import com.plotsquared.core.plot.flag.implementations.DisablePhysicsFlag; | ||||
| import com.plotsquared.core.plot.flag.implementations.EntityChangeBlockFlag; | ||||
| import com.plotsquared.core.plot.flag.implementations.ExplosionFlag; | ||||
| import com.plotsquared.core.plot.flag.implementations.InvincibleFlag; | ||||
| import com.plotsquared.core.plot.flag.implementations.ProjectileChangeBlockFlag; | ||||
| import com.plotsquared.core.plot.world.PlotAreaManager; | ||||
| import com.plotsquared.core.util.EventDispatcher; | ||||
| import com.plotsquared.core.util.PlotFlagUtil; | ||||
| @@ -359,13 +358,13 @@ public class EntityEventListener implements Listener { | ||||
|             if (shooter instanceof Player) { | ||||
|                 PlotPlayer<?> pp = BukkitUtil.adapt((Player) shooter); | ||||
|                 if (plot == null) { | ||||
|                     if (area.isRoadFlags() && !area.getRoadFlag(ProjectileChangeBlockFlag.class) && !pp.hasPermission(Permission.PERMISSION_ADMIN_PROJECTILE_UNOWNED)) { | ||||
|                     if (!pp.hasPermission(Permission.PERMISSION_ADMIN_PROJECTILE_UNOWNED)) { | ||||
|                         entity.remove(); | ||||
|                         event.setCancelled(true); | ||||
|                     } | ||||
|                     return; | ||||
|                 } | ||||
|                 if (plot.isAdded(pp.getUUID()) || plot.getFlag(ProjectileChangeBlockFlag.class) || pp.hasPermission(Permission.PERMISSION_ADMIN_PROJECTILE_OTHER)) { | ||||
|                 if (plot.isAdded(pp.getUUID()) || pp.hasPermission(Permission.PERMISSION_ADMIN_PROJECTILE_OTHER)) { | ||||
|                     return; | ||||
|                 } | ||||
|                 entity.remove(); | ||||
|   | ||||
| @@ -50,7 +50,6 @@ import com.plotsquared.core.plot.flag.implementations.DenyPortalsFlag; | ||||
| import com.plotsquared.core.plot.flag.implementations.DenyTeleportFlag; | ||||
| import com.plotsquared.core.plot.flag.implementations.DoneFlag; | ||||
| import com.plotsquared.core.plot.flag.implementations.DropProtectionFlag; | ||||
| import com.plotsquared.core.plot.flag.implementations.EditSignFlag; | ||||
| import com.plotsquared.core.plot.flag.implementations.HangingBreakFlag; | ||||
| import com.plotsquared.core.plot.flag.implementations.HangingPlaceFlag; | ||||
| import com.plotsquared.core.plot.flag.implementations.HostileInteractFlag; | ||||
| @@ -88,7 +87,6 @@ import org.bukkit.Material; | ||||
| import org.bukkit.block.Block; | ||||
| import org.bukkit.block.BlockFace; | ||||
| import org.bukkit.block.BlockState; | ||||
| import org.bukkit.block.Sign; | ||||
| import org.bukkit.block.data.Waterlogged; | ||||
| import org.bukkit.command.PluginCommand; | ||||
| import org.bukkit.entity.ArmorStand; | ||||
| @@ -177,33 +175,6 @@ public class PlayerEventListener implements Listener { | ||||
|             Material.WRITABLE_BOOK, | ||||
|             Material.WRITTEN_BOOK | ||||
|     ); | ||||
|     private static final Set<String> DYES; | ||||
|     static { | ||||
|         Set<String> mutableDyes = new HashSet<>(Set.of( | ||||
|                 "WHITE_DYE", | ||||
|                 "LIGHT_GRAY_DYE", | ||||
|                 "GRAY_DYE", | ||||
|                 "BLACK_DYE", | ||||
|                 "BROWN_DYE", | ||||
|                 "RED_DYE", | ||||
|                 "ORANGE_DYE", | ||||
|                 "YELLOW_DYE", | ||||
|                 "LIME_DYE", | ||||
|                 "GREEN_DYE", | ||||
|                 "CYAN_DYE", | ||||
|                 "LIGHT_BLUE_DYE", | ||||
|                 "BLUE_DYE", | ||||
|                 "PURPLE_DYE", | ||||
|                 "MAGENTA_DYE", | ||||
|                 "PINK_DYE", | ||||
|                 "GLOW_INK_SAC" | ||||
|         )); | ||||
|         int[] version = PlotSquared.platform().serverVersion(); | ||||
|         if (version[1] >= 20 && version[2] >= 1) { | ||||
|             mutableDyes.add("HONEYCOMB"); | ||||
|         } | ||||
|         DYES = Set.copyOf(mutableDyes); | ||||
|     } | ||||
|     private final EventDispatcher eventDispatcher; | ||||
|     private final WorldEdit worldEdit; | ||||
|     private final PlotAreaManager plotAreaManager; | ||||
| @@ -236,38 +207,6 @@ public class PlayerEventListener implements Listener { | ||||
|         this.plotListener = plotListener; | ||||
|     } | ||||
|  | ||||
|     @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) | ||||
|     public void onPlayerDyeSign(PlayerInteractEvent event) { | ||||
|         ItemStack itemStack = event.getItem(); | ||||
|         if (itemStack == null) { | ||||
|             return; | ||||
|         } | ||||
|         Block block = event.getClickedBlock(); | ||||
|         if (block != null && block.getState() instanceof Sign) { | ||||
|             if (DYES.contains(itemStack.getType().toString())) { | ||||
|                 Location location = BukkitUtil.adapt(block.getLocation()); | ||||
|                 PlotArea area = location.getPlotArea(); | ||||
|                 if (area == null) { | ||||
|                     return; | ||||
|                 } | ||||
|                 Plot plot = location.getOwnedPlot(); | ||||
|                 if (plot == null) { | ||||
|                     if (PlotFlagUtil.isAreaRoadFlagsAndFlagEquals(area, EditSignFlag.class, false)) { | ||||
|                         event.setCancelled(true); | ||||
|                     } | ||||
|                     return; | ||||
|                 } | ||||
|                 if (plot.isAdded(event.getPlayer().getUniqueId())) { | ||||
|                     return; // allow for added players | ||||
|                 } | ||||
|                 if (!plot.getFlag(EditSignFlag.class)) { | ||||
|                     plot.debug(event.getPlayer().getName() + " could not color the sign because of edit-sign = false"); | ||||
|                     event.setCancelled(true); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @EventHandler(ignoreCancelled = true) | ||||
|     public void onEffect(@NonNull EntityPotionEffectEvent event) { | ||||
|         if (Settings.Enabled_Components.DISABLE_BEACON_EFFECT_OVERFLOW || | ||||
|   | ||||
| @@ -31,7 +31,7 @@ import org.bukkit.event.player.PlayerSignOpenEvent; | ||||
|  | ||||
| /** | ||||
|  * For events since 1.20.1 | ||||
|  * @since 7.2.1 | ||||
|  * @since TODO | ||||
|  */ | ||||
| public class PlayerEventListener1201 implements Listener { | ||||
|  | ||||
|   | ||||
| @@ -21,7 +21,6 @@ package com.plotsquared.bukkit.listener; | ||||
| import com.google.inject.Inject; | ||||
| import com.plotsquared.bukkit.BukkitPlatform; | ||||
| import com.plotsquared.bukkit.placeholder.MVdWPlaceholders; | ||||
| import com.plotsquared.bukkit.placeholder.MiniPlaceholders; | ||||
| import com.plotsquared.bukkit.util.BukkitEconHandler; | ||||
| import com.plotsquared.core.PlotSquared; | ||||
| import com.plotsquared.core.configuration.Settings; | ||||
| @@ -53,11 +52,6 @@ public class ServerListener implements Listener { | ||||
|             new MVdWPlaceholders(this.plugin, this.plugin.placeholderRegistry()); | ||||
|             ConsolePlayer.getConsole().sendMessage(TranslatableCaption.of("placeholder.hooked")); | ||||
|         } | ||||
|         if (Bukkit.getPluginManager().getPlugin("MiniPlaceholders") != null | ||||
|                 && Settings.Enabled_Components.USE_MINIPLACEHOLDERS) { | ||||
|             new MiniPlaceholders(this.plugin.placeholderRegistry()); | ||||
|             ConsolePlayer.getConsole().sendMessage(TranslatableCaption.of("placeholder.miniplaceholders.hooked")); | ||||
|         } | ||||
|         if (Settings.Enabled_Components.ECONOMY && Bukkit.getPluginManager().isPluginEnabled("Vault")) { | ||||
|             EconHandler econHandler = new BukkitEconHandler(); | ||||
|             try { | ||||
|   | ||||
| @@ -1,69 +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.bukkit.placeholder; | ||||
|  | ||||
| import com.google.common.eventbus.Subscribe; | ||||
| import com.plotsquared.bukkit.util.BukkitUtil; | ||||
| import com.plotsquared.core.PlotSquared; | ||||
| import com.plotsquared.core.player.ConsolePlayer; | ||||
| import com.plotsquared.core.player.PlotPlayer; | ||||
| import com.plotsquared.core.util.placeholders.Placeholder; | ||||
| import com.plotsquared.core.util.placeholders.PlaceholderRegistry; | ||||
| import io.github.miniplaceholders.api.Expansion; | ||||
| import io.github.miniplaceholders.api.utils.TagsUtils; | ||||
| import org.bukkit.entity.Player; | ||||
| import org.checkerframework.checker.nullness.qual.NonNull; | ||||
|  | ||||
| public final class MiniPlaceholders { | ||||
|  | ||||
|     private Expansion expansion = null; | ||||
|     private final PlaceholderRegistry registry; | ||||
|  | ||||
|     public MiniPlaceholders(final @NonNull PlaceholderRegistry registry) { | ||||
|         this.registry = registry; | ||||
|         this.createExpansion(); | ||||
|         PlotSquared.get().getEventDispatcher().registerListener(this); | ||||
|     } | ||||
|  | ||||
|     @Subscribe | ||||
|     public void onNewPlaceholder(final PlaceholderRegistry.@NonNull PlaceholderAddedEvent event) { | ||||
|         // We cannot register placeholders on the fly, so we have to replace the expansion. | ||||
|         this.createExpansion(); | ||||
|     } | ||||
|  | ||||
|     private synchronized void createExpansion() { | ||||
|         if (this.expansion != null && this.expansion.registered()) { | ||||
|             this.expansion.unregister(); | ||||
|         } | ||||
|         final Expansion.Builder builder = Expansion.builder("plotsquared"); | ||||
|         for (final Placeholder placeholder : this.registry.getPlaceholders()) { | ||||
|             builder.audiencePlaceholder(placeholder.getKey(), (audience, argumentQueue, context) -> { | ||||
|                 final PlotPlayer<?> plotPlayer; | ||||
|                 if (audience instanceof Player player) { | ||||
|                     plotPlayer = BukkitUtil.adapt(player); | ||||
|                 } else { | ||||
|                     plotPlayer = ConsolePlayer.getConsole(); | ||||
|                 } | ||||
|                 return TagsUtils.staticTag(placeholder.getValue(plotPlayer)); | ||||
|             }); | ||||
|         } | ||||
|         this.expansion = builder.build(); | ||||
|         this.expansion.register(); | ||||
|     } | ||||
| } | ||||
| @@ -47,13 +47,7 @@ public class TranslationUpdateManager { | ||||
|         String usedGrants = "usedGrants"; | ||||
|         String usedGrantsReplacement = "used_grants"; | ||||
|         String remainingGrants = "remainingGrants"; | ||||
|         String remainingGrantsReplacement = "remaining_grants"; | ||||
|         String minimumRadius = "minimumRadius"; | ||||
|         String minimumRadiusReplacement = "minimum_radius"; | ||||
|         String maximumMoves = "maximumMoves"; | ||||
|         String maximumMovesReplacement = "maximum_moves"; | ||||
|         String userMove = "userMove"; | ||||
|         String userMoveReplacement = "user_move"; | ||||
|         String rremainingGrantsReplacement = "remaining_grants"; | ||||
|  | ||||
|         try (Stream<Path> paths = Files.walk(Paths.get(PlotSquared.platform().getDirectory().toPath().resolve("lang").toUri()))) { | ||||
|             paths | ||||
| @@ -64,10 +58,7 @@ public class TranslationUpdateManager { | ||||
|                         replaceInFile(p, minHeight, minheightReplacement); | ||||
|                         replaceInFile(p, maxHeight, maxheightReplacement); | ||||
|                         replaceInFile(p, usedGrants, usedGrantsReplacement); | ||||
|                         replaceInFile(p, remainingGrants, remainingGrantsReplacement); | ||||
|                         replaceInFile(p, minimumRadius, minimumRadiusReplacement); | ||||
|                         replaceInFile(p, maximumMoves, maximumMovesReplacement); | ||||
|                         replaceInFile(p, userMove, userMoveReplacement); | ||||
|                         replaceInFile(p, remainingGrants, rremainingGrantsReplacement); | ||||
|                     }); | ||||
|         } | ||||
|     } | ||||
|   | ||||
| @@ -71,7 +71,7 @@ tasks { | ||||
|         opt.links("https://jd.advntr.dev/api/4.14.0/") | ||||
|         opt.links("https://jd.advntr.dev/text-minimessage/4.14.0/") | ||||
|         opt.links("https://google.github.io/guice/api-docs/" + libs.guice.get().versionConstraint.toString() + "/javadoc/") | ||||
|       //  opt.links("https://checkerframework.org/api/") | ||||
|         opt.links("https://checkerframework.org/api/") | ||||
|         opt.isLinkSource = true | ||||
|         opt.bottom(File("$rootDir/javadocfooter.html").readText()) | ||||
|         opt.isUse = true | ||||
|   | ||||
| @@ -256,11 +256,11 @@ public class Condense extends SubCommand { | ||||
|                 player.sendMessage(TranslatableCaption.of("condense.default_eval")); | ||||
|                 player.sendMessage( | ||||
|                         TranslatableCaption.of("condense.minimum_radius"), | ||||
|                         TagResolver.resolver("minimum_radius", Tag.inserting(Component.text(minimumRadius))) | ||||
|                         TagResolver.resolver("minimumRadius", Tag.inserting(Component.text(minimumRadius))) | ||||
|                 ); | ||||
|                 player.sendMessage( | ||||
|                         TranslatableCaption.of("condense.maximum_moved"), | ||||
|                         TagResolver.resolver("maximum_moves", Tag.inserting(Component.text(maxMove))) | ||||
|                         TagResolver.resolver("maxMove", Tag.inserting(Component.text(maxMove))) | ||||
|                 ); | ||||
|                 player.sendMessage(TranslatableCaption.of("condense.input_eval")); | ||||
|                 player.sendMessage( | ||||
| @@ -269,7 +269,7 @@ public class Condense extends SubCommand { | ||||
|                 ); | ||||
|                 player.sendMessage( | ||||
|                         TranslatableCaption.of("condense.estimated_moves"), | ||||
|                         TagResolver.resolver("user_move", Tag.inserting(Component.text(userMove))) | ||||
|                         TagResolver.resolver("userMove", Tag.inserting(Component.text(userMove))) | ||||
|                 ); | ||||
|                 player.sendMessage(TranslatableCaption.of("condense.eta")); | ||||
|                 player.sendMessage(TranslatableCaption.of("condense.radius_measured")); | ||||
|   | ||||
| @@ -94,7 +94,7 @@ public class Done extends SubCommand { | ||||
|                 TagResolver.resolver("plot", Tag.inserting(Component.text(plot.getId().toString()))) | ||||
|         ); | ||||
|         final Settings.Auto_Clear doneRequirements = Settings.AUTO_CLEAR.get("done"); | ||||
|         if (PlotSquared.platform().expireManager() == null || doneRequirements == null || player.hasPermission(Permission.PERMISSION_ADMIN_COMMAND_DONE)) { | ||||
|         if (PlotSquared.platform().expireManager() == null || doneRequirements == null) { | ||||
|             finish(plot, player, true); | ||||
|             plot.removeRunning(); | ||||
|         } else { | ||||
|   | ||||
| @@ -810,10 +810,6 @@ public class Settings extends Config { | ||||
|         ); | ||||
|         @Comment("Whether PlotSquared should hook into MvDWPlaceholderAPI or not") | ||||
|         public static boolean USE_MVDWAPI = true; | ||||
|  | ||||
|         @Comment("Whether PlotSquared should hook into MiniPlaceholders") | ||||
|         public static boolean USE_MINIPLACEHOLDERS = true; | ||||
|  | ||||
|         @Comment("Prevent cross plot beacon effects") | ||||
|         public static boolean DISABLE_BEACON_EFFECT_OVERFLOW = true; | ||||
|  | ||||
|   | ||||
| @@ -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 7.3.0 | ||||
|  */ | ||||
| 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 7.3.0 | ||||
|      */ | ||||
|     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 7.3.0 | ||||
|      */ | ||||
|     public @NonNegative int limit() { | ||||
|         return limit; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * The player for which the limit is queried. | ||||
|      * | ||||
|      * @return the player. | ||||
|      * @since 7.3.0 | ||||
|      */ | ||||
|     public @NonNull PlotPlayer<?> player() { | ||||
|         return player; | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -75,7 +75,7 @@ public class PlayerTeleportToPlotEvent extends PlotPlayerEvent implements Cancel | ||||
|      * Gets the currently applied {@link UnaryOperator<Location> transformer} or null, if none was set | ||||
|      * | ||||
|      * @return LocationTransformer | ||||
|      * @since 7.2.1 | ||||
|      * @since TODO | ||||
|      */ | ||||
|     public @Nullable UnaryOperator<Location> getLocationTransformer() { | ||||
|         return this.locationTransformer; | ||||
| @@ -86,7 +86,7 @@ public class PlayerTeleportToPlotEvent extends PlotPlayerEvent implements Cancel | ||||
|      * May be {@code null}, if any previous set transformations should be discarded. | ||||
|      * | ||||
|      * @param locationTransformer The new transformer | ||||
|      * @since 7.2.1 | ||||
|      * @since TODO | ||||
|      */ | ||||
|     public void setLocationTransformer(@Nullable UnaryOperator<Location> locationTransformer) { | ||||
|         this.locationTransformer = locationTransformer; | ||||
|   | ||||
| @@ -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) | ||||
|      */ | ||||
|     public int getAllowedPlots() { | ||||
|         final int calculatedLimit = hasPermissionRange("plots.plot", Settings.Limit.MAX_PLOTS); | ||||
|         return this.eventDispatcher.callPlayerPlotLimit(this, calculatedLimit).limit(); | ||||
|         return hasPermissionRange("plots.plot", Settings.Limit.MAX_PLOTS); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|   | ||||
| @@ -89,7 +89,6 @@ import com.plotsquared.core.plot.flag.implementations.PlayerInteractFlag; | ||||
| import com.plotsquared.core.plot.flag.implementations.PlotTitleFlag; | ||||
| import com.plotsquared.core.plot.flag.implementations.PreventCreativeCopyFlag; | ||||
| import com.plotsquared.core.plot.flag.implementations.PriceFlag; | ||||
| import com.plotsquared.core.plot.flag.implementations.ProjectileChangeBlockFlag; | ||||
| import com.plotsquared.core.plot.flag.implementations.ProjectilesFlag; | ||||
| import com.plotsquared.core.plot.flag.implementations.PveFlag; | ||||
| import com.plotsquared.core.plot.flag.implementations.PvpFlag; | ||||
| @@ -186,7 +185,6 @@ public final class GlobalFlagContainer extends FlagContainer { | ||||
|         this.addFlag(NoWorldeditFlag.NO_WORLDEDIT_FALSE); | ||||
|         this.addFlag(PlayerInteractFlag.PLAYER_INTERACT_FALSE); | ||||
|         this.addFlag(PreventCreativeCopyFlag.PREVENT_CREATIVE_COPY_FALSE); | ||||
|         this.addFlag(ProjectileChangeBlockFlag.PROJECTILE_CHANGE_BLOCK_FALSE); | ||||
|         this.addFlag(PveFlag.PVE_FALSE); | ||||
|         this.addFlag(PvpFlag.PVP_FALSE); | ||||
|         this.addFlag(RedstoneFlag.REDSTONE_TRUE); | ||||
|   | ||||
| @@ -23,7 +23,7 @@ import com.plotsquared.core.plot.flag.types.BooleanFlag; | ||||
| import org.checkerframework.checker.nullness.qual.NonNull; | ||||
|  | ||||
| /** | ||||
|  * @since 7.2.1 | ||||
|  * @since TODO | ||||
|  */ | ||||
| public class EditSignFlag extends BooleanFlag<EditSignFlag> { | ||||
|     public static final EditSignFlag EDIT_SIGN_TRUE = new EditSignFlag(true); | ||||
|   | ||||
| @@ -1,39 +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.plot.flag.implementations; | ||||
|  | ||||
| import com.plotsquared.core.configuration.caption.TranslatableCaption; | ||||
| import com.plotsquared.core.plot.flag.types.BooleanFlag; | ||||
| import org.checkerframework.checker.nullness.qual.NonNull; | ||||
|  | ||||
| public class ProjectileChangeBlockFlag extends BooleanFlag<ProjectileChangeBlockFlag> { | ||||
|  | ||||
|     public static final ProjectileChangeBlockFlag PROJECTILE_CHANGE_BLOCK_TRUE = new ProjectileChangeBlockFlag(true); | ||||
|     public static final ProjectileChangeBlockFlag PROJECTILE_CHANGE_BLOCK_FALSE = new ProjectileChangeBlockFlag(false); | ||||
|  | ||||
|     private ProjectileChangeBlockFlag(boolean value) { | ||||
|         super(value, TranslatableCaption.of("flags.flag_description_projectile_change_block")); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     protected ProjectileChangeBlockFlag flagOf(@NonNull Boolean value) { | ||||
|         return value ? PROJECTILE_CHANGE_BLOCK_TRUE : PROJECTILE_CHANGE_BLOCK_FALSE; | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -30,7 +30,6 @@ import com.plotsquared.core.events.PlayerEnterPlotEvent; | ||||
| import com.plotsquared.core.events.PlayerLeavePlotEvent; | ||||
| import com.plotsquared.core.events.PlayerPlotDeniedEvent; | ||||
| import com.plotsquared.core.events.PlayerPlotHelperEvent; | ||||
| import com.plotsquared.core.events.PlayerPlotLimitEvent; | ||||
| import com.plotsquared.core.events.PlayerPlotTrustedEvent; | ||||
| import com.plotsquared.core.events.PlayerTeleportToPlotEvent; | ||||
| import com.plotsquared.core.events.PlotAutoMergeEvent; | ||||
| @@ -309,12 +308,6 @@ public class EventDispatcher { | ||||
|         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) { | ||||
|         if (player == null) { | ||||
|             return; //possible future warning message to figure out where we are retrieving null | ||||
|   | ||||
| @@ -1,31 +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.util.query; | ||||
|  | ||||
| import com.plotsquared.core.plot.Plot; | ||||
| import org.checkerframework.checker.nullness.qual.NonNull; | ||||
|  | ||||
| class HasOwnerFilter implements PlotFilter { | ||||
|  | ||||
|     @Override | ||||
|     public boolean accepts(final @NonNull Plot plot) { | ||||
|         return plot.hasOwner(); | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -219,16 +219,6 @@ public final class PlotQuery implements Iterable<Plot> { | ||||
|         return this.addFilter(new OwnersIncludeFilter(owner.getUUID())); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Query only for plots that have an owner | ||||
|      * | ||||
|      * @return The query instance | ||||
|      * @since 7.2.1 | ||||
|      */ | ||||
|  | ||||
|     public @NonNull PlotQuery hasOwner() { | ||||
|         return this.addFilter(new HasOwnerFilter()); | ||||
|     } | ||||
|     /** | ||||
|      * Query for plots with a specific alias | ||||
|      * | ||||
|   | ||||
| @@ -190,7 +190,6 @@ | ||||
|   "core.prefix": "<dark_gray>[</dark_gray><gold>P2</gold><dark_gray>] </dark_gray>", | ||||
|   "core.enabled": "<prefix><gold><value> is now enabled.</gold>", | ||||
|   "placeholder.hooked": "<prefix><gold>PlotSquared hooked into MVdWPlaceholderAPI</gold>", | ||||
|   "placeholder.miniplaceholders.hooked": "<prefix><gold>PlotSquared hooked into MiniPlaceholders</gold>", | ||||
|   "placeholder.nan": "Not a number", | ||||
|   "reload.reloaded_configs": "<prefix><gold>Translations and world settings have been reloaded successfully.</gold>", | ||||
|   "reload.reload_failed": "<prefix><red>Failed to reload file configurations.</red>", | ||||
| @@ -249,11 +248,11 @@ | ||||
|   "condense.skipping": "<prefix><red>Skipping complex plot: </red><gold><plot></gold><red>.</red>", | ||||
|   "condense.task_stopped": "<prefix><gold>Task already stopped.</gold>", | ||||
|   "condense.default_eval": "<dark_gray><strikethrough>=== <reset> <gold>DEFAULT EVAL </gold><dark_gray><strikethrough>===</dark_gray>", | ||||
|   "condense.minimum_radius": "<gold>Minimum radius: </gold><gray><minimum_radius></gray>", | ||||
|   "condense.maximum_moved": "<gold>Maximum moved: </gold><gray><maximum_moves></gray>", | ||||
|   "condense.minimum_radius": "<gold>Minimum radius: </gold><gray><minimumRadius></gray>", | ||||
|   "condense.maximum_moved": "<gold>Maximum moved: </gold><gray><maximumMoves></gray>", | ||||
|   "condense.input_eval": "<dark_gray><strikethrough>=== <reset> <gold>INPUT EVAL </gold><dark_gray><strikethrough>===</dark_gray>", | ||||
|   "condense.input_radius": "<gold>Input radius: </gold><gray><radius></gray>", | ||||
|   "condense.estimated_moves": "<gold>Estimated moves: </gold><gray><user_move></gray>", | ||||
|   "condense.estimated_moves": "<gold>Estimated moves: </gold><gray><userMove></gray>", | ||||
|   "condense.eta": "<prefix><gold>Estimated time: No idea, times will drastically change based on the system performance and load.</gold>", | ||||
|   "condense.radius_measured": "<yellow> - Radius is measured in plot width.</yellow>", | ||||
|   "database.starting_conversion": "<prefix><gold>Starting...</gold>", | ||||
| @@ -590,7 +589,6 @@ | ||||
|   "flags.flag_description_place": "<gray>Define a list of materials players should be able to place in the plot.</gray>", | ||||
|   "flags.flag_description_player_interact": "<gray>Set to `true` to allow guests to interact with players in the plot.</gray>", | ||||
|   "flags.flag_description_price": "<gray>Set a price for a plot. Must be a positive decimal number.</gray>", | ||||
|   "flags.flag_description_projectile_change_block": "<gray>Set to `true` to allow projectiles to change blocks (tnt, etc.) on the plot.</gray>", | ||||
|   "flags.flag_description_pve": "<gray>Set to `true` to enable PVE inside the plot.</gray>", | ||||
|   "flags.flag_description_pvp": "<gray>Set to `true` to enable PVP inside the plot.</gray>", | ||||
|   "flags.flag_description_redstone": "<gray>Set to `false` to disable redstone in the plot.</gray>", | ||||
|   | ||||
| @@ -22,7 +22,7 @@ plugins { | ||||
| } | ||||
|  | ||||
| group = "com.intellectualsites.plotsquared" | ||||
| version = "7.3.2-SNAPSHOT" | ||||
| version = "7.2.1-SNAPSHOT" | ||||
|  | ||||
| if (!File("$rootDir/.git").exists()) { | ||||
|     logger.lifecycle(""" | ||||
| @@ -225,7 +225,7 @@ tasks.getByName<Jar>("jar") { | ||||
|     enabled = false | ||||
| } | ||||
|  | ||||
| val supportedVersions = listOf("1.16.5", "1.17.1", "1.18.2", "1.19.4", "1.20.1", "1.20.4") | ||||
| val supportedVersions = listOf("1.16.5", "1.17.1", "1.18.2", "1.19.4", "1.20.1", "1.20.2") | ||||
| tasks { | ||||
|     register("cacheLatestFaweArtifact") { | ||||
|         val lastSuccessfulBuildUrl = uri("https://ci.athion.net/job/FastAsyncWorldEdit/lastSuccessfulBuild/api/json").toURL() | ||||
|   | ||||
| @@ -2,23 +2,22 @@ | ||||
| # Platform expectations | ||||
| paper = "1.20.2-R0.1-SNAPSHOT" | ||||
| guice = "7.0.0" | ||||
| spotbugs = "4.8.3" | ||||
| checkerqual = "3.42.0" | ||||
| spotbugs = "4.8.2" | ||||
| checkerqual = "3.40.0" | ||||
| gson = "2.10" | ||||
| guava = "31.1-jre" | ||||
| snakeyaml = "2.0" | ||||
| adventure = "4.15.0" | ||||
| adventure-bukkit = "4.3.2" | ||||
| adventure = "4.14.0" | ||||
| adventure-bukkit = "4.3.1" | ||||
| log4j = "2.19.0" | ||||
|  | ||||
| # Plugins | ||||
| worldedit = "7.2.18" | ||||
| fawe = "2.8.3" | ||||
| worldedit = "7.2.17" | ||||
| fawe = "2.8.2" | ||||
| placeholderapi = "2.11.5" | ||||
| luckperms = "5.4" | ||||
| essentialsx = "2.20.1" | ||||
| mvdwapi = "3.1.1" | ||||
| miniplaceholders = "2.2.3" | ||||
|  | ||||
| # Third party | ||||
| prtree = "2.0.1" | ||||
| @@ -36,7 +35,7 @@ serverlib = "2.3.4" | ||||
| # Gradle plugins | ||||
| shadow = "8.1.1" | ||||
| grgit = "4.1.1" | ||||
| spotless = "6.23.3" | ||||
| spotless = "6.23.2" | ||||
| nexus = "1.3.0" | ||||
| runPaper = "2.2.2" | ||||
|  | ||||
| @@ -69,7 +68,6 @@ prtree = { group = "com.intellectualsites.prtree", name = "PRTree", version.ref | ||||
| aopalliance = { group = "aopalliance", name = "aopalliance", version.ref = "aopalliance" } | ||||
| cloudServices = { group = "cloud.commandframework", name = "cloud-services", version.ref = "cloud-services" } | ||||
| mvdwapi = { group = "com.intellectualsites.mvdwplaceholderapi", name = "MVdWPlaceholderAPI", version.ref = "mvdwapi" } | ||||
| miniplaceholders = { group = "io.github.miniplaceholders", name = "miniplaceholders-api", version.ref = "miniplaceholders" } | ||||
| squirrelid = { group = "org.enginehub", name = "squirrelid", version.ref = "squirrelid" } | ||||
| arkitektonika = { group = "com.intellectualsites.arkitektonika", name = "Arkitektonika-Client", version.ref = "arkitektonika" } | ||||
| paster = { group = "com.intellectualsites.paster", name = "Paster", version.ref = "paster" } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user