Skip to content

Commit a147600

Browse files
New Filling API
1 parent 9677711 commit a147600

File tree

1 file changed

+72
-43
lines changed

1 file changed

+72
-43
lines changed
Lines changed: 72 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,94 +1,73 @@
11
package me.flame.menus.menu.fillers;
22

3-
import lombok.val;
4-
import lombok.var;
53
import me.flame.menus.items.MenuItem;
64
import me.flame.menus.menu.BaseMenu;
5+
76
import org.bukkit.Material;
87
import org.bukkit.inventory.ItemStack;
8+
99
import org.jetbrains.annotations.Contract;
1010
import org.jetbrains.annotations.NotNull;
1111

12+
@SuppressWarnings("unused")
1213
public final class Filler implements MenuFiller {
1314
@NotNull
14-
private final BaseMenu<?> menu;
15+
private final BaseMenu menu;
1516

16-
private Filler(@NotNull BaseMenu<?> menu) {
17+
private Filler(@NotNull BaseMenu menu) {
1718
this.menu = menu;
1819
}
1920

2021
@NotNull
2122
@Contract(value = "_ -> new", pure = true)
22-
public static Filler from(@NotNull BaseMenu<?> menu) {
23+
public static Filler from(@NotNull BaseMenu menu) {
2324
return new Filler(menu);
2425
}
2526

26-
/**
27-
* Fills the menu with the specified border material.
28-
*
29-
* @param borderMaterial the material to be used for filling the borders
30-
*/
3127
public void fill(Material borderMaterial) {
3228
final int size = menu.getSize();
3329

30+
MenuItem stack = MenuItem.of(new ItemStack(borderMaterial));
3431
for (int i = 0; i < size; i++) {
35-
val item = menu.getItem(i);
32+
MenuItem item = menu.getItem(i);
3633
if (item == null || item.getType() == Material.AIR) {
37-
menu.setItem(i, new ItemStack(borderMaterial));
34+
menu.setItem(i, stack);
3835
}
3936
}
4037
}
4138

42-
/**
43-
* Fills the menu with the specified border material.
44-
* @param menuItem the material to be used for filling the borders
45-
*/
4639
public void fill(@NotNull MenuItem menuItem) {
4740
final int size = menu.getSize();
4841

4942
for (int i = 0; i < size; i++) {
50-
val item = menu.getItem(i);
43+
MenuItem item = menu.getItem(i);
5144
if (item == null || item.getType() == Material.AIR) {
5245
menu.setItem(i, menuItem);
5346
}
5447
}
5548
}
5649

57-
/**
58-
* Fills the with the specified border material.
59-
*
60-
* @param itemStack the material to be used for filling the borders
61-
*/
62-
public void fill(ItemStack itemStack) {
50+
public void fill(ItemStack itemS) {
6351
final int size = menu.getSize();
6452

53+
MenuItem stack = MenuItem.of(itemS);
6554
for (int i = 0; i < size; i++) {
66-
val item = menu.getItem(i);
55+
MenuItem item = menu.getItem(i);
6756
if (item == null || item.getType() == Material.AIR) {
68-
menu.setItem(i, itemStack);
57+
menu.setItem(i, stack);
6958
}
7059
}
7160
}
7261

73-
/**
74-
* Fills the borders of the menu with the specified border material.
75-
*
76-
* @param borderMaterial the material to be used for filling the borders
77-
*/
7862
public void fillBorders(Material borderMaterial) {
7963
final int size = menu.getSize();
80-
final var itemStack = new ItemStack(borderMaterial);
8164

65+
final MenuItem stack = MenuItem.of(new ItemStack(borderMaterial));
8266
for (int i = 0; i < size; i++) {
83-
if (MenuFiller.isBorderSlot(i, size)) menu.setItem(i, itemStack);
67+
if (MenuFiller.isBorderSlot(i, size)) menu.setItem(i, stack);
8468
}
8569
}
8670

87-
/**
88-
* Fills the borders of the menu with the specified border material.
89-
*
90-
* @param borderMaterial the material to be used for filling the borders
91-
*/
9271
public void fillBorders(@NotNull MenuItem borderMaterial) {
9372
final int size = menu.getSize();
9473

@@ -97,16 +76,66 @@ public void fillBorders(@NotNull MenuItem borderMaterial) {
9776
}
9877
}
9978

100-
/**
101-
* Fills the borders of the menu with the specified border material.
102-
*
103-
* @param itemStack the material to be used for filling the borders
104-
*/
10579
public void fillBorders(ItemStack itemStack) {
10680
final int size = menu.getSize();
10781

82+
final MenuItem stack = MenuItem.of(itemStack);
83+
for (int i = 0; i < size; i++) {
84+
if (MenuFiller.isBorderSlot(i, size)) menu.setItem(i, stack);
85+
}
86+
}
87+
88+
public void fillRow(int row, Material borderMaterial) {
89+
final int size = menu.getSize();
90+
91+
MenuItem itemStack = MenuItem.of(new ItemStack(borderMaterial));
92+
for (int i = 0; i < size; i++) {
93+
if (i / 9 == row && !menu.hasItem(i)) menu.setItem(i, itemStack);
94+
}
95+
}
96+
97+
public void fillRow(int row, ItemStack borderMaterial) {
98+
final int size = menu.getSize();
99+
100+
MenuItem itemStack = MenuItem.of(borderMaterial);
101+
for (int i = 0; i < size; i++) {
102+
if (i / 9 == row && !menu.hasItem(i)) menu.setItem(i, itemStack);
103+
}
104+
}
105+
106+
public void fillRow(int row, MenuItem itemStack) {
107+
final int size = menu.getSize();
108+
108109
for (int i = 0; i < size; i++) {
109-
if (MenuFiller.isBorderSlot(i, size)) menu.setItem(i, itemStack);
110+
if ((i / 9) == row && !menu.hasItem(i)) menu.setItem(i, itemStack);
110111
}
111112
}
113+
114+
public void fillArea(int length, int width, Material borderMaterial) {
115+
final int size = menu.getSize();
116+
117+
MenuItem itemStack = MenuItem.of(new ItemStack(borderMaterial));
118+
for (int i = 0; i < size; i++) {
119+
if (MenuFiller.isInArea(i, length, width)) menu.setItem(i, itemStack);
120+
}
121+
}
122+
123+
public void fillArea(int length, int width, ItemStack borderMaterial) {
124+
final int size = menu.getSize();
125+
126+
MenuItem itemStack = MenuItem.of(borderMaterial);
127+
for (int i = 0; i < size; i++) {
128+
if (MenuFiller.isInArea(i, length, width)) menu.setItem(i, itemStack);
129+
}
130+
}
131+
132+
public void fillArea(int length, int width, MenuItem itemStack) {
133+
final int size = menu.getSize();
134+
135+
for (int i = 0; i < size; i++) {
136+
if (MenuFiller.isInArea(i, length, width)) menu.setItem(i, itemStack);
137+
}
138+
}
139+
140+
// isInArea = simple geometry to check if a slot is in an area of L*W
112141
}

0 commit comments

Comments
 (0)