mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2025-10-19 12:43:45 +02:00
Compare commits
1 Commits
fix/contex
...
renovate/w
Author | SHA1 | Date | |
---|---|---|---|
![]() |
3cb44dfa8d |
@@ -90,7 +90,7 @@ public class DebugRoadRegen extends SubCommand {
|
||||
}
|
||||
|
||||
public boolean regenPlot(PlotPlayer<?> player) {
|
||||
PlotArea area = player.getContextualPlotArea();
|
||||
PlotArea area = player.getCurrentPlot().getArea();
|
||||
if (area == null) {
|
||||
player.sendMessage(TranslatableCaption.of("errors.not_in_plot_world"));
|
||||
return false;
|
||||
@@ -145,10 +145,9 @@ public class DebugRoadRegen extends SubCommand {
|
||||
return false;
|
||||
}
|
||||
|
||||
PlotArea area = player.getContextualPlotArea();
|
||||
PlotArea area = player.getCurrentPlot().getArea();
|
||||
if (area == null) {
|
||||
player.sendMessage(TranslatableCaption.of("errors.not_in_plot_world"));
|
||||
return false;
|
||||
}
|
||||
Plot plot = player.getCurrentPlot();
|
||||
PlotManager manager = area.getPlotManager();
|
||||
|
@@ -150,8 +150,8 @@ public class ListCmd extends SubCommand {
|
||||
page = 0;
|
||||
}
|
||||
|
||||
PlotArea area = player.getContextualPlotArea();
|
||||
String world = area != null ? area.getWorldName() : "";
|
||||
String world = player.getCurrentPlot().getWorldName();
|
||||
PlotArea area = player.getCurrentPlot().getArea();
|
||||
String arg = args[0].toLowerCase();
|
||||
final boolean[] sort = new boolean[]{true};
|
||||
|
||||
|
@@ -68,6 +68,11 @@ public class Load extends SubCommand {
|
||||
|
||||
@Override
|
||||
public boolean onCommand(final PlotPlayer<?> player, final String[] args) {
|
||||
final String world = player.getCurrentPlot().getWorldName();
|
||||
if (!this.plotAreaManager.hasPlotArea(world)) {
|
||||
player.sendMessage(TranslatableCaption.of("errors.not_in_plot_world"));
|
||||
return false;
|
||||
}
|
||||
final Plot plot = player.getCurrentPlot();
|
||||
if (plot == null) {
|
||||
player.sendMessage(TranslatableCaption.of("errors.not_in_plot"));
|
||||
|
@@ -78,7 +78,7 @@ public class Set extends SubCommand {
|
||||
|
||||
@Override
|
||||
public boolean set(PlotPlayer<?> player, final Plot plot, String value) {
|
||||
final PlotArea plotArea = player.getContextualPlotArea();
|
||||
final PlotArea plotArea = player.getCurrentPlot().getArea();
|
||||
if (plotArea == null) {
|
||||
return false;
|
||||
}
|
||||
|
@@ -290,7 +290,8 @@ public abstract class PlotPlayer<P> implements CommandCaller, OfflinePlotPlayer,
|
||||
*
|
||||
* @return the plot the player is standing on or null if standing on a road or not in a {@link PlotArea}
|
||||
*/
|
||||
public @Nullable Plot getCurrentPlot() {
|
||||
@Nullable
|
||||
public Plot getCurrentPlot() {
|
||||
try (final MetaDataAccess<Plot> lastPlotAccess =
|
||||
this.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LAST_PLOT)) {
|
||||
if (lastPlotAccess.get().orElse(null) == null && !Settings.Enabled_Components.EVENTS) {
|
||||
@@ -319,7 +320,7 @@ public abstract class PlotPlayer<P> implements CommandCaller, OfflinePlotPlayer,
|
||||
*/
|
||||
public int getPlotCount() {
|
||||
if (!Settings.Limit.GLOBAL) {
|
||||
return getPlotCount(getContextualWorldName());
|
||||
return getPlotCount(getCurrentPlot().getWorldName());
|
||||
}
|
||||
final AtomicInteger count = new AtomicInteger(0);
|
||||
final UUID uuid = getUUID();
|
||||
@@ -339,7 +340,7 @@ public abstract class PlotPlayer<P> implements CommandCaller, OfflinePlotPlayer,
|
||||
|
||||
public int getClusterCount() {
|
||||
if (!Settings.Limit.GLOBAL) {
|
||||
return getClusterCount(getContextualWorldName());
|
||||
return getClusterCount(getCurrentPlot().getWorldName());
|
||||
}
|
||||
final AtomicInteger count = new AtomicInteger(0);
|
||||
this.plotAreaManager.forEachPlotArea(value -> {
|
||||
@@ -352,34 +353,6 @@ public abstract class PlotPlayer<P> implements CommandCaller, OfflinePlotPlayer,
|
||||
return count.get();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@return the world name at the player's contextual position}
|
||||
* The contextual position can be affected when using a command with
|
||||
* an explicit plot override, e.g., `/plot <id> info`.
|
||||
*/
|
||||
private @NonNull String getContextualWorldName() {
|
||||
Plot current = getCurrentPlot();
|
||||
if (current != null) {
|
||||
return current.getWorldName();
|
||||
}
|
||||
return getLocation().getWorldName();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@return the plot area at the player's contextual position}
|
||||
* The contextual position can be affected when using a command with
|
||||
* an explicit plot override, e.g., `/plot <id> info`.
|
||||
*
|
||||
* @since TODO
|
||||
*/
|
||||
public @Nullable PlotArea getContextualPlotArea() {
|
||||
Plot current = getCurrentPlot();
|
||||
if (current != null) {
|
||||
return current.getArea();
|
||||
}
|
||||
return getLocation().getPlotArea();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the number of plots this player owns in the world.
|
||||
*
|
||||
@@ -710,87 +683,86 @@ public abstract class PlotPlayer<P> implements CommandCaller, OfflinePlotPlayer,
|
||||
|
||||
public void populatePersistentMetaMap() {
|
||||
if (Settings.Enabled_Components.PERSISTENT_META) {
|
||||
DBFunc.getPersistentMeta(
|
||||
getUUID(), new RunnableVal<>() {
|
||||
@Override
|
||||
public void run(Map<String, byte[]> value) {
|
||||
try {
|
||||
PlotPlayer.this.metaMap = value;
|
||||
if (value.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
DBFunc.getPersistentMeta(getUUID(), new RunnableVal<>() {
|
||||
@Override
|
||||
public void run(Map<String, byte[]> value) {
|
||||
try {
|
||||
PlotPlayer.this.metaMap = value;
|
||||
if (value.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (PlotPlayer.this.getAttribute("debug")) {
|
||||
debugModeEnabled.add(PlotPlayer.this);
|
||||
}
|
||||
if (PlotPlayer.this.getAttribute("debug")) {
|
||||
debugModeEnabled.add(PlotPlayer.this);
|
||||
}
|
||||
|
||||
if (!Settings.Teleport.ON_LOGIN) {
|
||||
return;
|
||||
}
|
||||
PlotAreaManager manager = PlotPlayer.this.plotAreaManager;
|
||||
if (!Settings.Teleport.ON_LOGIN) {
|
||||
return;
|
||||
}
|
||||
PlotAreaManager manager = PlotPlayer.this.plotAreaManager;
|
||||
|
||||
if (!(manager instanceof SinglePlotAreaManager)) {
|
||||
return;
|
||||
}
|
||||
PlotArea area = ((SinglePlotAreaManager) manager).getArea();
|
||||
boolean V2 = false;
|
||||
byte[] arr = PlotPlayer.this.getPersistentMeta("quitLoc");
|
||||
if (arr == null) {
|
||||
arr = PlotPlayer.this.getPersistentMeta("quitLocV2");
|
||||
if (arr == null) {
|
||||
return;
|
||||
}
|
||||
V2 = true;
|
||||
removePersistentMeta("quitLocV2");
|
||||
} else {
|
||||
removePersistentMeta("quitLoc");
|
||||
}
|
||||
if (!(manager instanceof SinglePlotAreaManager)) {
|
||||
return;
|
||||
}
|
||||
PlotArea area = ((SinglePlotAreaManager) manager).getArea();
|
||||
boolean V2 = false;
|
||||
byte[] arr = PlotPlayer.this.getPersistentMeta("quitLoc");
|
||||
if (arr == null) {
|
||||
arr = PlotPlayer.this.getPersistentMeta("quitLocV2");
|
||||
if (arr == null) {
|
||||
return;
|
||||
}
|
||||
V2 = true;
|
||||
removePersistentMeta("quitLocV2");
|
||||
} else {
|
||||
removePersistentMeta("quitLoc");
|
||||
}
|
||||
|
||||
if (!getMeta("teleportOnLogin", true)) {
|
||||
return;
|
||||
}
|
||||
ByteBuffer quitWorld = ByteBuffer.wrap(arr);
|
||||
final int plotX = quitWorld.getShort();
|
||||
final int plotZ = quitWorld.getShort();
|
||||
PlotId id = PlotId.of(plotX, plotZ);
|
||||
int x = quitWorld.getInt();
|
||||
int y = V2 ? quitWorld.getShort() : (quitWorld.get() & 0xFF);
|
||||
int z = quitWorld.getInt();
|
||||
Plot plot = area.getOwnedPlot(id);
|
||||
if (!getMeta("teleportOnLogin", true)) {
|
||||
return;
|
||||
}
|
||||
ByteBuffer quitWorld = ByteBuffer.wrap(arr);
|
||||
final int plotX = quitWorld.getShort();
|
||||
final int plotZ = quitWorld.getShort();
|
||||
PlotId id = PlotId.of(plotX, plotZ);
|
||||
int x = quitWorld.getInt();
|
||||
int y = V2 ? quitWorld.getShort() : (quitWorld.get() & 0xFF);
|
||||
int z = quitWorld.getInt();
|
||||
Plot plot = area.getOwnedPlot(id);
|
||||
|
||||
if (plot == null) {
|
||||
return;
|
||||
}
|
||||
if (plot == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
final Location location = Location.at(plot.getWorldName(), x, y, z);
|
||||
if (plot.isLoaded()) {
|
||||
TaskManager.runTask(() -> {
|
||||
if (getMeta("teleportOnLogin", true)) {
|
||||
teleport(location, TeleportCause.LOGIN);
|
||||
sendMessage(
|
||||
TranslatableCaption.of("teleport.teleported_to_plot"));
|
||||
}
|
||||
});
|
||||
} else if (!PlotSquared.get().isMainThread(Thread.currentThread())) {
|
||||
if (getMeta("teleportOnLogin", true)) {
|
||||
plot.teleportPlayer(
|
||||
PlotPlayer.this,
|
||||
result -> TaskManager.runTask(() -> {
|
||||
if (getMeta("teleportOnLogin", true)) {
|
||||
if (plot.isLoaded()) {
|
||||
teleport(location, TeleportCause.LOGIN);
|
||||
sendMessage(TranslatableCaption
|
||||
.of("teleport.teleported_to_plot"));
|
||||
}
|
||||
}
|
||||
})
|
||||
);
|
||||
}
|
||||
final Location location = Location.at(plot.getWorldName(), x, y, z);
|
||||
if (plot.isLoaded()) {
|
||||
TaskManager.runTask(() -> {
|
||||
if (getMeta("teleportOnLogin", true)) {
|
||||
teleport(location, TeleportCause.LOGIN);
|
||||
sendMessage(
|
||||
TranslatableCaption.of("teleport.teleported_to_plot"));
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
LOGGER.error("Error populating persistent meta for player {}", PlotPlayer.this.getName(), e);
|
||||
});
|
||||
} else if (!PlotSquared.get().isMainThread(Thread.currentThread())) {
|
||||
if (getMeta("teleportOnLogin", true)) {
|
||||
plot.teleportPlayer(
|
||||
PlotPlayer.this,
|
||||
result -> TaskManager.runTask(() -> {
|
||||
if (getMeta("teleportOnLogin", true)) {
|
||||
if (plot.isLoaded()) {
|
||||
teleport(location, TeleportCause.LOGIN);
|
||||
sendMessage(TranslatableCaption
|
||||
.of("teleport.teleported_to_plot"));
|
||||
}
|
||||
}
|
||||
})
|
||||
);
|
||||
}
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
LOGGER.error("Error populating persistent meta for player {}", PlotPlayer.this.getName(), e);
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
@@ -860,8 +832,7 @@ public abstract class PlotPlayer<P> implements CommandCaller, OfflinePlotPlayer,
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Nullable
|
||||
<T> T getPersistentMeta(final @NonNull MetaDataKey<T> key) {
|
||||
@Nullable <T> T getPersistentMeta(final @NonNull MetaDataKey<T> key) {
|
||||
final byte[] value = this.getPersistentMeta(key.toString());
|
||||
if (value == null) {
|
||||
return null;
|
||||
@@ -1031,11 +1002,9 @@ public abstract class PlotPlayer<P> implements CommandCaller, OfflinePlotPlayer,
|
||||
if (throwable != null) {
|
||||
sendMessage(
|
||||
TranslatableCaption.of("errors.error"),
|
||||
TagResolver.resolver(
|
||||
"value", Tag.inserting(
|
||||
Component.text("Failed to resolve asynchronous caption replacements")
|
||||
)
|
||||
)
|
||||
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 {
|
||||
|
@@ -541,7 +541,7 @@ public class Plot {
|
||||
*
|
||||
* @return World name
|
||||
*/
|
||||
public @NonNull String getWorldName() {
|
||||
public @Nullable String getWorldName() {
|
||||
return area.getWorldName();
|
||||
}
|
||||
|
||||
|
@@ -58,7 +58,7 @@ public class SinglePlot extends Plot {
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NonNull String getWorldName() {
|
||||
public String getWorldName() {
|
||||
return getId().toUnderscoreSeparatedString();
|
||||
}
|
||||
|
||||
|
@@ -12,7 +12,7 @@ adventure-bukkit = "4.4.1"
|
||||
log4j = "2.19.0"
|
||||
|
||||
# Plugins
|
||||
worldedit = "7.2.20"
|
||||
worldedit = "7.3.16"
|
||||
fawe = "2.13.2"
|
||||
placeholderapi = "2.11.6"
|
||||
luckperms = "5.5"
|
||||
|
Reference in New Issue
Block a user