Skip to content

Commit b18c7bc

Browse files
committed
add support for 1.21.3
1 parent 6c5452e commit b18c7bc

24 files changed

+798
-2
lines changed

api/src/main/java/net/azisaba/loreeditor/api/util/ReflectionUtil.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,10 @@ public static boolean isModernNMS() {
2626
case "1.20.2-R0.1-SNAPSHOT":
2727
return "v1_20";
2828
case "1.21.1-R0.1-SNAPSHOT":
29+
return "v1_21_1";
2930
case "1.21.2-R0.1-SNAPSHOT":
3031
case "1.21.3-R0.1-SNAPSHOT":
31-
return "v1_21_1";
32+
return "v1_21_3";
3233
}
3334
return Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3];
3435
}

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ plugins {
88

99
allprojects {
1010
group = "net.azisaba.loreeditor"
11-
version = "1.2.3"
11+
version = "1.3.0"
1212

1313
apply {
1414
plugin("java")

plugin/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ dependencies {
55
api(project(":v1_19_R3"))
66
api(project(":v1_20"))
77
api(project(":v1_21_1"))
8+
api(project(":v1_21_3"))
89
}
910

1011
tasks {

settings.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@ include("v1_16_R3")
77
include("v1_19_R3")
88
include("v1_20")
99
include("v1_21_1")
10+
include("v1_21_3")

v1_21_3/build.gradle.kts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
plugins {
2+
id("io.papermc.paperweight.userdev")
3+
}
4+
5+
repositories {
6+
mavenLocal()
7+
}
8+
9+
java.toolchain.languageVersion.set(JavaLanguageVersion.of(21))
10+
11+
dependencies {
12+
compileOnly(project(":common"))
13+
compileOnly("io.papermc.paper:paper-api:1.21.3-R0.1-SNAPSHOT")
14+
paperweight.paperDevBundle("1.21.3-R0.1-SNAPSHOT")
15+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package net.azisaba.loreeditor.v1_21_3.chat;
2+
3+
import net.azisaba.loreeditor.common.chat.ChatModifier;
4+
import net.azisaba.loreeditor.common.util.Reflected;
5+
import net.minecraft.network.chat.Style;
6+
import org.jetbrains.annotations.Contract;
7+
import org.jetbrains.annotations.NotNull;
8+
9+
import java.util.Objects;
10+
11+
public record ChatModifierImpl(Style handle) implements ChatModifier {
12+
public ChatModifierImpl {
13+
Objects.requireNonNull(handle, "handle");
14+
}
15+
16+
@Contract(value = "_ -> new", pure = true)
17+
@Reflected
18+
public static @NotNull ChatModifierImpl getInstance(@NotNull Object handle) {
19+
return new ChatModifierImpl((Style) handle);
20+
}
21+
22+
@Override
23+
public @NotNull Style handle() {
24+
return handle;
25+
}
26+
27+
@Override
28+
public @NotNull ChatModifier setItalic(boolean italic) {
29+
return getInstance(handle.withItalic(italic)); // setItalic
30+
}
31+
}
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package net.azisaba.loreeditor.v1_21_3.chat;
2+
3+
import net.azisaba.loreeditor.common.chat.ChatModifier;
4+
import net.azisaba.loreeditor.common.chat.Component;
5+
import net.azisaba.loreeditor.common.util.Reflected;
6+
import net.minecraft.core.RegistryAccess;
7+
import net.minecraft.network.chat.MutableComponent;
8+
import net.minecraft.network.chat.Style;
9+
import org.bukkit.Bukkit;
10+
import org.bukkit.craftbukkit.CraftServer;
11+
import org.jetbrains.annotations.Contract;
12+
import org.jetbrains.annotations.NotNull;
13+
import org.jetbrains.annotations.Nullable;
14+
15+
import java.util.List;
16+
import java.util.Objects;
17+
import java.util.function.UnaryOperator;
18+
19+
@Reflected
20+
public record ComponentImpl(MutableComponent handle) implements Component {
21+
public ComponentImpl(@Nullable net.minecraft.network.chat.Component handle) {
22+
this(handle == null ? null : handle.copy());
23+
}
24+
25+
@Contract(value = "_ -> new", pure = true)
26+
@Reflected
27+
public static @NotNull ComponentImpl getInstance(@Nullable Object component) {
28+
return new ComponentImpl((net.minecraft.network.chat.Component) component);
29+
}
30+
31+
@Override
32+
public @NotNull MutableComponent handle() {
33+
return Objects.requireNonNull(handle, "cannot reference handle in static context");
34+
}
35+
36+
public static MutableComponent deserializeFromJson(@NotNull String input) {
37+
RegistryAccess registries = ((CraftServer) Bukkit.getServer()).getServer().registryAccess();
38+
return net.minecraft.network.chat.Component.Serializer.fromJson(input, registries);
39+
}
40+
41+
public static String serializeToJson(@NotNull net.minecraft.network.chat.Component component) {
42+
RegistryAccess registries = ((CraftServer) Bukkit.getServer()).getServer().registryAccess();
43+
return net.minecraft.network.chat.Component.Serializer.toJson(component, registries);
44+
}
45+
46+
@Override
47+
public @Nullable Component deserialize(@NotNull String input) {
48+
return getInstance(deserializeFromJson(input));
49+
}
50+
51+
@Override
52+
public @NotNull String serialize(@NotNull Component component) {
53+
return serializeToJson(((ComponentImpl) component).handle());
54+
}
55+
56+
@Override
57+
public @NotNull List<?> getSiblings() {
58+
return handle().getSiblings();
59+
}
60+
61+
@Override
62+
public void addSiblingText(@NotNull String text) {
63+
handle().append(deserializeFromJson(text));
64+
}
65+
66+
@Override
67+
public @NotNull Component modifyStyle(@NotNull UnaryOperator<ChatModifier> action) {
68+
ChatModifier cm = new ChatModifierImpl(handle().getStyle());
69+
Style newChatModifier = ((ChatModifierImpl) action.apply(cm)).handle();
70+
return getInstance(handle().setStyle(newChatModifier));
71+
}
72+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package net.azisaba.loreeditor.v1_21_3.entity;
2+
3+
import net.azisaba.loreeditor.api.util.ReflectionUtil;
4+
import org.bukkit.entity.Player;
5+
import org.jetbrains.annotations.NotNull;
6+
import xyz.acrylicstyle.util.reflector.CastTo;
7+
import xyz.acrylicstyle.util.reflector.Reflector;
8+
import xyz.acrylicstyle.util.reflector.ReflectorHandler;
9+
10+
import java.util.Objects;
11+
12+
public interface CraftPlayer {
13+
static @NotNull CraftPlayer getInstance(@NotNull Player player) {
14+
return Reflector.newReflector(null, CraftPlayer.class,
15+
new ReflectorHandler(ReflectionUtil.getOBCClass("entity.CraftPlayer"), Objects.requireNonNull(player, "player")));
16+
}
17+
18+
@NotNull
19+
@CastTo(EntityPlayer.class)
20+
EntityPlayer getHandle();
21+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package net.azisaba.loreeditor.v1_21_3.entity;
2+
3+
import net.azisaba.loreeditor.api.util.ReflectionUtil;
4+
import net.azisaba.loreeditor.v1_21_3.network.ServerCommonPacketListenerImpl;
5+
import org.jetbrains.annotations.NotNull;
6+
import org.jetbrains.annotations.Nullable;
7+
import xyz.acrylicstyle.util.reflector.CastTo;
8+
import xyz.acrylicstyle.util.reflector.FieldGetter;
9+
import xyz.acrylicstyle.util.reflector.Reflector;
10+
import xyz.acrylicstyle.util.reflector.ReflectorHandler;
11+
12+
public interface EntityPlayer {
13+
static @NotNull EntityPlayer getInstance(@Nullable Object o) {
14+
return Reflector.newReflector(null, EntityPlayer.class,
15+
new ReflectorHandler(ReflectionUtil.getNMSClass("net.minecraft.server.level.EntityPlayer"), o));
16+
}
17+
18+
@NotNull
19+
@CastTo(value = ServerCommonPacketListenerImpl.class, createInstance = true)
20+
@FieldGetter("connection")
21+
ServerCommonPacketListenerImpl getPlayerConnection();
22+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package net.azisaba.loreeditor.v1_21_3.item;
2+
3+
import net.azisaba.loreeditor.api.item.CraftItemStack;
4+
import net.azisaba.loreeditor.api.item.ItemStack;
5+
import net.azisaba.loreeditor.common.util.Reflected;
6+
import org.jetbrains.annotations.Contract;
7+
import org.jetbrains.annotations.NotNull;
8+
import org.jetbrains.annotations.Nullable;
9+
10+
public class CraftItemStackImpl implements CraftItemStack {
11+
@Contract(value = "_ -> new", pure = true)
12+
@Reflected
13+
public static @NotNull CraftItemStackImpl getInstance(@Nullable Object item) {
14+
return new CraftItemStackImpl();
15+
}
16+
17+
@Override
18+
public @Nullable ItemStack asNMSCopy(org.bukkit.inventory.@Nullable ItemStack item) {
19+
return new ItemStackImpl(org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(item));
20+
}
21+
22+
@NotNull
23+
@Override
24+
public org.bukkit.inventory.ItemStack asCraftMirror(@NotNull ItemStack item) {
25+
return org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(((ItemStackImpl) item).handle());
26+
}
27+
}

0 commit comments

Comments
 (0)