mirror of
				https://github.com/IntellectualSites/PlotSquared.git
				synced 2025-10-30 00:53:44 +01:00 
			
		
		
		
	Compare commits
	
		
			20 Commits
		
	
	
		
			fix/plotTi
			...
			feature/v6
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | e888ea95dc | ||
| ![renovate[bot]](/assets/img/avatar_default.png)  | 28bd993680 | ||
|   | 8330f37d8a | ||
|   | 985fae65b6 | ||
|   | db2d590e8e | ||
| ![renovate[bot]](/assets/img/avatar_default.png)  | c8d356783a | ||
|   | 4947450ff0 | ||
|   | de4e91ff62 | ||
|   | fe5e3d5f6d | ||
|   | b8b3098022 | ||
| ![renovate[bot]](/assets/img/avatar_default.png)  | 0ae8fc46b8 | ||
|   | e0762f63a8 | ||
|   | 9f3850000c | ||
|   | 76c6be9ba7 | ||
|   | 308a5aa781 | ||
|   | e244527538 | ||
|   | 11dd013333 | ||
|   | b740d5854c | ||
|   | d5445cfbef | ||
|   | 3effaefda7 | 
							
								
								
									
										25
									
								
								.github/workflows/announce-release-on-discord.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								.github/workflows/announce-release-on-discord.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | |||||||
