Skip to content

Commit 9283745

Browse files
committed
Update version to 1.5.2, enhance GUI configuration for prices, and clean up unused code
1 parent 6420b1f commit 9283745

11 files changed

Lines changed: 69 additions & 346 deletions

File tree

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ allprojects {
99
apply plugin: 'maven-publish'
1010

1111
group = 'github.nighter'
12-
version = '1.5.1'
12+
version = '1.5.2'
1313

1414
repositories {
1515
mavenCentral()

core/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ dependencies {
44
compileOnly 'io.papermc.paper:paper-api:1.21.4-R0.1-SNAPSHOT'
55
// Hook plugins
66
compileOnly 'org.geysermc.floodgate:api:2.2.4-SNAPSHOT'
7+
compileOnly 'org.geysermc.geyser:api:2.8.3-SNAPSHOT'
78
compileOnly 'com.sk89q.worldguard:worldguard-bukkit:7.1.0-SNAPSHOT'
89
compileOnly 'com.sk89q.worldedit:worldedit-bukkit:7.4.0-SNAPSHOT'
910
compileOnly("com.github.brcdev-minecraft:shopgui-api:3.1.0") { exclude(group: "*") }

core/src/main/java/github/nighter/smartspawner/SmartSpawner.java

Lines changed: 2 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public class SmartSpawner extends JavaPlugin implements SmartSpawnerPlugin {
8787
private GuiLayoutConfig guiLayoutConfig;
8888
private final ItemCache itemCache = new ItemCache(500, 30);
8989
private SpawnerMenuUI spawnerMenuUI;
90-
private SpawnerMenuFormUI spawnerMenuFormUI;
90+
// private SpawnerMenuFormUI spawnerMenuFormUI;
9191
private SpawnerStorageUI spawnerStorageUI;
9292
private FilterConfigUI filterConfigUI;
9393
private SpawnerStackerUI spawnerStackerUI;
@@ -238,7 +238,7 @@ private void initializeCoreComponents() {
238238
this.spawnerStorageUI = new SpawnerStorageUI(this);
239239
this.filterConfigUI = new FilterConfigUI(this);
240240
this.spawnerMenuUI = new SpawnerMenuUI(this);
241-
this.spawnerMenuFormUI = new SpawnerMenuFormUI(this);
241+
// this.spawnerMenuFormUI = new SpawnerMenuFormUI(this);
242242
this.spawnerGuiViewManager = new SpawnerGuiViewManager(this);
243243
this.spawnerLootGenerator = new SpawnerLootGenerator(this);
244244
this.spawnerSellManager = new SpawnerSellManager(this);
@@ -362,34 +362,6 @@ private void saveAndCleanup() {
362362
cleanupResources();
363363
}
364364

365-
public SpawnerGuiViewManager getSpawnerGuiViewManager() {
366-
return spawnerGuiViewManager;
367-
}
368-
369-
public SpawnerMenuUI getSpawnerMenuUI() {
370-
return spawnerMenuUI;
371-
}
372-
373-
public SpawnerStorageUI getSpawnerStorageUI() {
374-
return spawnerStorageUI;
375-
}
376-
377-
public FilterConfigUI getFilterConfigUI() {
378-
return filterConfigUI;
379-
}
380-
381-
public GuiLayoutConfig getGuiLayoutConfig() {
382-
return guiLayoutConfig;
383-
}
384-
385-
public SpawnerManager getSpawnerManager() {
386-
return spawnerManager;
387-
}
388-
389-
public SpawnerRangeChecker getRangeChecker() {
390-
return rangeChecker;
391-
}
392-
393365
private void cleanupResources() {
394366
if (rangeChecker != null) rangeChecker.cleanup();
395367
if (spawnerGuiViewManager != null) spawnerGuiViewManager.cleanup();
@@ -429,20 +401,4 @@ public void debug(String message) {
429401
getLogger().info("[DEBUG] " + message);
430402
}
431403
}
432-
433-
public SpawnerMenuFormUI getSpawnerMenuFormUI() {
434-
return spawnerMenuFormUI;
435-
}
436-
437-
public SpawnerMenuAction getSpawnerMenuAction() {
438-
return spawnerMenuAction;
439-
}
440-
441-
public SpawnerStackerUI getSpawnerStackerUI() {
442-
return spawnerStackerUI;
443-
}
444-
445-
public SpawnerSellManager getSpawnerSellManager() {
446-
return spawnerSellManager;
447-
}
448404
}

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

Lines changed: 14 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ public SpawnerMenuFormUI(SmartSpawner plugin) {
3030
public void openSpawnerForm(Player player, SpawnerData spawner) {
3131
String entityName = languageManager.getFormattedMobName(spawner.getEntityType());
3232
Map<String, String> placeholders = new HashMap<>();
33+
placeholders.put("ᴇɴᴛɪᴛʏ", entityName);
3334
placeholders.put("entity", entityName);
3435
placeholders.put("amount", String.valueOf(spawner.getStackSize()));
3536

@@ -50,7 +51,7 @@ public void openSpawnerForm(Player player, SpawnerData spawner) {
5051

5152
// Collect available buttons based on layout and permissions
5253
List<ButtonInfo> availableButtons = collectAvailableButtons(layout, player, spawner, placeholders);
53-
54+
5455
if (availableButtons.isEmpty()) {
5556
messageService.sendMessage(player, "no_permission");
5657
return;
@@ -75,7 +76,7 @@ public void openSpawnerForm(Player player, SpawnerData spawner) {
7576
int buttonId = response.clickedButtonId();
7677
if (buttonId >= 0 && buttonId < availableButtons.size()) {
7778
ButtonInfo buttonInfo = availableButtons.get(buttonId);
78-
79+
7980
// Schedule the action to run on the main server thread
8081
plugin.getServer().getScheduler().runTask(plugin, () -> {
8182
handleButtonAction(player, spawner, buttonInfo.action);
@@ -90,18 +91,18 @@ public void openSpawnerForm(Player player, SpawnerData spawner) {
9091

9192
private List<ButtonInfo> collectAvailableButtons(GuiLayout layout, Player player, SpawnerData spawner, Map<String, String> placeholders) {
9293
List<ButtonInfo> buttons = new ArrayList<>();
93-
94+
9495
// Check for storage button
9596
GuiButton storageButton = layout.getButton("storage");
9697
if (storageButton != null && storageButton.isEnabled()) {
9798
String text = languageManager.getGuiItemName("bedrock_gui.buttons.storage", placeholders);
98-
buttons.add(new ButtonInfo("open_storage", text, "https://img.icons8.com/?size=100&id=e78DnJp8bhmX&format=png&color=000000"));
99+
buttons.add(new ButtonInfo("open_storage", text, "https://art.pixilart.com/sr2f53a0222ccaws3.png"));
99100
}
100101

101102
// Check for spawner info/stacker button
102103
boolean hasShopPermission = plugin.hasSellIntegration() && player.hasPermission("smartspawner.sellall");
103104
GuiButton spawnerInfoButton = getSpawnerInfoButton(layout, hasShopPermission);
104-
if (spawnerInfoButton != null && spawnerInfoButton.isEnabled() &&
105+
if (spawnerInfoButton != null && spawnerInfoButton.isEnabled() &&
105106
player.hasPermission("smartspawner.stack")) {
106107
String text = languageManager.getGuiItemName("bedrock_gui.buttons.stack_info", placeholders);
107108
buttons.add(new ButtonInfo("open_stacker", text, "https://static.wikia.nocookie.net/minecraft_gamepedia/images/c/cf/Spawner_with_fire.png/revision/latest?cb=20190925003048"));
@@ -110,8 +111,8 @@ private List<ButtonInfo> collectAvailableButtons(GuiLayout layout, Player player
110111
// Check for sell_inventory button (Claim XP and Sell All)
111112
if (hasShopPermission) {
112113
GuiButton sellInventoryButton = layout.getButton("spawner_info_with_shop");
113-
if (sellInventoryButton != null && sellInventoryButton.isEnabled() &&
114-
sellInventoryButton.getAction("left_click") != null &&
114+
if (sellInventoryButton != null && sellInventoryButton.isEnabled() &&
115+
sellInventoryButton.getAction("left_click") != null &&
115116
sellInventoryButton.getAction("left_click").equals("sell_inventory")) {
116117
String text = languageManager.getGuiItemName("bedrock_gui.buttons.sell_inventory", placeholders);
117118
buttons.add(new ButtonInfo("sell_inventory", text, "https://img.icons8.com/?size=100&id=12815&format=png&color=FFD700"));
@@ -156,7 +157,7 @@ private GuiButton getSpawnerInfoButton(GuiLayout layout, boolean hasShopPermissi
156157
private String createInfoContent(Player player, SpawnerData spawner) {
157158
// Get configured info content from language file - use hardcoded header as fallback
158159
String header = "INFORMATION:";
159-
160+
160161
StringBuilder content = new StringBuilder();
161162
content.append(header).append("\n\n");
162163

@@ -165,10 +166,10 @@ private String createInfoContent(Player player, SpawnerData spawner) {
165166

166167
// Add spawner info section
167168
addConfiguredSection(content, "spawner_info", placeholders);
168-
169+
169170
// Add storage info section
170171
addConfiguredSection(content, "storage_info", placeholders);
171-
172+
172173
// Add experience info section
173174
addConfiguredSection(content, "experience_info", placeholders);
174175

@@ -177,7 +178,7 @@ private String createInfoContent(Player player, SpawnerData spawner) {
177178

178179
private Map<String, String> createContentPlaceholders(Player player, SpawnerData spawner) {
179180
Map<String, String> placeholders = new HashMap<>();
180-
181+
181182
// Entity information
182183
String entityName = languageManager.getFormattedMobName(spawner.getEntityType());
183184
String entityNameSmallCaps = languageManager.getSmallCaps(entityName);
@@ -194,11 +195,10 @@ private Map<String, String> createContentPlaceholders(Player player, SpawnerData
194195
int maxSlots = spawner.getMaxSpawnerLootSlots();
195196
double percentStorageDecimal = maxSlots > 0 ? ((double) currentItems / maxSlots) * 100 : 0;
196197
String formattedPercentStorage = String.format("%.1f", percentStorageDecimal);
197-
198+
198199
placeholders.put("current_items", String.valueOf(currentItems));
199200
placeholders.put("max_items", languageManager.formatNumber(maxSlots));
200201
placeholders.put("formatted_storage", formattedPercentStorage);
201-
placeholders.put("storage_status", getStorageStatus(currentItems, maxSlots));
202202

203203
// Experience information
204204
long currentExp = spawner.getSpawnerExp();
@@ -211,21 +211,19 @@ private Map<String, String> createContentPlaceholders(Player player, SpawnerData
211211
placeholders.put("current_exp", formattedCurrentExp);
212212
placeholders.put("max_exp", formattedMaxExp);
213213
placeholders.put("formatted_exp", formattedPercentExp);
214-
placeholders.put("exp_status", getExpStatus(currentExp, maxExp));
215214

216215
return placeholders;
217216
}
218217

219218
private void addConfiguredSection(StringBuilder content, String sectionName, Map<String, String> placeholders) {
220219
// Use the GUI item lore method which can access configuration
221220
List<String> sectionLines = languageManager.getGuiItemLoreAsList("bedrock_gui.info_content.sections." + sectionName, placeholders);
222-
223221
// If the configuration key doesn't exist, add default content
224222
if (sectionLines.isEmpty()) {
225223
addDefaultSection(content, sectionName, placeholders);
226224
return;
227225
}
228-
226+
229227
for (String line : sectionLines) {
230228
content.append(line).append("\n");
231229
}
@@ -253,28 +251,6 @@ private void addDefaultSection(StringBuilder content, String sectionName, Map<St
253251
}
254252
}
255253

256-
private String getStorageStatus(int current, int max) {
257-
double ratio = max > 0 ? (double) current / max : 0;
258-
Map<String, String> placeholders = new HashMap<>();
259-
260-
if (ratio >= 0.9) return languageManager.getGuiItemName("bedrock_gui.status.storage.nearly_full", placeholders);
261-
if (ratio >= 0.7) return languageManager.getGuiItemName("bedrock_gui.status.storage.filling_up", placeholders);
262-
if (ratio >= 0.4) return languageManager.getGuiItemName("bedrock_gui.status.storage.half_full", placeholders);
263-
if (ratio > 0) return languageManager.getGuiItemName("bedrock_gui.status.storage.plenty_space", placeholders);
264-
return languageManager.getGuiItemName("bedrock_gui.status.storage.empty", placeholders);
265-
}
266-
267-
private String getExpStatus(long current, long max) {
268-
double ratio = max > 0 ? (double) current / max : 0;
269-
Map<String, String> placeholders = new HashMap<>();
270-
271-
if (ratio >= 0.9) return languageManager.getGuiItemName("bedrock_gui.status.experience.almost_full", placeholders);
272-
if (ratio >= 0.7) return languageManager.getGuiItemName("bedrock_gui.status.experience.large_amount", placeholders);
273-
if (ratio >= 0.4) return languageManager.getGuiItemName("bedrock_gui.status.experience.medium_amount", placeholders);
274-
if (ratio > 0) return languageManager.getGuiItemName("bedrock_gui.status.experience.small_amount", placeholders);
275-
return languageManager.getGuiItemName("bedrock_gui.status.experience.empty", placeholders);
276-
}
277-
278254
private void handleButtonAction(Player player, SpawnerData spawner, String action) {
279255
switch (action) {
280256
case "open_storage":

core/src/main/java/github/nighter/smartspawner/spawner/interactions/click/SpawnerClickManager.java

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@
2828
import java.util.UUID;
2929
import java.util.concurrent.ConcurrentHashMap;
3030

31-
import static org.bukkit.GameMode.CREATIVE;
32-
3331
public class SpawnerClickManager implements Listener {
3432
private static final long COOLDOWN_MS = 250;
3533
private static final long CLEANUP_INTERVAL_TICKS = 6000L; // 5 minutes
@@ -40,7 +38,7 @@ public class SpawnerClickManager implements Listener {
4038
private final SpawnEggHandler spawnEggHandler;
4139
private final SpawnerStackHandler spawnerStackHandler;
4240
private final SpawnerMenuUI spawnerMenuUI;
43-
private final SpawnerMenuFormUI spawnerMenuFormUI;
41+
//private final SpawnerMenuFormUI spawnerMenuFormUI;
4442

4543
// Use ConcurrentHashMap for thread safety without explicit synchronization
4644
private final Map<UUID, Long> playerCooldowns = new ConcurrentHashMap<>();
@@ -52,7 +50,7 @@ public SpawnerClickManager(SmartSpawner plugin) {
5250
this.spawnEggHandler = plugin.getSpawnEggHandler();
5351
this.spawnerStackHandler = plugin.getSpawnerStackHandler();
5452
this.spawnerMenuUI = plugin.getSpawnerMenuUI();
55-
this.spawnerMenuFormUI = plugin.getSpawnerMenuFormUI();
53+
// this.spawnerMenuFormUI = plugin.getSpawnerMenuFormUI();
5654
initCleanupTask();
5755
}
5856

@@ -217,12 +215,13 @@ private void handleInactiveSpawnerInteraction(Player player, Block block, Spawne
217215

218216
private void openSpawnerMenu(Player player, SpawnerData spawner) {
219217
// Check if the player is a Bedrock player and use FormUI
220-
if (isBedrockPlayer(player)) {
221-
spawnerMenuFormUI.openSpawnerForm(player, spawner);
222-
} else {
223-
// Open the regular GUI menu for Java players
224-
spawnerMenuUI.openSpawnerMenu(player, spawner, false);
225-
}
218+
// if (isBedrockPlayer(player)) {
219+
// spawnerMenuFormUI.openSpawnerForm(player, spawner);
220+
// } else {
221+
// // Open the regular GUI menu for Java players
222+
// spawnerMenuUI.openSpawnerMenu(player, spawner, false);
223+
// }
224+
spawnerMenuUI.openSpawnerMenu(player, spawner, false);
226225
}
227226

228227
private boolean isSpawnEgg(Material material) {

core/src/main/resources/gui_layouts/DonutSMP/main_gui.yml

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ buttons:
2323
condition: "shop_integration"
2424
actions:
2525
left_click: "sell_inventory" # Collect EXP and sell items in storage
26-
right_click: "open_stacker" # Open stacker GUI
2726

2827
# Spawner information display without shop integration
2928
# Without shop integration: Both clicks open stacker GUI
@@ -32,9 +31,6 @@ buttons:
3231
material: PLAYER_HEAD
3332
enabled: true
3433
condition: "no_shop_integration"
35-
actions:
36-
left_click: "open_stacker" # Open stacker GUI
37-
right_click: "open_stacker" # Open stacker GUI
3834

3935
# Experience collection button
4036
exp:
@@ -43,14 +39,4 @@ buttons:
4339
enabled: true
4440
actions:
4541
left_click: "collect_exp"
46-
right_click: "collect_exp"
47-
48-
# Sell all items button (only items, no experience)
49-
sell_all:
50-
slot: 10
51-
material: GOLD_INGOT
52-
enabled: true
53-
condition: "shop_integration"
54-
actions:
55-
left_click: "sell_all"
56-
right_click: "sell_all"
42+
right_click: "collect_exp"

core/src/main/resources/gui_layouts/default/main_gui.yml

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,4 @@ buttons:
4343
enabled: true
4444
actions:
4545
left_click: "collect_exp"
46-
right_click: "collect_exp"
47-
48-
# Sell all items button (only items, no experience)
49-
sell_all:
50-
slot: 10
51-
material: GOLD_INGOT
52-
enabled: true
53-
condition: "shop_integration"
54-
actions:
55-
left_click: "sell_all"
56-
right_click: "sell_all"
46+
right_click: "collect_exp"

0 commit comments

Comments
 (0)