From 7d0a28b015f458bdb5255626e91a754020d11d42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20M=C3=BCller?= Date: Wed, 7 Oct 2026 23:44:13 +0200 Subject: [PATCH 1/2] updated to Paper 26.2, Java 25 and Gradle 9.6.1 - paper-api 26.2.build.129-stable (all modules), Java toolchain 25, shadow 9.6.1 - fixed NoSuchFieldError on join/quit/chat: Adventure 5 ClickEvent API (ClickEvent.suggestCommand / openUrl instead of ClickEvent.Action constants) - fixed NBTComponent generics in AntiFormattedBook - replaced javax.annotation with org.jetbrains.annotations (no longer provided by paper-api) - local.gradle.example: Gradle 9 compatible (archiveFile, providers.exec) The previous state is tagged as paper-1.21.10. Co-Authored-By: Claude Opus 5.5 --- build.gradle | 4 ++-- common/build.gradle | 2 +- .../metaGameplay/chatMessages/ChatMessages.java | 2 +- .../common/appliances/metaGameplay/report/Report.java | 2 +- .../security/antiFormattedBook/AntiFormattedBook.java | 2 +- core/build.gradle | 2 +- craftattack/build.gradle | 2 +- .../appliances/security/antiGrief/AntiGrief.java | 2 +- event/build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- local.gradle.example | 8 ++++---- varo/build.gradle | 2 +- .../forbiddenItems/ForbiddenPotionsListener.java | 2 +- 13 files changed, 17 insertions(+), 17 deletions(-) diff --git a/build.gradle b/build.gradle index 64aa638..f3b0910 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ plugins { id 'java' - id 'com.gradleup.shadow' version "8.3.5" + id 'com.gradleup.shadow' version "9.6.1" } allprojects { @@ -29,7 +29,7 @@ subprojects { java { toolchain { - languageVersion = JavaLanguageVersion.of(21) + languageVersion = JavaLanguageVersion.of(25) } } } diff --git a/common/build.gradle b/common/build.gradle index 5e7a917..62c6ef6 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -1,7 +1,7 @@ dependencies { implementation project(':core') - compileOnly 'io.papermc.paper:paper-api:1.21.10-R0.1-SNAPSHOT' + compileOnly 'io.papermc.paper:paper-api:26.2.build.129-stable' compileOnly 'org.geysermc.floodgate:api:2.2.4-SNAPSHOT' implementation 'org.apache.httpcomponents:httpclient:4.5.14' implementation 'com.sparkjava:spark-core:2.9.4' diff --git a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/chatMessages/ChatMessages.java b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/chatMessages/ChatMessages.java index 664a8ff..e0d8946 100644 --- a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/chatMessages/ChatMessages.java +++ b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/chatMessages/ChatMessages.java @@ -25,7 +25,7 @@ public class ChatMessages extends Appliance { public Component addReportActions(Component message, String username) { return message .hoverEvent(HoverEvent.showText(Component.text("Klicke, um diesen Spieler zu reporten").color(NamedTextColor.GOLD))) - .clickEvent(ClickEvent.clickEvent(ClickEvent.Action.SUGGEST_COMMAND, String.format("/report %s ", username))); + .clickEvent(ClickEvent.suggestCommand(String.format("/report %s ", username))); } @Override diff --git a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/report/Report.java b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/report/Report.java index f42e022..00ea524 100644 --- a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/report/Report.java +++ b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/report/Report.java @@ -85,7 +85,7 @@ public class Report extends Appliance { .append( Component .text(createdReport.data().url(), NamedTextColor.GRAY) - .clickEvent(ClickEvent.clickEvent(ClickEvent.Action.OPEN_URL, createdReport.data().url())) + .clickEvent(ClickEvent.openUrl(createdReport.data().url())) ) .appendNewline() .appendNewline() diff --git a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/security/antiFormattedBook/AntiFormattedBook.java b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/security/antiFormattedBook/AntiFormattedBook.java index 6af6d80..09a03d2 100644 --- a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/security/antiFormattedBook/AntiFormattedBook.java +++ b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/security/antiFormattedBook/AntiFormattedBook.java @@ -32,7 +32,7 @@ public class AntiFormattedBook extends Appliance { if (component instanceof TextComponent tc && tc.content().indexOf(SECTION) >= 0) return true; - if (component instanceof NBTComponent nbt) { + if (component instanceof NBTComponent nbt) { if (nbt.separator() != null && this.hasFormattingDeep(nbt.separator())) return true; } diff --git a/core/build.gradle b/core/build.gradle index 11e9be3..470d967 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -1,5 +1,5 @@ dependencies { - compileOnly 'io.papermc.paper:paper-api:1.21.10-R0.1-SNAPSHOT' + compileOnly 'io.papermc.paper:paper-api:26.2.build.129-stable' compileOnly 'org.geysermc.floodgate:api:2.2.4-SNAPSHOT' implementation 'org.apache.httpcomponents:httpclient:4.5.14' implementation 'com.sparkjava:spark-core:2.9.4' diff --git a/craftattack/build.gradle b/craftattack/build.gradle index a0be4ef..a70ad43 100644 --- a/craftattack/build.gradle +++ b/craftattack/build.gradle @@ -2,7 +2,7 @@ dependencies { implementation project(':core') implementation project(':common') - compileOnly 'io.papermc.paper:paper-api:1.21.10-R0.1-SNAPSHOT' + compileOnly 'io.papermc.paper:paper-api:26.2.build.129-stable' compileOnly 'org.geysermc.floodgate:api:2.2.4-SNAPSHOT' implementation 'org.apache.httpcomponents:httpclient:4.5.14' implementation 'com.sparkjava:spark-core:2.9.4' diff --git a/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/security/antiGrief/AntiGrief.java b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/security/antiGrief/AntiGrief.java index e638b1e..9c8b976 100644 --- a/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/security/antiGrief/AntiGrief.java +++ b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/security/antiGrief/AntiGrief.java @@ -20,7 +20,7 @@ import org.bukkit.event.Event; import org.bukkit.event.Listener; import org.jetbrains.annotations.NotNull; -import javax.annotation.Nullable; +import org.jetbrains.annotations.Nullable; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentSkipListMap; diff --git a/event/build.gradle b/event/build.gradle index fa35910..3a2556e 100644 --- a/event/build.gradle +++ b/event/build.gradle @@ -2,7 +2,7 @@ dependencies { implementation project(':common') implementation project(':core') - compileOnly 'io.papermc.paper:paper-api:1.21.10-R0.1-SNAPSHOT' + compileOnly 'io.papermc.paper:paper-api:26.2.build.129-stable' compileOnly 'org.geysermc.floodgate:api:2.2.4-SNAPSHOT' implementation 'org.apache.httpcomponents:httpclient:4.5.14' implementation 'com.sparkjava:spark-core:2.9.4' diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 1af9e09..a351597 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/local.gradle.example b/local.gradle.example index b213bb6..76f923e 100644 --- a/local.gradle.example +++ b/local.gradle.example @@ -1,6 +1,6 @@ tasks.register('deployVaroPlugin', Copy) { dependsOn ":varo:shadowJar" - from { project(":varo").shadowJar.archivePath } + from { project(":varo").shadowJar.archiveFile } into file('path') // path to plugins folder rename { fileName -> "varo.jar" } } @@ -10,15 +10,15 @@ tasks.register("uploadVaroPlugin") { doLast { def jarFile = project(":varo").tasks.named("shadowJar").get().outputs.files.singleFile - exec { + providers.exec { commandLine "scp", "-4", "-P", "22", jarFile.absolutePath, "user@host:path/varo.jar" - } + }.result.get() } } tasks.register('deployCraftAttackPlugin', Copy) { dependsOn ":craftattack:shadowJar" - from { project(":craftattack").shadowJar.archivePath } + from { project(":craftattack").shadowJar.archiveFile } into file('path') // path to plugins folder rename { fileName -> "craftattack.jar" } } diff --git a/varo/build.gradle b/varo/build.gradle index acddd52..559eead 100644 --- a/varo/build.gradle +++ b/varo/build.gradle @@ -2,7 +2,7 @@ dependencies { implementation project(':core') implementation project(':common') - compileOnly 'io.papermc.paper:paper-api:1.21.10-R0.1-SNAPSHOT' + compileOnly 'io.papermc.paper:paper-api:26.2.build.129-stable' implementation 'org.apache.httpcomponents:httpclient:4.5.14' implementation 'com.sparkjava:spark-core:2.9.4' } \ No newline at end of file diff --git a/varo/src/main/java/eu/mhsl/craftattack/spawn/varo/appliances/metaGameplay/forbiddenItems/ForbiddenPotionsListener.java b/varo/src/main/java/eu/mhsl/craftattack/spawn/varo/appliances/metaGameplay/forbiddenItems/ForbiddenPotionsListener.java index e11a17c..9a3b2f3 100644 --- a/varo/src/main/java/eu/mhsl/craftattack/spawn/varo/appliances/metaGameplay/forbiddenItems/ForbiddenPotionsListener.java +++ b/varo/src/main/java/eu/mhsl/craftattack/spawn/varo/appliances/metaGameplay/forbiddenItems/ForbiddenPotionsListener.java @@ -11,7 +11,7 @@ import org.bukkit.event.player.PlayerItemConsumeEvent; import org.bukkit.inventory.meta.PotionMeta; import org.bukkit.potion.PotionEffect; -import javax.annotation.Nullable; +import org.jetbrains.annotations.Nullable; import java.util.Collection; class ForbiddenPotionsListener extends ApplianceListener { From cf3fd2f38f508f0418fdded8d0d36b859f7ca79f Mon Sep 17 00:00:00 2001 From: jannis Date: Tue, 13 Oct 2026 21:41:00 +0200 Subject: [PATCH 2/2] changed old gamerules to new and added quarz recipe --- .../gameplay/quarzRecipe/QuarzRecipe.java | 42 +++++++++++++++++++ .../quarzRecipe/QuarzRecipeListener.java | 12 ++++++ .../tooling/projectStart/ProjectStart.java | 19 ++++----- 3 files changed, 63 insertions(+), 10 deletions(-) create mode 100644 craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/quarzRecipe/QuarzRecipe.java create mode 100644 craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/quarzRecipe/QuarzRecipeListener.java diff --git a/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/quarzRecipe/QuarzRecipe.java b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/quarzRecipe/QuarzRecipe.java new file mode 100644 index 0000000..4f9dce6 --- /dev/null +++ b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/quarzRecipe/QuarzRecipe.java @@ -0,0 +1,42 @@ +package eu.mhsl.craftattack.spawn.craftattack.appliances.gameplay.quarzRecipe; + +import eu.mhsl.craftattack.spawn.core.Main; +import eu.mhsl.craftattack.spawn.core.appliance.Appliance; +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.NamespacedKey; +import org.bukkit.entity.Player; +import org.bukkit.event.Listener; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.ShapelessRecipe; +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +public class QuarzRecipe extends Appliance { + private NamespacedKey recipeKey; + @Override + public void onEnable() { + this.recipeKey = new NamespacedKey(Main.instance(), "quarz_block_to_quarz"); + + ShapelessRecipe recipe = new ShapelessRecipe(this.recipeKey, new ItemStack(Material.QUARTZ, 4)); + recipe.addIngredient(Material.QUARTZ_BLOCK); + + Bukkit.addRecipe(recipe); + Bukkit.getOnlinePlayers().forEach(this::unlock); + } + + @Override + public void onDisable() { + Bukkit.removeRecipe(this.recipeKey); + } + + public void unlock(Player player) { + player.discoverRecipe(this.recipeKey); + } + + @Override + protected @NotNull List listeners() { + return List.of(new QuarzRecipeListener()); + } +} diff --git a/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/quarzRecipe/QuarzRecipeListener.java b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/quarzRecipe/QuarzRecipeListener.java new file mode 100644 index 0000000..a24181a --- /dev/null +++ b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/quarzRecipe/QuarzRecipeListener.java @@ -0,0 +1,12 @@ +package eu.mhsl.craftattack.spawn.craftattack.appliances.gameplay.quarzRecipe; + +import eu.mhsl.craftattack.spawn.core.appliance.ApplianceListener; +import org.bukkit.event.EventHandler; +import org.bukkit.event.player.PlayerJoinEvent; + +public class QuarzRecipeListener extends ApplianceListener { + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) { + this.getAppliance().unlock(event.getPlayer()); + } +} diff --git a/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/tooling/projectStart/ProjectStart.java b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/tooling/projectStart/ProjectStart.java index cf174bd..74c8477 100644 --- a/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/tooling/projectStart/ProjectStart.java +++ b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/tooling/projectStart/ProjectStart.java @@ -58,16 +58,15 @@ public class ProjectStart extends Appliance { ); private final Map, Boolean> gameRulesAfterStart = Map.ofEntries( - entry(GameRule.DO_DAYLIGHT_CYCLE, true), - entry(GameRule.DO_INSOMNIA, true), - entry(GameRule.DISABLE_RAIDS, false), - entry(GameRule.DO_FIRE_TICK, true), - entry(GameRule.DO_ENTITY_DROPS, true), - entry(GameRule.DO_PATROL_SPAWNING, true), - entry(GameRule.DO_TRADER_SPAWNING, true), - entry(GameRule.DO_WEATHER_CYCLE, true), - entry(GameRule.FALL_DAMAGE, true), - entry(GameRule.FIRE_DAMAGE, true) + entry(GameRules.ADVANCE_TIME, true), + entry(GameRules.SPAWN_PHANTOMS, true), + entry(GameRules.RAIDS, true), + entry(GameRules.ENTITY_DROPS, true), + entry(GameRules.SPAWN_PATROLS, true), + entry(GameRules.SPAWN_WANDERING_TRADERS, true), + entry(GameRules.ADVANCE_WEATHER, true), + entry(GameRules.FALL_DAMAGE, true), + entry(GameRules.FIRE_DAMAGE, true) ); public ProjectStart() {