Skip to content

Commit 26099a2

Browse files
authored
Merge pull request #195 from saildrag/develop
Bedrock Inventory
2 parents 4ed6959 + d1f5033 commit 26099a2

422 files changed

Lines changed: 5803 additions & 2199 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
package fr.maxlego08.menu.api;
2+
3+
import fr.maxlego08.menu.api.button.Button;
4+
import fr.maxlego08.menu.api.button.bedrock.BedrockButton;
5+
import fr.maxlego08.menu.api.button.dialogs.InputButton;
6+
import fr.maxlego08.menu.api.engine.InventoryEngine;
7+
import fr.maxlego08.menu.api.engine.InventoryResult;
8+
import fr.maxlego08.menu.api.enums.bedrock.BedrockType;
9+
import fr.maxlego08.menu.api.pattern.Pattern;
10+
import fr.maxlego08.menu.api.requirement.Requirement;
11+
import fr.maxlego08.menu.api.utils.InventoryReplacement;
12+
import fr.maxlego08.menu.api.utils.OpenWithItem;
13+
import org.bukkit.entity.Player;
14+
import org.bukkit.event.inventory.InventoryType;
15+
16+
import java.util.Collection;
17+
import java.util.Collections;
18+
import java.util.List;
19+
import java.util.Map;
20+
21+
public interface BedrockInventory extends Inventory {
22+
String getContent(Player player);
23+
24+
List<BedrockButton> getBedrockButtons();
25+
26+
List<BedrockButton> getBedrockButtons(Player player);
27+
28+
List<InputButton> getInputButtons();
29+
30+
List<InputButton> getInputButtons(Player player);
31+
32+
InventoryReplacement getInventoryReplacement();
33+
34+
List<Requirement> getRequirements();
35+
36+
BedrockType getBedrockType();
37+
38+
//TODO getOpenWithItem not implemented but need
39+
@Override
40+
default OpenWithItem getOpenWithItem() {
41+
return null;
42+
}
43+
44+
/**
45+
* Set unUsed méthod of Inventory Interface, don't used in BedrockInventory
46+
*
47+
*/
48+
49+
@Override
50+
default int size() {
51+
return 9;
52+
}
53+
54+
@Override
55+
default InventoryType getType() {
56+
return null;
57+
}
58+
59+
@Override
60+
default boolean shouldCancelItemPickup() {
61+
return false;
62+
}
63+
64+
@Override
65+
default Collection<Button> getButtons() {
66+
return Collections.emptyList();
67+
}
68+
69+
@Override
70+
default Collection<Pattern> getPatterns() {
71+
return Collections.emptyList();
72+
}
73+
74+
@Override
75+
default <T extends Button> List<T> getButtons(Class<T> type) {
76+
return Collections.emptyList();
77+
}
78+
79+
@Override
80+
default int getMaxPage(Collection<Pattern> patterns, Player player, Object... objects) {
81+
return 1;
82+
}
83+
84+
@Override
85+
default List<Button> sortButtons(int page, Object... objects) {
86+
return Collections.emptyList();
87+
}
88+
89+
@Override
90+
default List<Button> sortPatterns(Pattern pattern, int page, Object... objects) {
91+
return Collections.emptyList();
92+
}
93+
94+
@Override
95+
default InventoryResult openInventory(Player player, InventoryEngine InventoryEngine) {
96+
return null;
97+
}
98+
99+
@Override
100+
default void postOpenInventory(Player player, InventoryEngine InventoryEngine) {};
101+
102+
@Override
103+
default void closeInventory(Player player, InventoryEngine InventoryEngine) {}
104+
105+
@Override
106+
default MenuItemStack getFillItemStack() {
107+
return null;
108+
}
109+
110+
@Override
111+
default int getUpdateInterval() {
112+
return 0;
113+
}
114+
115+
@Override
116+
default boolean cleanInventory() {
117+
return false;
118+
}
119+
120+
@Override
121+
default Map<String, String> getTranslatedNames() {
122+
return null;
123+
}
124+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package fr.maxlego08.menu.api;
2+
3+
import fr.maxlego08.menu.api.exceptions.DialogException;
4+
import fr.maxlego08.menu.api.exceptions.InventoryException;
5+
import org.bukkit.entity.Player;
6+
import org.bukkit.plugin.Plugin;
7+
8+
import java.io.File;
9+
import java.util.Collection;
10+
import java.util.List;
11+
import java.util.Optional;
12+
13+
public interface BedrockManager {
14+
15+
BedrockInventory loadBedrockInventory(Plugin plugin, String fileName) throws DialogException;
16+
17+
Optional<BedrockInventory> getBedrockInventory(String name);
18+
19+
Optional<BedrockInventory> getBedrockInventory(String pluginName, String fileName);
20+
21+
Optional<BedrockInventory> getBedrockInventory(Plugin plugin, String fileName);
22+
23+
void deleteBedrockInventory(String name);
24+
25+
void deleteBedrockInventory(Plugin plugin);
26+
27+
void loadBedrockInventory();
28+
29+
BedrockInventory loadInventory(Plugin plugin, String fileName) throws DialogException, InventoryException;
30+
31+
BedrockInventory loadInventory(Plugin plugin, File file) throws DialogException, InventoryException;
32+
33+
BedrockInventory loadInventory(Plugin plugin, String fileName, Class<? extends BedrockInventory> dialogClass) throws DialogException, InventoryException;
34+
35+
BedrockInventory loadInventory(Plugin plugin, File file, Class<? extends BedrockInventory> dialogClass) throws DialogException, InventoryException;
36+
37+
void openBedrockInventory(Player player, BedrockInventory bedrockInventory);
38+
39+
void openBedrockInventory(Player player, BedrockInventory bedrockInventory, List<Inventory> oldInventories);
40+
41+
Collection<BedrockInventory> getBedrockInventory();
42+
43+
void reloadBedrockInventory();
44+
45+
boolean isBedrockPlayer(Player player);
46+
47+
boolean isBedrockPlayer(String playerName);
48+
}

API/src/main/java/fr/maxlego08/menu/api/DialogInventory.java

Lines changed: 95 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,29 @@
11
package fr.maxlego08.menu.api;
22

3+
import fr.maxlego08.menu.api.button.Button;
34
import fr.maxlego08.menu.api.button.dialogs.BodyButton;
45
import fr.maxlego08.menu.api.button.dialogs.InputButton;
5-
import fr.maxlego08.menu.api.enums.DialogType;
6+
import fr.maxlego08.menu.api.engine.InventoryEngine;
7+
import fr.maxlego08.menu.api.engine.InventoryResult;
8+
import fr.maxlego08.menu.api.enums.dialog.DialogType;
9+
import fr.maxlego08.menu.api.pattern.Pattern;
610
import fr.maxlego08.menu.api.requirement.Requirement;
11+
import fr.maxlego08.menu.api.utils.OpenWithItem;
712
import fr.maxlego08.menu.api.utils.dialogs.record.ActionButtonRecord;
813
import fr.maxlego08.menu.api.utils.dialogs.record.ZDialogInventoryBuild;
914
import org.bukkit.entity.Player;
1015
import org.jetbrains.annotations.NotNull;
16+
import org.bukkit.event.inventory.InventoryType;
1117

1218
import java.io.File;
19+
import java.util.Collection;
20+
import java.util.Collections;
1321
import java.util.List;
22+
import java.util.Map;
1423

15-
public interface DialogInventory {
16-
String getName(Player player);
17-
24+
public interface DialogInventory extends Inventory{
1825
String getExternalTitle();
1926

20-
String getFileName();
21-
22-
MenuPlugin getPlugin();
23-
24-
File getFile();
25-
26-
void setFile(File file);
27-
2827
boolean canCloseWithEscape();
2928

3029
void setCanCloseWithEscape(boolean canCloseWithEscape);
@@ -140,9 +139,90 @@ public interface DialogInventory {
140139

141140
ActionButtonRecord getActionButtonServerLink();
142141

143-
void setOpenRequirement(Requirement openRequirement);
142+
//TODO getOpenWithItem not implemented but need
143+
@Override
144+
default OpenWithItem getOpenWithItem() {
145+
return null;
146+
}
144147

145-
Requirement getOpenRequirement();
148+
/**
149+
* Set unUsed méthod of Inventory Interface, don't used in BedrockInventory
150+
*
151+
*/
146152

147-
boolean hasOpenRequirement(Player player);
153+
@Override
154+
default int size() {
155+
return 9;
156+
}
157+
158+
@Override
159+
default InventoryType getType() {
160+
return null;
161+
}
162+
163+
@Override
164+
default boolean shouldCancelItemPickup() {
165+
return false;
166+
}
167+
168+
@Override
169+
default Collection<Button> getButtons() {
170+
return Collections.emptyList();
171+
}
172+
173+
@Override
174+
default Collection<Pattern> getPatterns() {
175+
return Collections.emptyList();
176+
}
177+
178+
@Override
179+
default <T extends Button> List<T> getButtons(Class<T> type) {
180+
return Collections.emptyList();
181+
}
182+
183+
@Override
184+
default int getMaxPage(Collection<Pattern> patterns, Player player, Object... objects) {
185+
return 1;
186+
}
187+
188+
@Override
189+
default List<Button> sortButtons(int page, Object... objects) {
190+
return Collections.emptyList();
191+
}
192+
193+
@Override
194+
default List<Button> sortPatterns(Pattern pattern, int page, Object... objects) {
195+
return Collections.emptyList();
196+
}
197+
198+
@Override
199+
default InventoryResult openInventory(Player player, InventoryEngine InventoryEngine) {
200+
return null;
201+
}
202+
203+
@Override
204+
default void postOpenInventory(Player player, InventoryEngine InventoryEngine) {};
205+
206+
@Override
207+
default void closeInventory(Player player, InventoryEngine InventoryEngine) {}
208+
209+
@Override
210+
default MenuItemStack getFillItemStack() {
211+
return null;
212+
}
213+
214+
@Override
215+
default int getUpdateInterval() {
216+
return 0;
217+
}
218+
219+
@Override
220+
default boolean cleanInventory() {
221+
return false;
222+
}
223+
224+
@Override
225+
default Map<String, String> getTranslatedNames() {
226+
return null;
227+
}
148228
}

API/src/main/java/fr/maxlego08/menu/api/DialogManager.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import java.io.File;
1010
import java.util.Collection;
11+
import java.util.List;
1112
import java.util.Optional;
1213

1314
public interface DialogManager {
@@ -40,9 +41,9 @@ public interface DialogManager {
4041

4142
//Optional<DialogBuilder> getDialogBuilder(DialogBodyType type);
4243

43-
Collection<DialogInventory> getDialogs();
44+
void openDialog(Player player, DialogInventory dialogInventory, List<Inventory> oldInventories);
4445

45-
InventoryManager getInventoryManager();
46+
Collection<DialogInventory> getDialogs();
4647

4748
void reloadDialogs();
4849

API/src/main/java/fr/maxlego08/menu/api/Inventory.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,13 @@
99
import fr.maxlego08.menu.api.requirement.ConditionalName;
1010
import fr.maxlego08.menu.api.requirement.Requirement;
1111
import fr.maxlego08.menu.api.utils.ClearInvType;
12+
import fr.maxlego08.menu.api.utils.InventoryReplacement;
1213
import fr.maxlego08.menu.api.utils.OpenWithItem;
1314
import fr.maxlego08.menu.api.utils.Placeholders;
1415
import org.bukkit.entity.Player;
1516
import org.bukkit.event.inventory.InventoryType;
1617
import org.bukkit.plugin.Plugin;
18+
import org.jetbrains.annotations.Nullable;
1719

1820
import java.io.File;
1921
import java.util.Collection;
@@ -231,4 +233,9 @@ public interface Inventory {
231233
ClearInvType getClearInvType();
232234

233235
boolean isClickLimiterEnabled();
236+
237+
@Nullable
238+
InventoryReplacement getInventoryReplacement();
239+
240+
void setInventoryReplacement(InventoryReplacement inventoryReplacement);
234241
}

API/src/main/java/fr/maxlego08/menu/api/MenuPlugin.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,8 @@ public interface MenuPlugin extends Plugin {
185185
*/
186186
CommandManager getCommandManager();
187187

188+
BedrockManager getBedrockManager();
189+
188190
/**
189191
* Returns the storage manager.
190192
* This method returns the storage manager, which is used for storing and retrieving data.

API/src/main/java/fr/maxlego08/menu/api/attribute/AttributeWrapper.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import org.bukkit.attribute.AttributeModifier;
88
import org.bukkit.inventory.EquipmentSlotGroup;
99
import org.jetbrains.annotations.NotNull;
10-
import org.jetbrains.annotations.Nullable;
10+
import org.jspecify.annotations.Nullable;
1111

1212
import java.util.Locale;
1313
import java.util.Map;
@@ -18,7 +18,7 @@
1818
* Value object for encapsulating all data needed for an attribute modifier on an item: the attribute, operation, amount, and slot.
1919
* Provides deserialization and conversion to Bukkit AttributeModifier.
2020
*/
21-
public record AttributeWrapper(Attribute attribute, AttributeModifier.Operation operation, double amount, EquipmentSlotGroup slot, @Nullable NamespacedKey namespacedKey) {
21+
public record AttributeWrapper(@NotNull Attribute attribute,@NotNull AttributeModifier.Operation operation, double amount,@NotNull EquipmentSlotGroup slot, @Nullable NamespacedKey namespacedKey) {
2222

2323
AttributeWrapper(Attribute attribute, AttributeModifier.Operation operation, double amount, EquipmentSlotGroup slot) {
2424
this(attribute, operation, amount, slot, null);
@@ -35,6 +35,6 @@ public static AttributeWrapper deserialize(@NotNull Map<String, Object> attribut
3535
}
3636

3737
public AttributeModifier toAttributeModifier(MenuPlugin plugin) {
38-
return new AttributeModifier(Objects.requireNonNullElseGet(this.namespacedKey, () -> new NamespacedKey(plugin, UUID.randomUUID().toString())), amount, operation, slot);
38+
return new AttributeModifier(Objects.requireNonNullElseGet(this.namespacedKey, () -> new NamespacedKey(plugin, UUID.randomUUID().toString())), this.amount, this.operation, this.slot);
3939
}
4040
}

0 commit comments

Comments
 (0)