Skip to content

Commit cbdb222

Browse files
committed
Improve how buttons is registerd
1 parent d4f8397 commit cbdb222

1 file changed

Lines changed: 38 additions & 49 deletions

File tree

Menu Configuration Manager/src/main/java/org/broken/arrow/library/menu/button/manager/utility/MenuButtonData.java

Lines changed: 38 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,12 @@
1717
*/
1818
public class MenuButtonData implements ConfigurationSerializable {
1919

20-
private final MenuButton passiveButton;
21-
private final MenuButton activeButton;
22-
private final Map<String, MenuButton> resolveCustomButtons;
20+
private final Map<String, MenuButton> resolveButtons;
2321
private final String actionType;
2422
private final List<String> extra;
2523

26-
private MenuButtonData(@Nonnull final MenuButton passiveButton, @Nullable final MenuButton activeButton,@Nonnull final Map<String, MenuButton> resolveCustomButtons, @Nullable String actionType, @Nullable List<String> extra) {
27-
this.passiveButton = passiveButton;
28-
this.activeButton = activeButton;
29-
this.resolveCustomButtons = resolveCustomButtons;
24+
private MenuButtonData(@Nonnull final Map<String, MenuButton> resolveButtons, @Nullable String actionType, @Nullable List<String> extra) {
25+
this.resolveButtons = resolveButtons;
3026
this.actionType = actionType;
3127
this.extra = extra;
3228
}
@@ -38,7 +34,10 @@ private MenuButtonData(@Nonnull final MenuButton passiveButton, @Nullable final
3834
*/
3935
@Nonnull
4036
public MenuButton getPassiveButton() {
41-
return passiveButton;
37+
final MenuButton menuButton = this.resolveButtons.get("passive");
38+
if (menuButton != null)
39+
return menuButton;
40+
return new MenuButton.Builder("STONE").setDisplayName("&4Not set a default button").build();
4241
}
4342

4443
/**
@@ -48,7 +47,7 @@ public MenuButton getPassiveButton() {
4847
*/
4948
@Nullable
5049
public MenuButton getActiveButton() {
51-
return activeButton;
50+
return this.resolveButtons.get("active");
5251
}
5352

5453
/**
@@ -57,7 +56,7 @@ public MenuButton getActiveButton() {
5756
* @return unmodifiable map containing all custom buttons
5857
*/
5958
public Map<String, MenuButton> getCustomButtons() {
60-
return Collections.unmodifiableMap(resolveCustomButtons);
59+
return Collections.unmodifiableMap(resolveButtons);
6160
}
6261

6362
/**
@@ -67,8 +66,8 @@ public Map<String, MenuButton> getCustomButtons() {
6766
* @return Returns your set button or null if not find it.
6867
*/
6968
@Nullable
70-
public MenuButton getCustomButton(final String name) {
71-
return resolveCustomButtons.get(name);
69+
public MenuButton getCustomButton(final String name) {
70+
return resolveButtons.get(name);
7271
}
7372

7473
/**
@@ -82,8 +81,8 @@ public MenuButton getCustomButton(final String name) {
8281
*/
8382
@Nonnull
8483
public MenuButton resolveCustomButton(final String name) {
85-
MenuButton menuButton = resolveCustomButtons.get(name);
86-
if(menuButton != null)
84+
MenuButton menuButton = resolveButtons.get(name);
85+
if (menuButton != null)
8786
return menuButton;
8887
return this.getPassiveButton();
8988
}
@@ -125,19 +124,18 @@ public boolean isActionTypeEqual(String actionType) {
125124
@Override
126125
public String toString() {
127126
return "MenuButtonData{" +
128-
"passive=" + passiveButton +
129-
", active=" + activeButton +
130-
", actionType=" + actionType +
127+
"resolveCustomButtons=" + resolveButtons +
128+
", actionType='" + actionType + '\'' +
129+
", extra=" + extra +
131130
'}';
132131
}
133132

134133
@Nonnull
135134
@Override
136135
public Map<String, Object> serialize() {
137136
final Map<String, Object> map = new LinkedHashMap<>();
138-
map.put("passive", this.passiveButton);
139-
map.put("active", this.activeButton);
140137
if (actionType != null) map.put("action_type", actionType);
138+
if (!resolveButtons.isEmpty()) map.put("buttons", resolveButtons);
141139
return map;
142140
}
143141

@@ -149,42 +147,33 @@ public Map<String, Object> serialize() {
149147
*/
150148
public static MenuButtonData deserialize(final Map<String, Object> map) {
151149
Map<String, Object> activeData = new LinkedHashMap<>();
152-
Map<String, Object> passiveData = new LinkedHashMap<>();
153-
Map<String, Map<String, Object>> custom = new HashMap<>();
150+
151+
Map<String, Map<String, Object>> buttons = new HashMap<>();
154152
for (Map.Entry<String, Object> entry : map.entrySet()) {
155153
final String entryKey = entry.getKey();
156-
if (entryKey.startsWith("active.")) {
157-
String key = entryKey.replace("active.", "");
158-
activeData.put(key, entry.getValue());
159-
} else if (entryKey.startsWith("passive.")) {
160-
String key = entryKey.replace("passive.", "");
161-
passiveData.put(key, entry.getValue());
162-
} else {
163-
int index = entryKey.indexOf(".");
164-
if(index > 0) {
165-
String key = entryKey.substring(index + 1);
166-
final String substring = entryKey.substring(0, index);
167-
Map<String, Object> stringObjectMap = custom.get(substring);
168-
if (stringObjectMap == null)
169-
stringObjectMap = new HashMap<>();
170-
stringObjectMap.put(key, entry.getValue());
171-
custom.put(substring, stringObjectMap);
172-
}
154+
final int index = entryKey.indexOf(".");
155+
if (index > 0) {
156+
String key = entryKey.substring(index + 1);
157+
final String substring = entryKey.substring(0, index);
158+
Map<String, Object> stringObjectMap = buttons.get(substring);
159+
if (stringObjectMap == null)
160+
stringObjectMap = new HashMap<>();
161+
stringObjectMap.put(key, entry.getValue());
162+
buttons.put(substring, stringObjectMap);
173163
}
174164
}
175165

166+
final Object material = map.get("material");
167+
if(material != null) {
168+
buttons.put("passive", map);
169+
}
170+
171+
System.out.println("buttons keySet " + buttons.keySet());
172+
System.out.println("buttons values" + buttons.values());
176173
Map<String, MenuButton> resolveCustomButton = new HashMap<>();
177-
if(!custom.isEmpty()){
178-
custom.forEach((key, value) -> resolveCustomButton.put(key, MenuButton.deserialize(value)));
174+
if (!buttons.isEmpty()) {
175+
buttons.forEach((key, value) -> resolveCustomButton.put(key, MenuButton.deserialize(value)));
179176
}
180-
MenuButton deserializeActiveData = null;
181-
MenuButton deserializePassiveData;
182-
if (!activeData.isEmpty())
183-
deserializeActiveData = MenuButton.deserialize(activeData);
184-
if (!passiveData.isEmpty())
185-
deserializePassiveData = MenuButton.deserialize(passiveData);
186-
else
187-
deserializePassiveData = MenuButton.deserialize(map);
188177
String actionType = (String) map.get("action_type");
189178
Object extra = map.get("extra");
190179
List<String> extras;
@@ -193,6 +182,6 @@ public static MenuButtonData deserialize(final Map<String, Object> map) {
193182
} else {
194183
extras = Collections.singletonList(extra + "");
195184
}
196-
return new MenuButtonData(deserializePassiveData, deserializeActiveData,resolveCustomButton, actionType, extras);
185+
return new MenuButtonData(resolveCustomButton, actionType, extras);
197186
}
198187
}

0 commit comments

Comments
 (0)