mirror of
				https://github.com/IntellectualSites/PlotSquared.git
				synced 2025-10-31 17:43:44 +01:00 
			
		
		
		
	Compare commits
	
		
			1 Commits
		
	
	
		
			debug/home
			...
			fix/v6/com
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 42f0b70e85 | 
| @@ -24,7 +24,7 @@ dependencies { | |||||||
|     implementation("org.bstats:bstats-bukkit") |     implementation("org.bstats:bstats-bukkit") | ||||||
|  |  | ||||||
|     // Paper |     // Paper | ||||||
|     compileOnly("io.papermc.paper:paper-api") |     compileOnly(libs.paper) | ||||||
|     implementation("io.papermc:paperlib") |     implementation("io.papermc:paperlib") | ||||||
|  |  | ||||||
|     // Plugins |     // Plugins | ||||||
|   | |||||||
| @@ -866,8 +866,10 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl | |||||||
|                                         com.plotsquared.core.location.Location pLoc = BukkitUtil.adapt(entity.getLocation()); |                                         com.plotsquared.core.location.Location pLoc = BukkitUtil.adapt(entity.getLocation()); | ||||||
|                                         PlotArea area = pLoc.getPlotArea(); |                                         PlotArea area = pLoc.getPlotArea(); | ||||||
|                                         if (area != null) { |                                         if (area != null) { | ||||||
|                                             Plot currentPlot = area.getPlotAbs(pLoc); |                                             PlotId currentPlotId = area.getPlotAbs(pLoc).getId(); | ||||||
|                                             if (currentPlot == null || !originalPlotId.equals(currentPlot.getId())) { |                                             if (!originalPlotId.equals(currentPlotId) && (currentPlotId == null || !area.getPlot( | ||||||
|  |                                                             originalPlotId) | ||||||
|  |                                                     .equals(area.getPlot(currentPlotId)))) { | ||||||
|                                                 if (entity.hasMetadata("ps-tmp-teleport")) { |                                                 if (entity.hasMetadata("ps-tmp-teleport")) { | ||||||
|                                                     continue; |                                                     continue; | ||||||
|                                                 } |                                                 } | ||||||
| @@ -881,11 +883,11 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl | |||||||
|                                     com.plotsquared.core.location.Location pLoc = BukkitUtil.adapt(entity.getLocation()); |                                     com.plotsquared.core.location.Location pLoc = BukkitUtil.adapt(entity.getLocation()); | ||||||
|                                     PlotArea area = pLoc.getPlotArea(); |                                     PlotArea area = pLoc.getPlotArea(); | ||||||
|                                     if (area != null) { |                                     if (area != null) { | ||||||
|                                         Plot currentPlot = area.getPlotAbs(pLoc); |                                         PlotId currentPlotId = area.getPlotAbs(pLoc).getId(); | ||||||
|                                         if (currentPlot != null) { |                                         if (currentPlotId != null) { | ||||||
|                                             entity.setMetadata( |                                             entity.setMetadata( | ||||||
|                                                     "shulkerPlot", |                                                     "shulkerPlot", | ||||||
|                                                     new FixedMetadataValue((Plugin) PlotSquared.platform(), currentPlot.getId()) |                                                     new FixedMetadataValue((Plugin) PlotSquared.platform(), currentPlotId) | ||||||
|                                             ); |                                             ); | ||||||
|                                         } |                                         } | ||||||
|                                     } |                                     } | ||||||
|   | |||||||
| @@ -33,6 +33,7 @@ import org.bukkit.Chunk; | |||||||
| import org.bukkit.World; | import org.bukkit.World; | ||||||
| import org.bukkit.generator.BlockPopulator; | import org.bukkit.generator.BlockPopulator; | ||||||
| import org.checkerframework.checker.nullness.qual.NonNull; | import org.checkerframework.checker.nullness.qual.NonNull; | ||||||
|  | import org.jetbrains.annotations.NotNull; | ||||||
|  |  | ||||||
| import java.util.Random; | import java.util.Random; | ||||||
|  |  | ||||||
| @@ -50,7 +51,7 @@ final class LegacyBlockStatePopulator extends BlockPopulator { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public void populate(@NonNull final World world, @NonNull final Random random, @NonNull final Chunk source) { |     public void populate(@NotNull final World world, @NotNull final Random random, @NotNull final Chunk source) { | ||||||
|         int chunkMinX = source.getX() << 4; |         int chunkMinX = source.getX() << 4; | ||||||
|         int chunkMinZ = source.getZ() << 4; |         int chunkMinZ = source.getZ() << 4; | ||||||
|         PlotArea area = Location.at(world.getName(), chunkMinX, 0, chunkMinZ).getPlotArea(); |         PlotArea area = Location.at(world.getName(), chunkMinX, 0, chunkMinZ).getPlotArea(); | ||||||
|   | |||||||
| @@ -56,7 +56,6 @@ import com.plotsquared.core.plot.flag.types.BlockTypeWrapper; | |||||||
| import com.plotsquared.core.plot.flag.types.BooleanFlag; | import com.plotsquared.core.plot.flag.types.BooleanFlag; | ||||||
| import com.plotsquared.core.plot.world.PlotAreaManager; | import com.plotsquared.core.plot.world.PlotAreaManager; | ||||||
| import com.plotsquared.core.util.Permissions; | import com.plotsquared.core.util.Permissions; | ||||||
| import com.plotsquared.core.util.PlotFlagUtil; |  | ||||||
| import com.plotsquared.core.util.task.TaskManager; | import com.plotsquared.core.util.task.TaskManager; | ||||||
| import com.plotsquared.core.util.task.TaskTime; | import com.plotsquared.core.util.task.TaskTime; | ||||||
| import com.sk89q.worldedit.WorldEdit; | import com.sk89q.worldedit.WorldEdit; | ||||||
| @@ -167,7 +166,7 @@ public class BlockEventListener implements Listener { | |||||||
|         } |         } | ||||||
|         Plot plot = location.getOwnedPlot(); |         Plot plot = location.getOwnedPlot(); | ||||||
|         if (plot == null) { |         if (plot == null) { | ||||||
|             if (PlotFlagUtil.isAreaRoadFlagsAndFlagEquals(area, RedstoneFlag.class, false)) { |             if (area.isRoadFlags() && !area.getRoadFlag(RedstoneFlag.class)) { | ||||||
|                 event.setNewCurrent(0); |                 event.setNewCurrent(0); | ||||||
|             } |             } | ||||||
|             return; |             return; | ||||||
| @@ -1085,10 +1084,7 @@ public class BlockEventListener implements Listener { | |||||||
|                 return; |                 return; | ||||||
|             } |             } | ||||||
|             if (plot == null) { |             if (plot == null) { | ||||||
|                 if (!PlotFlagUtil.isAreaRoadFlagsAndFlagEquals(area, BlockIgnitionFlag.class, true) && !Permissions.hasPermission( |                 if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_ROAD)) { | ||||||
|                         pp, |  | ||||||
|                         Permission.PERMISSION_ADMIN_BUILD_ROAD |  | ||||||
|                 )) { |  | ||||||
|                     pp.sendMessage( |                     pp.sendMessage( | ||||||
|                             TranslatableCaption.of("permission.no_permission_event"), |                             TranslatableCaption.of("permission.no_permission_event"), | ||||||
|                             Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_ROAD)) |                             Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_ROAD)) | ||||||
| @@ -1096,10 +1092,7 @@ public class BlockEventListener implements Listener { | |||||||
|                     event.setCancelled(true); |                     event.setCancelled(true); | ||||||
|                 } |                 } | ||||||
|             } else if (!plot.hasOwner()) { |             } else if (!plot.hasOwner()) { | ||||||
|                 if (!PlotFlagUtil.isAreaRoadFlagsAndFlagEquals(area, BlockIgnitionFlag.class, true) && !Permissions.hasPermission( |                 if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_UNOWNED)) { | ||||||
|                         pp, |  | ||||||
|                         Permission.PERMISSION_ADMIN_BUILD_UNOWNED |  | ||||||
|                 )) { |  | ||||||
|                     pp.sendMessage( |                     pp.sendMessage( | ||||||
|                             TranslatableCaption.of("permission.no_permission_event"), |                             TranslatableCaption.of("permission.no_permission_event"), | ||||||
|                             Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_UNOWNED)) |                             Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_UNOWNED)) | ||||||
|   | |||||||
| @@ -26,7 +26,6 @@ import com.plotsquared.core.plot.Plot; | |||||||
| import com.plotsquared.core.plot.PlotArea; | import com.plotsquared.core.plot.PlotArea; | ||||||
| import com.plotsquared.core.plot.flag.implementations.CopperOxideFlag; | import com.plotsquared.core.plot.flag.implementations.CopperOxideFlag; | ||||||
| import com.plotsquared.core.plot.flag.implementations.MiscInteractFlag; | import com.plotsquared.core.plot.flag.implementations.MiscInteractFlag; | ||||||
| import com.plotsquared.core.util.PlotFlagUtil; |  | ||||||
| import org.bukkit.Material; | import org.bukkit.Material; | ||||||
| import org.bukkit.block.Block; | import org.bukkit.block.Block; | ||||||
| import org.bukkit.entity.Entity; | import org.bukkit.entity.Entity; | ||||||
| @@ -92,8 +91,7 @@ public class BlockEventListener117 implements Listener { | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         Plot plot = location.getOwnedPlot(); |         Plot plot = location.getOwnedPlot(); | ||||||
|         if (plot == null && !PlotFlagUtil.isAreaRoadFlagsAndFlagEquals(area, MiscInteractFlag.class, true) || plot != null && !plot.getFlag( |         if (plot == null || !plot.getFlag(MiscInteractFlag.class)) { | ||||||
|                 MiscInteractFlag.class)) { |  | ||||||
|             if (plotPlayer != null) { |             if (plotPlayer != null) { | ||||||
|                 if (plot != null) { |                 if (plot != null) { | ||||||
|                     if (!plot.isAdded(plotPlayer.getUUID())) { |                     if (!plot.isAdded(plotPlayer.getUUID())) { | ||||||
| @@ -106,12 +104,6 @@ public class BlockEventListener117 implements Listener { | |||||||
|             if (entity instanceof Item item) { |             if (entity instanceof Item item) { | ||||||
|                 UUID itemThrower = item.getThrower(); |                 UUID itemThrower = item.getThrower(); | ||||||
|                 if (plot != null) { |                 if (plot != null) { | ||||||
|                     if (itemThrower == null && (itemThrower = item.getOwner()) == null) { |  | ||||||
|                         plot.debug( |  | ||||||
|                                 "A thrown item couldn't trigger sculk sensors because misc-interact = false and the item's owner could not be resolved."); |  | ||||||
|                         event.setCancelled(true); |  | ||||||
|                         return; |  | ||||||
|                     } |  | ||||||
|                     if (!plot.isAdded(itemThrower)) { |                     if (!plot.isAdded(itemThrower)) { | ||||||
|                         if (!plot.isAdded(itemThrower)) { |                         if (!plot.isAdded(itemThrower)) { | ||||||
|                             plot.debug("A thrown item couldn't trigger sculk sensors because misc-interact = false"); |                             plot.debug("A thrown item couldn't trigger sculk sensors because misc-interact = false"); | ||||||
|   | |||||||
| @@ -38,7 +38,6 @@ import com.plotsquared.core.plot.flag.implementations.InvincibleFlag; | |||||||
| import com.plotsquared.core.plot.world.PlotAreaManager; | import com.plotsquared.core.plot.world.PlotAreaManager; | ||||||
| import com.plotsquared.core.util.EventDispatcher; | import com.plotsquared.core.util.EventDispatcher; | ||||||
| import com.plotsquared.core.util.Permissions; | import com.plotsquared.core.util.Permissions; | ||||||
| import com.plotsquared.core.util.PlotFlagUtil; |  | ||||||
| import com.sk89q.worldedit.bukkit.BukkitAdapter; | import com.sk89q.worldedit.bukkit.BukkitAdapter; | ||||||
| import com.sk89q.worldedit.world.block.BlockType; | import com.sk89q.worldedit.world.block.BlockType; | ||||||
| import org.bukkit.Material; | import org.bukkit.Material; | ||||||
| @@ -262,7 +261,7 @@ public class EntityEventListener implements Listener { | |||||||
|         } |         } | ||||||
|         Plot plot = location.getOwnedPlot(); |         Plot plot = location.getOwnedPlot(); | ||||||
|         if (plot == null) { |         if (plot == null) { | ||||||
|             if (PlotFlagUtil.isAreaRoadFlagsAndFlagEquals(area, InvincibleFlag.class, true)) { |             if (area.isRoadFlags() && area.getRoadFlag(InvincibleFlag.class)) { | ||||||
|                 event.setCancelled(true); |                 event.setCancelled(true); | ||||||
|             } |             } | ||||||
|             return; |             return; | ||||||
|   | |||||||
| @@ -44,7 +44,6 @@ import com.plotsquared.core.plot.flag.implementations.ProjectilesFlag; | |||||||
| import com.plotsquared.core.plot.flag.types.BooleanFlag; | import com.plotsquared.core.plot.flag.types.BooleanFlag; | ||||||
| import com.plotsquared.core.plot.world.PlotAreaManager; | import com.plotsquared.core.plot.world.PlotAreaManager; | ||||||
| import com.plotsquared.core.util.Permissions; | import com.plotsquared.core.util.Permissions; | ||||||
| import com.plotsquared.core.util.PlotFlagUtil; |  | ||||||
| import net.kyori.adventure.text.minimessage.Template; | import net.kyori.adventure.text.minimessage.Template; | ||||||
| import org.bukkit.Chunk; | import org.bukkit.Chunk; | ||||||
| import org.bukkit.block.Block; | import org.bukkit.block.Block; | ||||||
| @@ -327,18 +326,14 @@ public class PaperListener implements Listener { | |||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|         Location location = BukkitUtil.adapt(entity.getLocation()); |         Location location = BukkitUtil.adapt(entity.getLocation()); | ||||||
|         PlotArea area = location.getPlotArea(); |         if (!this.plotAreaManager.hasPlotArea(location.getWorldName())) { | ||||||
|         if (area == null) { |  | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|         PlotPlayer<Player> pp = BukkitUtil.adapt((Player) shooter); |         PlotPlayer<Player> pp = BukkitUtil.adapt((Player) shooter); | ||||||
|         Plot plot = location.getOwnedPlot(); |         Plot plot = location.getOwnedPlot(); | ||||||
|  |  | ||||||
|         if (plot == null) { |         if (plot == null) { | ||||||
|             if (!PlotFlagUtil.isAreaRoadFlagsAndFlagEquals(area, ProjectilesFlag.class, true) && !Permissions.hasPermission( |             if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_PROJECTILE_ROAD)) { | ||||||
|                     pp, |  | ||||||
|                     Permission.PERMISSION_ADMIN_PROJECTILE_ROAD |  | ||||||
|             )) { |  | ||||||
|                 pp.sendMessage( |                 pp.sendMessage( | ||||||
|                         TranslatableCaption.of("permission.no_permission_event"), |                         TranslatableCaption.of("permission.no_permission_event"), | ||||||
|                         Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_PROJECTILE_ROAD)) |                         Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_PROJECTILE_ROAD)) | ||||||
|   | |||||||
| @@ -48,10 +48,6 @@ import org.bukkit.event.EventHandler; | |||||||
| import org.bukkit.event.block.BlockPlaceEvent; | import org.bukkit.event.block.BlockPlaceEvent; | ||||||
| import org.checkerframework.checker.nullness.qual.NonNull; | import org.checkerframework.checker.nullness.qual.NonNull; | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * @deprecated P2 effectively no longer supports 1.13 |  | ||||||
|  */ |  | ||||||
| @Deprecated(forRemoval = true, since = "6.10.4") |  | ||||||
| public class PaperListener113 extends PaperListener { | public class PaperListener113 extends PaperListener { | ||||||
|  |  | ||||||
|     @Inject |     @Inject | ||||||
|   | |||||||
| @@ -68,7 +68,6 @@ import com.plotsquared.core.plot.world.PlotAreaManager; | |||||||
| import com.plotsquared.core.util.EventDispatcher; | import com.plotsquared.core.util.EventDispatcher; | ||||||
| import com.plotsquared.core.util.MathMan; | import com.plotsquared.core.util.MathMan; | ||||||
| import com.plotsquared.core.util.Permissions; | import com.plotsquared.core.util.Permissions; | ||||||
| import com.plotsquared.core.util.PlotFlagUtil; |  | ||||||
| import com.plotsquared.core.util.PremiumVerification; | import com.plotsquared.core.util.PremiumVerification; | ||||||
| import com.plotsquared.core.util.entity.EntityCategories; | import com.plotsquared.core.util.entity.EntityCategories; | ||||||
| import com.plotsquared.core.util.task.TaskManager; | import com.plotsquared.core.util.task.TaskManager; | ||||||
| @@ -890,7 +889,8 @@ public class PlayerEventListener implements Listener { | |||||||
|                 } |                 } | ||||||
|             } else { |             } else { | ||||||
|                 PlotArea area = pp.getPlotAreaAbs(); |                 PlotArea area = pp.getPlotAreaAbs(); | ||||||
|                 if (area != null && PlotFlagUtil.isAreaRoadFlagsAndFlagEquals(area, PreventCreativeCopyFlag.class, true)) { |                 if (area != null && area.isRoadFlags() && area | ||||||
|  |                         .getRoadFlag(PreventCreativeCopyFlag.class)) { | ||||||
|                     final ItemStack newStack = |                     final ItemStack newStack = | ||||||
|                             new ItemStack(newItem.getType(), newItem.getAmount()); |                             new ItemStack(newItem.getType(), newItem.getAmount()); | ||||||
|                     event.setCursor(newStack); |                     event.setCursor(newStack); | ||||||
| @@ -998,10 +998,8 @@ public class PlayerEventListener implements Listener { | |||||||
|         Plot plot = location.getPlotAbs(); |         Plot plot = location.getPlotAbs(); | ||||||
|         BukkitPlayer pp = BukkitUtil.adapt(e.getPlayer()); |         BukkitPlayer pp = BukkitUtil.adapt(e.getPlayer()); | ||||||
|         if (plot == null) { |         if (plot == null) { | ||||||
|             if (!PlotFlagUtil.isAreaRoadFlagsAndFlagEquals(area, MiscInteractFlag.class, true) && !Permissions.hasPermission( |             if (!area.isRoadFlags() && !area.getRoadFlag(MiscInteractFlag.class) && !Permissions | ||||||
|                     pp, |                     .hasPermission(pp, Permission.PERMISSION_ADMIN_INTERACT_ROAD)) { | ||||||
|                     Permission.PERMISSION_ADMIN_INTERACT_ROAD |  | ||||||
|             )) { |  | ||||||
|                 pp.sendMessage( |                 pp.sendMessage( | ||||||
|                         TranslatableCaption.of("permission.no_permission_event"), |                         TranslatableCaption.of("permission.no_permission_event"), | ||||||
|                         Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_INTERACT_ROAD)) |                         Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_INTERACT_ROAD)) | ||||||
| @@ -1011,7 +1009,9 @@ public class PlayerEventListener implements Listener { | |||||||
|         } else { |         } else { | ||||||
|             if (Settings.Done.RESTRICT_BUILDING && DoneFlag.isDone(plot)) { |             if (Settings.Done.RESTRICT_BUILDING && DoneFlag.isDone(plot)) { | ||||||
|                 if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_OTHER)) { |                 if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_OTHER)) { | ||||||
|                     pp.sendMessage(TranslatableCaption.of("done.building_restricted")); |                     pp.sendMessage( | ||||||
|  |                             TranslatableCaption.of("done.building_restricted") | ||||||
|  |                     ); | ||||||
|                     e.setCancelled(true); |                     e.setCancelled(true); | ||||||
|                     return; |                     return; | ||||||
|                 } |                 } | ||||||
| @@ -1594,10 +1594,7 @@ public class PlayerEventListener implements Listener { | |||||||
|             BukkitPlayer pp = BukkitUtil.adapt(p); |             BukkitPlayer pp = BukkitUtil.adapt(p); | ||||||
|             Plot plot = area.getPlot(location); |             Plot plot = area.getPlot(location); | ||||||
|             if (plot == null) { |             if (plot == null) { | ||||||
|                 if (!PlotFlagUtil.isAreaRoadFlagsAndFlagEquals(area, VehicleBreakFlag.class, true) && !Permissions.hasPermission( |                 if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_DESTROY_VEHICLE_ROAD)) { | ||||||
|                         pp, |  | ||||||
|                         Permission.PERMISSION_ADMIN_DESTROY_VEHICLE_ROAD |  | ||||||
|                 )) { |  | ||||||
|                     pp.sendMessage( |                     pp.sendMessage( | ||||||
|                             TranslatableCaption.of("permission.no_permission_event"), |                             TranslatableCaption.of("permission.no_permission_event"), | ||||||
|                             Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_VEHICLE_ROAD)) |                             Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_VEHICLE_ROAD)) | ||||||
| @@ -1645,7 +1642,7 @@ public class PlayerEventListener implements Listener { | |||||||
|         } |         } | ||||||
|         Plot plot = location.getOwnedPlot(); |         Plot plot = location.getOwnedPlot(); | ||||||
|         if (plot == null) { |         if (plot == null) { | ||||||
|             if (PlotFlagUtil.isAreaRoadFlagsAndFlagEquals(area, ItemDropFlag.class, false)) { |             if (area.isRoadFlags() && !area.getRoadFlag(ItemDropFlag.class)) { | ||||||
|                 event.setCancelled(true); |                 event.setCancelled(true); | ||||||
|             } |             } | ||||||
|             return; |             return; | ||||||
| @@ -1671,7 +1668,7 @@ public class PlayerEventListener implements Listener { | |||||||
|             } |             } | ||||||
|             Plot plot = location.getOwnedPlot(); |             Plot plot = location.getOwnedPlot(); | ||||||
|             if (plot == null) { |             if (plot == null) { | ||||||
|                 if (PlotFlagUtil.isAreaRoadFlagsAndFlagEquals(area, DropProtectionFlag.class, true)) { |                 if (area.isRoadFlags() && area.getRoadFlag(DropProtectionFlag.class)) { | ||||||
|                     event.setCancelled(true); |                     event.setCancelled(true); | ||||||
|                 } |                 } | ||||||
|                 return; |                 return; | ||||||
| @@ -1693,17 +1690,19 @@ public class PlayerEventListener implements Listener { | |||||||
|         } |         } | ||||||
|         Plot plot = location.getOwnedPlot(); |         Plot plot = location.getOwnedPlot(); | ||||||
|         if (plot == null) { |         if (plot == null) { | ||||||
|             if (PlotFlagUtil.isAreaRoadFlagsAndFlagEquals(area, KeepInventoryFlag.class, true)) { |             if (area.isRoadFlags() && area.getRoadFlag(KeepInventoryFlag.class)) { | ||||||
|                 event.setCancelled(true); |                 event.setCancelled(true); | ||||||
|             } |             } | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|  |         if (plot.getFlag(KeepInventoryFlag.class)) { | ||||||
|             if (plot.getFlag(KeepInventoryFlag.class)) { |             if (plot.getFlag(KeepInventoryFlag.class)) { | ||||||
|                 plot.debug(event.getEntity().getName() + " kept their inventory because of keep-inventory = true"); |                 plot.debug(event.getEntity().getName() + " kept their inventory because of keep-inventory = true"); | ||||||
|                 event.getDrops().clear(); |                 event.getDrops().clear(); | ||||||
|                 event.setKeepInventory(true); |                 event.setKeepInventory(true); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|     @SuppressWarnings("deprecation") // #getLocate is needed for Spigot compatibility |     @SuppressWarnings("deprecation") // #getLocate is needed for Spigot compatibility | ||||||
|     @EventHandler |     @EventHandler | ||||||
| @@ -1726,16 +1725,18 @@ public class PlayerEventListener implements Listener { | |||||||
|         } |         } | ||||||
|         Plot plot = location.getOwnedPlot(); |         Plot plot = location.getOwnedPlot(); | ||||||
|         if (plot == null) { |         if (plot == null) { | ||||||
|             if (PlotFlagUtil.isAreaRoadFlagsAndFlagEquals(area, DenyPortalTravelFlag.class, true)) { |             if (area.isRoadFlags() && area.getRoadFlag(DenyPortalTravelFlag.class)) { | ||||||
|                 event.setCancelled(true); |                 event.setCancelled(true); | ||||||
|             } |             } | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|  |         if (plot.getFlag(DenyPortalTravelFlag.class)) { | ||||||
|             if (plot.getFlag(DenyPortalTravelFlag.class)) { |             if (plot.getFlag(DenyPortalTravelFlag.class)) { | ||||||
|                 plot.debug(event.getPlayer().getName() + " did not travel thru a portal because of deny-portal-travel = true"); |                 plot.debug(event.getPlayer().getName() + " did not travel thru a portal because of deny-portal-travel = true"); | ||||||
|                 event.setCancelled(true); |                 event.setCancelled(true); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|     @EventHandler |     @EventHandler | ||||||
|     public void onPortalCreation(PortalCreateEvent event) { |     public void onPortalCreation(PortalCreateEvent event) { | ||||||
| @@ -1771,7 +1772,7 @@ public class PlayerEventListener implements Listener { | |||||||
|             } |             } | ||||||
|             Plot plot = location.getOwnedPlot(); |             Plot plot = location.getOwnedPlot(); | ||||||
|             if (plot == null) { |             if (plot == null) { | ||||||
|                 if (PlotFlagUtil.isAreaRoadFlagsAndFlagEquals(area, DenyPortalsFlag.class, true)) { |                 if (area.isRoadFlags() && area.getRoadFlag(DenyPortalsFlag.class)) { | ||||||
|                     event.setCancelled(true); |                     event.setCancelled(true); | ||||||
|                     return; |                     return; | ||||||
|                 } |                 } | ||||||
| @@ -1800,15 +1801,17 @@ public class PlayerEventListener implements Listener { | |||||||
|         } |         } | ||||||
|         Plot plot = location.getOwnedPlot(); |         Plot plot = location.getOwnedPlot(); | ||||||
|         if (plot == null) { |         if (plot == null) { | ||||||
|             if (PlotFlagUtil.isAreaRoadFlagsAndFlagEquals(area, LecternReadBookFlag.class, true)) { |             if (area.isRoadFlags() && area.getRoadFlag(LecternReadBookFlag.class)) { | ||||||
|                 event.setCancelled(true); |                 event.setCancelled(true); | ||||||
|             } |             } | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|  |         if (plot.getFlag(LecternReadBookFlag.class)) { | ||||||
|             if (plot.getFlag(LecternReadBookFlag.class)) { |             if (plot.getFlag(LecternReadBookFlag.class)) { | ||||||
|                 plot.debug(event.getPlayer().getName() + " could not take the book because of lectern-read-book = true"); |                 plot.debug(event.getPlayer().getName() + " could not take the book because of lectern-read-book = true"); | ||||||
|                 event.setCancelled(true); |                 event.setCancelled(true); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -31,7 +31,6 @@ import com.plotsquared.core.plot.PlotHandler; | |||||||
| import com.plotsquared.core.plot.flag.implementations.ProjectilesFlag; | import com.plotsquared.core.plot.flag.implementations.ProjectilesFlag; | ||||||
| import com.plotsquared.core.plot.world.PlotAreaManager; | import com.plotsquared.core.plot.world.PlotAreaManager; | ||||||
| import com.plotsquared.core.util.Permissions; | import com.plotsquared.core.util.Permissions; | ||||||
| import com.plotsquared.core.util.PlotFlagUtil; |  | ||||||
| import net.kyori.adventure.text.minimessage.Template; | import net.kyori.adventure.text.minimessage.Template; | ||||||
| import org.bukkit.entity.Entity; | import org.bukkit.entity.Entity; | ||||||
| import org.bukkit.entity.LivingEntity; | import org.bukkit.entity.LivingEntity; | ||||||
| @@ -98,18 +97,14 @@ public class ProjectileEventListener implements Listener { | |||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|         Location location = BukkitUtil.adapt(entity.getLocation()); |         Location location = BukkitUtil.adapt(entity.getLocation()); | ||||||
|         PlotArea area = location.getPlotArea(); |         if (!this.plotAreaManager.hasPlotArea(location.getWorldName())) { | ||||||
|         if (area == null) { |  | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|         PlotPlayer<Player> pp = BukkitUtil.adapt((Player) shooter); |         PlotPlayer<Player> pp = BukkitUtil.adapt((Player) shooter); | ||||||
|         Plot plot = location.getOwnedPlot(); |         Plot plot = location.getOwnedPlot(); | ||||||
|  |  | ||||||
|         if (plot == null) { |         if (plot == null) { | ||||||
|             if (!PlotFlagUtil.isAreaRoadFlagsAndFlagEquals(area, ProjectilesFlag.class, true) && !Permissions.hasPermission( |             if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_PROJECTILE_ROAD)) { | ||||||
|                     pp, |  | ||||||
|                     Permission.PERMISSION_ADMIN_PROJECTILE_ROAD |  | ||||||
|             )) { |  | ||||||
|                 pp.sendMessage( |                 pp.sendMessage( | ||||||
|                         TranslatableCaption.of("permission.no_permission_event"), |                         TranslatableCaption.of("permission.no_permission_event"), | ||||||
|                         Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_PROJECTILE_ROAD)) |                         Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_PROJECTILE_ROAD)) | ||||||
| @@ -159,8 +154,6 @@ public class ProjectileEventListener implements Listener { | |||||||
|                     if (plot.isAdded(((Player) shooter).getUniqueId()) || plot.getFlag(ProjectilesFlag.class)) { |                     if (plot.isAdded(((Player) shooter).getUniqueId()) || plot.getFlag(ProjectilesFlag.class)) { | ||||||
|                         return; |                         return; | ||||||
|                     } |                     } | ||||||
|                 } else if (PlotFlagUtil.isAreaRoadFlagsAndFlagEquals(area, ProjectilesFlag.class, true)) { |  | ||||||
|                     return; |  | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
|                 entity.remove(); |                 entity.remove(); | ||||||
| @@ -170,10 +163,7 @@ public class ProjectileEventListener implements Listener { | |||||||
|  |  | ||||||
|             PlotPlayer<?> pp = BukkitUtil.adapt((Player) shooter); |             PlotPlayer<?> pp = BukkitUtil.adapt((Player) shooter); | ||||||
|             if (plot == null) { |             if (plot == null) { | ||||||
|                 if (!PlotFlagUtil.isAreaRoadFlagsAndFlagEquals(area, ProjectilesFlag.class, true) && !Permissions.hasPermission( |                 if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_PROJECTILE_UNOWNED)) { | ||||||
|                         pp, |  | ||||||
|                         Permission.PERMISSION_ADMIN_PROJECTILE_UNOWNED |  | ||||||
|                 )) { |  | ||||||
|                     entity.remove(); |                     entity.remove(); | ||||||
|                     event.setCancelled(true); |                     event.setCancelled(true); | ||||||
|                 } |                 } | ||||||
| @@ -204,6 +194,7 @@ public class ProjectileEventListener implements Listener { | |||||||
|             if (sPlot == null || !PlotHandler.sameOwners(plot, sPlot)) { |             if (sPlot == null || !PlotHandler.sameOwners(plot, sPlot)) { | ||||||
|                 entity.remove(); |                 entity.remove(); | ||||||
|                 event.setCancelled(true); |                 event.setCancelled(true); | ||||||
|  |                 return; | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -44,7 +44,6 @@ public class LimitedRegionWrapperQueue extends DelegateQueueCoordinator { | |||||||
|     private static final Logger LOGGER = LogManager.getLogger("PlotSquared/" + LimitedRegionWrapperQueue.class.getSimpleName()); |     private static final Logger LOGGER = LogManager.getLogger("PlotSquared/" + LimitedRegionWrapperQueue.class.getSimpleName()); | ||||||
|  |  | ||||||
|     private final LimitedRegion limitedRegion; |     private final LimitedRegion limitedRegion; | ||||||
|     private boolean useOtherRestoreTagMethod = false; |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @since 6.9.0 |      * @since 6.9.0 | ||||||
| @@ -66,18 +65,10 @@ public class LimitedRegionWrapperQueue extends DelegateQueueCoordinator { | |||||||
|             CompoundTag tag = id.getNbtData(); |             CompoundTag tag = id.getNbtData(); | ||||||
|             StateWrapper sw = new StateWrapper(tag); |             StateWrapper sw = new StateWrapper(tag); | ||||||
|             try { |             try { | ||||||
|                 if (useOtherRestoreTagMethod && getWorld() != null) { |  | ||||||
|                     sw.restoreTag(getWorld().getName(), x, y, z); |  | ||||||
|                 } else { |  | ||||||
|                 sw.restoreTag(limitedRegion.getBlockState(x, y, z).getBlock()); |                 sw.restoreTag(limitedRegion.getBlockState(x, y, z).getBlock()); | ||||||
|                 } |  | ||||||
|             } catch (IllegalArgumentException e) { |             } catch (IllegalArgumentException e) { | ||||||
|                 LOGGER.error("Error attempting to populate tile entity into the world at location {},{},{}", x, y, z, e); |                 LOGGER.error("Error attempting to populate tile entity into the world at location {},{},{}", x, y, z, e); | ||||||
|                 return false; |                 return false; | ||||||
|             } catch (IllegalStateException e) { |  | ||||||
|                 useOtherRestoreTagMethod = true; |  | ||||||
|                 LOGGER.warn("IllegalStateException attempting to populate tile entity into the world at location {},{},{}. " + |  | ||||||
|                         "Possibly on <=1.17.1, switching to secondary method.", x, y, z, e); |  | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         return result; |         return result; | ||||||
|   | |||||||
| @@ -36,7 +36,8 @@ import com.sk89q.worldedit.function.pattern.Pattern; | |||||||
| import com.sk89q.worldedit.regions.CuboidRegion; | import com.sk89q.worldedit.regions.CuboidRegion; | ||||||
| import com.sk89q.worldedit.world.biome.BiomeType; | import com.sk89q.worldedit.world.biome.BiomeType; | ||||||
| import org.checkerframework.checker.nullness.qual.NonNull; | import org.checkerframework.checker.nullness.qual.NonNull; | ||||||
| import org.checkerframework.checker.nullness.qual.Nullable; | import org.jetbrains.annotations.NotNull; | ||||||
|  | import org.jetbrains.annotations.Nullable; | ||||||
|  |  | ||||||
| import java.util.Set; | import java.util.Set; | ||||||
|  |  | ||||||
| @@ -45,7 +46,10 @@ public class FaweRegionManager extends BukkitRegionManager { | |||||||
|     private final FaweDelegateRegionManager delegate = new FaweDelegateRegionManager(); |     private final FaweDelegateRegionManager delegate = new FaweDelegateRegionManager(); | ||||||
|  |  | ||||||
|     @Inject |     @Inject | ||||||
|     public FaweRegionManager(WorldUtil worldUtil, GlobalBlockQueue blockQueue, ProgressSubscriberFactory subscriberFactory) { |     public FaweRegionManager( | ||||||
|  |             @NonNull WorldUtil worldUtil, @NonNull GlobalBlockQueue blockQueue, @NonNull | ||||||
|  |             ProgressSubscriberFactory subscriberFactory | ||||||
|  |     ) { | ||||||
|         super(worldUtil, blockQueue, subscriberFactory); |         super(worldUtil, blockQueue, subscriberFactory); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -72,9 +76,9 @@ public class FaweRegionManager extends BukkitRegionManager { | |||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public boolean handleClear( |     public boolean handleClear( | ||||||
|             @NonNull Plot plot, |             @NotNull Plot plot, | ||||||
|             @Nullable Runnable whenDone, |             @Nullable Runnable whenDone, | ||||||
|             @NonNull PlotManager manager, |             @NotNull PlotManager manager, | ||||||
|             final @Nullable PlotPlayer<?> player |             final @Nullable PlotPlayer<?> player | ||||||
|     ) { |     ) { | ||||||
|         if (!Settings.FAWE_Components.CLEAR || !(manager instanceof HybridPlotManager)) { |         if (!Settings.FAWE_Components.CLEAR || !(manager instanceof HybridPlotManager)) { | ||||||
|   | |||||||
| @@ -29,7 +29,7 @@ import com.plotsquared.core.util.SchematicHandler; | |||||||
| import com.plotsquared.core.util.WorldUtil; | import com.plotsquared.core.util.WorldUtil; | ||||||
| import com.plotsquared.core.util.task.RunnableVal; | import com.plotsquared.core.util.task.RunnableVal; | ||||||
| import com.sk89q.jnbt.CompoundTag; | import com.sk89q.jnbt.CompoundTag; | ||||||
| import org.checkerframework.checker.nullness.qual.NonNull; | import org.jetbrains.annotations.NotNull; | ||||||
|  |  | ||||||
| import java.io.InputStream; | import java.io.InputStream; | ||||||
| import java.net.URL; | import java.net.URL; | ||||||
| @@ -40,7 +40,7 @@ public class FaweSchematicHandler extends SchematicHandler { | |||||||
|     private final FaweDelegateSchematicHandler delegate = new FaweDelegateSchematicHandler(); |     private final FaweDelegateSchematicHandler delegate = new FaweDelegateSchematicHandler(); | ||||||
|  |  | ||||||
|     @Inject |     @Inject | ||||||
|     public FaweSchematicHandler(WorldUtil worldUtil, ProgressSubscriberFactory subscriberFactory) { |     public FaweSchematicHandler(@NotNull WorldUtil worldUtil, @NotNull ProgressSubscriberFactory subscriberFactory) { | ||||||
|         super(worldUtil, subscriberFactory); |         super(worldUtil, subscriberFactory); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -75,7 +75,7 @@ public class FaweSchematicHandler extends SchematicHandler { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public Schematic getSchematic(@NonNull InputStream is) { |     public Schematic getSchematic(@NotNull InputStream is) { | ||||||
|         return delegate.getSchematic(is); |         return delegate.getSchematic(is); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -32,7 +32,6 @@ import com.plotsquared.core.inject.annotations.DefaultGenerator; | |||||||
| import com.plotsquared.core.location.World; | import com.plotsquared.core.location.World; | ||||||
| import com.plotsquared.core.permissions.PermissionHandler; | import com.plotsquared.core.permissions.PermissionHandler; | ||||||
| import com.plotsquared.core.player.PlotPlayer; | import com.plotsquared.core.player.PlotPlayer; | ||||||
| import com.plotsquared.core.plot.expiration.ExpireManager; |  | ||||||
| import com.plotsquared.core.plot.world.PlotAreaManager; | import com.plotsquared.core.plot.world.PlotAreaManager; | ||||||
| import com.plotsquared.core.queue.GlobalBlockQueue; | import com.plotsquared.core.queue.GlobalBlockQueue; | ||||||
| import com.plotsquared.core.util.ChunkManager; | import com.plotsquared.core.util.ChunkManager; | ||||||
| @@ -285,16 +284,6 @@ public interface PlotPlatform<P> extends LocaleHolder { | |||||||
|         return injector().getInstance(ChunkManager.class); |         return injector().getInstance(ChunkManager.class); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Get the {@link ExpireManager} implementation for the platform |  | ||||||
|      * |  | ||||||
|      * @return Expire manager |  | ||||||
|      * @since 6.10.2 |  | ||||||
|      */ |  | ||||||
|     default @NonNull ExpireManager expireManager() { |  | ||||||
|         return injector().getInstance(ExpireManager.class); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Get the {@link PlotAreaManager} implementation. |      * Get the {@link PlotAreaManager} implementation. | ||||||
|      * |      * | ||||||
|   | |||||||
| @@ -290,11 +290,11 @@ public class PlotSquared { | |||||||
|  |  | ||||||
|     public void startExpiryTasks() { |     public void startExpiryTasks() { | ||||||
|         if (Settings.Enabled_Components.PLOT_EXPIRY) { |         if (Settings.Enabled_Components.PLOT_EXPIRY) { | ||||||
|             ExpireManager expireManager = PlotSquared.platform().expireManager(); |             ExpireManager.IMP = new ExpireManager(this.eventDispatcher); | ||||||
|             expireManager.runAutomatedTask(); |             ExpireManager.IMP.runAutomatedTask(); | ||||||
|             for (Settings.Auto_Clear settings : Settings.AUTO_CLEAR.getInstances()) { |             for (Settings.Auto_Clear settings : Settings.AUTO_CLEAR.getInstances()) { | ||||||
|                 ExpiryTask task = new ExpiryTask(settings, this.getPlotAreaManager()); |                 ExpiryTask task = new ExpiryTask(settings, this.getPlotAreaManager()); | ||||||
|                 expireManager.addTask(task); |                 ExpireManager.IMP.addTask(task); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| @@ -645,8 +645,7 @@ public class PlotSquared { | |||||||
|         } else { |         } else { | ||||||
|             list = new ArrayList<>(input); |             list = new ArrayList<>(input); | ||||||
|         } |         } | ||||||
|         ExpireManager expireManager = PlotSquared.platform().expireManager(); |         list.sort(Comparator.comparingLong(a -> ExpireManager.IMP.getTimestamp(a.getOwnerAbs()))); | ||||||
|         list.sort(Comparator.comparingLong(a -> expireManager.getTimestamp(a.getOwnerAbs()))); |  | ||||||
|         return list; |         return list; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -19,7 +19,6 @@ | |||||||
| package com.plotsquared.core.command; | package com.plotsquared.core.command; | ||||||
|  |  | ||||||
| import com.google.inject.Inject; | import com.google.inject.Inject; | ||||||
| import com.plotsquared.core.PlotSquared; |  | ||||||
| import com.plotsquared.core.configuration.caption.StaticCaption; | import com.plotsquared.core.configuration.caption.StaticCaption; | ||||||
| import com.plotsquared.core.configuration.caption.TranslatableCaption; | import com.plotsquared.core.configuration.caption.TranslatableCaption; | ||||||
| import com.plotsquared.core.events.PlotFlagRemoveEvent; | import com.plotsquared.core.events.PlotFlagRemoveEvent; | ||||||
| @@ -140,7 +139,10 @@ public class DebugExec extends SubCommand { | |||||||
|                     return true; |                     return true; | ||||||
|                 } |                 } | ||||||
|                 case "start-expire" -> { |                 case "start-expire" -> { | ||||||
|                     if (PlotSquared.platform().expireManager().runAutomatedTask()) { |                     if (ExpireManager.IMP == null) { | ||||||
|  |                         ExpireManager.IMP = new ExpireManager(this.eventDispatcher); | ||||||
|  |                     } | ||||||
|  |                     if (ExpireManager.IMP.runAutomatedTask()) { | ||||||
|                         player.sendMessage(TranslatableCaption.of("debugexec.expiry_started")); |                         player.sendMessage(TranslatableCaption.of("debugexec.expiry_started")); | ||||||
|                     } else { |                     } else { | ||||||
|                         player.sendMessage(TranslatableCaption.of("debugexec.expiry_already_started")); |                         player.sendMessage(TranslatableCaption.of("debugexec.expiry_already_started")); | ||||||
| @@ -148,7 +150,7 @@ public class DebugExec extends SubCommand { | |||||||
|                     return true; |                     return true; | ||||||
|                 } |                 } | ||||||
|                 case "stop-expire" -> { |                 case "stop-expire" -> { | ||||||
|                     if (!PlotSquared.platform().expireManager().cancelTask()) { |                     if (ExpireManager.IMP == null || !ExpireManager.IMP.cancelTask()) { | ||||||
|                         player.sendMessage(TranslatableCaption.of("debugexec.task_halted")); |                         player.sendMessage(TranslatableCaption.of("debugexec.task_halted")); | ||||||
|                     } else { |                     } else { | ||||||
|                         player.sendMessage(TranslatableCaption.of("debugexec.task_cancelled")); |                         player.sendMessage(TranslatableCaption.of("debugexec.task_cancelled")); | ||||||
|   | |||||||
| @@ -19,7 +19,6 @@ | |||||||
| package com.plotsquared.core.command; | package com.plotsquared.core.command; | ||||||
|  |  | ||||||
| import com.google.inject.Inject; | import com.google.inject.Inject; | ||||||
| import com.plotsquared.core.PlotSquared; |  | ||||||
| import com.plotsquared.core.configuration.Settings; | import com.plotsquared.core.configuration.Settings; | ||||||
| import com.plotsquared.core.configuration.caption.TranslatableCaption; | import com.plotsquared.core.configuration.caption.TranslatableCaption; | ||||||
| import com.plotsquared.core.events.PlotDoneEvent; | import com.plotsquared.core.events.PlotDoneEvent; | ||||||
| @@ -30,6 +29,7 @@ import com.plotsquared.core.location.Location; | |||||||
| import com.plotsquared.core.permissions.Permission; | import com.plotsquared.core.permissions.Permission; | ||||||
| import com.plotsquared.core.player.PlotPlayer; | import com.plotsquared.core.player.PlotPlayer; | ||||||
| import com.plotsquared.core.plot.Plot; | import com.plotsquared.core.plot.Plot; | ||||||
|  | import com.plotsquared.core.plot.expiration.ExpireManager; | ||||||
| import com.plotsquared.core.plot.expiration.PlotAnalysis; | import com.plotsquared.core.plot.expiration.PlotAnalysis; | ||||||
| import com.plotsquared.core.plot.flag.PlotFlag; | import com.plotsquared.core.plot.flag.PlotFlag; | ||||||
| import com.plotsquared.core.plot.flag.implementations.DoneFlag; | import com.plotsquared.core.plot.flag.implementations.DoneFlag; | ||||||
| @@ -94,7 +94,7 @@ public class Done extends SubCommand { | |||||||
|                 Template.of("plot", plot.getId().toString()) |                 Template.of("plot", plot.getId().toString()) | ||||||
|         ); |         ); | ||||||
|         final Settings.Auto_Clear doneRequirements = Settings.AUTO_CLEAR.get("done"); |         final Settings.Auto_Clear doneRequirements = Settings.AUTO_CLEAR.get("done"); | ||||||
|         if (PlotSquared.platform().expireManager() == null || doneRequirements == null) { |         if (ExpireManager.IMP == null || doneRequirements == null) { | ||||||
|             finish(plot, player, true); |             finish(plot, player, true); | ||||||
|             plot.removeRunning(); |             plot.removeRunning(); | ||||||
|         } else { |         } else { | ||||||
|   | |||||||
| @@ -35,9 +35,6 @@ import com.plotsquared.core.util.query.PlotQuery; | |||||||
| import com.plotsquared.core.util.query.SortingStrategy; | import com.plotsquared.core.util.query.SortingStrategy; | ||||||
| import com.plotsquared.core.util.task.RunnableVal2; | import com.plotsquared.core.util.task.RunnableVal2; | ||||||
| import com.plotsquared.core.util.task.RunnableVal3; | import com.plotsquared.core.util.task.RunnableVal3; | ||||||
| import jdk.jfr.Category; |  | ||||||
| import jdk.jfr.Event; |  | ||||||
| import jdk.jfr.Label; |  | ||||||
| import net.kyori.adventure.text.minimessage.Template; | import net.kyori.adventure.text.minimessage.Template; | ||||||
| import org.checkerframework.checker.nullness.qual.NonNull; | import org.checkerframework.checker.nullness.qual.NonNull; | ||||||
|  |  | ||||||
| @@ -62,24 +59,13 @@ public class HomeCommand extends Command { | |||||||
|         this.plotAreaManager = plotAreaManager; |         this.plotAreaManager = plotAreaManager; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Label("Home Query") |  | ||||||
|     @Category("PlotSquared") |  | ||||||
|     static class HomeQueryEvent extends Event { |  | ||||||
|         @Label("Result Size") |  | ||||||
|         public int size; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     private void home( |     private void home( | ||||||
|             final @NonNull PlotPlayer<?> player, |             final @NonNull PlotPlayer<?> player, | ||||||
|             final @NonNull PlotQuery query, final int page, |             final @NonNull PlotQuery query, final int page, | ||||||
|             final RunnableVal3<Command, Runnable, Runnable> confirm, |             final RunnableVal3<Command, Runnable, Runnable> confirm, | ||||||
|             final RunnableVal2<Command, CommandResult> whenDone |             final RunnableVal2<Command, CommandResult> whenDone | ||||||
|     ) { |     ) { | ||||||
|         final HomeQueryEvent event = new HomeQueryEvent(); |  | ||||||
|         event.begin(); |  | ||||||
|         List<Plot> plots = query.asList(); |         List<Plot> plots = query.asList(); | ||||||
|         event.size = plots.size(); |  | ||||||
|         event.commit(); |  | ||||||
|         if (plots.isEmpty()) { |         if (plots.isEmpty()) { | ||||||
|             player.sendMessage(TranslatableCaption.of("invalid.found_no_plots")); |             player.sendMessage(TranslatableCaption.of("invalid.found_no_plots")); | ||||||
|             return; |             return; | ||||||
|   | |||||||
| @@ -30,6 +30,7 @@ import com.plotsquared.core.permissions.Permission; | |||||||
| import com.plotsquared.core.player.PlotPlayer; | import com.plotsquared.core.player.PlotPlayer; | ||||||
| import com.plotsquared.core.plot.Plot; | import com.plotsquared.core.plot.Plot; | ||||||
| import com.plotsquared.core.plot.PlotArea; | import com.plotsquared.core.plot.PlotArea; | ||||||
|  | import com.plotsquared.core.plot.expiration.ExpireManager; | ||||||
| import com.plotsquared.core.plot.flag.implementations.DoneFlag; | import com.plotsquared.core.plot.flag.implementations.DoneFlag; | ||||||
| import com.plotsquared.core.plot.flag.implementations.PriceFlag; | import com.plotsquared.core.plot.flag.implementations.PriceFlag; | ||||||
| import com.plotsquared.core.plot.flag.implementations.ServerPlotFlag; | import com.plotsquared.core.plot.flag.implementations.ServerPlotFlag; | ||||||
| @@ -239,7 +240,7 @@ public class ListCmd extends SubCommand { | |||||||
|                     ); |                     ); | ||||||
|                     return false; |                     return false; | ||||||
|                 } |                 } | ||||||
|                 if (PlotSquared.platform().expireManager() == null) { |                 if (ExpireManager.IMP == null) { | ||||||
|                     plotConsumer.accept(PlotQuery.newQuery().noPlots()); |                     plotConsumer.accept(PlotQuery.newQuery().noPlots()); | ||||||
|                 } else { |                 } else { | ||||||
|                     plotConsumer.accept(PlotQuery.newQuery().expiredPlots()); |                     plotConsumer.accept(PlotQuery.newQuery().expiredPlots()); | ||||||
|   | |||||||
| @@ -282,28 +282,7 @@ public class Merge extends SubCommand { | |||||||
|                 run.run(); |                 run.run(); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         if (force || !isOnline) { |         if (!force && !isOnline) { | ||||||
|             if (force || Permissions.hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_MERGE_OTHER_OFFLINE)) { |  | ||||||
|                 if (plot.getPlotModificationManager().autoMerge(direction, maxSize - size, uuids.iterator().next(), player, terrain)) { |  | ||||||
|                     if (this.econHandler.isEnabled(plotArea) && price > 0d) { |  | ||||||
|                         if (!force && this.econHandler.getMoney(player) < price) { |  | ||||||
|                             player.sendMessage( |  | ||||||
|                                     TranslatableCaption.of("economy.cannot_afford_merge"), |  | ||||||
|                                     Template.of("money", this.econHandler.format(price)) |  | ||||||
|                             ); |  | ||||||
|                             return false; |  | ||||||
|                         } |  | ||||||
|                         this.econHandler.withdrawMoney(player, price); |  | ||||||
|                         player.sendMessage( |  | ||||||
|                                 TranslatableCaption.of("economy.removed_balance"), |  | ||||||
|                                 Template.of("money", this.econHandler.format(price)) |  | ||||||
|                         ); |  | ||||||
|                     } |  | ||||||
|                     player.sendMessage(TranslatableCaption.of("merge.success_merge")); |  | ||||||
|                     eventDispatcher.callPostMerge(player, plot); |  | ||||||
|                     return true; |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|             player.sendMessage(TranslatableCaption.of("merge.no_available_automerge")); |             player.sendMessage(TranslatableCaption.of("merge.no_available_automerge")); | ||||||
|             return false; |             return false; | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -25,6 +25,7 @@ import com.plotsquared.core.configuration.caption.TranslatableCaption; | |||||||
| import com.plotsquared.core.location.Location; | import com.plotsquared.core.location.Location; | ||||||
| import com.plotsquared.core.player.PlotPlayer; | import com.plotsquared.core.player.PlotPlayer; | ||||||
| import com.plotsquared.core.plot.Plot; | import com.plotsquared.core.plot.Plot; | ||||||
|  | import com.plotsquared.core.plot.expiration.ExpireManager; | ||||||
| import com.plotsquared.core.plot.world.PlotAreaManager; | import com.plotsquared.core.plot.world.PlotAreaManager; | ||||||
| import com.plotsquared.core.queue.GlobalBlockQueue; | import com.plotsquared.core.queue.GlobalBlockQueue; | ||||||
| import com.plotsquared.core.queue.QueueCoordinator; | import com.plotsquared.core.queue.QueueCoordinator; | ||||||
| @@ -91,8 +92,8 @@ public class Trim extends SubCommand { | |||||||
|         } |         } | ||||||
|         TranslatableCaption.of("trim.trim_starting"); |         TranslatableCaption.of("trim.trim_starting"); | ||||||
|         final List<Plot> plots = PlotQuery.newQuery().inWorld(world).asList(); |         final List<Plot> plots = PlotQuery.newQuery().inWorld(world).asList(); | ||||||
|         if (PlotSquared.platform().expireManager() != null) { |         if (ExpireManager.IMP != null) { | ||||||
|             plots.removeAll(PlotSquared.platform().expireManager().getPendingExpired()); |             plots.removeAll(ExpireManager.IMP.getPendingExpired()); | ||||||
|         } |         } | ||||||
|         result.value1 = new HashSet<>(PlotSquared.platform().worldUtil().getChunkChunks(world)); |         result.value1 = new HashSet<>(PlotSquared.platform().worldUtil().getChunkChunks(world)); | ||||||
|         result.value2 = new HashSet<>(); |         result.value2 = new HashSet<>(); | ||||||
|   | |||||||
| @@ -21,15 +21,16 @@ package com.plotsquared.core.configuration.caption; | |||||||
| import net.kyori.adventure.text.Component; | import net.kyori.adventure.text.Component; | ||||||
| import net.kyori.adventure.text.event.ClickEvent; | import net.kyori.adventure.text.event.ClickEvent; | ||||||
| import org.checkerframework.checker.nullness.qual.NonNull; | import org.checkerframework.checker.nullness.qual.NonNull; | ||||||
|  | import org.jetbrains.annotations.NotNull; | ||||||
|  |  | ||||||
| import java.util.EnumSet; | import java.util.EnumSet; | ||||||
| import java.util.Set; | import java.util.Set; | ||||||
|  |  | ||||||
| final class ClickStripTransform implements ComponentTransform { | final class ClickStripTransform implements ComponentTransform { | ||||||
|  |  | ||||||
|     private final Set<ClickEvent.@NonNull Action> actionsToStrip; |     private final Set<ClickEvent.@NotNull Action> actionsToStrip; | ||||||
|  |  | ||||||
|     public ClickStripTransform(final Set<ClickEvent.@NonNull Action> actionsToStrip) { |     public ClickStripTransform(final Set<ClickEvent.@NotNull Action> actionsToStrip) { | ||||||
|         this.actionsToStrip = EnumSet.copyOf(actionsToStrip); |         this.actionsToStrip = EnumSet.copyOf(actionsToStrip); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -53,10 +53,7 @@ final class ClassLoaderCaptionProvider implements DefaultCaptionProvider { | |||||||
|         try { |         try { | ||||||
|             final InputStream stream = this.classLoader.getResourceAsStream(url); |             final InputStream stream = this.classLoader.getResourceAsStream(url); | ||||||
|             if (stream == null) { |             if (stream == null) { | ||||||
|                 LOGGER.info("No resource for locale '{}' found in the plugin file." + |                 LOGGER.warn("No resource for locale '{}' found", locale); | ||||||
|                                 "Please ensure you have placed the latest version of the file messages_{}.json in the 'lang' folder." + |  | ||||||
|                                 "You may be able to find completed translations at https://intellectualsites.crowdin.com/plotsquared", |  | ||||||
|                         locale, locale); |  | ||||||
|                 return null; |                 return null; | ||||||
|             } |             } | ||||||
|             try (final BufferedReader reader = new BufferedReader(new InputStreamReader(stream))) { |             try (final BufferedReader reader = new BufferedReader(new InputStreamReader(stream))) { | ||||||
|   | |||||||
| @@ -174,9 +174,8 @@ public class HybridPlotManager extends ClassicPlotManager { | |||||||
|                     for (int y = 0; y < blocks.length; y++) { |                     for (int y = 0; y < blocks.length; y++) { | ||||||
|                         if (blocks[y] != null) { |                         if (blocks[y] != null) { | ||||||
|                             queue.setBlock(x, minY + y, z, blocks[y]); |                             queue.setBlock(x, minY + y, z, blocks[y]); | ||||||
|                         } else if (!isRoad) { |                         } else { | ||||||
|                             // This is necessary, otherwise any blocks not specified in the schematic will remain after a clear |                             // This is necessary, otherwise any blocks not specified in the schematic will remain after a clear | ||||||
|                             //  Do not set air for road as this may cause cavernous roads when debugroadregen is used |  | ||||||
|                             queue.setBlock(x, minY + y, z, airBlock); |                             queue.setBlock(x, minY + y, z, airBlock); | ||||||
|                         } |                         } | ||||||
|                     } |                     } | ||||||
|   | |||||||
| @@ -21,6 +21,7 @@ package com.plotsquared.core.generator; | |||||||
| import com.google.inject.Inject; | import com.google.inject.Inject; | ||||||
| import com.google.inject.assistedinject.Assisted; | import com.google.inject.assistedinject.Assisted; | ||||||
| import com.intellectualsites.annotations.DoNotUse; | import com.intellectualsites.annotations.DoNotUse; | ||||||
|  | import com.intellectualsites.annotations.NotPublic; | ||||||
| import com.plotsquared.core.PlotSquared; | import com.plotsquared.core.PlotSquared; | ||||||
| import com.plotsquared.core.configuration.ConfigurationSection; | import com.plotsquared.core.configuration.ConfigurationSection; | ||||||
| import com.plotsquared.core.configuration.Settings; | import com.plotsquared.core.configuration.Settings; | ||||||
| @@ -74,9 +75,6 @@ public class HybridPlotWorld extends ClassicPlotWorld { | |||||||
|     public short PATH_WIDTH_UPPER; |     public short PATH_WIDTH_UPPER; | ||||||
|     public HashMap<Integer, BaseBlock[]> G_SCH; |     public HashMap<Integer, BaseBlock[]> G_SCH; | ||||||
|     public HashMap<Integer, BiomeType> G_SCH_B; |     public HashMap<Integer, BiomeType> G_SCH_B; | ||||||
|     /** |  | ||||||
|      * The Y level at which schematic generation will start, lowest of either road or plot schematic generation. |  | ||||||
|      */ |  | ||||||
|     public int SCHEM_Y; |     public int SCHEM_Y; | ||||||
|     private Location SIGN_LOCATION; |     private Location SIGN_LOCATION; | ||||||
|     private File root = null; |     private File root = null; | ||||||
| @@ -93,10 +91,10 @@ public class HybridPlotWorld extends ClassicPlotWorld { | |||||||
|     @Inject |     @Inject | ||||||
|     public HybridPlotWorld( |     public HybridPlotWorld( | ||||||
|             @Assisted("world") final String worldName, |             @Assisted("world") final String worldName, | ||||||
|             @javax.annotation.Nullable @Assisted("id") final String id, |             @Nullable @Assisted("id") final String id, | ||||||
|             @Assisted final @NonNull IndependentPlotGenerator generator, |             @Assisted final @NonNull IndependentPlotGenerator generator, | ||||||
|             @javax.annotation.Nullable @Assisted("min") final PlotId min, |             @Nullable @Assisted("min") final PlotId min, | ||||||
|             @javax.annotation.Nullable @Assisted("max") final PlotId max, |             @Nullable @Assisted("max") final PlotId max, | ||||||
|             @WorldConfig final @NonNull YamlConfiguration worldConfiguration, |             @WorldConfig final @NonNull YamlConfiguration worldConfiguration, | ||||||
|             final @NonNull GlobalBlockQueue blockQueue |             final @NonNull GlobalBlockQueue blockQueue | ||||||
|     ) { |     ) { | ||||||
| @@ -269,67 +267,34 @@ public class HybridPlotWorld extends ClassicPlotWorld { | |||||||
|         int oddshift = (this.ROAD_WIDTH & 1); |         int oddshift = (this.ROAD_WIDTH & 1); | ||||||
|  |  | ||||||
|         SCHEM_Y = schematicStartHeight(); |         SCHEM_Y = schematicStartHeight(); | ||||||
|  |  | ||||||
|         // plotY and roadY are important to allow plot and/or road schematic "overflow" into each other without causing AIOOB |  | ||||||
|         //  exceptions when attempting either to set blocks to, or get block from G_SCH |  | ||||||
|         // Default plot schematic start height, normalized to the minimum height schematics are pasted from. |  | ||||||
|         int plotY = PLOT_HEIGHT - SCHEM_Y; |         int plotY = PLOT_HEIGHT - SCHEM_Y; | ||||||
|         int minRoadWall = Settings.Schematics.USE_WALL_IN_ROAD_SCHEM_HEIGHT ? Math.min(ROAD_HEIGHT, WALL_HEIGHT) : ROAD_HEIGHT; |         int minRoadWall = Settings.Schematics.USE_WALL_IN_ROAD_SCHEM_HEIGHT ? Math.min(ROAD_HEIGHT, WALL_HEIGHT) : ROAD_HEIGHT; | ||||||
|         // Default road schematic start height, normalized to the minimum height schematics are pasted from. |  | ||||||
|         int roadY = minRoadWall - SCHEM_Y; |         int roadY = minRoadWall - SCHEM_Y; | ||||||
|  |  | ||||||
|         int worldGenHeight = getMaxGenHeight() - getMinGenHeight() + 1; |         int worldHeight = getMaxGenHeight() - getMinGenHeight() + 1; | ||||||
|  |  | ||||||
|         int maxSchematicHeight = 0; |  | ||||||
|         int plotSchemHeight = 0; |  | ||||||
|  |  | ||||||
|         // SCHEM_Y should be normalised to the plot "start" height |         // SCHEM_Y should be normalised to the plot "start" height | ||||||
|         if (schematic3 != null) { |         if (schematic3 != null) { | ||||||
|             plotSchemHeight = maxSchematicHeight = schematic3.getClipboard().getDimensions().getY(); |             if (schematic3.getClipboard().getDimensions().getY() == worldHeight) { | ||||||
|             if (maxSchematicHeight == worldGenHeight) { |                 SCHEM_Y = plotY = 0; | ||||||
|                 SCHEM_Y = getMinGenHeight(); |  | ||||||
|                 plotY = 0; |  | ||||||
|             } else if (!Settings.Schematics.PASTE_ON_TOP) { |             } else if (!Settings.Schematics.PASTE_ON_TOP) { | ||||||
|                 SCHEM_Y = getMinBuildHeight(); |                 SCHEM_Y = plotY = getMinBuildHeight() - getMinGenHeight(); | ||||||
|                 plotY = 0; |  | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         int roadSchemHeight; |  | ||||||
|  |  | ||||||
|         if (schematic1 != null) { |         if (schematic1 != null) { | ||||||
|             roadSchemHeight = Math.max( |             if (schematic1.getClipboard().getDimensions().getY() == worldHeight) { | ||||||
|                     schematic1.getClipboard().getDimensions().getY(), |                 SCHEM_Y = roadY = getMinGenHeight(); | ||||||
|                     schematic2.getClipboard().getDimensions().getY() |                 if (schematic3 != null && schematic3.getClipboard().getDimensions().getY() != worldHeight | ||||||
|             ); |                         && !Settings.Schematics.PASTE_ON_TOP) { | ||||||
|             maxSchematicHeight = Math.max(roadSchemHeight, maxSchematicHeight); |                     plotY = PLOT_HEIGHT; | ||||||
|             if (maxSchematicHeight == worldGenHeight) { |  | ||||||
|                 SCHEM_Y = getMinGenHeight(); |  | ||||||
|                 roadY = 0; // Road is the lowest schematic |  | ||||||
|                 if (schematic3 != null && schematic3.getClipboard().getDimensions().getY() != worldGenHeight) { |  | ||||||
|                     // Road is the lowest schematic. Normalize plotY to it. |  | ||||||
|                     if (Settings.Schematics.PASTE_ON_TOP) { |  | ||||||
|                         plotY = PLOT_HEIGHT - getMinGenHeight(); |  | ||||||
|                     } else { |  | ||||||
|                         plotY = getMinBuildHeight() - getMinGenHeight(); |  | ||||||
|                     } |  | ||||||
|                 } |                 } | ||||||
|             } else if (!Settings.Schematics.PASTE_ROAD_ON_TOP) { |             } else if (!Settings.Schematics.PASTE_ROAD_ON_TOP) { | ||||||
|                 if (SCHEM_Y == getMinGenHeight()) { // Only possible if plot schematic is enabled |                 SCHEM_Y = roadY = getMinBuildHeight(); | ||||||
|                     // Plot is still the lowest schematic, normalize roadY to it |                 if (schematic3 != null && schematic3.getClipboard().getDimensions().getY() != worldHeight | ||||||
|                     roadY = getMinBuildHeight() - getMinGenHeight(); |                         && !Settings.Schematics.PASTE_ON_TOP) { | ||||||
|                 } else if (schematic3 != null) { |                     plotY = PLOT_HEIGHT; | ||||||
|                     SCHEM_Y = getMinBuildHeight(); |  | ||||||
|                     roadY = 0;// Road is the lowest schematic |  | ||||||
|                     if (Settings.Schematics.PASTE_ON_TOP) { |  | ||||||
|                         // Road is the lowest schematic. Normalize plotY to it. |  | ||||||
|                         plotY = PLOT_HEIGHT - getMinBuildHeight(); |  | ||||||
|                 } |                 } | ||||||
|                     maxSchematicHeight = Math.max(maxSchematicHeight, plotY + plotSchemHeight); |  | ||||||
|                 } |  | ||||||
|             } else { |  | ||||||
|                 roadY = minRoadWall - SCHEM_Y; |  | ||||||
|                 maxSchematicHeight = Math.max(maxSchematicHeight, roadY + roadSchemHeight); |  | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -366,6 +331,7 @@ public class HybridPlotWorld extends ClassicPlotWorld { | |||||||
|                                 y + min.getBlockY(), |                                 y + min.getBlockY(), | ||||||
|                                 z + min.getBlockZ() |                                 z + min.getBlockZ() | ||||||
|                         )); |                         )); | ||||||
|  |                         if (!id.getBlockType().getMaterial().isAir()) { | ||||||
|                             schem3PopulationNeeded |= id.hasNbtData(); |                             schem3PopulationNeeded |= id.hasNbtData(); | ||||||
|                             addOverlayBlock( |                             addOverlayBlock( | ||||||
|                                     (short) (x + shift + oddshift + centerShiftX), |                                     (short) (x + shift + oddshift + centerShiftX), | ||||||
| @@ -373,9 +339,10 @@ public class HybridPlotWorld extends ClassicPlotWorld { | |||||||
|                                     (short) (z + shift + oddshift + centerShiftZ), |                                     (short) (z + shift + oddshift + centerShiftZ), | ||||||
|                                     id, |                                     id, | ||||||
|                                     false, |                                     false, | ||||||
|                                 maxSchematicHeight |                                     h3 | ||||||
|                             ); |                             ); | ||||||
|                         } |                         } | ||||||
|  |                     } | ||||||
|                     if (blockArrayClipboard3.hasBiomes()) { |                     if (blockArrayClipboard3.hasBiomes()) { | ||||||
|                         BiomeType biome = blockArrayClipboard3.getBiome(BlockVector2.at( |                         BiomeType biome = blockArrayClipboard3.getBiome(BlockVector2.at( | ||||||
|                                 x + min.getBlockX(), |                                 x + min.getBlockX(), | ||||||
| @@ -424,24 +391,19 @@ public class HybridPlotWorld extends ClassicPlotWorld { | |||||||
|                             y + min.getBlockY(), |                             y + min.getBlockY(), | ||||||
|                             z + min.getBlockZ() |                             z + min.getBlockZ() | ||||||
|                     )); |                     )); | ||||||
|  |                     if (!id.getBlockType().getMaterial().isAir()) { | ||||||
|                         schem1PopulationNeeded |= id.hasNbtData(); |                         schem1PopulationNeeded |= id.hasNbtData(); | ||||||
|                     addOverlayBlock( |                         addOverlayBlock((short) (x - shift), (short) (y + roadY), (short) (z + shift + oddshift), id, false, h1); | ||||||
|                             (short) (x - shift), |  | ||||||
|                             (short) (y + roadY), |  | ||||||
|                             (short) (z + shift + oddshift), |  | ||||||
|                             id, |  | ||||||
|                             false, |  | ||||||
|                             maxSchematicHeight |  | ||||||
|                     ); |  | ||||||
|                         addOverlayBlock( |                         addOverlayBlock( | ||||||
|                                 (short) (z + shift + oddshift), |                                 (short) (z + shift + oddshift), | ||||||
|                                 (short) (y + roadY), |                                 (short) (y + roadY), | ||||||
|                                 (short) (shift - x + (oddshift - 1)), |                                 (short) (shift - x + (oddshift - 1)), | ||||||
|                                 id, |                                 id, | ||||||
|                                 true, |                                 true, | ||||||
|                             maxSchematicHeight |                                 h1 | ||||||
|                         ); |                         ); | ||||||
|                     } |                     } | ||||||
|  |                 } | ||||||
|                 if (blockArrayClipboard1.hasBiomes()) { |                 if (blockArrayClipboard1.hasBiomes()) { | ||||||
|                     BiomeType biome = blockArrayClipboard1.getBiome(BlockVector2.at(x + min.getBlockX(), z + min.getBlockZ())); |                     BiomeType biome = blockArrayClipboard1.getBiome(BlockVector2.at(x + min.getBlockX(), z + min.getBlockZ())); | ||||||
|                     addOverlayBiome((short) (x - shift), (short) (z + shift + oddshift), biome); |                     addOverlayBiome((short) (x - shift), (short) (z + shift + oddshift), biome); | ||||||
| @@ -468,15 +430,10 @@ public class HybridPlotWorld extends ClassicPlotWorld { | |||||||
|                             y + min.getBlockY(), |                             y + min.getBlockY(), | ||||||
|                             z + min.getBlockZ() |                             z + min.getBlockZ() | ||||||
|                     )); |                     )); | ||||||
|  |                     if (!id.getBlockType().getMaterial().isAir()) { | ||||||
|                         schem2PopulationNeeded |= id.hasNbtData(); |                         schem2PopulationNeeded |= id.hasNbtData(); | ||||||
|                     addOverlayBlock( |                         addOverlayBlock((short) (x - shift), (short) (y + roadY), (short) (z - shift), id, false, h2); | ||||||
|                             (short) (x - shift), |                     } | ||||||
|                             (short) (y + roadY), |  | ||||||
|                             (short) (z - shift), |  | ||||||
|                             id, |  | ||||||
|                             false, |  | ||||||
|                             maxSchematicHeight |  | ||||||
|                     ); |  | ||||||
|                 } |                 } | ||||||
|                 if (blockArrayClipboard2.hasBiomes()) { |                 if (blockArrayClipboard2.hasBiomes()) { | ||||||
|                     BiomeType biome = blockArrayClipboard2.getBiome(BlockVector2.at(x + min.getBlockX(), z + min.getBlockZ())); |                     BiomeType biome = blockArrayClipboard2.getBiome(BlockVector2.at(x + min.getBlockX(), z + min.getBlockZ())); | ||||||
| @@ -486,10 +443,6 @@ public class HybridPlotWorld extends ClassicPlotWorld { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @deprecated This method should not be available for public API usage and will be made private. |  | ||||||
|      */ |  | ||||||
|     @Deprecated(forRemoval = true, since = "6.10.2") |  | ||||||
|     public void addOverlayBlock(short x, short y, short z, BaseBlock id, boolean rotate, int height) { |     public void addOverlayBlock(short x, short y, short z, BaseBlock id, boolean rotate, int height) { | ||||||
|         if (z < 0) { |         if (z < 0) { | ||||||
|             z += this.SIZE; |             z += this.SIZE; | ||||||
| @@ -509,22 +462,13 @@ public class HybridPlotWorld extends ClassicPlotWorld { | |||||||
|         if (y >= height) { |         if (y >= height) { | ||||||
|             if (y > lastOverlayHeightError) { |             if (y > lastOverlayHeightError) { | ||||||
|                 lastOverlayHeightError = y; |                 lastOverlayHeightError = y; | ||||||
|                 LOGGER.error( |                 LOGGER.error(String.format("Error adding overlay block. `y > height`. y=%s, height=%s", y, height)); | ||||||
|                         "Error adding overlay block in world {}. `y > height`. y={}, height={}", |  | ||||||
|                         getWorldName(), |  | ||||||
|                         y, |  | ||||||
|                         height |  | ||||||
|                 ); |  | ||||||
|             } |             } | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|         existing[y] = id; |         existing[y] = id; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @deprecated This method should not be available for public API usage and will be made private. |  | ||||||
|      */ |  | ||||||
|     @Deprecated(forRemoval = true, since = "6.10.2") |  | ||||||
|     public void addOverlayBiome(short x, short z, BiomeType id) { |     public void addOverlayBiome(short x, short z, BiomeType id) { | ||||||
|         if (z < 0) { |         if (z < 0) { | ||||||
|             z += this.SIZE; |             z += this.SIZE; | ||||||
|   | |||||||
| @@ -234,19 +234,8 @@ public class HybridUtils { | |||||||
|                         Set<BlockType> types = new HashSet<>(); |                         Set<BlockType> types = new HashSet<>(); | ||||||
|                         for (int yIndex = 0; yIndex < height; yIndex++) { |                         for (int yIndex = 0; yIndex < height; yIndex++) { | ||||||
|                             BlockState old = oldBlocks[yIndex][x][z]; // Nullable |                             BlockState old = oldBlocks[yIndex][x][z]; // Nullable | ||||||
|  |                             try { | ||||||
|                                 BlockState now = newBlocks[yIndex][x][z]; // Not null |                                 BlockState now = newBlocks[yIndex][x][z]; // Not null | ||||||
|                             if (now == null) { |  | ||||||
|                                 throw new NullPointerException(String.format( |  | ||||||
|                                         "\"now\" block null attempting to perform plot analysis. Indexes: x=%d of %d, yIndex=%d" + |  | ||||||
|                                                 " of %d, z=%d of %d", |  | ||||||
|                                         x, |  | ||||||
|                                         width, |  | ||||||
|                                         yIndex, |  | ||||||
|                                         height, |  | ||||||
|                                         z, |  | ||||||
|                                         length |  | ||||||
|                                 )); |  | ||||||
|                             } |  | ||||||
|                                 if (!now.equals(old) && !(old == null && now.getBlockType().equals(BlockTypes.AIR))) { |                                 if (!now.equals(old) && !(old == null && now.getBlockType().equals(BlockTypes.AIR))) { | ||||||
|                                     changes[i]++; |                                     changes[i]++; | ||||||
|                                 } |                                 } | ||||||
| @@ -281,6 +270,9 @@ public class HybridUtils { | |||||||
|                                     } |                                     } | ||||||
|                                     types.add(now.getBlockType()); |                                     types.add(now.getBlockType()); | ||||||
|                                 } |                                 } | ||||||
|  |                             } catch (NullPointerException e) { | ||||||
|  |                                 e.printStackTrace(); | ||||||
|  |                             } | ||||||
|                         } |                         } | ||||||
|                         variety[i] = types.size(); |                         variety[i] = types.size(); | ||||||
|                         i++; |                         i++; | ||||||
|   | |||||||
| @@ -36,6 +36,7 @@ import com.plotsquared.core.plot.PlotArea; | |||||||
| import com.plotsquared.core.plot.PlotTitle; | import com.plotsquared.core.plot.PlotTitle; | ||||||
| import com.plotsquared.core.plot.PlotWeather; | import com.plotsquared.core.plot.PlotWeather; | ||||||
| import com.plotsquared.core.plot.comment.CommentManager; | import com.plotsquared.core.plot.comment.CommentManager; | ||||||
|  | import com.plotsquared.core.plot.expiration.ExpireManager; | ||||||
| import com.plotsquared.core.plot.flag.GlobalFlagContainer; | import com.plotsquared.core.plot.flag.GlobalFlagContainer; | ||||||
| import com.plotsquared.core.plot.flag.PlotFlag; | import com.plotsquared.core.plot.flag.PlotFlag; | ||||||
| import com.plotsquared.core.plot.flag.implementations.DenyExitFlag; | import com.plotsquared.core.plot.flag.implementations.DenyExitFlag; | ||||||
| @@ -162,8 +163,8 @@ public class PlotListener { | |||||||
|             if ((last != null) && !last.getId().equals(plot.getId())) { |             if ((last != null) && !last.getId().equals(plot.getId())) { | ||||||
|                 plotExit(player, last); |                 plotExit(player, last); | ||||||
|             } |             } | ||||||
|             if (PlotSquared.platform().expireManager() != null) { |             if (ExpireManager.IMP != null) { | ||||||
|                 PlotSquared.platform().expireManager().handleEntry(player, plot); |                 ExpireManager.IMP.handleEntry(player, plot); | ||||||
|             } |             } | ||||||
|             lastPlot.set(plot); |             lastPlot.set(plot); | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -162,7 +162,6 @@ public enum Permission { | |||||||
|     PERMISSION_LIST_AREA("plots.list.area"), |     PERMISSION_LIST_AREA("plots.list.area"), | ||||||
|     PERMISSION_ADMIN_COMMAND_LOAD("plots.admin.command.load"), |     PERMISSION_ADMIN_COMMAND_LOAD("plots.admin.command.load"), | ||||||
|     PERMISSION_ADMIN_COMMAND_MERGE("plots.admin.command.merge"), |     PERMISSION_ADMIN_COMMAND_MERGE("plots.admin.command.merge"), | ||||||
|     PERMISSION_ADMIN_COMMAND_MERGE_OTHER_OFFLINE("plots.admin.command.merge.other.offline"), |  | ||||||
|     PERMISSION_ADMIN_COMMAND_SET_OWNER("plots.admin.command.setowner"), |     PERMISSION_ADMIN_COMMAND_SET_OWNER("plots.admin.command.setowner"), | ||||||
|     PERMISSION_COMMENT("plots.comment"), |     PERMISSION_COMMENT("plots.comment"), | ||||||
|     PERMISSION_INBOX("plots.inbox"), |     PERMISSION_INBOX("plots.inbox"), | ||||||
|   | |||||||
| @@ -42,6 +42,7 @@ import com.plotsquared.core.plot.PlotArea; | |||||||
| import com.plotsquared.core.plot.PlotCluster; | import com.plotsquared.core.plot.PlotCluster; | ||||||
| import com.plotsquared.core.plot.PlotId; | import com.plotsquared.core.plot.PlotId; | ||||||
| import com.plotsquared.core.plot.PlotWeather; | import com.plotsquared.core.plot.PlotWeather; | ||||||
|  | import com.plotsquared.core.plot.expiration.ExpireManager; | ||||||
| import com.plotsquared.core.plot.flag.implementations.DoneFlag; | import com.plotsquared.core.plot.flag.implementations.DoneFlag; | ||||||
| import com.plotsquared.core.plot.world.PlotAreaManager; | import com.plotsquared.core.plot.world.PlotAreaManager; | ||||||
| import com.plotsquared.core.plot.world.SinglePlotArea; | import com.plotsquared.core.plot.world.SinglePlotArea; | ||||||
| @@ -617,8 +618,8 @@ public abstract class PlotPlayer<P> implements CommandCaller, OfflinePlotPlayer, | |||||||
|                 LOGGER.info("Plot {} was deleted + cleared due to {} getting banned", owned.getId(), getName()); |                 LOGGER.info("Plot {} was deleted + cleared due to {} getting banned", owned.getId(), getName()); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         if (PlotSquared.platform().expireManager() != null) { |         if (ExpireManager.IMP != null) { | ||||||
|             PlotSquared.platform().expireManager().storeDate(getUUID(), System.currentTimeMillis()); |             ExpireManager.IMP.storeDate(getUUID(), System.currentTimeMillis()); | ||||||
|         } |         } | ||||||
|         PlotSquared.platform().playerManager().removePlayer(this); |         PlotSquared.platform().playerManager().removePlayer(this); | ||||||
|         PlotSquared.platform().unregister(this); |         PlotSquared.platform().unregister(this); | ||||||
|   | |||||||
| @@ -40,6 +40,7 @@ import com.plotsquared.core.location.Location; | |||||||
| import com.plotsquared.core.permissions.Permission; | import com.plotsquared.core.permissions.Permission; | ||||||
| import com.plotsquared.core.player.ConsolePlayer; | import com.plotsquared.core.player.ConsolePlayer; | ||||||
| import com.plotsquared.core.player.PlotPlayer; | import com.plotsquared.core.player.PlotPlayer; | ||||||
|  | import com.plotsquared.core.plot.expiration.ExpireManager; | ||||||
| import com.plotsquared.core.plot.expiration.PlotAnalysis; | import com.plotsquared.core.plot.expiration.PlotAnalysis; | ||||||
| import com.plotsquared.core.plot.flag.FlagContainer; | import com.plotsquared.core.plot.flag.FlagContainer; | ||||||
| import com.plotsquared.core.plot.flag.GlobalFlagContainer; | import com.plotsquared.core.plot.flag.GlobalFlagContainer; | ||||||
| @@ -68,9 +69,6 @@ import com.plotsquared.core.util.task.TaskTime; | |||||||
| import com.sk89q.worldedit.math.BlockVector3; | import com.sk89q.worldedit.math.BlockVector3; | ||||||
| import com.sk89q.worldedit.regions.CuboidRegion; | import com.sk89q.worldedit.regions.CuboidRegion; | ||||||
| import com.sk89q.worldedit.world.biome.BiomeType; | import com.sk89q.worldedit.world.biome.BiomeType; | ||||||
| import jdk.jfr.Category; |  | ||||||
| import jdk.jfr.Event; |  | ||||||
| import jdk.jfr.Label; |  | ||||||
| import net.kyori.adventure.text.Component; | import net.kyori.adventure.text.Component; | ||||||
| import net.kyori.adventure.text.TextComponent; | import net.kyori.adventure.text.TextComponent; | ||||||
| import net.kyori.adventure.text.minimessage.MiniMessage; | import net.kyori.adventure.text.minimessage.MiniMessage; | ||||||
| @@ -125,6 +123,9 @@ public class Plot { | |||||||
|     private static final MiniMessage MINI_MESSAGE = MiniMessage.builder().build(); |     private static final MiniMessage MINI_MESSAGE = MiniMessage.builder().build(); | ||||||
|     private static final Cleaner CLEANER = Cleaner.create(); |     private static final Cleaner CLEANER = Cleaner.create(); | ||||||
|  |  | ||||||
|  |     static Set<Plot> connected_cache; | ||||||
|  |     static Set<CuboidRegion> regions_cache; | ||||||
|  |  | ||||||
|     static { |     static { | ||||||
|         FLAG_DECIMAL_FORMAT.setMaximumFractionDigits(340); |         FLAG_DECIMAL_FORMAT.setMaximumFractionDigits(340); | ||||||
|     } |     } | ||||||
| @@ -207,8 +208,6 @@ public class Plot { | |||||||
|      */ |      */ | ||||||
|     private Plot origin; |     private Plot origin; | ||||||
|  |  | ||||||
|     private Set<Plot> connectedCache; |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Constructor for a new plot. |      * Constructor for a new plot. | ||||||
|      * (Only changes after plot.create() will be properly set in the database) |      * (Only changes after plot.create() will be properly set in the database) | ||||||
| @@ -578,14 +577,7 @@ public class Plot { | |||||||
|             return false; |             return false; | ||||||
|         } |         } | ||||||
|         final Set<Plot> connected = getConnectedPlots(); |         final Set<Plot> connected = getConnectedPlots(); | ||||||
|         for (Plot current : connected) { |         return connected.stream().anyMatch(current -> uuid.equals(current.getOwner())); | ||||||
|             // can skip ServerPlotFlag check in getOwner() |  | ||||||
|             // as flags are synchronized between plots |  | ||||||
|             if (uuid.equals(current.getOwnerAbs())) { |  | ||||||
|                 return true; |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|         return false; |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -1113,8 +1105,8 @@ public class Plot { | |||||||
|      * @return A boolean indicating whether or not the operation succeeded |      * @return A boolean indicating whether or not the operation succeeded | ||||||
|      */ |      */ | ||||||
|     public <V> boolean setFlag(final @NonNull PlotFlag<V, ?> flag) { |     public <V> boolean setFlag(final @NonNull PlotFlag<V, ?> flag) { | ||||||
|         if (flag instanceof KeepFlag && PlotSquared.platform().expireManager() != null) { |         if (flag instanceof KeepFlag && ExpireManager.IMP != null) { | ||||||
|             PlotSquared.platform().expireManager().updateExpired(this); |             ExpireManager.IMP.updateExpired(this); | ||||||
|         } |         } | ||||||
|         for (final Plot plot : this.getConnectedPlots()) { |         for (final Plot plot : this.getConnectedPlots()) { | ||||||
|             plot.getFlagContainer().addFlag(flag); |             plot.getFlagContainer().addFlag(flag); | ||||||
| @@ -1303,7 +1295,6 @@ public class Plot { | |||||||
|             DBFunc.delete(current); |             DBFunc.delete(current); | ||||||
|             current.setOwnerAbs(null); |             current.setOwnerAbs(null); | ||||||
|             current.settings = null; |             current.settings = null; | ||||||
|             current.clearCache(); |  | ||||||
|             for (final PlotPlayer<?> pp : players) { |             for (final PlotPlayer<?> pp : players) { | ||||||
|                 this.plotListener.plotEntry(pp, current); |                 this.plotListener.plotEntry(pp, current); | ||||||
|             } |             } | ||||||
| @@ -1874,7 +1865,6 @@ public class Plot { | |||||||
|         this.area.removePlot(this.id); |         this.area.removePlot(this.id); | ||||||
|         this.id = plot.getId(); |         this.id = plot.getId(); | ||||||
|         this.area.addPlotAbs(this); |         this.area.addPlotAbs(this); | ||||||
|         clearCache(); |  | ||||||
|         DBFunc.movePlot(this, plot); |         DBFunc.movePlot(this, plot); | ||||||
|         TaskManager.runTaskLater(whenDone, TaskTime.ticks(1L)); |         TaskManager.runTaskLater(whenDone, TaskTime.ticks(1L)); | ||||||
|         return true; |         return true; | ||||||
| @@ -2139,16 +2129,17 @@ public class Plot { | |||||||
|                     this.origin.origin = base; |                     this.origin.origin = base; | ||||||
|                     other.origin = base; |                     other.origin = base; | ||||||
|                     this.origin = base; |                     this.origin = base; | ||||||
|                     this.connectedCache = null; |                     connected_cache = null; | ||||||
|                 } |                 } | ||||||
|             } else { |             } else { | ||||||
|                 if (this.origin != null) { |                 if (this.origin != null) { | ||||||
|                     this.origin.origin = null; |                     this.origin.origin = null; | ||||||
|                     this.origin = null; |                     this.origin = null; | ||||||
|                 } |                 } | ||||||
|                 this.connectedCache = null; |                 connected_cache = null; | ||||||
|             } |             } | ||||||
|             DBFunc.setMerged(this, this.getSettings().getMerged()); |             DBFunc.setMerged(this, this.getSettings().getMerged()); | ||||||
|  |             regions_cache = null; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -2183,7 +2174,8 @@ public class Plot { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     public void clearCache() { |     public void clearCache() { | ||||||
|         this.connectedCache = null; |         connected_cache = null; | ||||||
|  |         regions_cache = null; | ||||||
|         if (this.origin != null) { |         if (this.origin != null) { | ||||||
|             this.origin.origin = null; |             this.origin.origin = null; | ||||||
|             this.origin = null; |             this.origin = null; | ||||||
| @@ -2297,25 +2289,6 @@ public class Plot { | |||||||
|         return this.area.getPlotAbs(this.id.getRelative(direction)); |         return this.area.getPlotAbs(this.id.getRelative(direction)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Label("Connected Plots Search") |  | ||||||
|     @Category("PlotSquared") |  | ||||||
|     static class ConnectedPlotsEvent extends Event { |  | ||||||
|  |  | ||||||
|         public ConnectedPlotsEvent(final int x, final int y) { |  | ||||||
|             this.x = x; |  | ||||||
|             this.y = y; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         @Label("Plot Id X") |  | ||||||
|         public int x; |  | ||||||
|         @Label("Plot Id Y") |  | ||||||
|         public int y; |  | ||||||
|         @Label("Merged  Plots Count") |  | ||||||
|         public int mergedSize; |  | ||||||
|         @Label("Connected Plots Cache Miss") |  | ||||||
|         public boolean cacheMiss; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Gets a set of plots connected (and including) this plot<br> |      * Gets a set of plots connected (and including) this plot<br> | ||||||
|      * - This result is cached globally |      * - This result is cached globally | ||||||
| @@ -2323,21 +2296,16 @@ public class Plot { | |||||||
|      * @return a Set of Plots connected to this Plot |      * @return a Set of Plots connected to this Plot | ||||||
|      */ |      */ | ||||||
|     public Set<Plot> getConnectedPlots() { |     public Set<Plot> getConnectedPlots() { | ||||||
|         ConnectedPlotsEvent event = new ConnectedPlotsEvent(this.id.getX(), this.id.getY()); |  | ||||||
|         event.begin(); |  | ||||||
|         if (this.settings == null) { |         if (this.settings == null) { | ||||||
|             event.commit(); |  | ||||||
|             return Collections.singleton(this); |             return Collections.singleton(this); | ||||||
|         } |         } | ||||||
|         if (!this.isMerged()) { |         if (!this.isMerged()) { | ||||||
|             event.commit(); |  | ||||||
|             return Collections.singleton(this); |             return Collections.singleton(this); | ||||||
|         } |         } | ||||||
|         if (this.connectedCache != null && this.connectedCache.contains(this)) { |         if (connected_cache != null && connected_cache.contains(this)) { | ||||||
|             event.mergedSize = this.connectedCache.size(); |             return connected_cache; | ||||||
|             event.commit(); |  | ||||||
|             return this.connectedCache; |  | ||||||
|         } |         } | ||||||
|  |         regions_cache = null; | ||||||
|  |  | ||||||
|         HashSet<Plot> tmpSet = new HashSet<>(); |         HashSet<Plot> tmpSet = new HashSet<>(); | ||||||
|         tmpSet.add(this); |         tmpSet.add(this); | ||||||
| @@ -2442,10 +2410,7 @@ public class Plot { | |||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         this.connectedCache = tmpSet; |         connected_cache = tmpSet; | ||||||
|         event.mergedSize = tmpSet.size(); |  | ||||||
|         event.cacheMiss = true; |  | ||||||
|         event.commit(); |  | ||||||
|         return tmpSet; |         return tmpSet; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -2457,15 +2422,19 @@ public class Plot { | |||||||
|      * @return all regions within the plot |      * @return all regions within the plot | ||||||
|      */ |      */ | ||||||
|     public @NonNull Set<CuboidRegion> getRegions() { |     public @NonNull Set<CuboidRegion> getRegions() { | ||||||
|  |         if (regions_cache != null && connected_cache != null && connected_cache.contains(this)) { | ||||||
|  |             return regions_cache; | ||||||
|  |         } | ||||||
|         if (!this.isMerged()) { |         if (!this.isMerged()) { | ||||||
|             Location pos1 = this.getBottomAbs().withY(getArea().getMinBuildHeight()); |             Location pos1 = this.getBottomAbs().withY(getArea().getMinBuildHeight()); | ||||||
|             Location pos2 = this.getTopAbs().withY(getArea().getMaxBuildHeight()); |             Location pos2 = this.getTopAbs().withY(getArea().getMaxBuildHeight()); | ||||||
|             this.connectedCache = Sets.newHashSet(this); |             connected_cache = Sets.newHashSet(this); | ||||||
|             CuboidRegion rg = new CuboidRegion(pos1.getBlockVector3(), pos2.getBlockVector3()); |             CuboidRegion rg = new CuboidRegion(pos1.getBlockVector3(), pos2.getBlockVector3()); | ||||||
|             return Collections.singleton(rg); |             regions_cache = Collections.singleton(rg); | ||||||
|  |             return regions_cache; | ||||||
|         } |         } | ||||||
|         Set<Plot> plots = this.getConnectedPlots(); |         Set<Plot> plots = this.getConnectedPlots(); | ||||||
|         Set<CuboidRegion> regions = new HashSet<>(); |         Set<CuboidRegion> regions = regions_cache = new HashSet<>(); | ||||||
|         Set<PlotId> visited = new HashSet<>(); |         Set<PlotId> visited = new HashSet<>(); | ||||||
|         for (Plot current : plots) { |         for (Plot current : plots) { | ||||||
|             if (visited.contains(current.getId())) { |             if (visited.contains(current.getId())) { | ||||||
| @@ -2862,11 +2831,11 @@ public class Plot { | |||||||
|                     Component members = PlayerManager.getPlayerList(this.getMembers(), player); |                     Component members = PlayerManager.getPlayerList(this.getMembers(), player); | ||||||
|                     Component denied = PlayerManager.getPlayerList(this.getDenied(), player); |                     Component denied = PlayerManager.getPlayerList(this.getDenied(), player); | ||||||
|                     String seen; |                     String seen; | ||||||
|                     if (Settings.Enabled_Components.PLOT_EXPIRY && PlotSquared.platform().expireManager() != null) { |                     if (Settings.Enabled_Components.PLOT_EXPIRY && ExpireManager.IMP != null) { | ||||||
|                         if (this.isOnline()) { |                         if (this.isOnline()) { | ||||||
|                             seen = TranslatableCaption.of("info.now").getComponent(player); |                             seen = TranslatableCaption.of("info.now").getComponent(player); | ||||||
|                         } else { |                         } else { | ||||||
|                             int time = (int) (PlotSquared.platform().expireManager().getAge(this, false) / 1000); |                             int time = (int) (ExpireManager.IMP.getAge(this, false) / 1000); | ||||||
|                             if (time != 0) { |                             if (time != 0) { | ||||||
|                                 seen = TimeUtil.secToTime(time); |                                 seen = TimeUtil.secToTime(time); | ||||||
|                             } else { |                             } else { | ||||||
|   | |||||||
| @@ -112,7 +112,7 @@ public final class PlotId { | |||||||
|      * @return Plot ID copy |      * @return Plot ID copy | ||||||
|      * @deprecated PlotId is immutable, copy is not required. |      * @deprecated PlotId is immutable, copy is not required. | ||||||
|      */ |      */ | ||||||
|     @Deprecated(forRemoval = true, since = "6.10.2") |     @Deprecated(forRemoval = true, since = "TODO") | ||||||
|     public @NonNull PlotId copy() { |     public @NonNull PlotId copy() { | ||||||
|         return this; |         return this; | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -263,7 +263,6 @@ public final class PlotModificationManager { | |||||||
|                     return; |                     return; | ||||||
|                 } |                 } | ||||||
|                 Plot current = queue.poll(); |                 Plot current = queue.poll(); | ||||||
|                 current.clearCache(); |  | ||||||
|                 if (plot.getArea().getTerrain() != PlotAreaTerrainType.NONE) { |                 if (plot.getArea().getTerrain() != PlotAreaTerrainType.NONE) { | ||||||
|                     try { |                     try { | ||||||
|                         PlotSquared.platform().regionManager().regenerateRegion( |                         PlotSquared.platform().regionManager().regenerateRegion( | ||||||
| @@ -328,7 +327,6 @@ public final class PlotModificationManager { | |||||||
|         ArrayList<PlotId> ids = new ArrayList<>(plots.size()); |         ArrayList<PlotId> ids = new ArrayList<>(plots.size()); | ||||||
|         for (Plot current : plots) { |         for (Plot current : plots) { | ||||||
|             current.setHome(null); |             current.setHome(null); | ||||||
|             current.clearCache(); |  | ||||||
|             ids.add(current.getId()); |             ids.add(current.getId()); | ||||||
|         } |         } | ||||||
|         this.plot.clearRatings(); |         this.plot.clearRatings(); | ||||||
| @@ -480,7 +478,8 @@ public final class PlotModificationManager { | |||||||
|                 this.plot.updateWorldBorder(); |                 this.plot.updateWorldBorder(); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         this.plot.clearCache(); |         Plot.connected_cache = null; | ||||||
|  |         Plot.regions_cache = null; | ||||||
|         this.plot.getTrusted().clear(); |         this.plot.getTrusted().clear(); | ||||||
|         this.plot.getMembers().clear(); |         this.plot.getMembers().clear(); | ||||||
|         this.plot.getDenied().clear(); |         this.plot.getDenied().clear(); | ||||||
| @@ -631,7 +630,6 @@ public final class PlotModificationManager { | |||||||
|         if (queue.size() > 0) { |         if (queue.size() > 0) { | ||||||
|             queue.enqueue(); |             queue.enqueue(); | ||||||
|         } |         } | ||||||
|         visited.forEach(Plot::clearCache); |  | ||||||
|         return toReturn; |         return toReturn; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -18,8 +18,7 @@ | |||||||
|  */ |  */ | ||||||
| package com.plotsquared.core.plot; | package com.plotsquared.core.plot; | ||||||
|  |  | ||||||
| import org.checkerframework.checker.nullness.qual.Nullable; | import javax.annotation.Nullable; | ||||||
|  |  | ||||||
| import java.util.Objects; | import java.util.Objects; | ||||||
|  |  | ||||||
| public class PlotTitle { | public class PlotTitle { | ||||||
|   | |||||||
| @@ -18,8 +18,6 @@ | |||||||
|  */ |  */ | ||||||
| package com.plotsquared.core.plot.expiration; | package com.plotsquared.core.plot.expiration; | ||||||
|  |  | ||||||
| import com.google.inject.Inject; |  | ||||||
| import com.plotsquared.core.PlotPlatform; |  | ||||||
| import com.plotsquared.core.PlotSquared; | import com.plotsquared.core.PlotSquared; | ||||||
| import com.plotsquared.core.configuration.caption.Caption; | import com.plotsquared.core.configuration.caption.Caption; | ||||||
| import com.plotsquared.core.configuration.caption.Templates; | import com.plotsquared.core.configuration.caption.Templates; | ||||||
| @@ -62,10 +60,6 @@ import java.util.concurrent.ConcurrentLinkedDeque; | |||||||
|  |  | ||||||
| public class ExpireManager { | public class ExpireManager { | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @deprecated Use {@link PlotPlatform#expireManager()} instead |  | ||||||
|      */ |  | ||||||
|     @Deprecated(forRemoval = true, since = "6.10.2") |  | ||||||
|     public static ExpireManager IMP; |     public static ExpireManager IMP; | ||||||
|     private final ConcurrentHashMap<UUID, Long> dates_cache; |     private final ConcurrentHashMap<UUID, Long> dates_cache; | ||||||
|     private final ConcurrentHashMap<UUID, Long> account_age_cache; |     private final ConcurrentHashMap<UUID, Long> account_age_cache; | ||||||
| @@ -77,7 +71,6 @@ public class ExpireManager { | |||||||
|      */ |      */ | ||||||
|     private int running; |     private int running; | ||||||
|  |  | ||||||
|     @Inject |  | ||||||
|     public ExpireManager(final @NonNull EventDispatcher eventDispatcher) { |     public ExpireManager(final @NonNull EventDispatcher eventDispatcher) { | ||||||
|         this.tasks = new ArrayDeque<>(); |         this.tasks = new ArrayDeque<>(); | ||||||
|         this.dates_cache = new ConcurrentHashMap<>(); |         this.dates_cache = new ConcurrentHashMap<>(); | ||||||
|   | |||||||
| @@ -18,7 +18,6 @@ | |||||||
|  */ |  */ | ||||||
| package com.plotsquared.core.plot.expiration; | package com.plotsquared.core.plot.expiration; | ||||||
|  |  | ||||||
| import com.plotsquared.core.PlotSquared; |  | ||||||
| import com.plotsquared.core.configuration.Settings; | import com.plotsquared.core.configuration.Settings; | ||||||
| import com.plotsquared.core.plot.Plot; | import com.plotsquared.core.plot.Plot; | ||||||
| import com.plotsquared.core.plot.PlotArea; | import com.plotsquared.core.plot.PlotArea; | ||||||
| @@ -73,9 +72,8 @@ public class ExpiryTask { | |||||||
|                         min = false; |                         min = false; | ||||||
|                         diff = plots.size() - settings.REQUIRED_PLOTS; |                         diff = plots.size() - settings.REQUIRED_PLOTS; | ||||||
|                     } |                     } | ||||||
|                     ExpireManager expireManager = PlotSquared.platform().expireManager(); |  | ||||||
|                     List<Long> entireList = |                     List<Long> entireList = | ||||||
|                             plots.stream().map(plot -> expireManager.getAge(plot, settings.DELETE_IF_OWNER_IS_UNKNOWN)) |                             plots.stream().map(plot -> ExpireManager.IMP.getAge(plot, settings.DELETE_IF_OWNER_IS_UNKNOWN)) | ||||||
|                                     .collect(Collectors.toList()); |                                     .collect(Collectors.toList()); | ||||||
|                     List<Long> top = new ArrayList<>(diff + 1); |                     List<Long> top = new ArrayList<>(diff + 1); | ||||||
|                     if (diff > 1000) { |                     if (diff > 1000) { | ||||||
|   | |||||||
| @@ -116,7 +116,7 @@ public class BlockArrayCacheScopedQueueCoordinator extends ScopedQueueCoordinato | |||||||
|         x += offsetX; |         x += offsetX; | ||||||
|         z += offsetZ; |         z += offsetZ; | ||||||
|         if (x >= scopeMinX && x < scopeMaxX && y >= minY && y <= maxY && z >= scopeMinZ && z < scopeMaxZ) { |         if (x >= scopeMinX && x < scopeMaxX && y >= minY && y <= maxY && z >= scopeMinZ && z < scopeMaxZ) { | ||||||
|             blockStates[y - minY][x - scopeMinX][z - scopeMinZ] = id.toImmutableState(); |             blockStates[y - minY][x][z] = id.toImmutableState(); | ||||||
|         } |         } | ||||||
|         return false; |         return false; | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -20,7 +20,6 @@ package com.plotsquared.core.util; | |||||||
|  |  | ||||||
| import com.google.common.eventbus.EventBus; | import com.google.common.eventbus.EventBus; | ||||||
| import com.intellectualsites.annotations.DoNotUse; | import com.intellectualsites.annotations.DoNotUse; | ||||||
| import com.plotsquared.core.PlotSquared; |  | ||||||
| import com.plotsquared.core.configuration.Settings; | import com.plotsquared.core.configuration.Settings; | ||||||
| import com.plotsquared.core.configuration.caption.TranslatableCaption; | import com.plotsquared.core.configuration.caption.TranslatableCaption; | ||||||
| import com.plotsquared.core.events.PlayerAutoPlotEvent; | import com.plotsquared.core.events.PlayerAutoPlotEvent; | ||||||
| @@ -60,6 +59,7 @@ import com.plotsquared.core.plot.Plot; | |||||||
| import com.plotsquared.core.plot.PlotArea; | import com.plotsquared.core.plot.PlotArea; | ||||||
| import com.plotsquared.core.plot.PlotId; | import com.plotsquared.core.plot.PlotId; | ||||||
| import com.plotsquared.core.plot.Rating; | import com.plotsquared.core.plot.Rating; | ||||||
|  | import com.plotsquared.core.plot.expiration.ExpireManager; | ||||||
| import com.plotsquared.core.plot.flag.PlotFlag; | import com.plotsquared.core.plot.flag.PlotFlag; | ||||||
| import com.plotsquared.core.plot.flag.implementations.DeviceInteractFlag; | import com.plotsquared.core.plot.flag.implementations.DeviceInteractFlag; | ||||||
| import com.plotsquared.core.plot.flag.implementations.MiscPlaceFlag; | import com.plotsquared.core.plot.flag.implementations.MiscPlaceFlag; | ||||||
| @@ -300,8 +300,8 @@ public class EventDispatcher { | |||||||
|         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 | ||||||
|         } |         } | ||||||
|         if (PlotSquared.platform().expireManager() != null) { |         if (ExpireManager.IMP != null) { | ||||||
|             PlotSquared.platform().expireManager().handleJoin(player); |             ExpireManager.IMP.handleJoin(player); | ||||||
|         } |         } | ||||||
|         if (this.worldEdit != null) { |         if (this.worldEdit != null) { | ||||||
|             if (player.getAttribute("worldedit")) { |             if (player.getAttribute("worldedit")) { | ||||||
|   | |||||||
| @@ -1,53 +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; |  | ||||||
|  |  | ||||||
| import com.plotsquared.core.plot.PlotArea; |  | ||||||
| import com.plotsquared.core.plot.flag.PlotFlag; |  | ||||||
|  |  | ||||||
| import java.util.Objects; |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * Util class for generic methods relating to plot flags. |  | ||||||
|  * |  | ||||||
|  * @since 6.10.4 |  | ||||||
|  */ |  | ||||||
| public final class PlotFlagUtil { |  | ||||||
|  |  | ||||||
|     private PlotFlagUtil() { |  | ||||||
|         //No-op |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Check if the value of a {@link PlotFlag} matches the given value. If |  | ||||||
|      * road flags are disabled for the given plot area, returns false. |  | ||||||
|      * |  | ||||||
|      * @param flagClass boolean flag to get value of |  | ||||||
|      * @param value     boolean value to check flag value against |  | ||||||
|      * @param <T>       The flag value type |  | ||||||
|      * @return true if road flag value matches with road flags enabled |  | ||||||
|      * @since 6.10.4 |  | ||||||
|      */ |  | ||||||
|     public static <T> boolean isAreaRoadFlagsAndFlagEquals( |  | ||||||
|             PlotArea area, final Class<? extends PlotFlag<T, ?>> flagClass, T value |  | ||||||
|     ) { |  | ||||||
|         return area.isRoadFlags() && Objects.equals(area.getRoadFlag(flagClass), value); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
| } |  | ||||||
| @@ -18,8 +18,8 @@ | |||||||
|  */ |  */ | ||||||
| package com.plotsquared.core.util.query; | package com.plotsquared.core.util.query; | ||||||
|  |  | ||||||
| import com.plotsquared.core.PlotSquared; |  | ||||||
| import com.plotsquared.core.plot.Plot; | import com.plotsquared.core.plot.Plot; | ||||||
|  | import com.plotsquared.core.plot.expiration.ExpireManager; | ||||||
|  |  | ||||||
| import java.util.Collection; | import java.util.Collection; | ||||||
|  |  | ||||||
| @@ -27,7 +27,7 @@ class ExpiredPlotProvider implements PlotProvider { | |||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public Collection<Plot> getPlots() { |     public Collection<Plot> getPlots() { | ||||||
|         return PlotSquared.platform().expireManager().getPendingExpired(); |         return ExpireManager.IMP.getPendingExpired(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -23,9 +23,9 @@ import com.plotsquared.core.plot.PlotArea; | |||||||
| import com.plotsquared.core.plot.world.PlotAreaManager; | import com.plotsquared.core.plot.world.PlotAreaManager; | ||||||
| import org.checkerframework.checker.nullness.qual.NonNull; | import org.checkerframework.checker.nullness.qual.NonNull; | ||||||
|  |  | ||||||
| import java.util.ArrayList; |  | ||||||
| import java.util.Collection; | import java.util.Collection; | ||||||
| import java.util.List; | import java.util.HashSet; | ||||||
|  | import java.util.Set; | ||||||
|  |  | ||||||
| class GlobalPlotProvider implements PlotProvider { | class GlobalPlotProvider implements PlotProvider { | ||||||
|  |  | ||||||
| @@ -37,7 +37,7 @@ class GlobalPlotProvider implements PlotProvider { | |||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public Collection<Plot> getPlots() { |     public Collection<Plot> getPlots() { | ||||||
|         final List<Plot> plots = new ArrayList<>(); |         final Set<Plot> plots = new HashSet<>(); | ||||||
|         for (final PlotArea plotArea : this.plotAreaManager.getAllPlotAreas()) { |         for (final PlotArea plotArea : this.plotAreaManager.getAllPlotAreas()) { | ||||||
|             plots.addAll(plotArea.getPlots()); |             plots.addAll(plotArea.getPlots()); | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -19,7 +19,7 @@ plugins { | |||||||
| } | } | ||||||
|  |  | ||||||
| group = "com.plotsquared" | group = "com.plotsquared" | ||||||
| version = "6.10.6-SNAPSHOT" | version = "6.10.2-SNAPSHOT" | ||||||
|  |  | ||||||
| subprojects { | subprojects { | ||||||
|     group = rootProject.group |     group = rootProject.group | ||||||
| @@ -65,7 +65,7 @@ subprojects { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     dependencies { |     dependencies { | ||||||
|         implementation(platform("com.intellectualsites.bom:bom-1.18.x:1.21")) |         implementation(platform("com.intellectualsites.bom:bom-1.18.x:1.16")) | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     dependencies { |     dependencies { | ||||||
|   | |||||||
| @@ -1,10 +1,11 @@ | |||||||
| [versions] | [versions] | ||||||
| # Platform expectations | # Platform expectations | ||||||
|  | paper = "1.18.1-R0.1-SNAPSHOT" | ||||||
| guice = "5.1.0" | guice = "5.1.0" | ||||||
| spotbugs = "4.7.3" | spotbugs = "4.7.2" | ||||||
|  |  | ||||||
| # Plugins | # Plugins | ||||||
| worldedit = "7.2.13" | worldedit = "7.2.12" | ||||||
| placeholderapi = "2.11.2" | placeholderapi = "2.11.2" | ||||||
| luckperms = "5.4" | luckperms = "5.4" | ||||||
| essentialsx = "2.19.7" | essentialsx = "2.19.7" | ||||||
| @@ -13,7 +14,7 @@ mvdwapi = "3.1.1" | |||||||
| # Third party | # Third party | ||||||
| prtree = "2.0.0" | prtree = "2.0.0" | ||||||
| aopalliance = "1.0" | aopalliance = "1.0" | ||||||
| cloud-services = "1.8.0" | cloud-services = "1.7.1" | ||||||
| arkitektonika = "2.1.1" | arkitektonika = "2.1.1" | ||||||
| squirrelid = "0.3.1" | squirrelid = "0.3.1" | ||||||
| http4j = "1.3" | http4j = "1.3" | ||||||
| @@ -25,6 +26,9 @@ licenser = "0.6.1" | |||||||
| nexus = "1.1.0" | nexus = "1.1.0" | ||||||
|  |  | ||||||
| [libraries] | [libraries] | ||||||
|  | # Platform expectations | ||||||
|  | paper = { group = "io.papermc.paper", name = "paper-api", version.ref = "paper" } | ||||||
|  |  | ||||||
| # Platform expectations | # Platform expectations | ||||||
| guice = { group = "com.google.inject", name = "guice", version.ref = "guice" } | guice = { group = "com.google.inject", name = "guice", version.ref = "guice" } | ||||||
| guiceassistedinject = { group = "com.google.inject.extensions", name = "guice-assistedinject", version.ref = "guice" } | guiceassistedinject = { group = "com.google.inject.extensions", name = "guice-assistedinject", version.ref = "guice" } | ||||||
|   | |||||||
							
								
								
									
										
											BIN
										
									
								
								gradle/wrapper/gradle-wrapper.jar
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								gradle/wrapper/gradle-wrapper.jar
									
									
									
									
										vendored
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										3
									
								
								gradle/wrapper/gradle-wrapper.properties
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								gradle/wrapper/gradle-wrapper.properties
									
									
									
									
										vendored
									
									
								
							| @@ -1,6 +1,5 @@ | |||||||
| distributionBase=GRADLE_USER_HOME | distributionBase=GRADLE_USER_HOME | ||||||
| distributionPath=wrapper/dists | distributionPath=wrapper/dists | ||||||
| distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip | distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip | ||||||
| networkTimeout=10000 |  | ||||||
| zipStoreBase=GRADLE_USER_HOME | zipStoreBase=GRADLE_USER_HOME | ||||||
| zipStorePath=wrapper/dists | zipStorePath=wrapper/dists | ||||||
|   | |||||||
							
								
								
									
										12
									
								
								gradlew
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								gradlew
									
									
									
									
										vendored
									
									
								
							| @@ -55,7 +55,7 @@ | |||||||
| #       Darwin, MinGW, and NonStop. | #       Darwin, MinGW, and NonStop. | ||||||
| # | # | ||||||
| #   (3) This script is generated from the Groovy template | #   (3) This script is generated from the Groovy template | ||||||
| #       https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt | #       https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt | ||||||
| #       within the Gradle project. | #       within the Gradle project. | ||||||
| # | # | ||||||
| #       You can find Gradle at https://github.com/gradle/gradle/. | #       You can find Gradle at https://github.com/gradle/gradle/. | ||||||
| @@ -80,11 +80,11 @@ do | |||||||
|     esac |     esac | ||||||
| done | done | ||||||
|  |  | ||||||
| # This is normally unused |  | ||||||
| # shellcheck disable=SC2034 |  | ||||||
| APP_BASE_NAME=${0##*/} |  | ||||||
| APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit | APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit | ||||||
|  |  | ||||||
|  | APP_NAME="Gradle" | ||||||
|  | APP_BASE_NAME=${0##*/} | ||||||
|  |  | ||||||
| # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | ||||||
| DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' | ||||||
|  |  | ||||||
| @@ -143,16 +143,12 @@ fi | |||||||
| if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then | if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then | ||||||
|     case $MAX_FD in #( |     case $MAX_FD in #( | ||||||
|       max*) |       max*) | ||||||
|         # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. |  | ||||||
|         # shellcheck disable=SC3045  |  | ||||||
|         MAX_FD=$( ulimit -H -n ) || |         MAX_FD=$( ulimit -H -n ) || | ||||||
|             warn "Could not query maximum file descriptor limit" |             warn "Could not query maximum file descriptor limit" | ||||||
|     esac |     esac | ||||||
|     case $MAX_FD in  #( |     case $MAX_FD in  #( | ||||||
|       '' | soft) :;; #( |       '' | soft) :;; #( | ||||||
|       *) |       *) | ||||||
|         # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. |  | ||||||
|         # shellcheck disable=SC3045  |  | ||||||
|         ulimit -n "$MAX_FD" || |         ulimit -n "$MAX_FD" || | ||||||
|             warn "Could not set maximum file descriptor limit to $MAX_FD" |             warn "Could not set maximum file descriptor limit to $MAX_FD" | ||||||
|     esac |     esac | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								gradlew.bat
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								gradlew.bat
									
									
									
									
										vendored
									
									
								
							| @@ -26,7 +26,6 @@ if "%OS%"=="Windows_NT" setlocal | |||||||
|  |  | ||||||
| set DIRNAME=%~dp0 | set DIRNAME=%~dp0 | ||||||
| if "%DIRNAME%"=="" set DIRNAME=. | if "%DIRNAME%"=="" set DIRNAME=. | ||||||
| @rem This is normally unused |  | ||||||
| set APP_BASE_NAME=%~n0 | set APP_BASE_NAME=%~n0 | ||||||
| set APP_HOME=%DIRNAME% | set APP_HOME=%DIRNAME% | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user