Compare commits

..

4 Commits

Author SHA1 Message Date
b858250ffd Fix linting 2023-09-13 21:15:10 +02:00
2b0c1465c5 Merge branch 'main' into docs/plotid 2023-09-13 21:14:10 +02:00
d46d8b158c Added a more human-friendly representation to docs 2023-09-12 18:16:14 -04:00
a6fb7b2358 Rewrite javadocs for PlotId class 2023-09-07 22:26:29 -04:00
16 changed files with 35 additions and 78 deletions

5
.gitignore vendored
View File

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

View File

@ -252,7 +252,6 @@ 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();
@ -1161,7 +1160,6 @@ 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();
@ -1183,7 +1181,7 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
} }
@Override @Override
@SuppressWarnings({"ConstantConditions", "deprecation"}) // Paper deprecation @SuppressWarnings("ConstantConditions")
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) {

View File

@ -74,7 +74,6 @@ 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);

View File

@ -369,7 +369,6 @@ 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());
@ -734,7 +733,6 @@ 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;
@ -1065,7 +1063,6 @@ 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();

View File

@ -44,7 +44,6 @@ 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;

View File

@ -67,7 +67,6 @@ 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) {

View File

@ -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.URI; import java.net.URL;
public class UpdateUtility implements Listener { public class UpdateUtility implements Listener {
@ -59,9 +59,8 @@ 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) URI.create( HttpsURLConnection connection = (HttpsURLConnection) new URL(
"https://api.spigotmc.org/simple/0.2/index.php?action=getResource&id=77506") "https://api.spigotmc.org/simple/0.1/index.php?action=getResource&id=77506")
.toURL()
.openConnection(); .openConnection();
connection.setRequestMethod("GET"); connection.setRequestMethod("GET");
JsonObject result = new JsonParser() JsonObject result = new JsonParser()

View File

@ -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.URI; import java.net.MalformedURLException;
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,10 +210,9 @@ 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(
URI.create( new URL(logurl.toURI().toString().split("\\!")[0].replaceAll("jar:file", "file"))
logurl.toURI().toString().split("\\!")[0].replaceAll("jar:file", "file")) .toURI().getPath());
.getPath()); } catch (MalformedURLException | URISyntaxException | SecurityException e) {
} 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()) {

View File

@ -41,7 +41,6 @@ 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;
@ -117,7 +116,7 @@ public class Load extends SubCommand {
} }
final URL url; final URL url;
try { try {
url = URI.create(Settings.Web.URL + "saves/" + player.getUUID() + '/' + schematic).toURL(); url = new URL(Settings.Web.URL + "saves/" + player.getUUID() + '/' + schematic);
} catch (MalformedURLException e) { } catch (MalformedURLException e) {
e.printStackTrace(); e.printStackTrace();
player.sendMessage(TranslatableCaption.of("web.load_failed")); player.sendMessage(TranslatableCaption.of("web.load_failed"));

View File

@ -40,7 +40,6 @@ 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;
@ -131,7 +130,8 @@ 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 url = URI.create(Settings.Web.URL + "uploads/" + uuid + ".schematic").toURL(); URL base = new URL(Settings.Web.URL);
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();

View File

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

View File

@ -51,8 +51,6 @@ import com.plotsquared.core.util.MathMan;
import com.plotsquared.core.util.PlotExpression; import com.plotsquared.core.util.PlotExpression;
import com.plotsquared.core.util.RegionUtil; import com.plotsquared.core.util.RegionUtil;
import com.plotsquared.core.util.StringMan; import com.plotsquared.core.util.StringMan;
import com.plotsquared.core.util.task.TaskManager;
import com.plotsquared.core.util.task.TaskTime;
import com.sk89q.worldedit.math.BlockVector2; import com.sk89q.worldedit.math.BlockVector2;
import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.regions.CuboidRegion; import com.sk89q.worldedit.regions.CuboidRegion;
@ -393,28 +391,6 @@ public abstract class PlotArea implements ComponentLike {
} }
} }
this.spawnEggs = config.getBoolean("event.spawn.egg");
this.spawnCustom = config.getBoolean("event.spawn.custom");
this.spawnBreeding = config.getBoolean("event.spawn.breeding");
if (PlotSquared.get().isWeInitialised()) {
loadFlags(config);
} else {
ConsolePlayer.getConsole().sendMessage(
TranslatableCaption.of("flags.delaying_loading_area_flags"),
TagResolver.resolver("area", Tag.inserting(Component.text(this.id == null ? this.worldName : this.id)))
);
TaskManager.runTaskLater(() -> loadFlags(config), TaskTime.ticks(1));
}
loadConfiguration(config);
}
private void loadFlags(ConfigurationSection config) {
ConsolePlayer.getConsole().sendMessage(
TranslatableCaption.of("flags.loading_area_flags"),
TagResolver.resolver("area", Tag.inserting(Component.text(this.id == null ? this.worldName : this.id)))
);
List<String> flags = config.getStringList("flags.default"); List<String> flags = config.getStringList("flags.default");
if (flags.isEmpty()) { if (flags.isEmpty()) {
flags = config.getStringList("flags"); flags = config.getStringList("flags");
@ -435,6 +411,10 @@ public abstract class PlotArea implements ComponentLike {
TagResolver.resolver("flags", Tag.inserting(Component.text(flags.toString()))) TagResolver.resolver("flags", Tag.inserting(Component.text(flags.toString())))
); );
this.spawnEggs = config.getBoolean("event.spawn.egg");
this.spawnCustom = config.getBoolean("event.spawn.custom");
this.spawnBreeding = config.getBoolean("event.spawn.breeding");
List<String> roadflags = config.getStringList("road.flags"); List<String> roadflags = config.getStringList("road.flags");
if (roadflags.isEmpty()) { if (roadflags.isEmpty()) {
roadflags = new ArrayList<>(); roadflags = new ArrayList<>();
@ -446,12 +426,14 @@ public abstract class PlotArea implements ComponentLike {
} }
} }
} }
this.roadFlags = !roadflags.isEmpty(); this.roadFlags = roadflags.size() > 0;
parseFlags(this.getRoadFlagContainer(), roadflags); parseFlags(this.getRoadFlagContainer(), roadflags);
ConsolePlayer.getConsole().sendMessage( ConsolePlayer.getConsole().sendMessage(
TranslatableCaption.of("flags.road_flags"), TranslatableCaption.of("flags.road_flags"),
TagResolver.resolver("flags", Tag.inserting(Component.text(roadflags.toString()))) TagResolver.resolver("flags", Tag.inserting(Component.text(roadflags.toString())))
); );
loadConfiguration(config);
} }
public abstract void loadConfiguration(ConfigurationSection config); public abstract void loadConfiguration(ConfigurationSection config);

