1
1
package me .flame .menus .menu .fillers ;
2
2
3
- import lombok .val ;
4
- import lombok .var ;
5
3
import me .flame .menus .items .MenuItem ;
6
4
import me .flame .menus .menu .BaseMenu ;
5
+
7
6
import org .bukkit .Material ;
8
7
import org .bukkit .inventory .ItemStack ;
8
+
9
9
import org .jetbrains .annotations .Contract ;
10
10
import org .jetbrains .annotations .NotNull ;
11
11
12
+ @ SuppressWarnings ("unused" )
12
13
public final class Filler implements MenuFiller {
13
14
@ NotNull
14
- private final BaseMenu <?> menu ;
15
+ private final BaseMenu menu ;
15
16
16
- private Filler (@ NotNull BaseMenu <?> menu ) {
17
+ private Filler (@ NotNull BaseMenu menu ) {
17
18
this .menu = menu ;
18
19
}
19
20
20
21
@ NotNull
21
22
@ Contract (value = "_ -> new" , pure = true )
22
- public static Filler from (@ NotNull BaseMenu <?> menu ) {
23
+ public static Filler from (@ NotNull BaseMenu menu ) {
23
24
return new Filler (menu );
24
25
}
25
26
26
- /**
27
- * Fills the menu with the specified border material.
28
- *
29
- * @param borderMaterial the material to be used for filling the borders
30
- */
31
27
public void fill (Material borderMaterial ) {
32
28
final int size = menu .getSize ();
33
29
30
+ MenuItem stack = MenuItem .of (new ItemStack (borderMaterial ));
34
31
for (int i = 0 ; i < size ; i ++) {
35
- val item = menu .getItem (i );
32
+ MenuItem item = menu .getItem (i );
36
33
if (item == null || item .getType () == Material .AIR ) {
37
- menu .setItem (i , new ItemStack ( borderMaterial ) );
34
+ menu .setItem (i , stack );
38
35
}
39
36
}
40
37
}
41
38
42
- /**
43
- * Fills the menu with the specified border material.
44
- * @param menuItem the material to be used for filling the borders
45
- */
46
39
public void fill (@ NotNull MenuItem menuItem ) {
47
40
final int size = menu .getSize ();
48
41
49
42
for (int i = 0 ; i < size ; i ++) {
50
- val item = menu .getItem (i );
43
+ MenuItem item = menu .getItem (i );
51
44
if (item == null || item .getType () == Material .AIR ) {
52
45
menu .setItem (i , menuItem );
53
46
}
54
47
}
55
48
}
56
49
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 ) {
63
51
final int size = menu .getSize ();
64
52
53
+ MenuItem stack = MenuItem .of (itemS );
65
54
for (int i = 0 ; i < size ; i ++) {
66
- val item = menu .getItem (i );
55
+ MenuItem item = menu .getItem (i );
67
56
if (item == null || item .getType () == Material .AIR ) {
68
- menu .setItem (i , itemStack );
57
+ menu .setItem (i , stack );
69
58
}
70
59
}
71
60
}
72
61
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
- */
78
62
public void fillBorders (Material borderMaterial ) {
79
63
final int size = menu .getSize ();
80
- final var itemStack = new ItemStack (borderMaterial );
81
64
65
+ final MenuItem stack = MenuItem .of (new ItemStack (borderMaterial ));
82
66
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 );
84
68
}
85
69
}
86
70
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
- */
92
71
public void fillBorders (@ NotNull MenuItem borderMaterial ) {
93
72
final int size = menu .getSize ();
94
73
@@ -97,16 +76,66 @@ public void fillBorders(@NotNull MenuItem borderMaterial) {
97
76
}
98
77
}
99
78
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
- */
105
79
public void fillBorders (ItemStack itemStack ) {
106
80
final int size = menu .getSize ();
107
81
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
+
108
109
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 );
110
111
}
111
112
}
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
112
141
}
0 commit comments