mirror of
				https://github.com/IntellectualSites/PlotSquared.git
				synced 2025-10-27 07:33:43 +01:00 
			
		
		
		
	Compare commits
	
		
			31 Commits
		
	
	
		
			remove-coc
			...
			feat/mutab
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 23b371f794 | ||
|   | 9d2c632ca8 | ||
|   | d4ba0f414e | ||
|   | a3bc3968a5 | ||
|   | 79454da1a6 | ||
| ![renovate[bot]](/assets/img/avatar_default.png)  | 12a4c92ad9 | ||
| ![renovate[bot]](/assets/img/avatar_default.png)  | 167692d464 | ||
| ![renovate[bot]](/assets/img/avatar_default.png)  | ae26e8155c | ||
| ![renovate[bot]](/assets/img/avatar_default.png)  | 286ea62a21 | ||
|   | d95c74d8c9 | ||
|   | c1555ddbc7 | ||
|   | 4fe0c586d9 | ||
| ![renovate[bot]](/assets/img/avatar_default.png)  | aae6ea4fee | ||
| ![renovate[bot]](/assets/img/avatar_default.png)  | 385d018504 | ||
| ![renovate[bot]](/assets/img/avatar_default.png)  | f4def082c1 | ||
| ![renovate[bot]](/assets/img/avatar_default.png)  | 69c9f1df83 | ||
|   | e138dc0267 | ||
|   | ca50b53f94 | ||
|   | f705487055 | ||
|   | b7c9453a1a | ||
|   | 1aa370d562 | ||
|   | d3dab0d736 | ||
|   | 764156b267 | ||
|   | 665f5251bf | ||
|   | 7c328095d7 | ||
|   | 7884c91d52 | ||
| ![renovate[bot]](/assets/img/avatar_default.png)  | e9a19e0821 | ||
| ![renovate[bot]](/assets/img/avatar_default.png)  | 022847fc4b | ||
| ![renovate[bot]](/assets/img/avatar_default.png)  | 1ee673be58 | ||
|   | 3c2aa99e86 | ||
|   | 11fac3f060 | 
							
								
								
									
										2
									
								
								.github/ISSUE_TEMPLATE/bug_report.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/ISSUE_TEMPLATE/bug_report.yml
									
									
									
									
										vendored
									
									
								
							| @@ -27,7 +27,7 @@ body: | |||||||
|       description: Which server version version you using? If your server version is not listed, it is not supported. Update to a supported version first. |       description: Which server version version you using? If your server version is not listed, it is not supported. Update to a supported version first. | ||||||
|       multiple: false |       multiple: false | ||||||
|       options: |       options: | ||||||
|         - '1.20.1' |         - '1.20.2' | ||||||
|         - '1.20' |         - '1.20' | ||||||
|         - '1.19.4' |         - '1.19.4' | ||||||
|         - '1.19.3' |         - '1.19.3' | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								.github/workflows/build-pr.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/build-pr.yml
									
									
									
									
										vendored
									
									
								
							| @@ -9,7 +9,7 @@ jobs: | |||||||
|         os: [ ubuntu-latest, windows-latest, macos-latest ] |         os: [ ubuntu-latest, windows-latest, macos-latest ] | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout Repository |       - name: Checkout Repository | ||||||
|         uses: actions/checkout@v3 |         uses: actions/checkout@v4 | ||||||
|       - name: Validate Gradle Wrapper |       - name: Validate Gradle Wrapper | ||||||
|         uses: gradle/wrapper-validation-action@v1 |         uses: gradle/wrapper-validation-action@v1 | ||||||
|       - name: Setup Java |       - name: Setup Java | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							| @@ -9,7 +9,7 @@ jobs: | |||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout Repository |       - name: Checkout Repository | ||||||
|         uses: actions/checkout@v3 |         uses: actions/checkout@v4 | ||||||
|       - name: Validate Gradle Wrapper |       - name: Validate Gradle Wrapper | ||||||
|         uses: gradle/wrapper-validation-action@v1 |         uses: gradle/wrapper-validation-action@v1 | ||||||
|       - name: Setup Java |       - name: Setup Java | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								.github/workflows/codeql.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/codeql.yml
									
									
									
									
										vendored
									
									
								
							| @@ -20,7 +20,7 @@ jobs: | |||||||
