Skip to content

Commit 4ecda22

Browse files
authored
Support 1.21.4 and modern paper, bump verison to 2.9.0 (#83)
1 parent 5eed328 commit 4ecda22

File tree

10 files changed

+126
-18
lines changed

10 files changed

+126
-18
lines changed

build.gradle

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,25 +15,24 @@ allprojects {
1515
}
1616

1717
subprojects {
18-
apply plugin: 'java'
18+
if (project.name != 'zmusic-nms-paper') {
19+
apply plugin: 'java'
1920

20-
dependencies {
21-
compileOnly libs.spigot
22-
23-
compileOnly libs.netty.buffer
24-
25-
compileOnly libs.lombok
26-
annotationProcessor libs.lombok
21+
dependencies {
22+
compileOnly libs.spigot
23+
compileOnly libs.netty.buffer
24+
compileOnly libs.lombok
25+
annotationProcessor libs.lombok
26+
}
2727
}
2828

2929
java {
30+
toolchain.languageVersion = JavaLanguageVersion.of(21)
3031
sourceCompatibility = JavaVersion.VERSION_1_8
3132
targetCompatibility = JavaVersion.VERSION_1_8
3233
}
3334

34-
tasks.withType(JavaCompile).tap {
35-
configureEach {
36-
options.encoding = 'UTF-8'
37-
}
35+
tasks.withType(JavaCompile).configureEach {
36+
options.encoding = 'UTF-8'
3837
}
39-
}
38+
}

gradle/libs.versions.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
[versions]
2-
spigot = "1.20-R0.1-SNAPSHOT"
2+
spigot = "1.21.4-R0.1-SNAPSHOT"
33
bungeecord = "1.20-R0.1-SNAPSHOT"
44
velocity = "3.1.1"
55
netty = "4.1.89.Final"
6-
placeholderapi = "2.11.3"
6+
placeholderapi = "2.11.6"
77
vault = "1.7.1"
88
lombok = "1.18.28"
99

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
44
networkTimeout=10000
55
validateDistributionUrl=true
66
zipStoreBase=GRADLE_USER_HOME

settings.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@ include(
1010
"zmusic-nms:zmusic-nms-1.17",
1111
"zmusic-nms:zmusic-nms-1.18",
1212
"zmusic-nms:zmusic-nms-1.19",
13-
"zmusic-nms:zmusic-nms-1.20"
13+
"zmusic-nms:zmusic-nms-1.20",
14+
"zmusic-nms:zmusic-nms-paper"
1415
)

zmusic-addon/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ dependencies {
1111
implementation(project(":zmusic-nms:zmusic-nms-1.18"))
1212
implementation(project(":zmusic-nms:zmusic-nms-1.19"))
1313
implementation(project(":zmusic-nms:zmusic-nms-1.20"))
14+
implementation(project(":zmusic-nms:zmusic-nms-paper"))
1415

1516
compileOnly libs.placeholderapi
1617
}

zmusic-addon/src/main/java/me/zhenxin/zmusic/proto/Toast.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ public static void sendToast(Object player, String title) {
2121
Player bukkitPlayer = (Player) player;
2222
AdvancementPacket packet;
2323
switch (nms) {
24+
case "craftbukkit": // Mojang mappings server for paper 1.20.5+
25+
packet = new AdvancementPacket_Paper(bukkitPlayer, title);
26+
break;
2427
case "v1_20_R1":
2528
packet = new AdvancementPacket_1_20_R1(bukkitPlayer, title);
2629
break;
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
plugins {
2+
id("java")
3+
id("io.papermc.paperweight.userdev") version "2.0.0-beta.16"
4+
}
5+
6+
repositories {
7+
mavenCentral()
8+
gradlePluginPortal()
9+
maven("https://repo.papermc.io/repository/maven-public/")
10+
}
11+
12+
dependencies {
13+
paperweight.paperDevBundle("1.21.4-R0.1-SNAPSHOT")
14+
compileOnly(project(":zmusic-nms:zmusic-nms-core"))
15+
}
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
package me.zhenxin.zmusic.proto.packet.impl;
2+
3+
import me.zhenxin.zmusic.proto.packet.AdvancementPacket;
4+
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
5+
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
6+
import net.minecraft.advancements.*;
7+
import net.minecraft.core.RegistryAccess;
8+
import net.minecraft.network.chat.Component;
9+
import net.minecraft.network.protocol.game.ClientboundUpdateAdvancementsPacket;
10+
import net.minecraft.resources.ResourceLocation;
11+
import net.minecraft.server.MinecraftServer;
12+
import org.bukkit.craftbukkit.entity.CraftPlayer;
13+
import org.bukkit.craftbukkit.inventory.CraftItemStack;
14+
import org.bukkit.entity.Player;
15+
import org.bukkit.inventory.ItemStack;
16+
17+
import java.util.Collections;
18+
import java.util.Optional;
19+
20+
/**
21+
* @author Lumine1909
22+
* @since 2025/5/8 10:22
23+
*/
24+
@SuppressWarnings("AlibabaClassNamingShouldBeCamel")
25+
public class AdvancementPacket_Paper extends AdvancementPacket {
26+
27+
private static final AdvancementRequirements SIMPLE_REQUIREMENT = new AdvancementRequirements(Collections.singletonList(Collections.singletonList("1")));
28+
29+
private final ResourceLocation resourceLocation = ResourceLocation.fromNamespaceAndPath(namespaced, key);
30+
private final Component messageComponent;
31+
private final Component descriptionComponent;
32+
33+
public AdvancementPacket_Paper(Player player, String message) {
34+
super(player, message);
35+
RegistryAccess.Frozen frozen = MinecraftServer.getServer().registryAccess();
36+
Component component1 = Component.Serializer.fromJson(GsonComponentSerializer.gson().serialize(LegacyComponentSerializer.legacyAmpersand().deserialize(message)), frozen);
37+
Component component2 = Component.Serializer.fromJson(GsonComponentSerializer.gson().serialize(LegacyComponentSerializer.legacyAmpersand().deserialize(desc)), frozen);
38+
messageComponent = component1 != null ? component1 : Component.empty();
39+
descriptionComponent = component2 != null ? component2 : Component.empty();
40+
}
41+
42+
@Override
43+
protected void sent(boolean add) {
44+
ClientboundUpdateAdvancementsPacket packet;
45+
46+
if (add) {
47+
Advancement advancement = new Advancement(
48+
Optional.empty(),
49+
Optional.of(new DisplayInfo(
50+
CraftItemStack.asNMSCopy(new ItemStack(icon)),
51+
messageComponent,
52+
descriptionComponent,
53+
Optional.empty(),
54+
AdvancementType.TASK,
55+
true,
56+
false,
57+
true
58+
)),
59+
AdvancementRewards.EMPTY,
60+
Collections.emptyMap(),
61+
SIMPLE_REQUIREMENT,
62+
true
63+
);
64+
65+
AdvancementProgress progress = new AdvancementProgress();
66+
progress.update(SIMPLE_REQUIREMENT);
67+
progress.grantProgress("1");
68+
packet = new ClientboundUpdateAdvancementsPacket(
69+
false,
70+
Collections.singleton(new AdvancementHolder(resourceLocation, advancement)),
71+
Collections.emptySet(),
72+
Collections.singletonMap(resourceLocation, progress)
73+
);
74+
} else {
75+
packet = new ClientboundUpdateAdvancementsPacket(
76+
false,
77+
Collections.emptySet(),
78+
Collections.singleton(resourceLocation),
79+
Collections.emptyMap()
80+
);
81+
}
82+
CraftPlayer player = (CraftPlayer) this.player;
83+
player.getHandle().connection.send(packet);
84+
}
85+
}

zmusic-plugin/build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ plugins {
22
id 'com.github.johnrengelman.shadow' version '8.1.1'
33
}
44

5-
version = '2.8.7'
5+
version = '2.9.0'
66

77
dependencies {
88
compileOnly 'ink.ptms:nms-all:1.0.0'
@@ -13,6 +13,7 @@ dependencies {
1313
implementation(project(":zmusic-nms:zmusic-nms-1.18"))
1414
implementation(project(":zmusic-nms:zmusic-nms-1.19"))
1515
implementation(project(":zmusic-nms:zmusic-nms-1.20"))
16+
implementation(project(":zmusic-nms:zmusic-nms-paper"))
1617

1718
compileOnly libs.bungeecord
1819
compileOnly libs.velocity

zmusic-plugin/src/main/java/me/zhenxin/zmusic/proto/Toast.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ public static void sendToast(Object player, String title) {
2121
Player bukkitPlayer = (Player) player;
2222
AdvancementPacket packet;
2323
switch (nms) {
24+
case "craftbukkit": // Mojang mappings server for paper 1.20.5+
25+
packet = new AdvancementPacket_Paper(bukkitPlayer, title);
26+
break;
2427
case "v1_20_R1":
2528
packet = new AdvancementPacket_1_20_R1(bukkitPlayer, title);
2629
break;

0 commit comments

Comments
 (0)