mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2025-07-03 06:04:43 +02:00
Compare commits
4 Commits
fix/player
...
docs/ploti
Author | SHA1 | Date | |
---|---|---|---|
b858250ffd | |||
2b0c1465c5 | |||
d46d8b158c | |||
a6fb7b2358 |
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.
|
||||
multiple: false
|
||||
options:
|
||||
- '1.20.2'
|
||||
- '1.20.1'
|
||||
- '1.20'
|
||||
- '1.19.4'
|
||||
- '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 ]
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v3
|
||||
- name: Validate Gradle Wrapper
|
||||
uses: gradle/wrapper-validation-action@v1
|
||||
- name: Setup Java
|
||||
|
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
@ -9,7 +9,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v3
|
||||
- name: Validate Gradle Wrapper
|
||||
uses: gradle/wrapper-validation-action@v1
|
||||
- name: Setup Java
|
||||
|
2
.github/workflows/codeql.yml
vendored
2
.github/workflows/codeql.yml
vendored
@ -20,7 +20,7 @@ jobs:
|
||||
language: [ 'java' ]
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v3
|
||||
- name: Setup Java
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
|
5
.gitignore
vendored
5
.gitignore
vendored
@ -138,5 +138,6 @@ build/
|
||||
|
||||
.DS_Store
|
||||
# Ignore run folders
|
||||
run-[0-9].[0-9][0-9]/
|
||||
run-[0-9].[0-9][0-9].[0-9]/
|
||||
run-[0-0].[0-9]/
|
||||
run-[0-0].[0-9].[0-9]/
|
||||
|
||||
|
@ -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.20/")
|
||||
opt.links("https://jd.papermc.io/paper/1.19/")
|
||||
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/")
|
||||
|
@ -252,7 +252,6 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("deprecation") // Paper deprecation
|
||||
public void onEnable() {
|
||||
this.pluginName = getDescription().getName();
|
||||
|
||||
@ -1161,7 +1160,6 @@ 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();
|
||||
@ -1183,7 +1181,7 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings({"ConstantConditions", "deprecation"}) // Paper deprecation
|
||||
@SuppressWarnings("ConstantConditions")
|
||||
public @NonNull String worldEditImplementations() {
|
||||
StringBuilder msg = new StringBuilder();
|
||||
if (Bukkit.getPluginManager().getPlugin("FastAsyncWorldEdit") != null) {
|
||||
|
@ -74,7 +74,6 @@ 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);
|
||||
|
||||
|
@ -369,7 +369,6 @@ 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());
|
||||
@ -734,7 +733,6 @@ public class PlayerEventListener implements Listener {
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOW)
|
||||
@SuppressWarnings("deprecation") // Paper deprecation
|
||||
public void onChat(AsyncPlayerChatEvent event) {
|
||||
if (event.isCancelled()) {
|
||||
return;
|
||||
@ -1065,7 +1063,6 @@ 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();
|
||||
|
@ -44,7 +44,6 @@ 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;
|
||||
|
@ -67,7 +67,6 @@ 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) {
|
||||
|
@ -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.URI;
|
||||
import java.net.URL;
|
||||
|
||||
public class UpdateUtility implements Listener {
|
||||
|
||||
@ -59,9 +59,8 @@ public class UpdateUtility implements Listener {
|
||||
public void updateChecker() {
|
||||
task = Bukkit.getScheduler().runTaskTimerAsynchronously(this.javaPlugin, () -> {
|
||||
try {
|
||||
HttpsURLConnection connection = (HttpsURLConnection) URI.create(
|
||||
"https://api.spigotmc.org/simple/0.2/index.php?action=getResource&id=77506")
|
||||
.toURL()
|
||||
HttpsURLConnection connection = (HttpsURLConnection) new URL(
|
||||
"https://api.spigotmc.org/simple/0.1/index.php?action=getResource&id=77506")
|
||||
.openConnection();
|
||||
connection.setRequestMethod("GET");
|
||||
JsonObject result = new JsonParser()
|
||||
|
@ -57,8 +57,8 @@ tasks.processResources {
|
||||
|
||||
doLast {
|
||||
copy {
|
||||
from(layout.buildDirectory.file("$rootDir/LICENSE"))
|
||||
into(layout.buildDirectory.dir("resources/main"))
|
||||
from(File("$rootDir/LICENSE"))
|
||||
into("$buildDir/resources/main/")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -84,7 +84,7 @@ import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.io.ObjectOutputStream;
|
||||
import java.net.URI;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URISyntaxException;
|
||||
import java.net.URL;
|
||||
import java.nio.file.Files;
|
||||
@ -210,10 +210,9 @@ public class PlotSquared {
|
||||
try {
|
||||
URL logurl = PlotSquared.class.getProtectionDomain().getCodeSource().getLocation();
|
||||
this.jarFile = new File(
|
||||
URI.create(
|
||||
logurl.toURI().toString().split("\\!")[0].replaceAll("jar:file", "file"))
|
||||
.getPath());
|
||||
} catch (URISyntaxException | SecurityException e) {
|
||||
new URL(logurl.toURI().toString().split("\\!")[0].replaceAll("jar:file", "file"))
|
||||
.toURI().getPath());
|
||||
} catch (MalformedURLException | URISyntaxException | SecurityException e) {
|
||||
e.printStackTrace();
|
||||
this.jarFile = new File(this.platform.getDirectory().getParentFile(), "PlotSquared.jar");
|
||||
if (!this.jarFile.exists()) {
|
||||
|
@ -19,7 +19,6 @@
|
||||
package com.plotsquared.core.command;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
import com.plotsquared.core.PlotSquared;
|
||||
import com.plotsquared.core.configuration.Settings;
|
||||
import com.plotsquared.core.configuration.caption.TranslatableCaption;
|
||||
import com.plotsquared.core.database.DBFunc;
|
||||
@ -102,14 +101,9 @@ public class Add extends Command {
|
||||
Permission.PERMISSION_ADMIN_COMMAND_TRUST))) {
|
||||
player.sendMessage(
|
||||
TranslatableCaption.of("errors.invalid_player"),
|
||||
PlotSquared
|
||||
.platform()
|
||||
.playerManager()
|
||||
.getUsernameCaption(uuid)
|
||||
.thenApply(caption -> TagResolver.resolver(
|
||||
"value",
|
||||
Tag.inserting(caption.toComponent(player))
|
||||
))
|
||||
TagResolver.resolver("value", Tag.inserting(
|
||||
PlayerManager.resolveName(uuid).toComponent(player)
|
||||
))
|
||||
);
|
||||
iterator.remove();
|
||||
continue;
|
||||
@ -117,11 +111,9 @@ public class Add extends Command {
|
||||
if (plot.isOwner(uuid)) {
|
||||
player.sendMessage(
|
||||
TranslatableCaption.of("member.already_added"),
|
||||
PlotSquared.platform().playerManager().getUsernameCaption(uuid)
|
||||
.thenApply(caption -> TagResolver.resolver(
|
||||
"player",
|
||||
Tag.inserting(caption.toComponent(player))
|
||||
))
|
||||
TagResolver.resolver("player", Tag.inserting(
|
||||
PlayerManager.resolveName(uuid).toComponent(player)
|
||||
))
|
||||
);
|
||||
iterator.remove();
|
||||
continue;
|
||||
@ -129,11 +121,9 @@ public class Add extends Command {
|
||||
if (plot.getMembers().contains(uuid)) {
|
||||
player.sendMessage(
|
||||
TranslatableCaption.of("member.already_added"),
|
||||
PlotSquared.platform().playerManager().getUsernameCaption(uuid)
|
||||
.thenApply(caption -> TagResolver.resolver(
|
||||
"player",
|
||||
Tag.inserting(caption.toComponent(player))
|
||||
))
|
||||
TagResolver.resolver("player", Tag.inserting(
|
||||
PlayerManager.resolveName(uuid).toComponent(player)
|
||||
))
|
||||
);
|
||||
iterator.remove();
|
||||
continue;
|
||||
|
@ -25,7 +25,6 @@ import com.plotsquared.core.player.PlotPlayer;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* CommandCategory.
|
||||
@ -83,7 +82,7 @@ public enum CommandCategory implements Caption {
|
||||
// TODO this method shouldn't be invoked
|
||||
@Deprecated
|
||||
@Override
|
||||
public @NotNull String toString() {
|
||||
public String toString() {
|
||||
return this.caption.getComponent(LocaleHolder.console());
|
||||
}
|
||||
|
||||
@ -109,5 +108,4 @@ public enum CommandCategory implements Caption {
|
||||
return !MainCommand.getInstance().getCommands(this, player).isEmpty();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -117,11 +117,10 @@ public class Deny extends SubCommand {
|
||||
} else if (plot.getDenied().contains(uuid)) {
|
||||
player.sendMessage(
|
||||
TranslatableCaption.of("member.already_added"),
|
||||
PlotSquared.platform().playerManager().getUsernameCaption(uuid)
|
||||
.thenApply(caption -> TagResolver.resolver(
|
||||
TagResolver.resolver(
|
||||
"player",
|
||||
Tag.inserting(caption.toComponent(player))
|
||||
))
|
||||
Tag.inserting(PlayerManager.resolveName(uuid).toComponent(player))
|
||||
)
|
||||
);
|
||||
return;
|
||||
} else {
|
||||
|
@ -41,7 +41,6 @@ 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;
|
||||
@ -117,7 +116,7 @@ public class Load extends SubCommand {
|
||||
}
|
||||
final URL url;
|
||||
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) {
|
||||
e.printStackTrace();
|
||||
player.sendMessage(TranslatableCaption.of("web.load_failed"));
|
||||
|
@ -31,6 +31,7 @@ import com.plotsquared.core.player.PlayerMetaDataKeys;
|
||||
import com.plotsquared.core.player.PlotPlayer;
|
||||
import com.plotsquared.core.plot.Plot;
|
||||
import com.plotsquared.core.util.EventDispatcher;
|
||||
import com.plotsquared.core.util.PlayerManager;
|
||||
import com.plotsquared.core.util.TabCompletions;
|
||||
import com.plotsquared.core.util.task.TaskManager;
|
||||
import net.kyori.adventure.text.Component;
|
||||
@ -135,11 +136,10 @@ public class Owner extends SetCommand {
|
||||
if (plot.isOwner(uuid)) {
|
||||
player.sendMessage(
|
||||
TranslatableCaption.of("member.already_owner"),
|
||||
PlotSquared.platform().playerManager().getUsernameCaption(uuid)
|
||||
.thenApply(caption -> TagResolver.resolver(
|
||||
TagResolver.resolver(
|
||||
"player",
|
||||
Tag.inserting(caption.toComponent(player))
|
||||
))
|
||||
Tag.inserting(PlayerManager.resolveName(uuid, false).toComponent(player))
|
||||
)
|
||||
);
|
||||
return;
|
||||
}
|
||||
@ -147,11 +147,10 @@ public class Owner extends SetCommand {
|
||||
if (other == null) {
|
||||
player.sendMessage(
|
||||
TranslatableCaption.of("errors.invalid_player_offline"),
|
||||
PlotSquared.platform().playerManager().getUsernameCaption(uuid)
|
||||
.thenApply(caption -> TagResolver.resolver(
|
||||
TagResolver.resolver(
|
||||
"player",
|
||||
Tag.inserting(caption.toComponent(player))
|
||||
))
|
||||
Tag.inserting(PlayerManager.resolveName(uuid).toComponent(player))
|
||||
)
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
@ -40,7 +40,6 @@ 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;
|
||||
@ -131,7 +130,8 @@ public class SchematicCmd extends SubCommand {
|
||||
if (location.startsWith("url:")) {
|
||||
try {
|
||||
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);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
|
@ -19,7 +19,6 @@
|
||||
package com.plotsquared.core.command;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
import com.plotsquared.core.PlotSquared;
|
||||
import com.plotsquared.core.configuration.Settings;
|
||||
import com.plotsquared.core.configuration.caption.TranslatableCaption;
|
||||
import com.plotsquared.core.database.DBFunc;
|
||||
@ -104,11 +103,10 @@ public class Trust extends Command {
|
||||
player.hasPermission(Permission.PERMISSION_TRUST_EVERYONE) || player.hasPermission(Permission.PERMISSION_ADMIN_COMMAND_TRUST))) {
|
||||
player.sendMessage(
|
||||
TranslatableCaption.of("errors.invalid_player"),
|
||||
PlotSquared.platform().playerManager().getUsernameCaption(uuid)
|
||||
.thenApply(caption -> TagResolver.resolver(
|
||||
TagResolver.resolver(
|
||||
"value",
|
||||
Tag.inserting(caption.toComponent(player))
|
||||
))
|
||||
Tag.inserting(PlayerManager.resolveName(uuid).toComponent(player))
|
||||
)
|
||||
);
|
||||
iterator.remove();
|
||||
continue;
|
||||
@ -116,11 +114,10 @@ public class Trust extends Command {
|
||||
if (currentPlot.isOwner(uuid)) {
|
||||
player.sendMessage(
|
||||
TranslatableCaption.of("member.already_added"),
|
||||
PlotSquared.platform().playerManager().getUsernameCaption(uuid)
|
||||
.thenApply(caption -> TagResolver.resolver(
|
||||
"player",
|
||||
Tag.inserting(caption.toComponent(player))
|
||||
))
|
||||
TagResolver.resolver(
|
||||
"value",
|
||||
Tag.inserting(PlayerManager.resolveName(uuid).toComponent(player))
|
||||
)
|
||||
);
|
||||
iterator.remove();
|
||||
continue;
|
||||
@ -128,11 +125,10 @@ public class Trust extends Command {
|
||||
if (currentPlot.getTrusted().contains(uuid)) {
|
||||
player.sendMessage(
|
||||
TranslatableCaption.of("member.already_added"),
|
||||
PlotSquared.platform().playerManager().getUsernameCaption(uuid)
|
||||
.thenApply(caption -> TagResolver.resolver(
|
||||
"player",
|
||||
Tag.inserting(caption.toComponent(player))
|
||||
))
|
||||
TagResolver.resolver(
|
||||
"value",
|
||||
Tag.inserting(PlayerManager.resolveName(uuid).toComponent(player))
|
||||
)
|
||||
);
|
||||
iterator.remove();
|
||||
continue;
|
||||
|
@ -44,6 +44,4 @@ public interface Caption {
|
||||
*/
|
||||
@NonNull Component toComponent(@NonNull LocaleHolder localeHolder);
|
||||
|
||||
@NonNull String toString();
|
||||
|
||||
}
|
||||
|
@ -51,9 +51,4 @@ public final class StaticCaption implements Caption {
|
||||
return MiniMessage.miniMessage().deserialize(this.value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NonNull String toString() {
|
||||
return "StaticCaption(" + value + ")";
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -25,7 +25,6 @@ import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||
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 org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.regex.Pattern;
|
||||
@ -133,9 +132,4 @@ public final class TranslatableCaption implements NamespacedCaption {
|
||||
return Objects.hashCode(this.getNamespace(), this.getKey());
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String toString() {
|
||||
return "TranslatableCaption(" + getNamespace() + ":" + getKey() + ")";
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -189,7 +189,7 @@ public class HybridPlotWorld extends ClassicPlotWorld {
|
||||
}
|
||||
Object value;
|
||||
try {
|
||||
final boolean accessible = field.canAccess(this);
|
||||
final boolean accessible = field.isAccessible();
|
||||
field.setAccessible(true);
|
||||
value = field.get(this);
|
||||
field.setAccessible(accessible);
|
||||
|
@ -55,6 +55,7 @@ import com.plotsquared.core.plot.flag.implementations.TitlesFlag;
|
||||
import com.plotsquared.core.plot.flag.implementations.WeatherFlag;
|
||||
import com.plotsquared.core.plot.flag.types.TimedFlag;
|
||||
import com.plotsquared.core.util.EventDispatcher;
|
||||
import com.plotsquared.core.util.PlayerManager;
|
||||
import com.plotsquared.core.util.task.TaskManager;
|
||||
import com.plotsquared.core.util.task.TaskTime;
|
||||
import com.sk89q.worldedit.world.gamemode.GameMode;
|
||||
@ -62,6 +63,7 @@ import com.sk89q.worldedit.world.gamemode.GameModes;
|
||||
import com.sk89q.worldedit.world.item.ItemType;
|
||||
import com.sk89q.worldedit.world.item.ItemTypes;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.ComponentLike;
|
||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||
import net.kyori.adventure.text.minimessage.tag.Tag;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
|
||||
@ -75,7 +77,6 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public class PlotListener {
|
||||
|
||||
@ -320,27 +321,22 @@ public class PlotListener {
|
||||
}
|
||||
if ((lastPlot != null) && plot.getId().equals(lastPlot.getId()) && plot.hasOwner()) {
|
||||
final UUID plotOwner = plot.getOwnerAbs();
|
||||
ComponentLike owner = PlayerManager.resolveName(plotOwner, true).toComponent(player);
|
||||
Caption header = fromFlag ? StaticCaption.of(title) : TranslatableCaption.of("titles" +
|
||||
".title_entered_plot");
|
||||
Caption subHeader = fromFlag ? StaticCaption.of(subtitle) : TranslatableCaption.of("titles" +
|
||||
".title_entered_plot_sub");
|
||||
|
||||
CompletableFuture<TagResolver> future = PlotSquared.platform().playerManager()
|
||||
.getUsernameCaption(plotOwner).thenApply(caption -> TagResolver.builder()
|
||||
.tag("owner", Tag.inserting(caption.toComponent(player)))
|
||||
.tag("plot", Tag.inserting(Component.text(lastPlot.getId().toString())))
|
||||
.tag("world", Tag.inserting(Component.text(player.getLocation().getWorldName())))
|
||||
.tag("alias", Tag.inserting(Component.text(plot.getAlias())))
|
||||
.build()
|
||||
);
|
||||
|
||||
future.whenComplete((tagResolver, throwable) -> {
|
||||
if (Settings.Titles.TITLES_AS_ACTIONBAR) {
|
||||
player.sendActionBar(header, tagResolver);
|
||||
} else {
|
||||
player.sendTitle(header, subHeader, tagResolver);
|
||||
}
|
||||
});
|
||||
TagResolver resolver = TagResolver.builder()
|
||||
.tag("plot", Tag.inserting(Component.text(lastPlot.getId().toString())))
|
||||
.tag("world", Tag.inserting(Component.text(player.getLocation().getWorldName())))
|
||||
.tag("owner", Tag.inserting(owner))
|
||||
.tag("alias", Tag.inserting(Component.text(plot.getAlias())))
|
||||
.build();
|
||||
if (Settings.Titles.TITLES_AS_ACTIONBAR) {
|
||||
player.sendActionBar(header, resolver);
|
||||
} else {
|
||||
player.sendTitle(header, subHeader, resolver);
|
||||
}
|
||||
}
|
||||
}, TaskTime.seconds(1L));
|
||||
}
|
||||
|
@ -80,7 +80,6 @@ import java.util.Map;
|
||||
import java.util.Queue;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
@ -954,54 +953,6 @@ public abstract class PlotPlayer<P> implements CommandCaller, OfflinePlotPlayer,
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends a message to the command caller, when the future is resolved
|
||||
*
|
||||
* @param caption Caption to send
|
||||
* @param asyncReplacement Async variable replacement
|
||||
* @return A Future to be resolved, after the message was sent
|
||||
* @since TODO
|
||||
*/
|
||||
public final CompletableFuture<Void> sendMessage(
|
||||
@NonNull Caption caption,
|
||||
CompletableFuture<@NonNull TagResolver> asyncReplacement
|
||||
) {
|
||||
return sendMessage(caption, new CompletableFuture[]{asyncReplacement});
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends a message to the command caller, when all futures are resolved
|
||||
*
|
||||
* @param caption Caption to send
|
||||
* @param asyncReplacements Async variable replacements
|
||||
* @param replacements Sync variable replacements
|
||||
* @return A Future to be resolved, after the message was sent
|
||||
* @since TODO
|
||||
*/
|
||||
public final CompletableFuture<Void> sendMessage(
|
||||
@NonNull Caption caption,
|
||||
CompletableFuture<@NonNull TagResolver>[] asyncReplacements,
|
||||
@NonNull TagResolver... replacements
|
||||
) {
|
||||
return CompletableFuture.allOf(asyncReplacements).whenComplete((unused, throwable) -> {
|
||||
Set<TagResolver> resolvers = new HashSet<>(Arrays.asList(replacements));
|
||||
if (throwable != null) {
|
||||
sendMessage(
|
||||
TranslatableCaption.of("errors.error"),
|
||||
TagResolver.resolver("value", Tag.inserting(
|
||||
Component.text("Failed to resolve asynchronous caption replacements")
|
||||
))
|
||||
);
|
||||
LOGGER.error("Failed to resolve asynchronous tagresolver(s) for " + caption, throwable);
|
||||
} else {
|
||||
for (final CompletableFuture<TagResolver> asyncReplacement : asyncReplacements) {
|
||||
resolvers.add(asyncReplacement.join());
|
||||
}
|
||||
}
|
||||
sendMessage(caption, resolvers.toArray(TagResolver[]::new));
|
||||
});
|
||||
}
|
||||
|
||||
// Redefine from PermissionHolder as it's required from CommandCaller
|
||||
@Override
|
||||
public boolean hasPermission(@NonNull String permission) {
|
||||
|
@ -38,6 +38,7 @@ import com.plotsquared.core.location.Location;
|
||||
import com.plotsquared.core.player.PlotPlayer;
|
||||
import com.plotsquared.core.plot.flag.PlotFlag;
|
||||
import com.plotsquared.core.queue.QueueCoordinator;
|
||||
import com.plotsquared.core.util.PlayerManager;
|
||||
import com.plotsquared.core.util.task.TaskManager;
|
||||
import com.plotsquared.core.util.task.TaskTime;
|
||||
import com.sk89q.worldedit.function.pattern.Pattern;
|
||||
@ -58,7 +59,6 @@ import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
@ -383,17 +383,13 @@ public final class PlotModificationManager {
|
||||
}
|
||||
if (createSign) {
|
||||
queue.setCompleteTask(() -> TaskManager.runTaskAsync(() -> {
|
||||
List<CompletableFuture<Void>> tasks = plots.stream().map(current -> PlotSquared.platform().playerManager()
|
||||
.getUsernameCaption(current.getOwnerAbs())
|
||||
.thenAccept(caption -> current
|
||||
.getPlotModificationManager()
|
||||
.setSign(caption.getComponent(LocaleHolder.console()))))
|
||||
.toList();
|
||||
CompletableFuture.allOf(tasks.toArray(CompletableFuture[]::new)).whenComplete((unused, throwable) -> {
|
||||
if (whenDone != null) {
|
||||
TaskManager.runTask(whenDone);
|
||||
}
|
||||
});
|
||||
for (Plot current : plots) {
|
||||
current.getPlotModificationManager().setSign(PlayerManager.resolveName(current.getOwnerAbs()).getComponent(
|
||||
LocaleHolder.console()));
|
||||
}
|
||||
if (whenDone != null) {
|
||||
TaskManager.runTask(whenDone);
|
||||
}
|
||||
}));
|
||||
} else if (whenDone != null) {
|
||||
queue.setCompleteTask(whenDone);
|
||||
|
@ -28,7 +28,6 @@ import com.plotsquared.core.database.DBFunc;
|
||||
import com.plotsquared.core.player.ConsolePlayer;
|
||||
import com.plotsquared.core.player.OfflinePlotPlayer;
|
||||
import com.plotsquared.core.player.PlotPlayer;
|
||||
import com.plotsquared.core.plot.Plot;
|
||||
import com.plotsquared.core.uuid.UUIDMapping;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.ComponentLike;
|
||||
@ -38,7 +37,6 @@ 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 org.checkerframework.checker.nullness.qual.Nullable;
|
||||
import org.jetbrains.annotations.Contract;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
@ -50,7 +48,6 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.function.BiConsumer;
|
||||
|
||||
@ -172,9 +169,7 @@ public abstract class PlayerManager<P extends PlotPlayer<? extends T>, T> {
|
||||
* @return A caption containing either the name, {@code None}, {@code Everyone} or {@code Unknown}
|
||||
* @see #resolveName(UUID, boolean)
|
||||
* @since 6.4.0
|
||||
* @deprecated Don't unnecessarily block threads and utilize playerMap - see {@link #getUsernameCaption(UUID)}
|
||||
*/
|
||||
@Deprecated(since = "TODO")
|
||||
public static @NonNull Caption resolveName(final @Nullable UUID owner) {
|
||||
return resolveName(owner, true);
|
||||
}
|
||||
@ -186,9 +181,7 @@ public abstract class PlayerManager<P extends PlotPlayer<? extends T>, T> {
|
||||
* @param blocking If the operation should block the current thread for {@link Settings.UUID#BLOCKING_TIMEOUT} milliseconds
|
||||
* @return A caption containing either the name, {@code None}, {@code Everyone} or {@code Unknown}
|
||||
* @since 6.4.0
|
||||
* @deprecated Don't unnecessarily block threads and utilize playerMap - see {@link #getUsernameCaption(UUID)}
|
||||
*/
|
||||
@Deprecated(since = "TODO")
|
||||
public static @NonNull Caption resolveName(final @Nullable UUID owner, final boolean blocking) {
|
||||
if (owner == null) {
|
||||
return TranslatableCaption.of("info.none");
|
||||
@ -218,50 +211,6 @@ public abstract class PlayerManager<P extends PlotPlayer<? extends T>, T> {
|
||||
return StaticCaption.of(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolves a UUID to a formatted {@link Caption} representing the player behind the UUID.
|
||||
* Returns a {@link CompletableFuture} instead of a plain {@link UUID} as this method may query the
|
||||
* {@link com.plotsquared.core.uuid.UUIDPipeline ImpromptuUUIDPipeline}.
|
||||
* <br>
|
||||
* Special Cases:
|
||||
* <ul>
|
||||
* <li>{@code null}: Resolves to a {@link TranslatableCaption} with the key {@code info.none}</li>
|
||||
* <li>{@link DBFunc#EVERYONE}: Resolves to a {@link TranslatableCaption} with the key {@code info.everyone}</li>
|
||||
* <li>{@link DBFunc#SERVER}: Resolves to a {@link TranslatableCaption} with the key {@code info.server}</li>
|
||||
* </ul>
|
||||
* <br>
|
||||
* Otherwise, if the UUID is a valid UUID and not reserved by PlotSquared itself, this method first attempts to query the
|
||||
* online players ({@link #getPlayerIfExists(UUID)}) for the specific UUID.
|
||||
* If no online player was found for that UUID, the {@link com.plotsquared.core.uuid.UUIDPipeline ImpromptuUUIDPipeline} is
|
||||
* queried to retrieve the known username
|
||||
*
|
||||
* @param uuid The UUID of the player (for example provided by {@link Plot#getOwner()}
|
||||
* @return A CompletableFuture resolving to a Caption representing the players name of the uuid
|
||||
* @since TODO
|
||||
*/
|
||||
@Contract("_->!null")
|
||||
public @NonNull CompletableFuture<Caption> getUsernameCaption(@Nullable UUID uuid) {
|
||||
if (uuid == null) {
|
||||
return CompletableFuture.completedFuture(TranslatableCaption.of("info.none"));
|
||||
}
|
||||
if (uuid.equals(DBFunc.EVERYONE)) {
|
||||
return CompletableFuture.completedFuture(TranslatableCaption.of("info.everyone"));
|
||||
}
|
||||
if (uuid.equals(DBFunc.SERVER)) {
|
||||
return CompletableFuture.completedFuture(TranslatableCaption.of("info.server"));
|
||||
}
|
||||
P player = getPlayerIfExists(uuid);
|
||||
if (player != null) {
|
||||
return CompletableFuture.completedFuture(StaticCaption.of(player.getName()));
|
||||
}
|
||||
return PlotSquared.get().getImpromptuUUIDPipeline().getNames(Collections.singleton(uuid)).thenApply(mapping -> {
|
||||
if (mapping.isEmpty()) {
|
||||
return TranslatableCaption.of("info.unknown");
|
||||
}
|
||||
return StaticCaption.of(mapping.get(0).username());
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove a player from the player map
|
||||
*
|
||||
|
@ -83,7 +83,6 @@ 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;
|
||||
@ -145,7 +144,7 @@ public abstract class SchematicHandler {
|
||||
}
|
||||
final URL url;
|
||||
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) {
|
||||
e.printStackTrace();
|
||||
whenDone.run();
|
||||
@ -154,7 +153,7 @@ public abstract class SchematicHandler {
|
||||
TaskManager.runTaskAsync(() -> {
|
||||
try {
|
||||
String boundary = Long.toHexString(System.currentTimeMillis());
|
||||
URLConnection con = URI.create(website).toURL().openConnection();
|
||||
URLConnection con = new URL(website).openConnection();
|
||||
con.setDoOutput(true);
|
||||
con.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
|
||||
try (OutputStream output = con.getOutputStream();
|
||||
@ -499,10 +498,9 @@ public abstract class SchematicHandler {
|
||||
public List<String> getSaves(UUID uuid) {
|
||||
String rawJSON;
|
||||
try {
|
||||
URLConnection connection = URI.create(
|
||||
Settings.Web.URL + "list.php?" + uuid.toString())
|
||||
.toURL()
|
||||
.openConnection();
|
||||
String website = Settings.Web.URL + "list.php?" + uuid.toString();
|
||||
URL url = new URL(website);
|
||||
URLConnection connection = new URL(url.toString()).openConnection();
|
||||
connection.setRequestProperty("User-Agent", "Mozilla/5.0");
|
||||
try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
|
||||
rawJSON = reader.lines().collect(Collectors.joining());
|
||||
|
@ -47,7 +47,6 @@ import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.TimeZone;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.function.BiFunction;
|
||||
|
||||
/**
|
||||
@ -110,9 +109,9 @@ public final class PlaceholderRegistry {
|
||||
if (plotOwner == null) {
|
||||
return legacyComponent(TranslatableCaption.of("generic.generic_unowned"), player);
|
||||
}
|
||||
|
||||
try {
|
||||
return PlotSquared.platform().playerManager().getUsernameCaption(plotOwner)
|
||||
.get(Settings.UUID.BLOCKING_TIMEOUT, TimeUnit.MILLISECONDS).getComponent(player);
|
||||
return PlayerManager.resolveName(plotOwner, false).getComponent(player);
|
||||
} catch (final Exception ignored) {
|
||||
}
|
||||
return legacyComponent(TranslatableCaption.of("info.unknown"), player);
|
||||
|
@ -1,6 +1,5 @@
|
||||
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
|
||||
|
||||
@ -171,9 +170,8 @@ subprojects {
|
||||
|
||||
scm {
|
||||
url.set("https://github.com/IntellectualSites/PlotSquared")
|
||||
connection.set("scm:git:https://github.com/IntellectualSites/PlotSquared.git")
|
||||
developerConnection.set("scm:git:git@github.com:IntellectualSites/PlotSquared.git")
|
||||
tag.set("${project.version}")
|
||||
connection.set("scm:https://IntellectualSites@github.com/IntellectualSites/PlotSquared.git")
|
||||
developerConnection.set("scm:git://github.com/IntellectualSites/PlotSquared.git")
|
||||
}
|
||||
|
||||
issueManagement {
|
||||
@ -220,23 +218,14 @@ tasks.getByName<Jar>("jar") {
|
||||
enabled = false
|
||||
}
|
||||
|
||||
val supportedVersions = listOf("1.16.5", "1.17.1", "1.18.2", "1.19.4", "1.20.1", "1.20.2")
|
||||
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 {
|
||||
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"))
|
||||
}
|
||||
|
@ -1,20 +1,20 @@
|
||||
[versions]
|
||||
# Platform expectations
|
||||
paper = "1.20.2-R0.1-SNAPSHOT"
|
||||
paper = "1.20.1-R0.1-SNAPSHOT"
|
||||
guice = "7.0.0"
|
||||
spotbugs = "4.7.3"
|
||||
checkerqual = "3.38.0"
|
||||
checkerqual = "3.37.0"
|
||||
gson = "2.10"
|
||||
guava = "31.1-jre"
|
||||
snakeyaml = "2.0"
|
||||
adventure = "4.14.0"
|
||||
adventure-bukkit = "4.3.1"
|
||||
adventure-bukkit = "4.3.0"
|
||||
log4j = "2.19.0"
|
||||
|
||||
# Plugins
|
||||
worldedit = "7.2.16"
|
||||
fawe = "2.8.0"
|
||||
placeholderapi = "2.11.4"
|
||||
worldedit = "7.2.15"
|
||||
fawe = "2.7.1"
|
||||
placeholderapi = "2.11.3"
|
||||
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.4"
|
||||
cloud-services = "1.8.3"
|
||||
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.22.0"
|
||||
spotless = "6.21.0"
|
||||
nexus = "1.3.0"
|
||||
runPaper = "2.2.0"
|
||||
runPaper = "2.1.0"
|
||||
|
||||
[libraries]
|
||||
# Platform expectations
|
||||
|
Reference in New Issue
Block a user