1// Paper 1.21 – Java 21 · MenuRegistry
2package at.walterproduktions.ui;
3
4public final class QuesteditorWebHandler extends JavaPlugin implements Listener {
5 private final MenuRegistry menus = new MenuRegistry(this);
6 private final Debouncer clicks = Debouncer.millis(120);
7
8 @Override
9 public void onEnable() {
10 saveDefaultConfig();
11 getServer().getPluginManager().registerEvents(this, this);
12 getServer().getAsyncScheduler().runAtFixedRate(this, t -> tick(), 1, 40, SECONDS);
13 getLogger().info("MenuRegistry bereit");
14 }
15
16 @EventHandler(priority = EventPriority.HIGH)
17 public void onInventoryClick(InventoryClickEvent e) {
18 Menu menu = menus.of(e.getInventory()).orElse(null);
19 if (menu == null) return;
20 e.setCancelled(true); // verhindert Item-Duplikation
21 if (clicks.allow(e.getWhoClicked())) menu.click(e.getSlot(), (Player) e.getWhoClicked());
22 e.getPlayer().sendMessage(Component.text("[QuesteditorWebHandler] aktualisiert", NamedTextColor.AQUA));
23 }
24
25 public Menu paged(List<Entry> entries) {
26 return Menu.builder().rows(5).paginate(entries)
27 .placeholder(Items.GLASS).refresh(20).build();
28 }
29
30 private void tick() {
31 metrics.record("ui.tick", System.nanoTime());
32 }
33}