|  | name: Announce release on discord | ||||||
|  | on: | ||||||
|  |   release: | ||||||
|  |     types: [published] | ||||||
|  |  | ||||||
|  | jobs: | ||||||
|  |   send_announcement: | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     steps: | ||||||
|  |       - name: send custom message with args | ||||||
|  |         env: | ||||||
|  |           DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} | ||||||
|  |           DISCORD_USERNAME: PlotSquared Release | ||||||
|  |           DISCORD_AVATAR: https://raw.githubusercontent.com/IntellectualSites/Assets/main/plugins/PlotSquared/PlotSquared.png | ||||||
|  |         uses: Ilshidur/action-discord@0.3.2 | ||||||
|  |         with: | ||||||
|  |           args: | | ||||||
|  |             "<@&525015541815967744> <@&679322738552471574> <@&699293353862496266>" | ||||||
|  |             "" | ||||||
|  |             "<:plotsquared:730750385886593039> **PlotSquared ${{ github.event.release.tag_name }} has been released!**" | ||||||
|  |             "" | ||||||
|  |             "Click here to view changelog: https://github.com/IntellectualSites/PlotSquared/releases/tag/${{ github.event.release.tag_name }}" | ||||||
|  |             "" | ||||||
|  |             "The download is available at:" | ||||||
|  |             "- Spigot: <https://www.spigotmc.org/resources/77506/>" | ||||||
| @@ -24,7 +24,7 @@ dependencies { | |||||||
|     implementation("org.bstats:bstats-bukkit") |     implementation("org.bstats:bstats-bukkit") | ||||||
|  |  | ||||||
|     // Paper |     // Paper | ||||||
|     compileOnly(libs.paper) |     compileOnly("io.papermc.paper:paper-api") | ||||||
|     implementation("io.papermc:paperlib") |     implementation("io.papermc:paperlib") | ||||||
|  |  | ||||||
|     // Plugins |     // Plugins | ||||||
|   | |||||||
| @@ -849,11 +849,11 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl | |||||||
|                             // managed elsewhere |                             // managed elsewhere | ||||||
|                             continue; |                             continue; | ||||||
|                         case "SHULKER": |                         case "SHULKER": | ||||||
|                             if (Settings.Enabled_Components.KILL_ROAD_MOBS) { |                             if (Settings.Enabled_Components.KILL_ROAD_MOBS && (Settings.Enabled_Components.KILL_NAMED_ROAD_MOBS || entity.getCustomName() == null)) { | ||||||
|                                 LivingEntity livingEntity = (LivingEntity) entity; |                                 LivingEntity livingEntity = (LivingEntity) entity; | ||||||
|                                 List<MetadataValue> meta = entity.getMetadata("shulkerPlot"); |                                 List<MetadataValue> meta = entity.getMetadata("shulkerPlot"); | ||||||
|                                 if (!meta.isEmpty()) { |                                 if (!meta.isEmpty()) { | ||||||
|                                     if (livingEntity.isLeashed()) { |                                     if (livingEntity.isLeashed() && !Settings.Enabled_Components.KILL_OWNED_ROAD_MOBS) { | ||||||
|                                         continue; |                                         continue; | ||||||
|                                     } |                                     } | ||||||
|                                     List<MetadataValue> keep = entity.getMetadata("keep"); |                                     List<MetadataValue> keep = entity.getMetadata("keep"); | ||||||
| @@ -866,10 +866,8 @@ 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) { | ||||||
|                                             PlotId currentPlotId = area.getPlotAbs(pLoc).getId(); |                                             Plot currentPlot = area.getPlotAbs(pLoc); | ||||||
|                                             if (!originalPlotId.equals(currentPlotId) && (currentPlotId == null || !area.getPlot( |                                             if (currentPlot == null || !originalPlotId.equals(currentPlot.getId())) { | ||||||
|                                                             originalPlotId) |  | ||||||
|                                                     .equals(area.getPlot(currentPlotId)))) { |  | ||||||
|                                                 if (entity.hasMetadata("ps-tmp-teleport")) { |                                                 if (entity.hasMetadata("ps-tmp-teleport")) { | ||||||
|                                                     continue; |                                                     continue; | ||||||
|                                                 } |                                                 } | ||||||
| @@ -883,11 +881,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) { | ||||||
|                                         PlotId currentPlotId = area.getPlotAbs(pLoc).getId(); |                                         Plot currentPlot = area.getPlotAbs(pLoc); | ||||||
|                                         if (currentPlotId != null) { |                                         if (currentPlot != null) { | ||||||
|                                             entity.setMetadata( |                                             entity.setMetadata( | ||||||
|                                                     "shulkerPlot", |                                                     "shulkerPlot", | ||||||
|                                                     new FixedMetadataValue((Plugin) PlotSquared.platform(), currentPlotId) |                                                     new FixedMetadataValue((Plugin) PlotSquared.platform(), currentPlot.getId()) | ||||||
|                                             ); |                                             ); | ||||||
|                                         } |                                         } | ||||||
|                                     } |                                     } | ||||||
| @@ -973,7 +971,9 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl | |||||||
|                                                 || !entity.hasMetadata("keep")) { |                                                 || !entity.hasMetadata("keep")) { | ||||||
|                                             Entity passenger = entity.getPassenger(); |                                             Entity passenger = entity.getPassenger(); | ||||||
|                                             if ((Settings.Enabled_Components.KILL_OWNED_ROAD_MOBS |                                             if ((Settings.Enabled_Components.KILL_OWNED_ROAD_MOBS | ||||||
|                                                     || !(passenger instanceof Player)) && entity.getMetadata("keep").isEmpty()) { |                                                     || !((passenger instanceof Player) || livingEntity.isLeashed())) | ||||||
|  |                                                     && (Settings.Enabled_Components.KILL_NAMED_ROAD_MOBS || entity.getCustomName() == null) | ||||||
|  |                                                     && entity.getMetadata("keep").isEmpty()) { | ||||||
|                                                 if (entity.hasMetadata("ps-tmp-teleport")) { |                                                 if (entity.hasMetadata("ps-tmp-teleport")) { | ||||||
|                                                     continue; |                                                     continue; | ||||||
|                                                 } |                                                 } | ||||||
| @@ -983,8 +983,9 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl | |||||||
|                                         } |                                         } | ||||||
|                                     } else { |                                     } else { | ||||||
|                                         Entity passenger = entity.getPassenger(); |                                         Entity passenger = entity.getPassenger(); | ||||||
|                                         if ((Settings.Enabled_Components.KILL_OWNED_ROAD_MOBS |                                         if ((Settings.Enabled_Components.KILL_OWNED_ROAD_MOBS || !(passenger instanceof Player)) | ||||||
|                                                 || !(passenger instanceof Player)) && entity.getMetadata("keep").isEmpty()) { |                                                 && (Settings.Enabled_Components.KILL_NAMED_ROAD_MOBS && entity.getCustomName() != null) | ||||||
|  |                                                 && entity.getMetadata("keep").isEmpty()) { | ||||||
|                                             if (entity.hasMetadata("ps-tmp-teleport")) { |                                             if (entity.hasMetadata("ps-tmp-teleport")) { | ||||||
|                                                 continue; |                                                 continue; | ||||||
|                                             } |                                             } | ||||||
|   | |||||||
| @@ -183,7 +183,11 @@ public class GenChunk extends ScopedQueueCoordinator { | |||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public boolean setBlock(int x, int y, int z, @NonNull Pattern pattern) { |     public boolean setBlock(int x, int y, int z, @NonNull Pattern pattern) { | ||||||
|         return setBlock(x, y, z, PatternUtil.apply(Preconditions.checkNotNull(pattern, "Pattern may not be null"), x, y, z)); |         final BaseBlock block = PatternUtil.apply(Preconditions.checkNotNull( | ||||||
|  |                 pattern, | ||||||
|  |                 "Pattern may not be null" | ||||||
|  |         ), x + (chunkX << 4), y, z + (chunkZ << 4)); | ||||||
|  |         return setBlock(x, y, z, block); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|   | |||||||
| @@ -32,6 +32,7 @@ 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; | ||||||
| @@ -284,6 +285,16 @@ 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.IMP = new ExpireManager(this.eventDispatcher); |             ExpireManager expireManager = PlotSquared.platform().expireManager(); | ||||||
|             ExpireManager.IMP.runAutomatedTask(); |             expireManager.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.IMP.addTask(task); |                 expireManager.addTask(task); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| @@ -645,7 +645,8 @@ public class PlotSquared { | |||||||
|         } else { |         } else { | ||||||
|             list = new ArrayList<>(input); |             list = new ArrayList<>(input); | ||||||
|         } |         } | ||||||
|         list.sort(Comparator.comparingLong(a -> ExpireManager.IMP.getTimestamp(a.getOwnerAbs()))); |         ExpireManager expireManager = PlotSquared.platform().expireManager(); | ||||||
|  |         list.sort(Comparator.comparingLong(a -> expireManager.getTimestamp(a.getOwnerAbs()))); | ||||||
|         return list; |         return list; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -142,6 +142,14 @@ public class Auto extends SubCommand { | |||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |         int maxMerge = Permissions.hasPermissionRange(player, Permission.PERMISSION_MERGE, Settings.Limit.MAX_PLOTS); | ||||||
|  |         if (sizeX * sizeZ > maxMerge) { | ||||||
|  |             player.sendMessage( | ||||||
|  |                     TranslatableCaption.of("permission.no_permission"), | ||||||
|  |                     Template.of("node", Permission.PERMISSION_MERGE + "." + (sizeX * sizeZ)) | ||||||
|  |             ); | ||||||
|  |             return false; | ||||||
|  |         } | ||||||
|         return true; |         return true; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -19,6 +19,7 @@ | |||||||
| 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; | ||||||
| @@ -139,10 +140,7 @@ public class DebugExec extends SubCommand { | |||||||
|                     return true; |                     return true; | ||||||
|                 } |                 } | ||||||
|                 case "start-expire" -> { |                 case "start-expire" -> { | ||||||
|                     if (ExpireManager.IMP == null) { |                     if (PlotSquared.platform().expireManager().runAutomatedTask()) { | ||||||
|                         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")); | ||||||
| @@ -150,7 +148,7 @@ public class DebugExec extends SubCommand { | |||||||
|                     return true; |                     return true; | ||||||
|                 } |                 } | ||||||
|                 case "stop-expire" -> { |                 case "stop-expire" -> { | ||||||
|                     if (ExpireManager.IMP == null || !ExpireManager.IMP.cancelTask()) { |                     if (!PlotSquared.platform().expireManager().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,6 +19,7 @@ | |||||||
| 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; | ||||||
| @@ -29,7 +30,6 @@ 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 (ExpireManager.IMP == null || doneRequirements == null) { |         if (PlotSquared.platform().expireManager() == null || doneRequirements == null) { | ||||||
|             finish(plot, player, true); |             finish(plot, player, true); | ||||||
|             plot.removeRunning(); |             plot.removeRunning(); | ||||||
|         } else { |         } else { | ||||||
|   | |||||||
| @@ -30,7 +30,6 @@ 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; | ||||||
| @@ -240,7 +239,7 @@ public class ListCmd extends SubCommand { | |||||||
|                     ); |                     ); | ||||||
|                     return false; |                     return false; | ||||||
|                 } |                 } | ||||||
|                 if (ExpireManager.IMP == null) { |                 if (PlotSquared.platform().expireManager() == null) { | ||||||
|                     plotConsumer.accept(PlotQuery.newQuery().noPlots()); |                     plotConsumer.accept(PlotQuery.newQuery().noPlots()); | ||||||
|                 } else { |                 } else { | ||||||
|                     plotConsumer.accept(PlotQuery.newQuery().expiredPlots()); |                     plotConsumer.accept(PlotQuery.newQuery().expiredPlots()); | ||||||
|   | |||||||
| @@ -124,7 +124,7 @@ public class Merge extends SubCommand { | |||||||
|             return false; |             return false; | ||||||
|         } |         } | ||||||
|         final int size = plot.getConnectedPlots().size(); |         final int size = plot.getConnectedPlots().size(); | ||||||
|         int max = Permissions.hasPermissionRange(player, "plots.merge", Settings.Limit.MAX_PLOTS); |         int max = Permissions.hasPermissionRange(player, Permission.PERMISSION_MERGE, Settings.Limit.MAX_PLOTS); | ||||||
|         PlotMergeEvent event = |         PlotMergeEvent event = | ||||||
|                 this.eventDispatcher.callMerge(plot, direction, max, player); |                 this.eventDispatcher.callMerge(plot, direction, max, player); | ||||||
|         if (event.getEventResult() == Result.DENY) { |         if (event.getEventResult() == Result.DENY) { | ||||||
|   | |||||||
| @@ -25,7 +25,6 @@ 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; | ||||||
| @@ -92,8 +91,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 (ExpireManager.IMP != null) { |         if (PlotSquared.platform().expireManager() != null) { | ||||||
|             plots.removeAll(ExpireManager.IMP.getPendingExpired()); |             plots.removeAll(PlotSquared.platform().expireManager().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<>(); | ||||||
|   | |||||||
| @@ -759,6 +759,8 @@ public class Settings extends Config { | |||||||
|         @Comment("Also kill any road mobs that are being ridden, or are leashed") |         @Comment("Also kill any road mobs that are being ridden, or are leashed") | ||||||
|         public static boolean |         public static boolean | ||||||
|                 KILL_OWNED_ROAD_MOBS = false; |                 KILL_OWNED_ROAD_MOBS = false; | ||||||
|  |         @Comment("Also kill any road mobs that are named") | ||||||
|  |         public static boolean KILL_NAMED_ROAD_MOBS = false; | ||||||
|         @Comment("Kill items on roads (Stick, Paper, etc.)") |         @Comment("Kill items on roads (Stick, Paper, etc.)") | ||||||
|         public static boolean KILL_ROAD_ITEMS = false; |         public static boolean KILL_ROAD_ITEMS = false; | ||||||
|         @Comment("Kill vehicles on roads (Boat, Minecart, etc.)") |         @Comment("Kill vehicles on roads (Boat, Minecart, etc.)") | ||||||
|   | |||||||
| @@ -53,7 +53,10 @@ 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.warn("No resource for locale '{}' found", locale); |                 LOGGER.info("No resource for locale '{}' found in the plugin file." + | ||||||
|  |                                 "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,8 +174,9 @@ 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 { |                         } else if (!isRoad) { | ||||||
|                             // 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,7 +21,6 @@ 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; | ||||||
| @@ -75,6 +74,9 @@ 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; | ||||||
| @@ -267,34 +269,67 @@ 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 worldHeight = getMaxGenHeight() - getMinGenHeight() + 1; |         int worldGenHeight = 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) { | ||||||
|             if (schematic3.getClipboard().getDimensions().getY() == worldHeight) { |             plotSchemHeight = maxSchematicHeight = schematic3.getClipboard().getDimensions().getY(); | ||||||
|                 SCHEM_Y = plotY = 0; |             if (maxSchematicHeight == worldGenHeight) { | ||||||
|  |                 SCHEM_Y = getMinGenHeight(); | ||||||
|  |                 plotY = 0; | ||||||
|             } else if (!Settings.Schematics.PASTE_ON_TOP) { |             } else if (!Settings.Schematics.PASTE_ON_TOP) { | ||||||
|                 SCHEM_Y = plotY = getMinBuildHeight() - getMinGenHeight(); |                 SCHEM_Y = getMinBuildHeight(); | ||||||
|  |                 plotY = 0; | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         int roadSchemHeight; | ||||||
|  |  | ||||||
|         if (schematic1 != null) { |         if (schematic1 != null) { | ||||||
|             if (schematic1.getClipboard().getDimensions().getY() == worldHeight) { |             roadSchemHeight = Math.max( | ||||||
|                 SCHEM_Y = roadY = getMinGenHeight(); |                     schematic1.getClipboard().getDimensions().getY(), | ||||||
|                 if (schematic3 != null && schematic3.getClipboard().getDimensions().getY() != worldHeight |                     schematic2.getClipboard().getDimensions().getY() | ||||||
|                         && !Settings.Schematics.PASTE_ON_TOP) { |             ); | ||||||
|                     plotY = PLOT_HEIGHT; |             maxSchematicHeight = Math.max(roadSchemHeight, maxSchematicHeight); | ||||||
|  |             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) { | ||||||
|                 SCHEM_Y = roadY = getMinBuildHeight(); |                 if (SCHEM_Y == getMinGenHeight()) { // Only possible if plot schematic is enabled | ||||||
|                 if (schematic3 != null && schematic3.getClipboard().getDimensions().getY() != worldHeight |                     // Plot is still the lowest schematic, normalize roadY to it | ||||||
|                         && !Settings.Schematics.PASTE_ON_TOP) { |                     roadY = getMinBuildHeight() - getMinGenHeight(); | ||||||
|                     plotY = PLOT_HEIGHT; |                 } else if (schematic3 != null) { | ||||||
|  |                     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); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -331,7 +366,6 @@ 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), | ||||||
| @@ -339,10 +373,9 @@ public class HybridPlotWorld extends ClassicPlotWorld { | |||||||
|                                 (short) (z + shift + oddshift + centerShiftZ), |                                 (short) (z + shift + oddshift + centerShiftZ), | ||||||
|                                 id, |                                 id, | ||||||
|                                 false, |                                 false, | ||||||
|                                     h3 |                                 maxSchematicHeight | ||||||
|                         ); |                         ); | ||||||
|                     } |                     } | ||||||
|                     } |  | ||||||
|                     if (blockArrayClipboard3.hasBiomes()) { |                     if (blockArrayClipboard3.hasBiomes()) { | ||||||
|                         BiomeType biome = blockArrayClipboard3.getBiome(BlockVector2.at( |                         BiomeType biome = blockArrayClipboard3.getBiome(BlockVector2.at( | ||||||
|                                 x + min.getBlockX(), |                                 x + min.getBlockX(), | ||||||
| @@ -391,19 +424,24 @@ 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((short) (x - shift), (short) (y + roadY), (short) (z + shift + oddshift), id, false, h1); |                     addOverlayBlock( | ||||||
|  |                             (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, | ||||||
|                                 h1 |                             maxSchematicHeight | ||||||
|                     ); |                     ); | ||||||
|                 } |                 } | ||||||
|                 } |  | ||||||
|                 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); | ||||||
| @@ -430,10 +468,15 @@ 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((short) (x - shift), (short) (y + roadY), (short) (z - shift), id, false, h2); |                     addOverlayBlock( | ||||||
|                     } |                             (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())); | ||||||
| @@ -443,6 +486,10 @@ 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; | ||||||
| @@ -462,13 +509,22 @@ public class HybridPlotWorld extends ClassicPlotWorld { | |||||||
|         if (y >= height) { |         if (y >= height) { | ||||||
|             if (y > lastOverlayHeightError) { |             if (y > lastOverlayHeightError) { | ||||||
|                 lastOverlayHeightError = y; |                 lastOverlayHeightError = y; | ||||||
|                 LOGGER.error(String.format("Error adding overlay block. `y > height`. y=%s, height=%s", y, height)); |                 LOGGER.error( | ||||||
|  |                         "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; | ||||||
|   | |||||||
| @@ -36,7 +36,6 @@ 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; | ||||||
| @@ -163,8 +162,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 (ExpireManager.IMP != null) { |             if (PlotSquared.platform().expireManager() != null) { | ||||||
|                 ExpireManager.IMP.handleEntry(player, plot); |                 PlotSquared.platform().expireManager().handleEntry(player, plot); | ||||||
|             } |             } | ||||||
|             lastPlot.set(plot); |             lastPlot.set(plot); | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -42,7 +42,6 @@ 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; | ||||||
| @@ -618,8 +617,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 (ExpireManager.IMP != null) { |         if (PlotSquared.platform().expireManager() != null) { | ||||||
|             ExpireManager.IMP.storeDate(getUUID(), System.currentTimeMillis()); |             PlotSquared.platform().expireManager().storeDate(getUUID(), System.currentTimeMillis()); | ||||||
|         } |         } | ||||||
|         PlotSquared.platform().playerManager().removePlayer(this); |         PlotSquared.platform().playerManager().removePlayer(this); | ||||||
|         PlotSquared.platform().unregister(this); |         PlotSquared.platform().unregister(this); | ||||||
|   | |||||||
| @@ -40,7 +40,6 @@ 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; | ||||||
| @@ -1105,8 +1104,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 && ExpireManager.IMP != null) { |         if (flag instanceof KeepFlag && PlotSquared.platform().expireManager() != null) { | ||||||
|             ExpireManager.IMP.updateExpired(this); |             PlotSquared.platform().expireManager().updateExpired(this); | ||||||
|         } |         } | ||||||
|         for (final Plot plot : this.getConnectedPlots()) { |         for (final Plot plot : this.getConnectedPlots()) { | ||||||
|             plot.getFlagContainer().addFlag(flag); |             plot.getFlagContainer().addFlag(flag); | ||||||
| @@ -2831,11 +2830,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 && ExpireManager.IMP != null) { |                     if (Settings.Enabled_Components.PLOT_EXPIRY && PlotSquared.platform().expireManager() != 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) (ExpireManager.IMP.getAge(this, false) / 1000); |                             int time = (int) (PlotSquared.platform().expireManager().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 = "TODO") |     @Deprecated(forRemoval = true, since = "6.10.2") | ||||||
|     public @NonNull PlotId copy() { |     public @NonNull PlotId copy() { | ||||||
|         return this; |         return this; | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -18,6 +18,8 @@ | |||||||
|  */ |  */ | ||||||
| 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; | ||||||
| @@ -60,6 +62,10 @@ 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; | ||||||
| @@ -71,6 +77,7 @@ 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,6 +18,7 @@ | |||||||
|  */ |  */ | ||||||
| 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; | ||||||
| @@ -72,8 +73,9 @@ 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.IMP.getAge(plot, settings.DELETE_IF_OWNER_IS_UNKNOWN)) |                             plots.stream().map(plot -> expireManager.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][z] = id.toImmutableState(); |             blockStates[y - minY][x - scopeMinX][z - scopeMinZ] = id.toImmutableState(); | ||||||
|         } |         } | ||||||
|         return false; |         return false; | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -20,6 +20,7 @@ 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; | ||||||
| @@ -59,7 +60,6 @@ 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 (ExpireManager.IMP != null) { |         if (PlotSquared.platform().expireManager() != null) { | ||||||
|             ExpireManager.IMP.handleJoin(player); |             PlotSquared.platform().expireManager().handleJoin(player); | ||||||
|         } |         } | ||||||
|         if (this.worldEdit != null) { |         if (this.worldEdit != null) { | ||||||
|             if (player.getAttribute("worldedit")) { |             if (player.getAttribute("worldedit")) { | ||||||
|   | |||||||
| @@ -29,7 +29,6 @@ import com.sk89q.worldedit.extension.input.ParserContext; | |||||||
| import com.sk89q.worldedit.extension.platform.Actor; | import com.sk89q.worldedit.extension.platform.Actor; | ||||||
| import com.sk89q.worldedit.function.pattern.BlockPattern; | import com.sk89q.worldedit.function.pattern.BlockPattern; | ||||||
| import com.sk89q.worldedit.function.pattern.Pattern; | import com.sk89q.worldedit.function.pattern.Pattern; | ||||||
| import com.sk89q.worldedit.function.pattern.RandomPattern; |  | ||||||
| import com.sk89q.worldedit.math.BlockVector3; | import com.sk89q.worldedit.math.BlockVector3; | ||||||
| import com.sk89q.worldedit.world.block.BaseBlock; | import com.sk89q.worldedit.world.block.BaseBlock; | ||||||
| import com.sk89q.worldedit.world.block.BlockState; | import com.sk89q.worldedit.world.block.BlockState; | ||||||
| @@ -44,7 +43,7 @@ public class PatternUtil { | |||||||
|  |  | ||||||
|     public static BaseBlock apply(@NonNull Pattern pattern, int x, int y, int z) { |     public static BaseBlock apply(@NonNull Pattern pattern, int x, int y, int z) { | ||||||
|         Preconditions.checkNotNull(pattern, "Pattern may not be null"); |         Preconditions.checkNotNull(pattern, "Pattern may not be null"); | ||||||
|         if (pattern instanceof BlockPattern || pattern instanceof RandomPattern |         if (pattern instanceof BlockPattern | ||||||
|                 || pattern instanceof BlockState || pattern instanceof BlockType |                 || pattern instanceof BlockState || pattern instanceof BlockType | ||||||
|                 || pattern instanceof BaseBlock) { |                 || pattern instanceof BaseBlock) { | ||||||
|             return pattern.applyBlock(BlockVector3.ZERO); |             return pattern.applyBlock(BlockVector3.ZERO); | ||||||
|   | |||||||
| @@ -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 ExpireManager.IMP.getPendingExpired(); |         return PlotSquared.platform().expireManager().getPendingExpired(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -19,7 +19,7 @@ plugins { | |||||||
| } | } | ||||||
|  |  | ||||||
| group = "com.plotsquared" | group = "com.plotsquared" | ||||||
| version = "6.10.2-SNAPSHOT" | version = "6.10.4-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.16")) |         implementation(platform("com.intellectualsites.bom:bom-1.18.x:1.18")) | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     dependencies { |     dependencies { | ||||||
|   | |||||||
| @@ -1,8 +1,7 @@ | |||||||
| [versions] | [versions] | ||||||
| # Platform expectations | # Platform expectations | ||||||
| paper = "1.18.1-R0.1-SNAPSHOT" |  | ||||||
| guice = "5.1.0" | guice = "5.1.0" | ||||||
| spotbugs = "4.7.2" | spotbugs = "4.7.3" | ||||||
|  |  | ||||||
| # Plugins | # Plugins | ||||||
| worldedit = "7.2.12" | worldedit = "7.2.12" | ||||||
| @@ -26,9 +25,6 @@ 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" } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user