Skip to content

Commit 1be68bc

Browse files
Update Lore.java
1 parent 614f4c7 commit 1be68bc

File tree

1 file changed

+45
-18
lines changed
  • adventure/src/main/java/me/flame/menus/adventure

1 file changed

+45
-18
lines changed

adventure/src/main/java/me/flame/menus/adventure/Lore.java

Lines changed: 45 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,15 @@
1313
import java.util.ArrayList;
1414
import java.util.Iterator;
1515
import java.util.List;
16-
import java.util.function.Consumer;
16+
import java.util.NoSuchElementException;
1717

1818
@SuppressWarnings({ "deprecation", "ForLoopReplaceableByForEach" })
1919
public class Lore implements Iterable<TextHolder> {
2020
private final ItemMeta meta;
21-
private final List<TextHolder> lore;
21+
private TextHolder[] lore;
2222

2323
private static final Lore EMPTY = new Lore((ItemMeta) null);
24-
private static final List<TextHolder> EMPTY_LORE = new ArrayList<>(0);
24+
private static final TextHolder[] EMPTY_LORE = new TextHolder[0];
2525

2626
public Lore(ItemMeta meta) {
2727
this.meta = meta;
@@ -33,7 +33,7 @@ public Lore(@NotNull Lore lore) {
3333
this.lore = lore.lore;
3434
}
3535

36-
private static @NotNull List<TextHolder> lore(ItemMeta meta) {
36+
private static @NotNull TextHolder[] lore(ItemMeta meta) {
3737
if (meta == null || !meta.hasLore()) return EMPTY_LORE;
3838
List<Component> components = meta.lore();
3939
Validate.notNull(components);
@@ -43,10 +43,10 @@ public Lore(@NotNull Lore lore) {
4343
for (int componentIndex = 0; componentIndex < size; componentIndex++) {
4444
lore.add(CompHolder.of(components.get(componentIndex)));
4545
}
46-
return lore;
46+
return lore.toArray(TextHolder[]::new);
4747
}
4848

49-
private static @NotNull List<TextHolder> getLore(ItemMeta meta) {
49+
private static @NotNull TextHolder[] getLore(ItemMeta meta) {
5050
if (meta == null || !meta.hasLore()) return EMPTY_LORE;
5151
List<String> components = meta.getLore();
5252
Validate.notNull(components);
@@ -56,38 +56,65 @@ public Lore(@NotNull Lore lore) {
5656
for (int componentIndex = 0; componentIndex < size; componentIndex++) {
5757
lore.add(CompHolder.of(components.get(componentIndex)));
5858
}
59-
return lore;
59+
return lore.toArray(TextHolder[]::new);
6060
}
6161

6262
public static Lore empty() {
6363
return EMPTY;
6464
}
6565

6666
public int size() {
67-
return lore.size();
67+
return lore.length;
6868
}
6969

7070
public TextHolder get(int stringIndex) {
71-
return lore.get(stringIndex);
71+
if (stringIndex >= lore.length) return null;
72+
return lore[stringIndex];
7273
}
7374

7475
@NotNull
7576
@Override
7677
public Iterator<TextHolder> iterator() {
77-
return lore.listIterator();
78-
}
79-
80-
@Override
81-
public void forEach(Consumer<? super TextHolder> action) {
82-
lore.forEach(action);
78+
return new TextHolderIterator(this);
8379
}
8480

8581
public void set(int stringIndex, TextHolder of) {
86-
lore.set(stringIndex, of);
82+
if (stringIndex >= lore.length) return;
83+
lore[stringIndex] = of;
8784
}
8885

89-
public void toItemLore(ItemStack itemStack) {
86+
public void toItemLore(ItemStack itemStack, boolean setMeta) {
9087
for (TextHolder textHolder : lore) textHolder.asItemLoreAtEnd(meta);
91-
itemStack.setItemMeta(meta);
88+
if (setMeta) itemStack.setItemMeta(meta);
89+
}
90+
91+
public void copyFrom(TextHolder[] newLore) {
92+
this.lore = newLore;
93+
}
94+
95+
public static class TextHolderIterator implements Iterator<TextHolder> {
96+
private final Lore lore;
97+
private int index;
98+
private final int length;
99+
100+
@Contract(pure = true)
101+
public TextHolderIterator(@NotNull Lore lore) {
102+
this.lore = lore;
103+
this.length = lore.lore.length;
104+
}
105+
106+
107+
@Override
108+
public boolean hasNext() {
109+
return index < length;
110+
}
111+
112+
@Override
113+
public TextHolder next() {
114+
if (index >= length) throw new NoSuchElementException();
115+
TextHolder holder = lore.get(index);
116+
index++;
117+
return holder;
118+
}
92119
}
93120
}

0 commit comments

Comments
 (0)