Page Menu
Home
DevCentral
Search
Configure Global Search
Log In
Files
F24894934
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
4 KB
Referenced Files
None
Subscribers
None
View Options
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
Details
Attached
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)
Attached To
Mode
rQVR Quilvaryn
Attached
Detach File
Event Timeline
Log In to Comment