Skip to content

Commit 0bb3664

Browse files
Some useful updates
Significantly improved adventure compatibility State made experimental; there's just one issue that's not noticeable to people and that is if State is done once, the key will never exist again
1 parent 4c506e0 commit 0bb3664

File tree

1 file changed

+45
-17
lines changed
  • core/src/main/java/me/flame/menus/items/states

1 file changed

+45
-17
lines changed

core/src/main/java/me/flame/menus/items/states/State.java

Lines changed: 45 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,17 @@
22

33
import com.google.common.base.Preconditions;
44

5+
import me.flame.menus.adventure.Lore;
6+
import me.flame.menus.adventure.TextHolder;
57
import me.flame.menus.items.MenuItem;
68

7-
import org.bukkit.Bukkit;
89
import org.bukkit.inventory.ItemStack;
910

11+
import org.bukkit.inventory.meta.ItemMeta;
12+
import org.jetbrains.annotations.ApiStatus;
1013
import org.jetbrains.annotations.Contract;
1114
import org.jetbrains.annotations.NotNull;
1215

13-
import java.util.List;
1416
import java.util.function.DoubleSupplier;
1517
import java.util.function.IntSupplier;
1618
import java.util.function.LongSupplier;
@@ -29,12 +31,13 @@
2931
* @author FlameyosFlow
3032
* @since 2.0.0
3133
*/
34+
@ApiStatus.Experimental
3235
public class State {
33-
private final String key;
36+
private final TextHolder key;
3437
private final MenuItem item;
35-
private final Supplier<String> value;
38+
private final Supplier<TextHolder> value;
3639

37-
private State(String key, Supplier<String> value, @NotNull MenuItem item) {
40+
private State(TextHolder key, Supplier<TextHolder> value, @NotNull MenuItem item) {
3841
this.item = item;
3942

4043
ItemStack stack = item.getItemStack();
@@ -51,38 +54,63 @@ private State(String key, Supplier<String> value, @NotNull MenuItem item) {
5154

5255
@Contract(value = "_, _, _ -> new", pure = true)
5356
public static @NotNull State of(String key, String value, MenuItem item) {
54-
return new State(key, () -> value, item);
57+
return new State(TextHolder.of(key), () -> TextHolder.of(value), item);
5558
}
5659

5760
@Contract(value = "_, _, _ -> new", pure = true)
5861
public static @NotNull State of(String key, IntSupplier value, MenuItem item) {
59-
return new State(key, () -> String.valueOf(value.getAsInt()), item);
62+
return new State(TextHolder.of(key), () -> TextHolder.of(String.valueOf(value.getAsInt())), item);
6063
}
6164

6265
@Contract(value = "_, _, _ -> new", pure = true)
6366
public static @NotNull State of(String key, DoubleSupplier value, MenuItem item) {
64-
return new State(key, () -> String.valueOf(value.getAsDouble()), item);
67+
return new State(TextHolder.of(key), () -> TextHolder.of(String.valueOf(value.getAsDouble())), item);
6568
}
6669

6770
@Contract(value = "_, _, _ -> new", pure = true)
6871
public static @NotNull State of(String key, LongSupplier value, MenuItem item) {
69-
return new State(key, () -> String.valueOf(value.getAsLong()), item);
72+
return new State(TextHolder.of(key), () -> TextHolder.of(String.valueOf(value.getAsLong())), item);
73+
}
74+
75+
@Contract(value = "_, _, _ -> new", pure = true)
76+
public static @NotNull State of(TextHolder key, String value, MenuItem item) {
77+
return new State(key, () -> TextHolder.of(value), item);
78+
}
79+
80+
@Contract(value = "_, _, _ -> new", pure = true)
81+
public static @NotNull State of(TextHolder key, IntSupplier value, MenuItem item) {
82+
return new State(key, () -> TextHolder.of(String.valueOf(value.getAsInt())), item);
83+
}
84+
85+
@Contract(value = "_, _, _ -> new", pure = true)
86+
public static @NotNull State of(TextHolder key, DoubleSupplier value, MenuItem item) {
87+
return new State(key, () -> TextHolder.of(String.valueOf(value.getAsDouble())), item);
88+
}
89+
90+
@Contract(value = "_, _, _ -> new", pure = true)
91+
public static @NotNull State of(TextHolder key, LongSupplier value, MenuItem item) {
92+
return new State(key, () -> TextHolder.of(String.valueOf(value.getAsLong())), item);
93+
}
94+
95+
@Contract(value = "_, _, _ -> new", pure = true)
96+
public static @NotNull State of(TextHolder key, TextHolder value, MenuItem item) {
97+
return new State(key, () -> value, item);
7098
}
7199

72100
@Contract(pure = true)
73101
public void update() {
74102
ItemStack otherItem = item.getItemStack();
75-
List<String> list = Preconditions.checkNotNull(otherItem.getItemMeta()).getLore();
76-
if (list == null) return;
103+
ItemMeta meta = Preconditions.checkNotNull(otherItem.getItemMeta());
104+
Lore lore = new Lore(meta);
77105

78-
int size = list.size();
79-
for (int stringIndex = 0; stringIndex < size; stringIndex++) replaceWithKey(stringIndex, list);
80-
item.editor().setLore(list).done();
106+
int size = lore.size();
107+
for (int stringIndex = 0; stringIndex < size; stringIndex++) replaceWithKey(stringIndex, lore, key, value);
108+
lore.toItemLore(item.getItemStack());
81109
}
82110

83-
private void replaceWithKey(int stringIndex, @NotNull List<String> list) {
84-
String currentString = list.get(stringIndex);
111+
private static void replaceWithKey(int stringIndex, @NotNull Lore list, TextHolder key, Supplier<TextHolder> value) {
112+
TextHolder currentString = list.get(stringIndex);
85113
if (!currentString.contains(key)) return;
86-
list.set(stringIndex, currentString.replace(key, value.get()));
114+
list.set(stringIndex, value.get());
87115
}
88116
}

0 commit comments

Comments
 (0)