View File

@ -83,7 +83,6 @@ 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;
@ -145,7 +144,7 @@ public abstract class SchematicHandler {
} }
final URL url; final URL url;
try { try {
url = URI.create(Settings.Web.URL + "?key=" + uuid + "&type=" + extension).toURL(); url = new URL(Settings.Web.URL + "?key=" + uuid + "&type=" + extension);
} catch (MalformedURLException e) { } catch (MalformedURLException e) {
e.printStackTrace(); e.printStackTrace();
whenDone.run(); whenDone.run();
@ -154,7 +153,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 = URI.create(website).toURL().openConnection(); URLConnection con = new URL(website).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();
@ -499,10 +498,9 @@ public abstract class SchematicHandler {
public List<String> getSaves(UUID uuid) { public List<String> getSaves(UUID uuid) {
String rawJSON; String rawJSON;
try { try {
URLConnection connection = URI.create( String website = Settings.Web.URL + "list.php?" + uuid.toString();
Settings.Web.URL + "list.php?" + uuid.toString()) URL url = new URL(website);
.toURL() URLConnection connection = new URL(url.toString()).openConnection();
.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());

View File

@ -631,8 +631,6 @@
"flags.flag_error_double": "Flag value must be a decimal number.", "flags.flag_error_double": "Flag value must be a decimal number.",
"flags.flag_error_music": "Flag value must be a valid music disc ID.", "flags.flag_error_music": "Flag value must be a valid music disc ID.",
"flags.flag_error_title": "Flag value must be in the format </red><grey>\"A title\" \"The subtitle\"</grey><red>.", "flags.flag_error_title": "Flag value must be in the format </red><grey>\"A title\" \"The subtitle\"</grey><red>.",
"flags.delaying_loading_area_flags": "<prefix><gray>Delaying loading flags for area `</gray><dark_aqua><area></dark_aqua><gray>` as WorldEdit is not initialised yet.</gray>",
"flags.loading_area_flags": "<prefix><gray>Loading flags for area: </gray><dark_aqua><area></dark_aqua>",
"flags.area_flags": "<prefix><gray>Area flags: </gray><dark_aqua><flags></dark_aqua>", "flags.area_flags": "<prefix><gray>Area flags: </gray><dark_aqua><flags></dark_aqua>",
"flags.road_flags": "<prefix><gray>Road flags: </gray><dark_aqua><flags></dark_aqua>", "flags.road_flags": "<prefix><gray>Road flags: </gray><dark_aqua><flags></dark_aqua>",
"commands.description.add": "<gray>Allow a user to build in a plot while the plot owner is online.</gray>", "commands.description.add": "<gray>Allow a user to build in a plot while the plot owner is online.</gray>",

View File

@ -1,6 +1,5 @@
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
@ -171,9 +170,8 @@ subprojects {
scm { scm {
url.set("https://github.com/IntellectualSites/PlotSquared") url.set("https://github.com/IntellectualSites/PlotSquared")
connection.set("scm:git:https://github.com/IntellectualSites/PlotSquared.git") connection.set("scm:https://IntellectualSites@github.com/IntellectualSites/PlotSquared.git")
developerConnection.set("scm:git:git@github.com:IntellectualSites/PlotSquared.git") developerConnection.set("scm:git://github.com/IntellectualSites/PlotSquared.git")
tag.set("${project.version}")
} }
issueManagement { issueManagement {
@ -220,23 +218,14 @@ tasks.getByName<Jar>("jar") {
enabled = false enabled = false
} }
val supportedVersions = listOf("1.16.5", "1.17.1", "1.18.2", "1.19.4", "1.20.1") 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")
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"))
} }

View File

@ -8,13 +8,13 @@ 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.1" adventure-bukkit = "4.3.0"
log4j = "2.19.0" log4j = "2.19.0"
# Plugins # Plugins
worldedit = "7.2.16" worldedit = "7.2.15"
fawe = "2.7.1" fawe = "2.7.1"
placeholderapi = "2.11.4" placeholderapi = "2.11.3"
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.4" cloud-services = "1.8.3"
arkitektonika = "2.1.2" arkitektonika = "2.1.2"
squirrelid = "0.3.2" squirrelid = "0.3.2"
paster = "1.1.5" paster = "1.1.5"
@ -37,7 +37,7 @@ shadow = "8.1.1"
grgit = "4.1.1" grgit = "4.1.1"
spotless = "6.21.0" spotless = "6.21.0"
nexus = "1.3.0" nexus = "1.3.0"
runPaper = "2.2.0" runPaper = "2.1.0"
[libraries] [libraries]
# Platform expectations # Platform expectations