From 3d9c011185e7cf9e6916c8e688390a2af3270516 Mon Sep 17 00:00:00 2001 From: Ryder Belserion Date: Thu, 24 Oct 2024 17:53:48 -0400 Subject: [PATCH] add the ability to periodically update items in open auction menus --- .../crazyauctions/CrazyAuctions.java | 20 ++++++++++++++----- .../api/guis/types/AuctionsMenu.java | 8 ++++---- .../api/guis/types/CurrentMenu.java | 10 +++++++--- 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/paper/src/main/java/com/badbones69/crazyauctions/CrazyAuctions.java b/paper/src/main/java/com/badbones69/crazyauctions/CrazyAuctions.java index 7691ebb..8eba574 100644 --- a/paper/src/main/java/com/badbones69/crazyauctions/CrazyAuctions.java +++ b/paper/src/main/java/com/badbones69/crazyauctions/CrazyAuctions.java @@ -59,16 +59,26 @@ public class CrazyAuctions extends Vital { this.userManager.updateAuctionsCache(); // we want to update this cache, after the cache above... because we will also calculate if items are expired! - this.userManager.updateExpiredCache(); - - /*new FoliaRunnable(getServer().getGlobalRegionScheduler()) { + new FoliaRunnable(getServer().getGlobalRegionScheduler()) { @Override public void run() { userManager.updateAuctionsCache(); - //todo() update existing inventories. + for (final Player player : getServer().getOnlinePlayers()) { + final Inventory inventory = player.getInventory(); + + if (inventory instanceof AuctionsMenu menu) { + menu.calculateItems(); + + continue; + } + + if (inventory instanceof CurrentMenu menu) { + menu.calculateItems(); + } + } } - }.runAtFixedRate(this, 20, 300 * 5);*/ + }.runAtFixedRate(this, 20, 300 * 5); this.crazyManager = new CrazyManager(); this.crazyManager.load(); diff --git a/paper/src/main/java/com/badbones69/crazyauctions/api/guis/types/AuctionsMenu.java b/paper/src/main/java/com/badbones69/crazyauctions/api/guis/types/AuctionsMenu.java index b35e3e7..3ee6009 100644 --- a/paper/src/main/java/com/badbones69/crazyauctions/api/guis/types/AuctionsMenu.java +++ b/paper/src/main/java/com/badbones69/crazyauctions/api/guis/types/AuctionsMenu.java @@ -82,9 +82,7 @@ public class AuctionsMenu extends Holder { )); } - getItems(); // populate the inventory - - this.maxPages = getMaxPage(this.items); + calculateItems(); HolderManager.addShopType(this.player, this.shopType); @@ -363,7 +361,7 @@ public class AuctionsMenu extends Holder { GuiManager.openBuying(player, auction_id); } - private void getItems() { + public void calculateItems() { this.userManager.getAuctions().forEach(((uuid, auctions) -> auctions.forEach(auction -> { final ItemBuilder itemBuilder = auction.getActiveItem(this.shopType); @@ -373,5 +371,7 @@ public class AuctionsMenu extends Holder { this.items.add(auction); }))); + + this.maxPages = getMaxPage(this.items); } } \ No newline at end of file diff --git a/paper/src/main/java/com/badbones69/crazyauctions/api/guis/types/CurrentMenu.java b/paper/src/main/java/com/badbones69/crazyauctions/api/guis/types/CurrentMenu.java index 5d95cfb..64bb5c7 100644 --- a/paper/src/main/java/com/badbones69/crazyauctions/api/guis/types/CurrentMenu.java +++ b/paper/src/main/java/com/badbones69/crazyauctions/api/guis/types/CurrentMenu.java @@ -45,9 +45,7 @@ public class CurrentMenu extends Holder { "WhatIsThis.CurrentItems" )); - this.items = this.userManager.getAuctions().get(this.player.getUniqueId()); - - this.maxPages = getMaxPage(this.items); + calculateItems(); for (final String key : this.options) { if (!this.config.contains("Settings.GUISettings.OtherSettings." + key)) { @@ -164,4 +162,10 @@ public class CurrentMenu extends Holder { GuiManager.openPlayersCurrentList(player, menu.getPage()); } + + public void calculateItems() { + this.items = this.userManager.getAuctions().get(this.player.getUniqueId()); + + this.maxPages = getMaxPage(this.items); + } } \ No newline at end of file