Compare commits

..

20 Commits

Author SHA1 Message Date
23b371f794 chore: simplify transform type 2023-10-14 21:28:57 +02:00
9d2c632ca8 chore/feat: migrate to LocationTransformer to resolve unnecessary chunk loads 2023-10-03 16:12:10 +02:00
d4ba0f414e feat: ability to overwrite spawn location for plot teleports 2023-10-02 18:05:55 +02:00
a3bc3968a5 Update Paper javadoc URL to 1.20 (#4187) 2023-10-01 14:07:55 +02:00
79454da1a6 Address deprecated 'Project.buildDir' in build scripts (#4191) 2023-10-01 14:07:36 +02:00
12a4c92ad9 Update dependency com.diffplug.spotless to v6.22.0 (#4188)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-01 14:00:26 +02:00
167692d464 Update dependency org.checkerframework:checker-qual to v3.38.0 (#4189)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-01 14:00:03 +02:00
ae26e8155c Update fawe to v2.8.0 (#4190)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-01 13:59:52 +02:00
286ea62a21 Update actions/checkout action to v4 (#4192)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-01 13:59:43 +02:00
d95c74d8c9 Addresses issues related to maven publish scm block (#4179)
- Fixes https://github.com/IntellectualSites/PlotSquared/issues/4158
- Fixes https://github.com/IntellectualSites/PlotSquared/issues/4159
- Resolves https://github.com/IntellectualSites/PlotSquared/issues/4160
2023-10-01 11:54:47 +02:00
c1555ddbc7 Fix #isAccessible() deprecation in HybridPlotWorld (#4177)
Fixes https://github.com/IntellectualSites/PlotSquared/issues/4165
2023-10-01 11:50:19 +02:00
4fe0c586d9 Address deprecated URL instantiation (#4178)
Fixes https://github.com/IntellectualSites/PlotSquared/issues/4166
2023-10-01 11:50:12 +02:00
aae6ea4fee Update dependency net.kyori:adventure-platform-bukkit to v4.3.1 (#4182)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-01 11:50:03 +02:00
385d018504 Update worldedit to v7.2.16 (#4183)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-01 11:49:53 +02:00
f4def082c1 Update dependency cloud.commandframework:cloud-services to v1.8.4 (#4175)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-01 11:25:05 +02:00
69c9f1df83 Update dependency me.clip:placeholderapi to v2.11.4 (#4176)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-01 11:24:58 +02:00
e138dc0267 Update runServer gradle tasks (#4173)
* chore/feat: download fawe & only use latest patch versions in runServer

* chore: gitignore runServer-1.20 folder as well

* chore: exclude minor versions >= 10 by default (no need for < 10)

* chore: update gradle plugin
2023-09-30 01:32:50 +02:00
ca50b53f94 Update api.spigotmc.org from 0.1 to 0.2 (#4167) 2023-09-17 20:14:30 +02:00
f705487055 Ignore deprecations we can't address (yet) 2023-09-16 21:48:13 +02:00
b7c9453a1a Rewrite javadocs for PlotId class (#4157) 2023-09-15 13:17:42 -04:00
22 changed files with 100 additions and 45 deletions

View File

@ -27,7 +27,7 @@ body:
description: Which server version version you using? If your server version is not listed, it is not supported. Update to a supported version first.
multiple: false
options:
- '1.20.1'
- '1.20.2'
- '1.20'
- '1.19.4'
- '1.19.3'

View File

@ -9,7 +9,7 @@ jobs:
os: [ ubuntu-latest, windows-latest, macos-latest ]
steps:
- name: Checkout Repository
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v1
- name: Setup Java

View File

@ -9,7 +9,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v1
- name: Setup Java

View File

@ -20,7 +20,7 @@ jobs:
language: [ 'java' ]
steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v3
with:

5
.gitignore vendored
View File

@ -138,6 +138,5 @@ build/
.DS_Store
# Ignore run folders
run-[0-0].[0-9]/
run-[0-0].[0-9].[0-9]/
run-[0-9].[0-9][0-9]/
run-[0-9].[0-9][0-9].[0-9]/

View File

@ -100,7 +100,7 @@ tasks {
withType<Javadoc> {
val isRelease = if (rootProject.version.toString().endsWith("-SNAPSHOT")) "TODO" else rootProject.version.toString()
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://intellectualsites.github.io/plotsquared-javadocs/core/")
opt.links("https://jd.advntr.dev/api/4.14.0/")

View File

@ -252,6 +252,7 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
}
@Override
@SuppressWarnings("deprecation") // Paper deprecation
public void onEnable() {
this.pluginName = getDescription().getName();
@ -1160,6 +1161,7 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
return new BukkitPlotGenerator(world, generator, this.plotAreaManager);
}
@SuppressWarnings("deprecation") // Paper deprecation
@Override
public @NonNull String pluginsFormatted() {
StringBuilder msg = new StringBuilder();
@ -1181,7 +1183,7 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
}
@Override
@SuppressWarnings("ConstantConditions")
@SuppressWarnings({"ConstantConditions", "deprecation"}) // Paper deprecation
public @NonNull String worldEditImplementations() {
StringBuilder msg = new StringBuilder();
if (Bukkit.getPluginManager().getPlugin("FastAsyncWorldEdit") != null) {

View File

@ -74,6 +74,7 @@ public final class ReplicatingEntityWrapper extends EntityWrapper {
private HorseStats horse;
private boolean noGravity;
@SuppressWarnings("deprecation") // Deprecation exists since 1.20, while we support 1.16 onwards
public ReplicatingEntityWrapper(Entity entity, short depth) {
super(entity);

View File

@ -369,6 +369,7 @@ public class PlayerEventListener implements Listener {
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
@SuppressWarnings("deprecation") // Paper deprecation
public void onConnect(PlayerJoinEvent event) {
final Player player = event.getPlayer();
PlotSquared.platform().playerManager().removePlayer(player.getUniqueId());
@ -733,6 +734,7 @@ public class PlayerEventListener implements Listener {
}
@EventHandler(priority = EventPriority.LOW)
@SuppressWarnings("deprecation") // Paper deprecation
public void onChat(AsyncPlayerChatEvent event) {
if (event.isCancelled()) {
return;
@ -1063,6 +1065,7 @@ public class PlayerEventListener implements Listener {
}
@EventHandler(priority = EventPriority.LOW)
@SuppressWarnings("deprecation") // Paper deprecation
public void onCancelledInteract(PlayerInteractEvent event) {
if (event.isCancelled() && event.getAction() == Action.RIGHT_CLICK_AIR) {
Player player = event.getPlayer();

View File

@ -44,6 +44,7 @@ import java.util.stream.IntStream;
@Singleton
public class BukkitInventoryUtil extends InventoryUtil {
@SuppressWarnings("deprecation") // Paper deprecation
private static @Nullable ItemStack getItem(PlotItemStack item) {
if (item == null) {
return null;

View File

@ -67,6 +67,7 @@ public class BukkitSetupUtils extends SetupUtils {
this.worldFile = worldFile;
}
@SuppressWarnings("deprecation") // Paper deprecation
@Override
public void updateGenerators(final boolean force) {
if (loaded && !SetupUtils.generators.isEmpty() && !force) {

View File

@ -35,7 +35,7 @@ import org.bukkit.scheduler.BukkitTask;
import javax.net.ssl.HttpsURLConnection;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URI;
public class UpdateUtility implements Listener {
@ -59,8 +59,9 @@ public class UpdateUtility implements Listener {
public void updateChecker() {
task = Bukkit.getScheduler().runTaskTimerAsynchronously(this.javaPlugin, () -> {
try {
HttpsURLConnection connection = (HttpsURLConnection) new URL(
"https://api.spigotmc.org/simple/0.1/index.php?action=getResource&id=77506")
HttpsURLConnection connection = (HttpsURLConnection) URI.create(
"https://api.spigotmc.org/simple/0.2/index.php?action=getResource&id=77506")
.toURL()
.openConnection();
connection.setRequestMethod("GET");
JsonObject result = new JsonParser()

View File

@ -57,8 +57,8 @@ tasks.processResources {
doLast {
copy {
from(File("$rootDir/LICENSE"))
into("$buildDir/resources/main/")
from(layout.buildDirectory.file("$rootDir/LICENSE"))
into(layout.buildDirectory.dir("resources/main"))
}
}
}

View File

@ -84,7 +84,7 @@ import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.nio.file.Files;
@ -210,9 +210,10 @@ public class PlotSquared {
try {
URL logurl = PlotSquared.class.getProtectionDomain().getCodeSource().getLocation();
this.jarFile = new File(
new URL(logurl.toURI().toString().split("\\!")[0].replaceAll("jar:file", "file"))
.toURI().getPath());
} catch (MalformedURLException | URISyntaxException | SecurityException e) {
URI.create(
logurl.toURI().toString().split("\\!")[0].replaceAll("jar:file", "file"))
.getPath());
} catch (URISyntaxException | SecurityException e) {
e.printStackTrace();
this.jarFile = new File(this.platform.getDirectory().getParentFile(), "PlotSquared.jar");
if (!this.jarFile.exists()) {

View File

@ -41,6 +41,7 @@ import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import java.util.Collections;
import java.util.List;
@ -116,7 +117,7 @@ public class Load extends SubCommand {
}
final URL url;
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) {
e.printStackTrace();
player.sendMessage(TranslatableCaption.of("web.load_failed"));

View File

@ -40,6 +40,7 @@ import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull;
import java.net.URI;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
@ -130,8 +131,7 @@ public class SchematicCmd extends SubCommand {
if (location.startsWith("url:")) {
try {
UUID uuid = UUID.fromString(location.substring(4));
URL base = new URL(Settings.Web.URL);
URL url = new URL(base, "uploads/" + uuid + ".schematic");
URL url = URI.create(Settings.Web.URL + "uploads/" + uuid + ".schematic").toURL();
schematic = this.schematicHandler.getSchematic(url);
} catch (Exception e) {
e.printStackTrace();

View File

@ -21,21 +21,26 @@ package com.plotsquared.core.events;
import com.plotsquared.core.location.Location;
import com.plotsquared.core.player.PlotPlayer;
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
*/
public class PlayerTeleportToPlotEvent extends PlotPlayerEvent implements CancellablePlotEvent {
private final Location from;
private final TeleportCause cause;
private Result eventResult;
private final Location from;
private UnaryOperator<Location> locationTransformer;
/**
* PlayerTeleportToPlotEvent: Called when a player teleports to a plot
*
* @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 cause Why the teleport is being completed
* @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
*/
@ -65,6 +71,27 @@ public class PlayerTeleportToPlotEvent extends PlotPlayerEvent implements Cancel
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
public Result getEventResult() {
return eventResult;

View File

@ -189,7 +189,7 @@ public class HybridPlotWorld extends ClassicPlotWorld {
}
Object value;
try {
final boolean accessible = field.isAccessible();
final boolean accessible = field.canAccess(this);
field.setAccessible(true);
value = field.get(this);
field.setAccessible(accessible);

View File

@ -29,6 +29,7 @@ import com.plotsquared.core.configuration.caption.CaptionUtility;
import com.plotsquared.core.configuration.caption.StaticCaption;
import com.plotsquared.core.configuration.caption.TranslatableCaption;
import com.plotsquared.core.database.DBFunc;
import com.plotsquared.core.events.PlayerTeleportToPlotEvent;
import com.plotsquared.core.events.Result;
import com.plotsquared.core.events.TeleportCause;
import com.plotsquared.core.generator.ClassicPlotWorld;
@ -2614,8 +2615,9 @@ public class Plot {
*/
public void teleportPlayer(final PlotPlayer<?> player, TeleportCause cause, Consumer<Boolean> resultConsumer) {
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(
TranslatableCaption.of("events.event_denied"),
TagResolver.resolver("value", Tag.inserting(Component.text("Teleport")))
@ -2623,7 +2625,10 @@ public class Plot {
resultConsumer.accept(false);
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")) {
player.sendMessage(TranslatableCaption.of("teleport.teleported_to_plot"));
player.teleport(location, cause);

View File

@ -83,6 +83,7 @@ import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import java.net.URLConnection;
import java.nio.channels.Channels;
@ -144,7 +145,7 @@ public abstract class SchematicHandler {
}
final URL url;
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) {
e.printStackTrace();
whenDone.run();
@ -153,7 +154,7 @@ public abstract class SchematicHandler {
TaskManager.runTaskAsync(() -> {
try {
String boundary = Long.toHexString(System.currentTimeMillis());
URLConnection con = new URL(website).openConnection();
URLConnection con = URI.create(website).toURL().openConnection();
con.setDoOutput(true);
con.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
try (OutputStream output = con.getOutputStream();
@ -498,9 +499,10 @@ public abstract class SchematicHandler {
public List<String> getSaves(UUID uuid) {
String rawJSON;
try {
String website = Settings.Web.URL + "list.php?" + uuid.toString();
URL url = new URL(website);
URLConnection connection = new URL(url.toString()).openConnection();
URLConnection connection = URI.create(
Settings.Web.URL + "list.php?" + uuid.toString())
.toURL()
.openConnection();
connection.setRequestProperty("User-Agent", "Mozilla/5.0");
try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
rawJSON = reader.lines().collect(Collectors.joining());

View File

@ -1,5 +1,6 @@
import com.diffplug.gradle.spotless.SpotlessPlugin
import com.github.jengelman.gradle.plugins.shadow.ShadowPlugin
import groovy.json.JsonSlurper
import java.net.URI
import xyz.jpenilla.runpaper.task.RunServer
@ -170,8 +171,9 @@ subprojects {
scm {
url.set("https://github.com/IntellectualSites/PlotSquared")
connection.set("scm:https://IntellectualSites@github.com/IntellectualSites/PlotSquared.git")
developerConnection.set("scm:git://github.com/IntellectualSites/PlotSquared.git")
connection.set("scm:git:https://github.com/IntellectualSites/PlotSquared.git")
developerConnection.set("scm:git:git@github.com:IntellectualSites/PlotSquared.git")
tag.set("${project.version}")
}
issueManagement {
@ -218,14 +220,23 @@ tasks.getByName<Jar>("jar") {
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 {
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 {
register<RunServer>("runServer-$it") {
minecraftVersion(it)
pluginJars(*project(":plotsquared-bukkit").getTasksByName("shadowJar", false).map { (it as Jar).archiveFile }
.toTypedArray())
jvmArgs("-DPaper.IgnoreJavaVersion=true", "-Dcom.mojang.eula.agree=true")
downloadPlugins {
url("https://ci.athion.net/job/FastAsyncWorldEdit/lastSuccessfulBuild/artifact/artifacts/$artifact")
}
group = "run paper"
runDirectory.set(file("run-$it"))
}

View File

@ -1,20 +1,20 @@
[versions]
# Platform expectations
paper = "1.20.1-R0.1-SNAPSHOT"
paper = "1.20.2-R0.1-SNAPSHOT"
guice = "7.0.0"
spotbugs = "4.7.3"
checkerqual = "3.37.0"
checkerqual = "3.38.0"
gson = "2.10"
guava = "31.1-jre"
snakeyaml = "2.0"
adventure = "4.14.0"
adventure-bukkit = "4.3.0"
adventure-bukkit = "4.3.1"
log4j = "2.19.0"
# Plugins
worldedit = "7.2.15"
fawe = "2.7.1"
placeholderapi = "2.11.3"
worldedit = "7.2.16"
fawe = "2.8.0"
placeholderapi = "2.11.4"
luckperms = "5.4"
essentialsx = "2.20.1"
mvdwapi = "3.1.1"
@ -22,7 +22,7 @@ mvdwapi = "3.1.1"
# Third party
prtree = "2.0.1"
aopalliance = "1.0"
cloud-services = "1.8.3"
cloud-services = "1.8.4"
arkitektonika = "2.1.2"
squirrelid = "0.3.2"
paster = "1.1.5"
@ -35,9 +35,9 @@ serverlib = "2.3.4"
# Gradle plugins
shadow = "8.1.1"
grgit = "4.1.1"
spotless = "6.21.0"
spotless = "6.22.0"
nexus = "1.3.0"
runPaper = "2.1.0"
runPaper = "2.2.0"
[libraries]
# Platform expectations