From 27ad14c7ab48baeb5efd19da8456878e3d39d957 Mon Sep 17 00:00:00 2001 From: CarmJos Date: Wed, 5 Jan 2022 23:50:41 +0800 Subject: [PATCH] =?UTF-8?q?[v1.1.8]=20[U]=20=E6=94=AF=E6=8C=81=E6=97=A0?= =?UTF-8?q?=E9=99=90=E8=83=8C=E5=8C=85=E5=AE=B9=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../depository/DepositoryCapacity.java | 19 +++++++++++++++---- .../ultradepository/hooker/PAPIExpansion.java | 10 ++++++---- .../manager/DepositoryManager.java | 2 +- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/main/java/cc/carm/plugin/ultradepository/configuration/depository/DepositoryCapacity.java b/src/main/java/cc/carm/plugin/ultradepository/configuration/depository/DepositoryCapacity.java index 95dcff5..3c7ed5e 100644 --- a/src/main/java/cc/carm/plugin/ultradepository/configuration/depository/DepositoryCapacity.java +++ b/src/main/java/cc/carm/plugin/ultradepository/configuration/depository/DepositoryCapacity.java @@ -42,10 +42,21 @@ public class DepositoryCapacity { } public int getPlayerCapacity(Player player) { - return getPermissions().entrySet().stream() - .filter(entry -> player.hasPermission(entry.getKey())) - .mapToInt(Map.Entry::getValue) - .max().orElse(defaultCapacity); + if (defaultCapacity == -1) return -1; + + int capacity = defaultCapacity; + for (Map.Entry entry : getPermissions().entrySet()) { + if (player.hasPermission(entry.getKey())) { + int value = entry.getValue(); + if (value == -1) { + return -1; + } else if (value > capacity) { + capacity = value; + } + } + } + + return capacity; } } diff --git a/src/main/java/cc/carm/plugin/ultradepository/hooker/PAPIExpansion.java b/src/main/java/cc/carm/plugin/ultradepository/hooker/PAPIExpansion.java index 9743bea..d71d559 100644 --- a/src/main/java/cc/carm/plugin/ultradepository/hooker/PAPIExpansion.java +++ b/src/main/java/cc/carm/plugin/ultradepository/hooker/PAPIExpansion.java @@ -19,7 +19,7 @@ public class PAPIExpansion extends PlaceholderExpansion { "%UltraDepository_amount__%", "%UltraDepository_sold__%", "%UltraDepository_price__%", - "%UltraDepository_reUltraDepository__%", + "%UltraDepository_remain__%", "%UltraDepository_capacity_%", "%UltraDepository_used_%", "%UltraDepository_usable_%" @@ -80,7 +80,7 @@ public class PAPIExpansion extends PlaceholderExpansion { if (sold == null) return "Depository or Item not exists"; else return sold.toString(); } - case "reUltraDepository": { + case "remain": { if (args.length < 2) return "Error Params"; Depository depository = UltraDepository.getDepositoryManager().getDepository(args[1]); if (depository == null) return "Depository not exists"; @@ -106,7 +106,8 @@ public class PAPIExpansion extends PlaceholderExpansion { if (args.length < 2) return "Error Params"; Depository depository = UltraDepository.getDepositoryManager().getDepository(args[1]); if (depository == null) return "Depository not exists"; - return Integer.toString(depository.getCapacity().getPlayerCapacity(player)); + int capacity = depository.getCapacity().getPlayerCapacity(player); + return capacity < 0 ? "∞" : Integer.toString(capacity); } case "used": { if (args.length < 2) return "Error Params"; @@ -118,8 +119,9 @@ public class PAPIExpansion extends PlaceholderExpansion { if (args.length < 2) return "Error Params"; Depository depository = UltraDepository.getDepositoryManager().getDepository(args[1]); if (depository == null) return "Depository not exists"; + int max = depository.getCapacity().getPlayerCapacity(player); int used = data.getDepositoryData(depository).getUsedCapacity(); - return Integer.toString(depository.getCapacity().getPlayerCapacity(player) - used); + return max < 0 ? "∞" : Integer.toString(max - used); } case "version": { return getVersion(); diff --git a/src/main/java/cc/carm/plugin/ultradepository/manager/DepositoryManager.java b/src/main/java/cc/carm/plugin/ultradepository/manager/DepositoryManager.java index 8f5f1b7..c842208 100644 --- a/src/main/java/cc/carm/plugin/ultradepository/manager/DepositoryManager.java +++ b/src/main/java/cc/carm/plugin/ultradepository/manager/DepositoryManager.java @@ -115,7 +115,7 @@ public class DepositoryManager { return getItemDepositories(itemStack).stream().filter(configuration -> { int used = UltraDepository.getUserManager().getData(player).getDepositoryData(configuration).getUsedCapacity(); int max = configuration.getCapacity().getPlayerCapacity(player); - return used + itemStack.getAmount() <= max; + return max < 0 || used + itemStack.getAmount() <= max; }).collect(Collectors.toSet()); }