2323import org .jetbrains .annotations .Nullable ;
2424
2525import java .util .*;
26+ import java .util .function .Function ;
2627import java .util .function .Supplier ;
2728import java .util .function .UnaryOperator ;
2829
@@ -114,6 +115,8 @@ public PaginatedInventoryBuilder shapeReplacements(@NonNull Map<Character, ItemB
114115 return this ;
115116 }
116117
118+ //ItemStack
119+
117120 public @ NotNull PaginatedInventoryBuilder setReplacementItemStackByCustomData (@ NotNull Object key , @ Nullable Object value , @ NotNull Supplier <ItemStack > itemSupplier ) {
118121 for (ItemButton button : shapeReplacements .values ())
119122 if (Objects .equals (button .getCustomData ().get (key ), value ))
@@ -129,6 +132,15 @@ public PaginatedInventoryBuilder shapeReplacements(@NonNull Map<Character, ItemB
129132 return this ;
130133 }
131134
135+ public @ NotNull PaginatedInventoryBuilder setReplacementItemStackByCustomData (@ NotNull Object key , @ Nullable Object value , @ NotNull Function <ItemStack , ItemStack > replacer ) {
136+ for (ItemButton button : shapeReplacements .values ())
137+ if (Objects .equals (button .getCustomData ().get (key ), value ))
138+ button .setItem (() -> replacer .apply (button .getItem ().get ()));
139+ return this ;
140+ }
141+
142+ //ItemBuilder
143+
132144 public @ NotNull PaginatedInventoryBuilder setReplacementItemByCustomData (@ NotNull Object key , @ Nullable Object value , @ NotNull Supplier <ItemBuilder > itemSupplier ) {
133145 Supplier <ItemStack > itemStackSupplier = () -> itemSupplier .get ().build ();
134146 for (ItemButton button : shapeReplacements .values ())
@@ -145,6 +157,15 @@ public PaginatedInventoryBuilder shapeReplacements(@NonNull Map<Character, ItemB
145157 return this ;
146158 }
147159
160+ public @ NotNull PaginatedInventoryBuilder setReplacementItemByCustomData (@ NotNull Object key , @ Nullable Object value , @ NotNull Function <ItemBuilder , ItemBuilder > replacer ) {
161+ for (ItemButton button : shapeReplacements .values ())
162+ if (Objects .equals (button .getCustomData ().get (key ), value ))
163+ button .setItem (() -> replacer .apply (ItemBuilder .fromItemStack (button .getItem ().get ())).build ());
164+ return this ;
165+ }
166+
167+ //rest of the code
168+
148169 public PaginatedInventoryBuilder content (@ Nullable List <ItemButton > content ) {
149170 this .content = content == null ? new ArrayList <>() : content ;
150171 checkNullContent ();
0 commit comments