Page MenuHomeDevCentral

No OneTemporary

diff --git a/plugins/suhayl/src/main/java/org/eu/loupsgris/quilvaryn/listeners/WanderingTraderBehavior.java b/plugins/suhayl/src/main/java/org/eu/loupsgris/quilvaryn/listeners/WanderingTraderBehavior.java
index 2d30749..a43d87f 100644
--- a/plugins/suhayl/src/main/java/org/eu/loupsgris/quilvaryn/listeners/WanderingTraderBehavior.java
+++ b/plugins/suhayl/src/main/java/org/eu/loupsgris/quilvaryn/listeners/WanderingTraderBehavior.java
@@ -1,110 +1,120 @@
package org.eu.loupsgris.quilvaryn.listeners;
import org.bukkit.entity.EntityType;
+import org.bukkit.entity.HumanEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.CreatureSpawnEvent;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.event.player.PlayerInteractEntityEvent;
import org.bukkit.inventory.EquipmentSlot;
+import org.bukkit.inventory.InventoryView;
import org.bukkit.inventory.ItemStack;
import org.eu.loupsgris.quilvaryn.items.CommandmentStick;
import org.eu.loupsgris.quilvaryn.menus.WanderingTraderMenu;
import org.eu.loupsgris.quilvaryn.services.WanderingTraderService;
import java.util.Optional;
import java.util.UUID;
public class WanderingTraderBehavior implements Listener {
private final WanderingTraderService service;
public WanderingTraderBehavior(WanderingTraderService service) {
this.service = service;
}
@EventHandler
public void onTraderSpawn(CreatureSpawnEvent event) {
if (event.getEntityType() != EntityType.WANDERING_TRADER) {
return;
}
if (!service.canTradersVisit()) {
event.setCancelled(true);
}
}
-
-
@EventHandler(priority = EventPriority.HIGHEST)
public void onUseStick(PlayerInteractEntityEvent event) {
if (event.getRightClicked().getType() != EntityType.WANDERING_TRADER) {
return;
}
if (event.getHand() != EquipmentSlot.HAND) {
return;
}
Player player = event.getPlayer();
ItemStack item = player.getInventory().getItemInMainHand();
if (!CommandmentStick.isItem(item)) {
return;
}
event.setCancelled(true);
UUID traderId = event.getRightClicked().getUniqueId();
service.openMenuFor(
player,
traderId
);
}
@EventHandler
public void onInventoryClick(InventoryClickEvent event) {
- if (!(event.getWhoClicked() instanceof Player player)) {
- return;
- }
-
- Optional<WanderingTraderMenu> menuOption = service.getMenuFor(player);
- if (menuOption.isEmpty()) {
- return;
- }
-
- WanderingTraderMenu menu = menuOption.get();
+ var result = tryGetTraderMenu(event.getView(), event.getWhoClicked());
- if (!event.getView().getTitle().equals(menu.getTitle())) {
+ if (!result.isMenu) {
return;
}
event.setCancelled(true);
ItemStack selectedItem = event.getCurrentItem();
- menu.handleClick(selectedItem);
+ result.menu.handleClick(selectedItem);
}
@EventHandler
- public void onClose(InventoryCloseEvent e) {
- if (!(e.getPlayer() instanceof Player player)) {
- return;
+ public void onClose(InventoryCloseEvent event) {
+ var result = tryGetTraderMenu(event.getView(), event.getPlayer());
+
+ if (result.isMenu) {
+ service.removeMenuFor(result.player);
+ }
+ }
+
+ private WanderingTraderMenuResult tryGetTraderMenu(InventoryView view, HumanEntity entity) {
+ if (!(entity instanceof Player player)) {
+ return WanderingTraderMenuResult.None();
}
Optional<WanderingTraderMenu> menuOption = service.getMenuFor(player);
if (menuOption.isEmpty()) {
- return;
+ return WanderingTraderMenuResult.None();
}
WanderingTraderMenu menu = menuOption.get();
+ if (!view.getTitle().equals(menu.getTitle())) {
+ return WanderingTraderMenuResult.None();
+ }
+
+ return new WanderingTraderMenuResult(true, player, menu);
+ }
- if (e.getView().getTitle().equals(menu.getTitle())) {
- service.removeMenuFor(player);
+ record WanderingTraderMenuResult(
+ boolean isMenu,
+ Player player,
+ WanderingTraderMenu menu
+ ) {
+ public static WanderingTraderBehavior.WanderingTraderMenuResult None() {
+ return new WanderingTraderMenuResult(false, null, null);
}
}
}

File Metadata

Mime Type
text/x-diff
Expires
Wed, Mar 18, 13:25 (14 h, 13 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3526079
Default Alt Text
(4 KB)

Event Timeline