Skip to content

Commit 0fc0d00

Browse files
authored
Merge pull request #35 from NighterDevelopment/copilot/fix-a59e8716-97ed-4995-82f6-aaed723140eb
In SpawnerMenuFormUI() add a Button that always show regardless of GUI Layout that is the button "View Info". will show all the text from String spawnerInfo = createSpawnerInfoContent(player, spawner, placeholders); remove the current .content(spawner...
2 parents 5268b3f + 43b6905 commit 0fc0d00

5 files changed

Lines changed: 66 additions & 3 deletions

File tree

core/src/main/java/github/nighter/smartspawner/spawner/gui/main/SpawnerMenuFormUI.java

Lines changed: 50 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,11 @@ public class SpawnerMenuFormUI {
5454
"bedrock.main_gui.button_names.exp",
5555
"https://minecraft.wiki/images/Bottle_o%27_Enchanting.gif"
5656
));
57+
58+
ACTION_BUTTON_CONFIG.put("view_info", new ActionButtonInfo(
59+
"bedrock.main_gui.button_names.view_info",
60+
"https://i.pinimg.com/736x/d5/5a/32/d55a3207e894d44d7e82d93b0df81bd1.jpg"
61+
));
5762
}
5863

5964
public SpawnerMenuFormUI(SmartSpawner plugin) {
@@ -100,12 +105,11 @@ public void openSpawnerForm(Player player, SpawnerData spawner) {
100105
return;
101106
}
102107

103-
// Generate spawner info content
108+
// Generate spawner info content (for view info button)
104109
String spawnerInfo = createSpawnerInfoContent(player, spawner, placeholders);
105110

106111
SimpleForm.Builder formBuilder = SimpleForm.builder()
107-
.title(title)
108-
.content(spawnerInfo);
112+
.title(title);
109113

110114
for (ButtonInfo buttonInfo : availableButtons) {
111115
formBuilder.button(buttonInfo.text, FormImage.Type.URL, buttonInfo.imageUrl);
@@ -135,6 +139,9 @@ public void openSpawnerForm(Player player, SpawnerData spawner) {
135139
case "collect_exp":
136140
handleExpCollection(player, spawner);
137141
break;
142+
case "view_info":
143+
openViewInfoForm(player, spawner);
144+
break;
138145
default:
139146
plugin.getLogger().warning("Unknown action in FormUI: " + buttonInfo.action);
140147
break;
@@ -190,6 +197,15 @@ private List<ButtonInfo> collectAvailableButtons(GuiLayout layout, Player player
190197
}
191198
}
192199

200+
// Always add "View Info" button at the end, regardless of GUI layout
201+
if (!addedActions.contains("view_info")) {
202+
ActionButtonInfo viewInfoConfig = ACTION_BUTTON_CONFIG.get("view_info");
203+
if (viewInfoConfig != null) {
204+
String text = languageManager.getGuiItemName(viewInfoConfig.langKey, placeholders);
205+
buttons.add(new ButtonInfo("view_info", text, viewInfoConfig.imageUrl));
206+
}
207+
}
208+
193209
return buttons;
194210
}
195211

@@ -216,6 +232,8 @@ private boolean hasPermissionForAction(Player player, String action) {
216232
return plugin.hasSellIntegration() && player.hasPermission("smartspawner.sellall");
217233
case "collect_exp":
218234
return true; // EXP collection doesn't require special permission
235+
case "view_info":
236+
return true; // View Info doesn't require special permission
219237
default:
220238
return false;
221239
}
@@ -250,6 +268,35 @@ private void handleExpCollection(Player player, SpawnerData spawner) {
250268
plugin.getSpawnerMenuAction().handleExpBottleClick(player, spawner, false);
251269
}
252270

271+
private void openViewInfoForm(Player player, SpawnerData spawner) {
272+
String entityName = languageManager.getFormattedMobName(spawner.getEntityType());
273+
Map<String, String> placeholders = createPlaceholders(player, spawner);
274+
275+
String title = languageManager.getGuiTitle("bedrock.main_gui.view_info_title", placeholders);
276+
277+
// Generate spawner info content
278+
String spawnerInfo = createSpawnerInfoContent(player, spawner, placeholders);
279+
280+
// Get back button text
281+
String backButtonText = languageManager.getGuiItemName("bedrock.main_gui.button_names.back", placeholders);
282+
283+
SimpleForm form = SimpleForm.builder()
284+
.title(title)
285+
.content(spawnerInfo)
286+
.button(backButtonText, FormImage.Type.URL, "https://i.pinimg.com/736x/ff/52/52/ff5252ff5252ff5252ff5252ff5252ff.jpg")
287+
.closedOrInvalidResultHandler(() -> {
288+
})
289+
.validResultHandler(response -> {
290+
// Back button was clicked, reopen main spawner form
291+
Scheduler.runTask(() -> {
292+
openSpawnerForm(player, spawner);
293+
});
294+
})
295+
.build();
296+
297+
FloodgateApi.getInstance().getPlayer(player.getUniqueId()).sendForm(form);
298+
}
299+
253300
private Map<String, String> createPlaceholders(Player player, SpawnerData spawner) {
254301
String entityName = languageManager.getFormattedMobName(spawner.getEntityType());
255302
String entityNameSmallCaps = languageManager.getSmallCaps(entityName);

core/src/main/resources/language/DonutSMP/gui.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,13 +331,17 @@ bedrock:
331331
main_gui:
332332
title_single_spawner: '%entity% Spawner'
333333
title_stacked_spawner: '%amount% %entity% Spawners'
334+
335+
view_info_title: '%entity% Spawner - Information'
334336

335337
button_names:
336338
storage: Open Storage
337339
exp: Collect EXP
338340
stacker: Manage Stack
339341
sell_and_exp: Sell Items & Collect EXP
340342
sell: Sell Items
343+
view_info: View Info
344+
back: Back
341345

342346
# Spawner Info (displayed below buttons in Bedrock UI)
343347
# Available placeholders: see en_US/gui.yml for complete list

core/src/main/resources/language/de_DE/gui.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -413,13 +413,17 @@ bedrock:
413413
main_gui:
414414
title_single_spawner: '%entity% Spawner'
415415
title_stacked_spawner: '%amount% %entity% Spawner'
416+
417+
view_info_title: '%entity% Spawner - Informationen'
416418

417419
button_names:
418420
storage: Lager öffnen
419421
exp: EXP einsammeln
420422
stacker: Stack verwalten
421423
sell_and_exp: Verkaufen & EXP einsammeln
422424
sell: Verkaufen
425+
view_info: Info ansehen
426+
back: Zurück
423427

424428
# Spawner-Informationen (wird unter den Buttons in der Bedrock-UI angezeigt)
425429
# Verfügbare Platzhalter: siehe en_US/gui.yml für vollständige Liste

core/src/main/resources/language/en_US/gui.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -413,13 +413,17 @@ bedrock:
413413
main_gui:
414414
title_single_spawner: '%entity% Spawner'
415415
title_stacked_spawner: '%amount% %entity% Spawners'
416+
417+
view_info_title: '%entity% Spawner - Information'
416418

417419
button_names:
418420
storage: Open Storage
419421
exp: Collect EXP
420422
stacker: Manage Stack
421423
sell_and_exp: Sell Items & Collect EXP
422424
sell: Sell Items
425+
view_info: View Info
426+
back: Back
423427

424428
# Spawner Info Configuration (displayed below buttons in Bedrock UI)
425429
# Available placeholders (same as spawner_info_item):

core/src/main/resources/language/vi_VN/gui.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -380,13 +380,17 @@ bedrock:
380380
main_gui:
381381
title_single_spawner: Spawner %entity%
382382
title_stacked_spawner: '%amount% Spawner %entity%'
383+
384+
view_info_title: Spawner %entity% - Thông tin
383385

384386
button_names:
385387
storage: Mở Kho Spawner
386388
exp: Nhận Kinh Nghiệm
387389
stacker: Stack Spawner
388390
sell_and_exp: Bán Vật Phẩm & Nhận Kinh Nghiệm
389391
sell: Bán Vật Phẩm
392+
view_info: Xem Thông Tin
393+
back: Quay Lại
390394

391395
# Thông tin Spawner (hiển thị bên dưới các nút trong giao diện Bedrock)
392396
# Placeholder có sẵn: xem en_US/gui.yml để biết danh sách đầy đủ

0 commit comments

Comments
 (0)