Compare commits

..

3 Commits

Author SHA1 Message Date
renovate[bot]
3fbeabb2d0 Update dependency org.checkerframework:checker-qual to v3.51.1 (#4765)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-06 14:46:05 +00:00
renovate[bot]
230a4a0cfe Update dependency xyz.jpenilla.run-paper to v3.0.1 (#4766)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-06 13:43:01 +00:00
renovate[bot]
1d175683a3 Update junit-framework monorepo (#4767)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-06 12:40:50 +00:00
18 changed files with 113 additions and 148 deletions

View File

@@ -11,7 +11,7 @@ jobs:
- name: Checkout Repository
uses: actions/checkout@v5
- name: Validate Gradle Wrapper
uses: gradle/actions/wrapper-validation@v5
uses: gradle/actions/wrapper-validation@v4
- name: Setup Java
uses: actions/setup-java@v5
with:

View File

@@ -11,7 +11,7 @@ jobs:
- name: Checkout Repository
uses: actions/checkout@v5
- name: Validate Gradle Wrapper
uses: gradle/actions/wrapper-validation@v5
uses: gradle/actions/wrapper-validation@v4
- name: Setup Java
uses: actions/setup-java@v5
with:

View File

@@ -27,10 +27,10 @@ jobs:
distribution: temurin
java-version: 21
- name: Initialize CodeQL
uses: github/codeql-action/init@v4
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
- name: Autobuild
uses: github/codeql-action/autobuild@v4
uses: github/codeql-action/autobuild@v3
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4
uses: github/codeql-action/analyze@v3

View File

@@ -160,7 +160,7 @@ public class EntityEventListener implements Listener {
return;
}
}
case "REINFORCEMENTS", "NATURAL", "MOUNT", "PATROL", "RAID", "SILVERFISH_BLOCK", "ENDER_PEARL",
case "REINFORCEMENTS", "NATURAL", "MOUNT", "PATROL", "RAID", "SHEARED", "SILVERFISH_BLOCK", "ENDER_PEARL",
"TRAP", "VILLAGE_DEFENSE", "VILLAGE_INVASION", "BEEHIVE", "CHUNK_GEN", "NETHER_PORTAL",
"FROZEN", "SPELL", "DEFAULT" -> {
if (!area.isMobSpawning()) {

View File

@@ -202,7 +202,7 @@ public class PaperListener implements Listener {
return;
}
}
case "REINFORCEMENTS", "NATURAL", "MOUNT", "PATROL", "RAID", "SILVERFISH_BLOCK", "ENDER_PEARL", "TRAP", "VILLAGE_DEFENSE", "VILLAGE_INVASION", "BEEHIVE", "CHUNK_GEN" -> {
case "REINFORCEMENTS", "NATURAL", "MOUNT", "PATROL", "RAID", "SHEARED", "SILVERFISH_BLOCK", "ENDER_PEARL", "TRAP", "VILLAGE_DEFENSE", "VILLAGE_INVASION", "BEEHIVE", "CHUNK_GEN" -> {
if (!area.isMobSpawning()) {
event.setShouldAbortSpawn(true);
event.setCancelled(true);

View File

@@ -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();

View File

@@ -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};

View File

@@ -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"));

View File

@@ -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;
}

View File

@@ -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 &ltid&gt 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 &ltid&gt 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,8 +683,7 @@ public abstract class PlotPlayer<P> implements CommandCaller, OfflinePlotPlayer,
public void populatePersistentMetaMap() {
if (Settings.Enabled_Components.PERSISTENT_META) {
DBFunc.getPersistentMeta(
getUUID(), new RunnableVal<>() {
DBFunc.getPersistentMeta(getUUID(), new RunnableVal<>() {
@Override
public void run(Map<String, byte[]> value) {
try {
@@ -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(
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 {

View File

@@ -541,7 +541,7 @@ public class Plot {
*
* @return World name
*/
public @NonNull String getWorldName() {
public @Nullable String getWorldName() {
return area.getWorldName();
}

View File

@@ -58,7 +58,7 @@ public class SinglePlot extends Plot {
}
@Override
public @NonNull String getWorldName() {
public String getWorldName() {
return getId().toUnderscoreSeparatedString();
}

View File

@@ -65,16 +65,10 @@ subprojects {
plugin<IdeaPlugin>()
}
configurations.matching { it.name == "signatures" }.configureEach {
attributes {
attribute(Attribute.of("signatures-unique", String::class.java), "true")
}
}
dependencies {
// Tests
testImplementation("org.junit.jupiter:junit-jupiter:6.0.0")
testRuntimeOnly("org.junit.platform:junit-platform-launcher:6.0.0")
testImplementation("org.junit.jupiter:junit-jupiter:5.14.0")
testRuntimeOnly("org.junit.platform:junit-platform-launcher:1.14.0")
}
plugins.withId("java") {
@@ -101,16 +95,10 @@ subprojects {
}
}
afterEvaluate {
val javaComponent = components["java"] as AdhocComponentWithVariants
configurations.findByName("shadowRuntimeElements")?.let { shadowRuntimeElements ->
javaComponent.withVariantsFromConfiguration(shadowRuntimeElements) {
javaComponent.withVariantsFromConfiguration(configurations["shadowRuntimeElements"]) {
skip()
}
} ?: run {
logger.warn("Configuration 'shadowRuntimeElements' does not exist.")
}
}
signing {
if (!project.hasProperty("skip.signing") && !version.toString().endsWith("-SNAPSHOT")) {

View File

@@ -7,7 +7,7 @@ checkerqual = "3.51.1"
gson = "2.10"
guava = "31.1-jre"
snakeyaml = "2.0"
adventure = "4.25.0"
adventure = "4.24.0"
adventure-bukkit = "4.4.1"
log4j = "2.19.0"
@@ -33,11 +33,11 @@ vault = "1.7.1"
serverlib = "2.3.7"
# Gradle plugins
shadow = "9.2.2"
shadow = "8.3.9"
grgit = "4.1.1"
spotless = "8.0.0"
publish = "0.34.0"
runPaper = "3.0.2"
runPaper = "3.0.1"
[libraries]
# Platform expectations

Binary file not shown.

View File

@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME

5
gradlew vendored
View File

@@ -1,7 +1,7 @@
#!/bin/sh
#
# Copyright © 2015 the original authors.
# Copyright © 2015-2021 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -114,6 +114,7 @@ case "$( uname )" in #(
NONSTOP* ) nonstop=true ;;
esac
CLASSPATH="\\\"\\\""
# Determine the Java command to use to start the JVM.
@@ -171,6 +172,7 @@ fi
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
@@ -210,6 +212,7 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
"$@"

3
gradlew.bat vendored
View File

@@ -70,10 +70,11 @@ goto fail
:execute
@rem Setup the command line
set CLASSPATH=
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
:end
@rem End local scope for the variables with windows NT shell