Skip to content

Commit 3a53d19

Browse files
committed
v2.1.0.1
1 parent a6e26cd commit 3a53d19

4 files changed

Lines changed: 55 additions & 15 deletions

File tree

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ dependencies {
4646
implementation 'com.jeff-media:MorePersistentDataTypes:2.4.0'
4747

4848
compileOnly files('libs/folia-api-1.20.4-R0.1-SNAPSHOT.jar') // Modified API jar with Java 8 support
49-
compileOnly 'net.kyori:adventure-api:4.26.1' // Not used but needed for Folia compilation
49+
compileOnly 'net.kyori:adventure-api:4.26.1'
5050
compileOnly 'net.kyori:adventure-platform-bukkit:4.4.1'
5151
compileOnly 'org.spigotmc:spigot-api:1.14.4-R0.1-SNAPSHOT'
5252
compileOnly 'org.jetbrains:annotations:26.0.2'

src/main/java/me/byteful/plugin/leveltools/profile/item/ItemProfileLoader.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package me.byteful.plugin.leveltools.profile.item;
22

3+
import com.cryptomorin.xseries.XMaterial;
34
import org.bukkit.Material;
45
import org.bukkit.configuration.ConfigurationSection;
56
import org.bukkit.configuration.file.FileConfiguration;
@@ -152,9 +153,10 @@ private Set<Material> parseMaterials(@NotNull List<String> materialNames) {
152153

153154
for (String name : materialNames) {
154155
try {
155-
Material material = Material.valueOf(name.toUpperCase());
156-
materials.add(material);
157-
} catch (IllegalArgumentException e) {
156+
Optional<XMaterial> material = XMaterial.matchXMaterial(name.toUpperCase());
157+
158+
materials.add(Objects.requireNonNull(material.get().get()));
159+
} catch (IllegalArgumentException | NoSuchElementException | NullPointerException e) {
158160
logger.warning("Unknown material: " + name);
159161
}
160162
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package me.byteful.plugin.leveltools.util;
2+
3+
import net.kyori.adventure.text.Component;
4+
import net.kyori.adventure.text.TextComponent;
5+
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
6+
import org.bukkit.inventory.ItemStack;
7+
import org.bukkit.inventory.meta.ItemMeta;
8+
9+
final class AdventureHelper {
10+
private AdventureHelper() {
11+
}
12+
13+
static void setDisplayNameWithTranslatable(ItemMeta meta, String text, ItemStack stack) {
14+
Component translatable = Component.translatable(stack.getType().translationKey());
15+
TextComponent parsed = LegacyComponentSerializer.legacySection().deserialize(text);
16+
17+
TextComponent.Builder result = Component.text();
18+
processComponent(parsed, translatable, result);
19+
20+
meta.displayName(result.build());
21+
}
22+
23+
private static void processComponent(TextComponent component, Component translatable, TextComponent.Builder result) {
24+
String content = component.content();
25+
if (content.contains("{item}")) {
26+
String[] parts = content.split("\\{item}", -1);
27+
for (int i = 0; i < parts.length; i++) {
28+
if (!parts[i].isEmpty()) {
29+
result.append(Component.text(parts[i]).style(component.style()));
30+
}
31+
if (i < parts.length - 1) {
32+
result.append(translatable);
33+
}
34+
}
35+
} else if (!content.isEmpty()) {
36+
result.append(Component.text(content).style(component.style()));
37+
}
38+
39+
for (Component child : component.children()) {
40+
if (child instanceof TextComponent) {
41+
processComponent((TextComponent) child, translatable, result);
42+
} else {
43+
result.append(child);
44+
}
45+
}
46+
}
47+
}

src/main/java/me/byteful/plugin/leveltools/util/LevelToolsUtil.java

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@
1515
import me.byteful.plugin.leveltools.profile.item.ItemProfile;
1616
import me.byteful.plugin.leveltools.profile.reward.RewardEntry;
1717
import me.byteful.plugin.leveltools.profile.reward.RewardProfile;
18-
import net.kyori.adventure.text.Component;
19-
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
2018
import net.md_5.bungee.api.ChatMessageType;
2119
import net.md_5.bungee.api.chat.TextComponent;
2220
import org.bukkit.Bukkit;
@@ -38,7 +36,6 @@
3836
import java.util.stream.Collectors;
3937

4038
import static me.byteful.plugin.leveltools.util.Text.*;
41-
import static net.kyori.adventure.text.Component.translatable;
4239

4340
public final class LevelToolsUtil {
4441
public static final int MID_VERSION;
@@ -171,14 +168,8 @@ public static ItemStack buildItemStack(
171168
.replace("{xp_formatted}", formatMoney(xp))
172169
.replace("{progress_bar}", progressBar));
173170

174-
if (nameDisplay.getText().contains("{item}") && IS_PAPER) {
175-
final net.kyori.adventure.text.TextComponent component = LegacyComponentSerializer.legacySection().deserialize(text);
176-
for (Component child : component.children()) {
177-
if (child instanceof net.kyori.adventure.text.TextComponent && ((net.kyori.adventure.text.TextComponent) child).content().equals("{item}")) {
178-
((net.kyori.adventure.text.TextComponent) child).content("");
179-
child.append(translatable(stack.getType().translationKey()));
180-
}
181-
}
171+
if (nameDisplay.getText().contains("{item}") && MID_VERSION >= 13 && IS_PAPER) {
172+
AdventureHelper.setDisplayNameWithTranslatable(meta, text, stack);
182173
} else {
183174
meta.setDisplayName(text);
184175
}

0 commit comments

Comments
 (0)