Skip to content

Commit 116e3bf

Browse files
committed
use Item Component factory in 1.20.5+
1 parent a3cf27b commit 116e3bf

File tree

2 files changed

+23
-5
lines changed

2 files changed

+23
-5
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@
144144
<dependency>
145145
<groupId>org.spigotmc</groupId>
146146
<artifactId>spigot-api</artifactId>
147-
<version>1.12.2-R0.1-SNAPSHOT</version>
147+
<version>1.18.2-R0.1-SNAPSHOT</version>
148148
<scope>provided</scope>
149149
</dependency>
150150

src/main/java/me/hsgamer/bettergui/modifier/NBTModifier.java

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package me.hsgamer.bettergui.modifier;
22

33
import com.google.gson.Gson;
4+
import me.hsgamer.hscore.bukkit.utils.VersionUtils;
45
import me.hsgamer.hscore.common.StringReplacer;
56
import me.hsgamer.hscore.common.Validate;
67
import me.hsgamer.hscore.minecraft.item.ItemModifier;
78
import org.bukkit.Bukkit;
9+
import org.bukkit.Material;
10+
import org.bukkit.NamespacedKey;
811
import org.bukkit.inventory.ItemStack;
912
import org.jetbrains.annotations.NotNull;
1013

@@ -15,6 +18,7 @@
1518

1619
public class NBTModifier implements ItemModifier<ItemStack> {
1720
private static final Gson GSON = new Gson();
21+
private static final boolean USE_ITEM_COMPONENT = VersionUtils.isAtLeast(20, 5);
1822
private String nbtData = "";
1923

2024
@SuppressWarnings("deprecation")
@@ -23,10 +27,24 @@ public class NBTModifier implements ItemModifier<ItemStack> {
2327
if (Validate.isNullOrEmpty(nbtData)) {
2428
return original;
2529
}
26-
try {
27-
return Bukkit.getUnsafe().modifyItemStack(original, StringReplacer.replace(nbtData, uuid, stringReplacers));
28-
} catch (Throwable throwable) {
29-
return original;
30+
31+
String replacedNbtData = StringReplacer.replace(nbtData, uuid, stringReplacers);
32+
33+
if (USE_ITEM_COMPONENT) {
34+
Material material = original.getType();
35+
NamespacedKey materialKey = material.getKey();
36+
String materialName = materialKey.toString();
37+
try {
38+
return Bukkit.getItemFactory().createItemStack(materialName + replacedNbtData);
39+
} catch (Throwable throwable) {
40+
return original;
41+
}
42+
} else {
43+
try {
44+
return Bukkit.getUnsafe().modifyItemStack(original, replacedNbtData);
45+
} catch (Throwable throwable) {
46+
return original;
47+
}
3048
}
3149
}
3250

0 commit comments

Comments
 (0)