|         language: [ 'java' ] |         language: [ 'java' ] | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout repository |       - name: Checkout repository | ||||||
|         uses: actions/checkout@v3 |         uses: actions/checkout@v4 | ||||||
|       - name: Setup Java |       - name: Setup Java | ||||||
|         uses: actions/setup-java@v3 |         uses: actions/setup-java@v3 | ||||||
|         with: |         with: | ||||||
|   | |||||||
							
								
								
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -138,6 +138,5 @@ build/ | |||||||
|  |  | ||||||
| .DS_Store | .DS_Store | ||||||
| # Ignore run folders | # Ignore run folders | ||||||
| run-[0-0].[0-9]/ | run-[0-9].[0-9][0-9]/ | ||||||
| run-[0-0].[0-9].[0-9]/ | run-[0-9].[0-9][0-9].[0-9]/ | ||||||
|  |  | ||||||
|   | |||||||
| @@ -100,7 +100,7 @@ tasks { | |||||||
|     withType<Javadoc> { |     withType<Javadoc> { | ||||||
|         val isRelease = if (rootProject.version.toString().endsWith("-SNAPSHOT")) "TODO" else rootProject.version.toString() |         val isRelease = if (rootProject.version.toString().endsWith("-SNAPSHOT")) "TODO" else rootProject.version.toString() | ||||||
|         val opt = options as StandardJavadocDocletOptions |         val opt = options as StandardJavadocDocletOptions | ||||||
|         opt.links("https://jd.papermc.io/paper/1.19/") |         opt.links("https://jd.papermc.io/paper/1.20/") | ||||||
|         opt.links("https://docs.enginehub.org/javadoc/com.sk89q.worldedit/worldedit-bukkit/" + libs.worldeditBukkit.get().versionConstraint.toString()) |         opt.links("https://docs.enginehub.org/javadoc/com.sk89q.worldedit/worldedit-bukkit/" + libs.worldeditBukkit.get().versionConstraint.toString()) | ||||||
|         opt.links("https://intellectualsites.github.io/plotsquared-javadocs/core/") |         opt.links("https://intellectualsites.github.io/plotsquared-javadocs/core/") | ||||||
|         opt.links("https://jd.advntr.dev/api/4.14.0/") |         opt.links("https://jd.advntr.dev/api/4.14.0/") | ||||||
|   | |||||||
| @@ -252,6 +252,7 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|  |     @SuppressWarnings("deprecation") // Paper deprecation | ||||||
|     public void onEnable() { |     public void onEnable() { | ||||||
|         this.pluginName = getDescription().getName(); |         this.pluginName = getDescription().getName(); | ||||||
|  |  | ||||||
| @@ -550,7 +551,7 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl | |||||||
|         this.startMetrics(); |         this.startMetrics(); | ||||||
|  |  | ||||||
|         if (Settings.Enabled_Components.WORLDS) { |         if (Settings.Enabled_Components.WORLDS) { | ||||||
|             TaskManager.getPlatformImplementation().taskRepeat(this::unload, TaskTime.seconds(1L)); |             TaskManager.getPlatformImplementation().taskRepeat(this::unload, TaskTime.seconds(10L)); | ||||||
|             try { |             try { | ||||||
|                 singleWorldListener = injector().getInstance(SingleWorldListener.class); |                 singleWorldListener = injector().getInstance(SingleWorldListener.class); | ||||||
|                 Bukkit.getPluginManager().registerEvents(singleWorldListener, this); |                 Bukkit.getPluginManager().registerEvents(singleWorldListener, this); | ||||||
| @@ -1160,6 +1161,7 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl | |||||||
|         return new BukkitPlotGenerator(world, generator, this.plotAreaManager); |         return new BukkitPlotGenerator(world, generator, this.plotAreaManager); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @SuppressWarnings("deprecation") // Paper deprecation | ||||||
|     @Override |     @Override | ||||||
|     public @NonNull String pluginsFormatted() { |     public @NonNull String pluginsFormatted() { | ||||||
|         StringBuilder msg = new StringBuilder(); |         StringBuilder msg = new StringBuilder(); | ||||||
| @@ -1181,7 +1183,7 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     @SuppressWarnings("ConstantConditions") |     @SuppressWarnings({"ConstantConditions", "deprecation"}) // Paper deprecation | ||||||
|     public @NonNull String worldEditImplementations() { |     public @NonNull String worldEditImplementations() { | ||||||
|         StringBuilder msg = new StringBuilder(); |         StringBuilder msg = new StringBuilder(); | ||||||
|         if (Bukkit.getPluginManager().getPlugin("FastAsyncWorldEdit") != null) { |         if (Bukkit.getPluginManager().getPlugin("FastAsyncWorldEdit") != null) { | ||||||
|   | |||||||
| @@ -74,6 +74,7 @@ public final class ReplicatingEntityWrapper extends EntityWrapper { | |||||||
|     private HorseStats horse; |     private HorseStats horse; | ||||||
|     private boolean noGravity; |     private boolean noGravity; | ||||||
|  |  | ||||||
|  |     @SuppressWarnings("deprecation") // Deprecation exists since 1.20, while we support 1.16 onwards | ||||||
|     public ReplicatingEntityWrapper(Entity entity, short depth) { |     public ReplicatingEntityWrapper(Entity entity, short depth) { | ||||||
|         super(entity); |         super(entity); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -369,6 +369,7 @@ public class PlayerEventListener implements Listener { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) |     @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) | ||||||
|  |     @SuppressWarnings("deprecation") // Paper deprecation | ||||||
|     public void onConnect(PlayerJoinEvent event) { |     public void onConnect(PlayerJoinEvent event) { | ||||||
|         final Player player = event.getPlayer(); |         final Player player = event.getPlayer(); | ||||||
|         PlotSquared.platform().playerManager().removePlayer(player.getUniqueId()); |         PlotSquared.platform().playerManager().removePlayer(player.getUniqueId()); | ||||||
| @@ -733,6 +734,7 @@ public class PlayerEventListener implements Listener { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     @EventHandler(priority = EventPriority.LOW) |     @EventHandler(priority = EventPriority.LOW) | ||||||
|  |     @SuppressWarnings("deprecation") // Paper deprecation | ||||||
|     public void onChat(AsyncPlayerChatEvent event) { |     public void onChat(AsyncPlayerChatEvent event) { | ||||||
|         if (event.isCancelled()) { |         if (event.isCancelled()) { | ||||||
|             return; |             return; | ||||||
| @@ -1063,6 +1065,7 @@ public class PlayerEventListener implements Listener { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     @EventHandler(priority = EventPriority.LOW) |     @EventHandler(priority = EventPriority.LOW) | ||||||
|  |     @SuppressWarnings("deprecation") // Paper deprecation | ||||||
|     public void onCancelledInteract(PlayerInteractEvent event) { |     public void onCancelledInteract(PlayerInteractEvent event) { | ||||||
|         if (event.isCancelled() && event.getAction() == Action.RIGHT_CLICK_AIR) { |         if (event.isCancelled() && event.getAction() == Action.RIGHT_CLICK_AIR) { | ||||||
|             Player player = event.getPlayer(); |             Player player = event.getPlayer(); | ||||||
|   | |||||||
| @@ -44,6 +44,7 @@ import java.util.stream.IntStream; | |||||||
| @Singleton | @Singleton | ||||||
| public class BukkitInventoryUtil extends InventoryUtil { | public class BukkitInventoryUtil extends InventoryUtil { | ||||||
|  |  | ||||||
|  |     @SuppressWarnings("deprecation") // Paper deprecation | ||||||
|     private static @Nullable ItemStack getItem(PlotItemStack item) { |     private static @Nullable ItemStack getItem(PlotItemStack item) { | ||||||
|         if (item == null) { |         if (item == null) { | ||||||
|             return null; |             return null; | ||||||
|   | |||||||
| @@ -67,6 +67,7 @@ public class BukkitSetupUtils extends SetupUtils { | |||||||
|         this.worldFile = worldFile; |         this.worldFile = worldFile; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @SuppressWarnings("deprecation") // Paper deprecation | ||||||
|     @Override |     @Override | ||||||
|     public void updateGenerators(final boolean force) { |     public void updateGenerators(final boolean force) { | ||||||
|         if (loaded && !SetupUtils.generators.isEmpty() && !force) { |         if (loaded && !SetupUtils.generators.isEmpty() && !force) { | ||||||
|   | |||||||
| @@ -35,7 +35,7 @@ import org.bukkit.scheduler.BukkitTask; | |||||||
| import javax.net.ssl.HttpsURLConnection; | import javax.net.ssl.HttpsURLConnection; | ||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
| import java.io.InputStreamReader; | import java.io.InputStreamReader; | ||||||
| import java.net.URL; | import java.net.URI; | ||||||
|  |  | ||||||
| public class UpdateUtility implements Listener { | public class UpdateUtility implements Listener { | ||||||
|  |  | ||||||
| @@ -59,8 +59,9 @@ public class UpdateUtility implements Listener { | |||||||
|     public void updateChecker() { |     public void updateChecker() { | ||||||
|         task = Bukkit.getScheduler().runTaskTimerAsynchronously(this.javaPlugin, () -> { |         task = Bukkit.getScheduler().runTaskTimerAsynchronously(this.javaPlugin, () -> { | ||||||
|             try { |             try { | ||||||
|                 HttpsURLConnection connection = (HttpsURLConnection) new URL( |                 HttpsURLConnection connection = (HttpsURLConnection) URI.create( | ||||||
|                         "https://api.spigotmc.org/simple/0.1/index.php?action=getResource&id=77506") |                         "https://api.spigotmc.org/simple/0.2/index.php?action=getResource&id=77506") | ||||||
|  |                         .toURL() | ||||||
|                         .openConnection(); |                         .openConnection(); | ||||||
|                 connection.setRequestMethod("GET"); |                 connection.setRequestMethod("GET"); | ||||||
|                 JsonObject result = new JsonParser() |                 JsonObject result = new JsonParser() | ||||||
|   | |||||||
| @@ -57,8 +57,8 @@ tasks.processResources { | |||||||
|  |  | ||||||
|     doLast { |     doLast { | ||||||
|         copy { |         copy { | ||||||
|             from(File("$rootDir/LICENSE")) |             from(layout.buildDirectory.file("$rootDir/LICENSE")) | ||||||
|             into("$buildDir/resources/main/") |             into(layout.buildDirectory.dir("resources/main")) | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -84,7 +84,7 @@ import java.io.InputStream; | |||||||
| import java.io.InputStreamReader; | import java.io.InputStreamReader; | ||||||
| import java.io.ObjectInputStream; | import java.io.ObjectInputStream; | ||||||
| import java.io.ObjectOutputStream; | import java.io.ObjectOutputStream; | ||||||
| import java.net.MalformedURLException; | import java.net.URI; | ||||||
| import java.net.URISyntaxException; | import java.net.URISyntaxException; | ||||||
| import java.net.URL; | import java.net.URL; | ||||||
| import java.nio.file.Files; | import java.nio.file.Files; | ||||||
| @@ -210,9 +210,10 @@ public class PlotSquared { | |||||||
|             try { |             try { | ||||||
|                 URL logurl = PlotSquared.class.getProtectionDomain().getCodeSource().getLocation(); |                 URL logurl = PlotSquared.class.getProtectionDomain().getCodeSource().getLocation(); | ||||||
|                 this.jarFile = new File( |                 this.jarFile = new File( | ||||||
|                         new URL(logurl.toURI().toString().split("\\!")[0].replaceAll("jar:file", "file")) |                         URI.create( | ||||||
|                                 .toURI().getPath()); |                                 logurl.toURI().toString().split("\\!")[0].replaceAll("jar:file", "file")) | ||||||
|             } catch (MalformedURLException | URISyntaxException | SecurityException e) { |                                 .getPath()); | ||||||
|  |             } catch (URISyntaxException | SecurityException e) { | ||||||
|                 e.printStackTrace(); |                 e.printStackTrace(); | ||||||
|                 this.jarFile = new File(this.platform.getDirectory().getParentFile(), "PlotSquared.jar"); |                 this.jarFile = new File(this.platform.getDirectory().getParentFile(), "PlotSquared.jar"); | ||||||
|                 if (!this.jarFile.exists()) { |                 if (!this.jarFile.exists()) { | ||||||
|   | |||||||
| @@ -41,6 +41,7 @@ import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; | |||||||
| import org.checkerframework.checker.nullness.qual.NonNull; | import org.checkerframework.checker.nullness.qual.NonNull; | ||||||
|  |  | ||||||
| import java.net.MalformedURLException; | import java.net.MalformedURLException; | ||||||
|  | import java.net.URI; | ||||||
| import java.net.URL; | import java.net.URL; | ||||||
| import java.util.Collections; | import java.util.Collections; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| @@ -116,7 +117,7 @@ public class Load extends SubCommand { | |||||||
|                     } |                     } | ||||||
|                     final URL url; |                     final URL url; | ||||||
|                     try { |                     try { | ||||||
|                         url = new URL(Settings.Web.URL + "saves/" + player.getUUID() + '/' + schematic); |                         url = URI.create(Settings.Web.URL + "saves/" + player.getUUID() + '/' + schematic).toURL(); | ||||||
|                     } catch (MalformedURLException e) { |                     } catch (MalformedURLException e) { | ||||||
|                         e.printStackTrace(); |                         e.printStackTrace(); | ||||||
|                         player.sendMessage(TranslatableCaption.of("web.load_failed")); |                         player.sendMessage(TranslatableCaption.of("web.load_failed")); | ||||||
|   | |||||||
| @@ -40,6 +40,7 @@ import net.kyori.adventure.text.minimessage.tag.Tag; | |||||||
| import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; | import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; | ||||||
| import org.checkerframework.checker.nullness.qual.NonNull; | import org.checkerframework.checker.nullness.qual.NonNull; | ||||||
|  |  | ||||||
|  | import java.net.URI; | ||||||
| import java.net.URL; | import java.net.URL; | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| import java.util.Collection; | import java.util.Collection; | ||||||
| @@ -130,8 +131,7 @@ public class SchematicCmd extends SubCommand { | |||||||
|                     if (location.startsWith("url:")) { |                     if (location.startsWith("url:")) { | ||||||
|                         try { |                         try { | ||||||
|                             UUID uuid = UUID.fromString(location.substring(4)); |                             UUID uuid = UUID.fromString(location.substring(4)); | ||||||
|                             URL base = new URL(Settings.Web.URL); |                             URL url = URI.create(Settings.Web.URL + "uploads/" + uuid + ".schematic").toURL(); | ||||||
|                             URL url = new URL(base, "uploads/" + uuid + ".schematic"); |  | ||||||
|                             schematic = this.schematicHandler.getSchematic(url); |                             schematic = this.schematicHandler.getSchematic(url); | ||||||
|                         } catch (Exception e) { |                         } catch (Exception e) { | ||||||
|                             e.printStackTrace(); |                             e.printStackTrace(); | ||||||
|   | |||||||
| @@ -21,21 +21,26 @@ package com.plotsquared.core.events; | |||||||
| 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 org.checkerframework.checker.nullness.qual.Nullable; | ||||||
|  |  | ||||||
|  | import java.util.function.UnaryOperator; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Called when a player teleports to a plot |  * Called when a player teleports to a plot | ||||||
|  */ |  */ | ||||||
| public class PlayerTeleportToPlotEvent extends PlotPlayerEvent implements CancellablePlotEvent { | public class PlayerTeleportToPlotEvent extends PlotPlayerEvent implements CancellablePlotEvent { | ||||||
|  |  | ||||||
|     private final Location from; |  | ||||||
|     private final TeleportCause cause; |     private final TeleportCause cause; | ||||||
|     private Result eventResult; |     private Result eventResult; | ||||||
|  |     private final Location from; | ||||||
|  |     private UnaryOperator<Location> locationTransformer; | ||||||
|  |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * PlayerTeleportToPlotEvent: Called when a player teleports to a plot |      * PlayerTeleportToPlotEvent: Called when a player teleports to a plot | ||||||
|      * |      * | ||||||
|      * @param player That was teleported |      * @param player That was teleported | ||||||
|      * @param from   Start location |      * @param from   The origin location, from where the teleport was triggered (players location most likely) | ||||||
|      * @param plot   Plot to which the player was teleported |      * @param plot   Plot to which the player was teleported | ||||||
|      * @param cause  Why the teleport is being completed |      * @param cause  Why the teleport is being completed | ||||||
|      * @since 6.1.0 |      * @since 6.1.0 | ||||||
| @@ -57,7 +62,8 @@ public class PlayerTeleportToPlotEvent extends PlotPlayerEvent implements Cancel | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Get the from location |      * Get the location, from where the teleport was triggered | ||||||
|  |      * (the players current location when executing the home command for example) | ||||||
|      * |      * | ||||||
|      * @return Location |      * @return Location | ||||||
|      */ |      */ | ||||||
| @@ -65,6 +71,27 @@ public class PlayerTeleportToPlotEvent extends PlotPlayerEvent implements Cancel | |||||||
|         return this.from; |         return this.from; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Gets the currently applied {@link UnaryOperator<Location> transformer} or null, if none was set | ||||||
|  |      * | ||||||
|  |      * @return LocationTransformer | ||||||
|  |      * @since TODO | ||||||
|  |      */ | ||||||
|  |     public @Nullable UnaryOperator<Location> getLocationTransformer() { | ||||||
|  |         return this.locationTransformer; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Sets the {@link UnaryOperator<Location> transformer} to mutate the location where the player will be teleported to. | ||||||
|  |      * May be {@code null}, if any previous set transformations should be discarded. | ||||||
|  |      * | ||||||
|  |      * @param locationTransformer The new transformer | ||||||
|  |      * @since TODO | ||||||
|  |      */ | ||||||
|  |     public void setLocationTransformer(@Nullable UnaryOperator<Location> locationTransformer) { | ||||||
|  |         this.locationTransformer = locationTransformer; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public Result getEventResult() { |     public Result getEventResult() { | ||||||
|         return eventResult; |         return eventResult; | ||||||
|   | |||||||
| @@ -189,7 +189,7 @@ public class HybridPlotWorld extends ClassicPlotWorld { | |||||||
|                 } |                 } | ||||||
|                 Object value; |                 Object value; | ||||||
|                 try { |                 try { | ||||||
|                     final boolean accessible = field.isAccessible(); |                     final boolean accessible = field.canAccess(this); | ||||||
|                     field.setAccessible(true); |                     field.setAccessible(true); | ||||||
|                     value = field.get(this); |                     value = field.get(this); | ||||||
|                     field.setAccessible(accessible); |                     field.setAccessible(accessible); | ||||||
|   | |||||||
| @@ -25,9 +25,9 @@ import java.util.UUID; | |||||||
| public interface OfflinePlotPlayer extends PermissionHolder { | public interface OfflinePlotPlayer extends PermissionHolder { | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Gets the {@code UUID} of this player |      * Returns the UUID of the player. | ||||||
|      * |      * | ||||||
|      * @return the player {@link UUID} |      * @return the UUID of the player | ||||||
|      */ |      */ | ||||||
|     UUID getUUID(); |     UUID getUUID(); | ||||||
|  |  | ||||||
| @@ -39,9 +39,9 @@ public interface OfflinePlotPlayer extends PermissionHolder { | |||||||
|     long getLastPlayed(); |     long getLastPlayed(); | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Gets the name of this player. |      * Returns the name of the player. | ||||||
|      * |      * | ||||||
|      * @return the player name |      * @return the name of the player | ||||||
|      */ |      */ | ||||||
|     String getName(); |     String getName(); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -273,8 +273,9 @@ public abstract class PlotPlayer<P> implements CommandCaller, OfflinePlotPlayer, | |||||||
|         return this.meta == null ? null : this.meta.remove(key); |         return this.meta == null ? null : this.meta.remove(key); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * This player's name. |      * Returns the name of the player. | ||||||
|      * |      * | ||||||
|      * @return the name of the player |      * @return the name of the player | ||||||
|      */ |      */ | ||||||
|   | |||||||
| @@ -29,6 +29,7 @@ import com.plotsquared.core.configuration.caption.CaptionUtility; | |||||||
| 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.database.DBFunc; | import com.plotsquared.core.database.DBFunc; | ||||||
|  | import com.plotsquared.core.events.PlayerTeleportToPlotEvent; | ||||||
| import com.plotsquared.core.events.Result; | import com.plotsquared.core.events.Result; | ||||||
| import com.plotsquared.core.events.TeleportCause; | import com.plotsquared.core.events.TeleportCause; | ||||||
| import com.plotsquared.core.generator.ClassicPlotWorld; | import com.plotsquared.core.generator.ClassicPlotWorld; | ||||||
| @@ -2614,8 +2615,9 @@ public class Plot { | |||||||
|      */ |      */ | ||||||
|     public void teleportPlayer(final PlotPlayer<?> player, TeleportCause cause, Consumer<Boolean> resultConsumer) { |     public void teleportPlayer(final PlotPlayer<?> player, TeleportCause cause, Consumer<Boolean> resultConsumer) { | ||||||
|         Plot plot = this.getBasePlot(false); |         Plot plot = this.getBasePlot(false); | ||||||
|         Result result = this.eventDispatcher.callTeleport(player, player.getLocation(), plot, cause).getEventResult(); |  | ||||||
|         if (result == Result.DENY) { |         PlayerTeleportToPlotEvent event = this.eventDispatcher.callTeleport(player, player.getLocation(), plot, cause); | ||||||
|  |         if (event.getEventResult() == Result.DENY) { | ||||||
|             player.sendMessage( |             player.sendMessage( | ||||||
|                     TranslatableCaption.of("events.event_denied"), |                     TranslatableCaption.of("events.event_denied"), | ||||||
|                     TagResolver.resolver("value", Tag.inserting(Component.text("Teleport"))) |                     TagResolver.resolver("value", Tag.inserting(Component.text("Teleport"))) | ||||||
| @@ -2623,7 +2625,10 @@ public class Plot { | |||||||
|             resultConsumer.accept(false); |             resultConsumer.accept(false); | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|         final Consumer<Location> locationConsumer = location -> { |  | ||||||
|  |         final Consumer<Location> locationConsumer = calculatedLocation -> { | ||||||
|  |             Location location = event.getLocationTransformer() == null ? calculatedLocation : | ||||||
|  |                     Objects.requireNonNullElse(event.getLocationTransformer().apply(calculatedLocation), calculatedLocation); | ||||||
|             if (Settings.Teleport.DELAY == 0 || player.hasPermission("plots.teleport.delay.bypass")) { |             if (Settings.Teleport.DELAY == 0 || player.hasPermission("plots.teleport.delay.bypass")) { | ||||||
|                 player.sendMessage(TranslatableCaption.of("teleport.teleported_to_plot")); |                 player.sendMessage(TranslatableCaption.of("teleport.teleported_to_plot")); | ||||||
|                 player.teleport(location, cause); |                 player.teleport(location, cause); | ||||||
|   | |||||||
| @@ -26,8 +26,8 @@ import java.util.Iterator; | |||||||
| import java.util.NoSuchElementException; | import java.util.NoSuchElementException; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Plot (X,Y) tuples for plot locations |  * The PlotId class represents a Plot's x and y coordinates within a {@link PlotArea}. PlotId x,y values do not correspond to Block locations. | ||||||
|  * within a plot area |  * A PlotId instance can be created using the {@link #of(int, int)} method or parsed from a string using the {@link #fromString(String)} method. | ||||||
|  */ |  */ | ||||||
| public final class PlotId { | public final class PlotId { | ||||||
|  |  | ||||||
| @@ -36,10 +36,10 @@ public final class PlotId { | |||||||
|     private final int hash; |     private final int hash; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * PlotId class (PlotId x,y values do not correspond to Block locations) |      * Constructs a new PlotId with the given x and y coordinates. | ||||||
|      * |      * | ||||||
|      * @param x The plot x coordinate |      * @param x the x-coordinate of the plot | ||||||
|      * @param y The plot y coordinate |      * @param y the y-coordinate of the plot | ||||||
|      */ |      */ | ||||||
|     private PlotId(final int x, final int y) { |     private PlotId(final int x, final int y) { | ||||||
|         this.x = x; |         this.x = x; | ||||||
| @@ -48,11 +48,11 @@ public final class PlotId { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Create a new plot ID instance |      * Returns a new PlotId instance with the specified x and y coordinates. | ||||||
|      * |      * | ||||||
|      * @param x The plot x coordinate |      * @param x the x-coordinate of the plot | ||||||
|      * @param y The plot y coordinate |      * @param y the y-coordinate of the plot | ||||||
|      * @return a new PlotId at x,y |      * @return a new PlotId instance with the specified x and y coordinates | ||||||
|      */ |      */ | ||||||
|     public static @NonNull PlotId of(final int x, final int y) { |     public static @NonNull PlotId of(final int x, final int y) { | ||||||
|         return new PlotId(x, y); |         return new PlotId(x, y); | ||||||
| @@ -74,10 +74,13 @@ public final class PlotId { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Attempt to parse a plot ID from a string |      * Returns a PlotId object from the given string, or null if the string is invalid. | ||||||
|  |      * The string should be in the format "x;y" where x and y are integers. | ||||||
|  |      * The string can also contain any combination of the characters ";_,." | ||||||
|  |      * as delimiters. | ||||||
|      * |      * | ||||||
|      * @param string ID string |      * @param string the string to parse | ||||||
|      * @return Plot ID, or {@code null} if none could be parsed |      * @return a PlotId object parsed from the given string, or null if the string is invalid | ||||||
|      */ |      */ | ||||||
|     public static @Nullable PlotId fromStringOrNull(final @NonNull String string) { |     public static @Nullable PlotId fromStringOrNull(final @NonNull String string) { | ||||||
|         final String[] parts = string.split("[;_,.]"); |         final String[] parts = string.split("[;_,.]"); | ||||||
| @@ -95,39 +98,39 @@ public final class PlotId { | |||||||
|         return of(x, y); |         return of(x, y); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Gets the PlotId from the HashCode<br> |      * Returns a new PlotId instance from the given hash. | ||||||
|      * Note: Only accurate for small x,z values (short) |  | ||||||
|      * |      * | ||||||
|      * @param hash ID hash |      * @param hash the hash to unpair | ||||||
|      * @return Plot ID |      * @return a new PlotId instance | ||||||
|      */ |      */ | ||||||
|     public static @NonNull PlotId unpair(final int hash) { |     public static @NonNull PlotId unpair(final int hash) { | ||||||
|         return PlotId.of(hash >> 16, hash & 0xFFFF); |         return PlotId.of(hash >> 16, hash & 0xFFFF); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Get the ID X component |      * Returns the x-coordinate of this Plot ID. | ||||||
|      * |      * | ||||||
|      * @return X component |      * @return the x-coordinate of this Plot ID | ||||||
|      */ |      */ | ||||||
|     public int getX() { |     public int getX() { | ||||||
|         return this.x; |         return this.x; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Get the ID Y component |      * Returns the y-coordinate of this Plot ID. | ||||||
|      * |      * | ||||||
|      * @return Y component |      * @return the y-coordinate of this Plot ID | ||||||
|      */ |      */ | ||||||
|     public int getY() { |     public int getY() { | ||||||
|         return this.y; |         return this.y; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Get the next plot ID for claiming purposes |      * Returns the next Plot ID for claiming purposes based on the current Plot ID. | ||||||
|      * |      * | ||||||
|      * @return Next plot ID |      * @return the next Plot ID | ||||||
|      */ |      */ | ||||||
|     public @NonNull PlotId getNextId() { |     public @NonNull PlotId getNextId() { | ||||||
|         final int absX = Math.abs(x); |         final int absX = Math.abs(x); | ||||||
| @@ -159,10 +162,11 @@ public final class PlotId { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Get the PlotId in a relative direction |      * Returns a new Plot ID in the specified relative direction based on the | ||||||
|  |      * current Plot ID. | ||||||
|      * |      * | ||||||
|      * @param direction Direction |      * @param direction the direction in which to get the relative Plot ID | ||||||
|      * @return Relative plot ID |      * @return the relative Plot ID | ||||||
|      */ |      */ | ||||||
|     public @NonNull PlotId getRelative(final @NonNull Direction direction) { |     public @NonNull PlotId getRelative(final @NonNull Direction direction) { | ||||||
|         return switch (direction) { |         return switch (direction) { | ||||||
| @@ -193,10 +197,11 @@ public final class PlotId { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Get a String representation of the plot ID where the |      * Returns a string representation of this Plot ID in the format "x;y". | ||||||
|      * components are separated by ";" |  | ||||||
|      * |      * | ||||||
|      * @return {@code x + ";" + y} |      * <p> The format is {@code x + ";" + y} | ||||||
|  |      * | ||||||
|  |      * @return a string representation of this Plot ID | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public @NonNull String toString() { |     public @NonNull String toString() { | ||||||
| @@ -204,41 +209,40 @@ public final class PlotId { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Get a String representation of the plot ID where the |      * Returns a string representation of this Plot ID with the specified separator. | ||||||
|      * components are separated by a specified string |      * <p> | ||||||
|  |      * The format is {@code x + separator + y} | ||||||
|      * |      * | ||||||
|      * @param separator Separator |      * @param separator the separator to use between the X and Y coordinates | ||||||
|      * @return {@code x + separator + y} |      * @return a string representation of this Plot ID with the specified separator | ||||||
|      */ |      */ | ||||||
|     public @NonNull String toSeparatedString(String separator) { |     public @NonNull String toSeparatedString(String separator) { | ||||||
|         return this.getX() + separator + this.getY(); |         return this.getX() + separator + this.getY(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Get a String representation of the plot ID where the |      * Returns a string representation of this Plot ID in the format "x,y". | ||||||
|      * components are separated by "," |  | ||||||
|      * |      * | ||||||
|      * @return {@code x + "," + y} |      * @return a string representation of this Plot ID | ||||||
|      */ |      */ | ||||||
|     public @NonNull String toCommaSeparatedString() { |     public @NonNull String toCommaSeparatedString() { | ||||||
|         return this.getX() + "," + this.getY(); |         return this.getX() + "," + this.getY(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Get a String representation of the plot ID where the |      * Returns a string representation of this Plot ID in the format "x_y". | ||||||
|      * components are separated by "_" |  | ||||||
|      * |      * | ||||||
|      * @return {@code x + "_" + y} |      * @return a string representation of this Plot ID | ||||||
|      */ |      */ | ||||||
|  |  | ||||||
|     public @NonNull String toUnderscoreSeparatedString() { |     public @NonNull String toUnderscoreSeparatedString() { | ||||||
|         return this.getX() + "_" + this.getY(); |         return this.getX() + "_" + this.getY(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Get a String representation of the plot ID where the |      * Returns a string representation of this Plot ID in the format "x-y". | ||||||
|      * components are separated by "-" |  | ||||||
|      * |      * | ||||||
|      * @return {@code x + "-" + y} |      * @return a string representation of this Plot ID | ||||||
|      */ |      */ | ||||||
|     public @NonNull String toDashSeparatedString() { |     public @NonNull String toDashSeparatedString() { | ||||||
|         return this.getX() + "-" + this.getY(); |         return this.getX() + "-" + this.getY(); | ||||||
| @@ -250,6 +254,10 @@ public final class PlotId { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * An iterator that iterates over a range of {@link PlotId}s. | ||||||
|  |      * The range is defined by a start and end {@link PlotId}. | ||||||
|  |      */ | ||||||
|     public static final class PlotRangeIterator implements Iterator<PlotId>, Iterable<PlotId> { |     public static final class PlotRangeIterator implements Iterator<PlotId>, Iterable<PlotId> { | ||||||
|  |  | ||||||
|         private final PlotId start; |         private final PlotId start; | ||||||
| @@ -265,6 +273,13 @@ public final class PlotId { | |||||||
|             this.y = this.start.getY(); |             this.y = this.start.getY(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         /** | ||||||
|  |          * Returns a new {@link PlotRangeIterator} that iterates over the range of Plots between the specified start and end Plots (inclusive). | ||||||
|  |          * | ||||||
|  |          * @param start the starting Plot of the range | ||||||
|  |          * @param end the ending Plot of the range | ||||||
|  |          * @return a new {@link PlotRangeIterator} that iterates over the range of Plots between the specified start and end Plots (inclusive) | ||||||
|  |          */ | ||||||
|         public static PlotRangeIterator range(final @NonNull PlotId start, final @NonNull PlotId end) { |         public static PlotRangeIterator range(final @NonNull PlotId start, final @NonNull PlotId end) { | ||||||
|             return new PlotRangeIterator(start, end); |             return new PlotRangeIterator(start, end); | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -67,14 +67,25 @@ public class PlotItemStack { | |||||||
|         return this.type; |         return this.type; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Returns the number of items in this stack. | ||||||
|  |      * Valid values range from 1-255. | ||||||
|  |      * | ||||||
|  |      * @return the amount of items in this stack | ||||||
|  |      */ | ||||||
|     public int getAmount() { |     public int getAmount() { | ||||||
|         return amount; |         return amount; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Returns the given name of this stack of items. The name is displayed when | ||||||
|  |      * hovering over the item. | ||||||
|  |      * | ||||||
|  |      * @return the given name of this stack of items | ||||||
|  |      */ | ||||||
|     public String getName() { |     public String getName() { | ||||||
|         return name; |         return name; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public String[] getLore() { |     public String[] getLore() { | ||||||
|         return lore; |         return lore; | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -891,7 +891,6 @@ public final class PlotModificationManager { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * /** |  | ||||||
|      * Sets components such as border, wall, floor. |      * Sets components such as border, wall, floor. | ||||||
|      * (components are generator specific) |      * (components are generator specific) | ||||||
|      * |      * | ||||||
|   | |||||||
| @@ -18,9 +18,25 @@ | |||||||
|  */ |  */ | ||||||
| package com.plotsquared.core.plot; | package com.plotsquared.core.plot; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * The different types of weather that can be set for a Plot. | ||||||
|  |  */ | ||||||
| public enum PlotWeather { | public enum PlotWeather { | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Rainy weather conditions | ||||||
|  |      */ | ||||||
|     RAIN, |     RAIN, | ||||||
|  |     /** | ||||||
|  |      * Clear weather conditions | ||||||
|  |      */ | ||||||
|     CLEAR, |     CLEAR, | ||||||
|  |     /** | ||||||
|  |      * Use the weather of the world the plot is in | ||||||
|  |      */ | ||||||
|     WORLD, |     WORLD, | ||||||
|  |     /** | ||||||
|  |      * Turn off weather for the plot | ||||||
|  |      */ | ||||||
|     OFF |     OFF | ||||||
| } | } | ||||||
|   | |||||||
| @@ -83,6 +83,7 @@ import java.io.OutputStreamWriter; | |||||||
| import java.io.PrintWriter; | import java.io.PrintWriter; | ||||||
| import java.net.HttpURLConnection; | import java.net.HttpURLConnection; | ||||||
| import java.net.MalformedURLException; | import java.net.MalformedURLException; | ||||||
|  | import java.net.URI; | ||||||
| import java.net.URL; | import java.net.URL; | ||||||
| import java.net.URLConnection; | import java.net.URLConnection; | ||||||
| import java.nio.channels.Channels; | import java.nio.channels.Channels; | ||||||
| @@ -144,7 +145,7 @@ public abstract class SchematicHandler { | |||||||
|         } |         } | ||||||
|         final URL url; |         final URL url; | ||||||
|         try { |         try { | ||||||
|             url = new URL(Settings.Web.URL + "?key=" + uuid + "&type=" + extension); |             url = URI.create(Settings.Web.URL + "?key=" + uuid + "&type=" + extension).toURL(); | ||||||
|         } catch (MalformedURLException e) { |         } catch (MalformedURLException e) { | ||||||
|             e.printStackTrace(); |             e.printStackTrace(); | ||||||
|             whenDone.run(); |             whenDone.run(); | ||||||
| @@ -153,7 +154,7 @@ public abstract class SchematicHandler { | |||||||
|         TaskManager.runTaskAsync(() -> { |         TaskManager.runTaskAsync(() -> { | ||||||
|             try { |             try { | ||||||
|                 String boundary = Long.toHexString(System.currentTimeMillis()); |                 String boundary = Long.toHexString(System.currentTimeMillis()); | ||||||
|                 URLConnection con = new URL(website).openConnection(); |                 URLConnection con = URI.create(website).toURL().openConnection(); | ||||||
|                 con.setDoOutput(true); |                 con.setDoOutput(true); | ||||||
|                 con.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary); |                 con.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary); | ||||||
|                 try (OutputStream output = con.getOutputStream(); |                 try (OutputStream output = con.getOutputStream(); | ||||||
| @@ -498,9 +499,10 @@ public abstract class SchematicHandler { | |||||||
|     public List<String> getSaves(UUID uuid) { |     public List<String> getSaves(UUID uuid) { | ||||||
|         String rawJSON; |         String rawJSON; | ||||||
|         try { |         try { | ||||||
|             String website = Settings.Web.URL + "list.php?" + uuid.toString(); |             URLConnection connection = URI.create( | ||||||
|             URL url = new URL(website); |                     Settings.Web.URL + "list.php?" + uuid.toString()) | ||||||
|             URLConnection connection = new URL(url.toString()).openConnection(); |                     .toURL() | ||||||
|  |                     .openConnection(); | ||||||
|             connection.setRequestProperty("User-Agent", "Mozilla/5.0"); |             connection.setRequestProperty("User-Agent", "Mozilla/5.0"); | ||||||
|             try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()))) { |             try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()))) { | ||||||
|                 rawJSON = reader.lines().collect(Collectors.joining()); |                 rawJSON = reader.lines().collect(Collectors.joining()); | ||||||
|   | |||||||
| @@ -1,5 +1,6 @@ | |||||||
| import com.diffplug.gradle.spotless.SpotlessPlugin | import com.diffplug.gradle.spotless.SpotlessPlugin | ||||||
| import com.github.jengelman.gradle.plugins.shadow.ShadowPlugin | import com.github.jengelman.gradle.plugins.shadow.ShadowPlugin | ||||||
|  | import groovy.json.JsonSlurper | ||||||
| import java.net.URI | import java.net.URI | ||||||
| import xyz.jpenilla.runpaper.task.RunServer | import xyz.jpenilla.runpaper.task.RunServer | ||||||
|  |  | ||||||
| @@ -170,8 +171,9 @@ subprojects { | |||||||
|  |  | ||||||
|                     scm { |                     scm { | ||||||
|                         url.set("https://github.com/IntellectualSites/PlotSquared") |                         url.set("https://github.com/IntellectualSites/PlotSquared") | ||||||
|                         connection.set("scm:https://IntellectualSites@github.com/IntellectualSites/PlotSquared.git") |                         connection.set("scm:git:https://github.com/IntellectualSites/PlotSquared.git") | ||||||
|                         developerConnection.set("scm:git://github.com/IntellectualSites/PlotSquared.git") |                         developerConnection.set("scm:git:git@github.com:IntellectualSites/PlotSquared.git") | ||||||
|  |                         tag.set("${project.version}") | ||||||
|                     } |                     } | ||||||
|  |  | ||||||
|                     issueManagement { |                     issueManagement { | ||||||
| @@ -218,14 +220,23 @@ tasks.getByName<Jar>("jar") { | |||||||
|     enabled = false |     enabled = false | ||||||
| } | } | ||||||
|  |  | ||||||
| val supportedVersions = listOf("1.16.5", "1.17", "1.17.1", "1.18.2", "1.19", "1.19.1", "1.19.2", "1.19.3", "1.19.4", "1.20") | val supportedVersions = listOf("1.16.5", "1.17.1", "1.18.2", "1.19.4", "1.20.1", "1.20.2") | ||||||
| tasks { | tasks { | ||||||
|  |     val lastSuccessfulBuildUrl = uri("https://ci.athion.net/job/FastAsyncWorldEdit/lastSuccessfulBuild/api/json").toURL() | ||||||
|  |     val artifact = ((JsonSlurper().parse(lastSuccessfulBuildUrl) as Map<*, *>)["artifacts"] as List<*>) | ||||||
|  |             .map { it as Map<*, *> } | ||||||
|  |             .map { it["fileName"] as String } | ||||||
|  |             .first { it.contains("Bukkit") } | ||||||
|  |  | ||||||
|     supportedVersions.forEach { |     supportedVersions.forEach { | ||||||
|         register<RunServer>("runServer-$it") { |         register<RunServer>("runServer-$it") { | ||||||
|             minecraftVersion(it) |             minecraftVersion(it) | ||||||
|             pluginJars(*project(":plotsquared-bukkit").getTasksByName("shadowJar", false).map { (it as Jar).archiveFile } |             pluginJars(*project(":plotsquared-bukkit").getTasksByName("shadowJar", false).map { (it as Jar).archiveFile } | ||||||
|                     .toTypedArray()) |                     .toTypedArray()) | ||||||
|             jvmArgs("-DPaper.IgnoreJavaVersion=true", "-Dcom.mojang.eula.agree=true") |             jvmArgs("-DPaper.IgnoreJavaVersion=true", "-Dcom.mojang.eula.agree=true") | ||||||
|  |             downloadPlugins { | ||||||
|  |                 url("https://ci.athion.net/job/FastAsyncWorldEdit/lastSuccessfulBuild/artifact/artifacts/$artifact") | ||||||
|  |             } | ||||||
|             group = "run paper" |             group = "run paper" | ||||||
|             runDirectory.set(file("run-$it")) |             runDirectory.set(file("run-$it")) | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -1,20 +1,20 @@ | |||||||
| [versions] | [versions] | ||||||
| # Platform expectations | # Platform expectations | ||||||
| paper = "1.20.1-R0.1-SNAPSHOT" | paper = "1.20.2-R0.1-SNAPSHOT" | ||||||
| guice = "7.0.0" | guice = "7.0.0" | ||||||
| spotbugs = "4.7.3" | spotbugs = "4.7.3" | ||||||
| checkerqual = "3.37.0" | checkerqual = "3.38.0" | ||||||
| gson = "2.10" | gson = "2.10" | ||||||
| guava = "31.1-jre" | guava = "31.1-jre" | ||||||
| snakeyaml = "2.0" | snakeyaml = "2.0" | ||||||
| adventure = "4.14.0" | adventure = "4.14.0" | ||||||
| adventure-bukkit = "4.3.0" | adventure-bukkit = "4.3.1" | ||||||
| log4j = "2.19.0" | log4j = "2.19.0" | ||||||
|  |  | ||||||
| # Plugins | # Plugins | ||||||
| worldedit = "7.2.15" | worldedit = "7.2.16" | ||||||
| fawe = "2.7.0" | fawe = "2.8.0" | ||||||
| placeholderapi = "2.11.3" | placeholderapi = "2.11.4" | ||||||
| luckperms = "5.4" | luckperms = "5.4" | ||||||
| essentialsx = "2.20.1" | essentialsx = "2.20.1" | ||||||
| mvdwapi = "3.1.1" | mvdwapi = "3.1.1" | ||||||
| @@ -22,7 +22,7 @@ mvdwapi = "3.1.1" | |||||||
| # Third party | # Third party | ||||||
| prtree = "2.0.1" | prtree = "2.0.1" | ||||||
| aopalliance = "1.0" | aopalliance = "1.0" | ||||||
| cloud-services = "1.8.3" | cloud-services = "1.8.4" | ||||||
| arkitektonika = "2.1.2" | arkitektonika = "2.1.2" | ||||||
| squirrelid = "0.3.2" | squirrelid = "0.3.2" | ||||||
| paster = "1.1.5" | paster = "1.1.5" | ||||||
| @@ -30,14 +30,14 @@ bstats = "3.0.2" | |||||||
| paperlib = "1.0.8" | paperlib = "1.0.8" | ||||||
| informative-annotations = "1.3" | informative-annotations = "1.3" | ||||||
| vault = "1.7.1" | vault = "1.7.1" | ||||||
| serverlib = "2.3.1" | serverlib = "2.3.4" | ||||||
|  |  | ||||||
| # Gradle plugins | # Gradle plugins | ||||||
| shadow = "8.1.1" | shadow = "8.1.1" | ||||||
| grgit = "4.1.1" | grgit = "4.1.1" | ||||||
| spotless = "6.20.0" | spotless = "6.22.0" | ||||||
| nexus = "1.3.0" | nexus = "1.3.0" | ||||||
| runPaper = "2.1.0" | runPaper = "2.2.0" | ||||||
|  |  | ||||||
| [libraries] | [libraries] | ||||||
| # Platform expectations | # Platform expectations | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user