mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2025-07-04 22:54: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.
|
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.2'
|
- '1.20.1'
|
||||||
- '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@v4
|
uses: actions/checkout@v3
|
||||||
- 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@v4
|
uses: actions/checkout@v3
|
||||||
- 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@v4
|
uses: actions/checkout@v3
|
||||||
- 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,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]/
|
||||||
|
|
||||||
|
@ -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.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://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,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) {
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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();
|
||||||
|
@ -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;
|
||||||
|
@ -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) {
|
||||||
|
@ -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()
|
||||||
|
@ -57,8 +57,8 @@ tasks.processResources {
|
|||||||
|
|
||||||
doLast {
|
doLast {
|
||||||
copy {
|
copy {
|
||||||
from(layout.buildDirectory.file("$rootDir/LICENSE"))
|
from(File("$rootDir/LICENSE"))
|
||||||
into(layout.buildDirectory.dir("resources/main"))
|
into("$buildDir/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.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()) {
|
||||||
|
@ -19,7 +19,6 @@
|
|||||||
package com.plotsquared.core.command;
|
package com.plotsquared.core.command;
|
||||||
|
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import com.plotsquared.core.PlotSquared;
|
|
||||||
import com.plotsquared.core.configuration.Settings;
|
import com.plotsquared.core.configuration.Settings;
|
||||||
import com.plotsquared.core.configuration.caption.TranslatableCaption;
|
import com.plotsquared.core.configuration.caption.TranslatableCaption;
|
||||||
import com.plotsquared.core.database.DBFunc;
|
import com.plotsquared.core.database.DBFunc;
|
||||||
@ -102,13 +101,8 @@ public class Add extends Command {
|
|||||||
Permission.PERMISSION_ADMIN_COMMAND_TRUST))) {
|
Permission.PERMISSION_ADMIN_COMMAND_TRUST))) {
|
||||||
player.sendMessage(
|
player.sendMessage(
|
||||||
TranslatableCaption.of("errors.invalid_player"),
|
TranslatableCaption.of("errors.invalid_player"),
|
||||||
PlotSquared
|
TagResolver.resolver("value", Tag.inserting(
|
||||||
.platform()
|
PlayerManager.resolveName(uuid).toComponent(player)
|
||||||
.playerManager()
|
|
||||||
.getUsernameCaption(uuid)
|
|
||||||
.thenApply(caption -> TagResolver.resolver(
|
|
||||||
"value",
|
|
||||||
Tag.inserting(caption.toComponent(player))
|
|
||||||
))
|
))
|
||||||
);
|
);
|
||||||
iterator.remove();
|
iterator.remove();
|
||||||
@ -117,10 +111,8 @@ public class Add extends Command {
|
|||||||
if (plot.isOwner(uuid)) {
|
if (plot.isOwner(uuid)) {
|
||||||
player.sendMessage(
|
player.sendMessage(
|
||||||
TranslatableCaption.of("member.already_added"),
|
TranslatableCaption.of("member.already_added"),
|
||||||
PlotSquared.platform().playerManager().getUsernameCaption(uuid)
|
TagResolver.resolver("player", Tag.inserting(
|
||||||
.thenApply(caption -> TagResolver.resolver(
|
PlayerManager.resolveName(uuid).toComponent(player)
|
||||||
"player",
|
|
||||||
Tag.inserting(caption.toComponent(player))
|
|
||||||
))
|
))
|
||||||
);
|
);
|
||||||
iterator.remove();
|
iterator.remove();
|
||||||
@ -129,10 +121,8 @@ public class Add extends Command {
|
|||||||
if (plot.getMembers().contains(uuid)) {
|
if (plot.getMembers().contains(uuid)) {
|
||||||
player.sendMessage(
|
player.sendMessage(
|
||||||
TranslatableCaption.of("member.already_added"),
|
TranslatableCaption.of("member.already_added"),
|
||||||
PlotSquared.platform().playerManager().getUsernameCaption(uuid)
|
TagResolver.resolver("player", Tag.inserting(
|
||||||
.thenApply(caption -> TagResolver.resolver(
|
PlayerManager.resolveName(uuid).toComponent(player)
|
||||||
"player",
|
|
||||||
Tag.inserting(caption.toComponent(player))
|
|
||||||
))
|
))
|
||||||
);
|
);
|
||||||
iterator.remove();
|
iterator.remove();
|
||||||
|
@ -25,7 +25,6 @@ import com.plotsquared.core.player.PlotPlayer;
|
|||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CommandCategory.
|
* CommandCategory.
|
||||||
@ -83,7 +82,7 @@ public enum CommandCategory implements Caption {
|
|||||||
// TODO this method shouldn't be invoked
|
// TODO this method shouldn't be invoked
|
||||||
@Deprecated
|
@Deprecated
|
||||||
@Override
|
@Override
|
||||||
public @NotNull String toString() {
|
public String toString() {
|
||||||
return this.caption.getComponent(LocaleHolder.console());
|
return this.caption.getComponent(LocaleHolder.console());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -109,5 +108,4 @@ public enum CommandCategory implements Caption {
|
|||||||
return !MainCommand.getInstance().getCommands(this, player).isEmpty();
|
return !MainCommand.getInstance().getCommands(this, player).isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -117,11 +117,10 @@ public class Deny extends SubCommand {
|
|||||||
} else if (plot.getDenied().contains(uuid)) {
|
} else if (plot.getDenied().contains(uuid)) {
|
||||||
player.sendMessage(
|
player.sendMessage(
|
||||||
TranslatableCaption.of("member.already_added"),
|
TranslatableCaption.of("member.already_added"),
|
||||||
PlotSquared.platform().playerManager().getUsernameCaption(uuid)
|
TagResolver.resolver(
|
||||||
.thenApply(caption -> TagResolver.resolver(
|
|
||||||
"player",
|
"player",
|
||||||
Tag.inserting(caption.toComponent(player))
|
Tag.inserting(PlayerManager.resolveName(uuid).toComponent(player))
|
||||||
))
|
)
|
||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
|
@ -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"));
|
||||||
|
@ -31,6 +31,7 @@ import com.plotsquared.core.player.PlayerMetaDataKeys;
|
|||||||
import com.plotsquared.core.player.PlotPlayer;
|
import com.plotsquared.core.player.PlotPlayer;
|
||||||
import com.plotsquared.core.plot.Plot;
|
import com.plotsquared.core.plot.Plot;
|
||||||
import com.plotsquared.core.util.EventDispatcher;
|
import com.plotsquared.core.util.EventDispatcher;
|
||||||
|
import com.plotsquared.core.util.PlayerManager;
|
||||||
import com.plotsquared.core.util.TabCompletions;
|
import com.plotsquared.core.util.TabCompletions;
|
||||||
import com.plotsquared.core.util.task.TaskManager;
|
import com.plotsquared.core.util.task.TaskManager;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
@ -135,11 +136,10 @@ public class Owner extends SetCommand {
|
|||||||
if (plot.isOwner(uuid)) {
|
if (plot.isOwner(uuid)) {
|
||||||
player.sendMessage(
|
player.sendMessage(
|
||||||
TranslatableCaption.of("member.already_owner"),
|
TranslatableCaption.of("member.already_owner"),
|
||||||
PlotSquared.platform().playerManager().getUsernameCaption(uuid)
|
TagResolver.resolver(
|
||||||
.thenApply(caption -> TagResolver.resolver(
|
|
||||||
"player",
|
"player",
|
||||||
Tag.inserting(caption.toComponent(player))
|
Tag.inserting(PlayerManager.resolveName(uuid, false).toComponent(player))
|
||||||
))
|
)
|
||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -147,11 +147,10 @@ public class Owner extends SetCommand {
|
|||||||
if (other == null) {
|
if (other == null) {
|
||||||
player.sendMessage(
|
player.sendMessage(
|
||||||
TranslatableCaption.of("errors.invalid_player_offline"),
|
TranslatableCaption.of("errors.invalid_player_offline"),
|
||||||
PlotSquared.platform().playerManager().getUsernameCaption(uuid)
|
TagResolver.resolver(
|
||||||
.thenApply(caption -> TagResolver.resolver(
|
|
||||||
"player",
|
"player",
|
||||||
Tag.inserting(caption.toComponent(player))
|
Tag.inserting(PlayerManager.resolveName(uuid).toComponent(player))
|
||||||
))
|
)
|
||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
|
@ -19,7 +19,6 @@
|
|||||||
package com.plotsquared.core.command;
|
package com.plotsquared.core.command;
|
||||||
|
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import com.plotsquared.core.PlotSquared;
|
|
||||||
import com.plotsquared.core.configuration.Settings;
|
import com.plotsquared.core.configuration.Settings;
|
||||||
import com.plotsquared.core.configuration.caption.TranslatableCaption;
|
import com.plotsquared.core.configuration.caption.TranslatableCaption;
|
||||||
import com.plotsquared.core.database.DBFunc;
|
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.hasPermission(Permission.PERMISSION_TRUST_EVERYONE) || player.hasPermission(Permission.PERMISSION_ADMIN_COMMAND_TRUST))) {
|
||||||
player.sendMessage(
|
player.sendMessage(
|
||||||
TranslatableCaption.of("errors.invalid_player"),
|
TranslatableCaption.of("errors.invalid_player"),
|
||||||
PlotSquared.platform().playerManager().getUsernameCaption(uuid)
|
TagResolver.resolver(
|
||||||
.thenApply(caption -> TagResolver.resolver(
|
|
||||||
"value",
|
"value",
|
||||||
Tag.inserting(caption.toComponent(player))
|
Tag.inserting(PlayerManager.resolveName(uuid).toComponent(player))
|
||||||
))
|
)
|
||||||
);
|
);
|
||||||
iterator.remove();
|
iterator.remove();
|
||||||
continue;
|
continue;
|
||||||
@ -116,11 +114,10 @@ public class Trust extends Command {
|
|||||||
if (currentPlot.isOwner(uuid)) {
|
if (currentPlot.isOwner(uuid)) {
|
||||||
player.sendMessage(
|
player.sendMessage(
|
||||||
TranslatableCaption.of("member.already_added"),
|
TranslatableCaption.of("member.already_added"),
|
||||||
PlotSquared.platform().playerManager().getUsernameCaption(uuid)
|
TagResolver.resolver(
|
||||||
.thenApply(caption -> TagResolver.resolver(
|
"value",
|
||||||
"player",
|
Tag.inserting(PlayerManager.resolveName(uuid).toComponent(player))
|
||||||
Tag.inserting(caption.toComponent(player))
|
)
|
||||||
))
|
|
||||||
);
|
);
|
||||||
iterator.remove();
|
iterator.remove();
|
||||||
continue;
|
continue;
|
||||||
@ -128,11 +125,10 @@ public class Trust extends Command {
|
|||||||
if (currentPlot.getTrusted().contains(uuid)) {
|
if (currentPlot.getTrusted().contains(uuid)) {
|
||||||
player.sendMessage(
|
player.sendMessage(
|
||||||
TranslatableCaption.of("member.already_added"),
|
TranslatableCaption.of("member.already_added"),
|
||||||
PlotSquared.platform().playerManager().getUsernameCaption(uuid)
|
TagResolver.resolver(
|
||||||
.thenApply(caption -> TagResolver.resolver(
|
"value",
|
||||||
"player",
|
Tag.inserting(PlayerManager.resolveName(uuid).toComponent(player))
|
||||||
Tag.inserting(caption.toComponent(player))
|
)
|
||||||
))
|
|
||||||
);
|
);
|
||||||
iterator.remove();
|
iterator.remove();
|
||||||
continue;
|
continue;
|
||||||
|
@ -44,6 +44,4 @@ public interface Caption {
|
|||||||
*/
|
*/
|
||||||
@NonNull Component toComponent(@NonNull LocaleHolder localeHolder);
|
@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);
|
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.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 org.jetbrains.annotations.NotNull;
|
|
||||||
|
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
@ -133,9 +132,4 @@ public final class TranslatableCaption implements NamespacedCaption {
|
|||||||
return Objects.hashCode(this.getNamespace(), this.getKey());
|
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;
|
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);
|
||||||
|
@ -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.implementations.WeatherFlag;
|
||||||
import com.plotsquared.core.plot.flag.types.TimedFlag;
|
import com.plotsquared.core.plot.flag.types.TimedFlag;
|
||||||
import com.plotsquared.core.util.EventDispatcher;
|
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.TaskManager;
|
||||||
import com.plotsquared.core.util.task.TaskTime;
|
import com.plotsquared.core.util.task.TaskTime;
|
||||||
import com.sk89q.worldedit.world.gamemode.GameMode;
|
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.ItemType;
|
||||||
import com.sk89q.worldedit.world.item.ItemTypes;
|
import com.sk89q.worldedit.world.item.ItemTypes;
|
||||||
import net.kyori.adventure.text.Component;
|
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.MiniMessage;
|
||||||
import net.kyori.adventure.text.minimessage.tag.Tag;
|
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;
|
||||||
@ -75,7 +77,6 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.CompletableFuture;
|
|
||||||
|
|
||||||
public class PlotListener {
|
public class PlotListener {
|
||||||
|
|
||||||
@ -320,27 +321,22 @@ public class PlotListener {
|
|||||||
}
|
}
|
||||||
if ((lastPlot != null) && plot.getId().equals(lastPlot.getId()) && plot.hasOwner()) {
|
if ((lastPlot != null) && plot.getId().equals(lastPlot.getId()) && plot.hasOwner()) {
|
||||||
final UUID plotOwner = plot.getOwnerAbs();
|
final UUID plotOwner = plot.getOwnerAbs();
|
||||||
|
ComponentLike owner = PlayerManager.resolveName(plotOwner, true).toComponent(player);
|
||||||
Caption header = fromFlag ? StaticCaption.of(title) : TranslatableCaption.of("titles" +
|
Caption header = fromFlag ? StaticCaption.of(title) : TranslatableCaption.of("titles" +
|
||||||
".title_entered_plot");
|
".title_entered_plot");
|
||||||
Caption subHeader = fromFlag ? StaticCaption.of(subtitle) : TranslatableCaption.of("titles" +
|
Caption subHeader = fromFlag ? StaticCaption.of(subtitle) : TranslatableCaption.of("titles" +
|
||||||
".title_entered_plot_sub");
|
".title_entered_plot_sub");
|
||||||
|
TagResolver resolver = TagResolver.builder()
|
||||||
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("plot", Tag.inserting(Component.text(lastPlot.getId().toString())))
|
||||||
.tag("world", Tag.inserting(Component.text(player.getLocation().getWorldName())))
|
.tag("world", Tag.inserting(Component.text(player.getLocation().getWorldName())))
|
||||||
|
.tag("owner", Tag.inserting(owner))
|
||||||
.tag("alias", Tag.inserting(Component.text(plot.getAlias())))
|
.tag("alias", Tag.inserting(Component.text(plot.getAlias())))
|
||||||
.build()
|
.build();
|
||||||
);
|
|
||||||
|
|
||||||
future.whenComplete((tagResolver, throwable) -> {
|
|
||||||
if (Settings.Titles.TITLES_AS_ACTIONBAR) {
|
if (Settings.Titles.TITLES_AS_ACTIONBAR) {
|
||||||
player.sendActionBar(header, tagResolver);
|
player.sendActionBar(header, resolver);
|
||||||
} else {
|
} else {
|
||||||
player.sendTitle(header, subHeader, tagResolver);
|
player.sendTitle(header, subHeader, resolver);
|
||||||
}
|
}
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}, TaskTime.seconds(1L));
|
}, TaskTime.seconds(1L));
|
||||||
}
|
}
|
||||||
|
@ -80,7 +80,6 @@ import java.util.Map;
|
|||||||
import java.util.Queue;
|
import java.util.Queue;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.CompletableFuture;
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
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
|
// Redefine from PermissionHolder as it's required from CommandCaller
|
||||||
@Override
|
@Override
|
||||||
public boolean hasPermission(@NonNull String permission) {
|
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.player.PlotPlayer;
|
||||||
import com.plotsquared.core.plot.flag.PlotFlag;
|
import com.plotsquared.core.plot.flag.PlotFlag;
|
||||||
import com.plotsquared.core.queue.QueueCoordinator;
|
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.TaskManager;
|
||||||
import com.plotsquared.core.util.task.TaskTime;
|
import com.plotsquared.core.util.task.TaskTime;
|
||||||
import com.sk89q.worldedit.function.pattern.Pattern;
|
import com.sk89q.worldedit.function.pattern.Pattern;
|
||||||
@ -58,7 +59,6 @@ import java.util.ArrayList;
|
|||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
@ -383,17 +383,13 @@ public final class PlotModificationManager {
|
|||||||
}
|
}
|
||||||
if (createSign) {
|
if (createSign) {
|
||||||
queue.setCompleteTask(() -> TaskManager.runTaskAsync(() -> {
|
queue.setCompleteTask(() -> TaskManager.runTaskAsync(() -> {
|
||||||
List<CompletableFuture<Void>> tasks = plots.stream().map(current -> PlotSquared.platform().playerManager()
|
for (Plot current : plots) {
|
||||||
.getUsernameCaption(current.getOwnerAbs())
|
current.getPlotModificationManager().setSign(PlayerManager.resolveName(current.getOwnerAbs()).getComponent(
|
||||||
.thenAccept(caption -> current
|
LocaleHolder.console()));
|
||||||
.getPlotModificationManager()
|
}
|
||||||
.setSign(caption.getComponent(LocaleHolder.console()))))
|
|
||||||
.toList();
|
|
||||||
CompletableFuture.allOf(tasks.toArray(CompletableFuture[]::new)).whenComplete((unused, throwable) -> {
|
|
||||||
if (whenDone != null) {
|
if (whenDone != null) {
|
||||||
TaskManager.runTask(whenDone);
|
TaskManager.runTask(whenDone);
|
||||||
}
|
}
|
||||||
});
|
|
||||||
}));
|
}));
|
||||||
} else if (whenDone != null) {
|
} else if (whenDone != null) {
|
||||||
queue.setCompleteTask(whenDone);
|
queue.setCompleteTask(whenDone);
|
||||||
|
@ -28,7 +28,6 @@ import com.plotsquared.core.database.DBFunc;
|
|||||||
import com.plotsquared.core.player.ConsolePlayer;
|
import com.plotsquared.core.player.ConsolePlayer;
|
||||||
import com.plotsquared.core.player.OfflinePlotPlayer;
|
import com.plotsquared.core.player.OfflinePlotPlayer;
|
||||||
import com.plotsquared.core.player.PlotPlayer;
|
import com.plotsquared.core.player.PlotPlayer;
|
||||||
import com.plotsquared.core.plot.Plot;
|
|
||||||
import com.plotsquared.core.uuid.UUIDMapping;
|
import com.plotsquared.core.uuid.UUIDMapping;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.ComponentLike;
|
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 net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
|
||||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||||
import org.jetbrains.annotations.Contract;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@ -50,7 +48,6 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.CompletableFuture;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.function.BiConsumer;
|
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}
|
* @return A caption containing either the name, {@code None}, {@code Everyone} or {@code Unknown}
|
||||||
* @see #resolveName(UUID, boolean)
|
* @see #resolveName(UUID, boolean)
|
||||||
* @since 6.4.0
|
* @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) {
|
public static @NonNull Caption resolveName(final @Nullable UUID owner) {
|
||||||
return resolveName(owner, true);
|
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
|
* @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}
|
* @return A caption containing either the name, {@code None}, {@code Everyone} or {@code Unknown}
|
||||||
* @since 6.4.0
|
* @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) {
|
public static @NonNull Caption resolveName(final @Nullable UUID owner, final boolean blocking) {
|
||||||
if (owner == null) {
|
if (owner == null) {
|
||||||
return TranslatableCaption.of("info.none");
|
return TranslatableCaption.of("info.none");
|
||||||
@ -218,50 +211,6 @@ public abstract class PlayerManager<P extends PlotPlayer<? extends T>, T> {
|
|||||||
return StaticCaption.of(name);
|
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
|
* Remove a player from the player map
|
||||||
*
|
*
|
||||||
|
@ -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());
|
||||||
|
@ -47,7 +47,6 @@ import java.util.Locale;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.TimeZone;
|
import java.util.TimeZone;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
import java.util.function.BiFunction;
|
import java.util.function.BiFunction;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -110,9 +109,9 @@ public final class PlaceholderRegistry {
|
|||||||
if (plotOwner == null) {
|
if (plotOwner == null) {
|
||||||
return legacyComponent(TranslatableCaption.of("generic.generic_unowned"), player);
|
return legacyComponent(TranslatableCaption.of("generic.generic_unowned"), player);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
return PlotSquared.platform().playerManager().getUsernameCaption(plotOwner)
|
return PlayerManager.resolveName(plotOwner, false).getComponent(player);
|
||||||
.get(Settings.UUID.BLOCKING_TIMEOUT, TimeUnit.MILLISECONDS).getComponent(player);
|
|
||||||
} catch (final Exception ignored) {
|
} catch (final Exception ignored) {
|
||||||
}
|
}
|
||||||
return legacyComponent(TranslatableCaption.of("info.unknown"), player);
|
return legacyComponent(TranslatableCaption.of("info.unknown"), player);
|
||||||
|
@ -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", "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 {
|
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.2-R0.1-SNAPSHOT"
|
paper = "1.20.1-R0.1-SNAPSHOT"
|
||||||
guice = "7.0.0"
|
guice = "7.0.0"
|
||||||
spotbugs = "4.7.3"
|
spotbugs = "4.7.3"
|
||||||
checkerqual = "3.38.0"
|
checkerqual = "3.37.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.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.8.0"
|
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"
|
||||||
@ -35,9 +35,9 @@ 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.22.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
|
||||||
|
Reference in New Issue
Block a user