From 7fc673e6a3fea82b11aabaefc96ddb6e1e494a01 Mon Sep 17 00:00:00 2001 From: XiaoMoMi <972454774@qq.com> Date: Tue, 26 Dec 2023 21:44:38 +0800 Subject: [PATCH] amount & size --- .../api/mechanic/item/ItemBuilder.java | 2 ++ .../mechanic/item/ItemManagerImpl.java | 26 +++++++++++++++---- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/api/src/main/java/net/momirealms/customfishing/api/mechanic/item/ItemBuilder.java b/api/src/main/java/net/momirealms/customfishing/api/mechanic/item/ItemBuilder.java index 31502002..fb060ea4 100644 --- a/api/src/main/java/net/momirealms/customfishing/api/mechanic/item/ItemBuilder.java +++ b/api/src/main/java/net/momirealms/customfishing/api/mechanic/item/ItemBuilder.java @@ -38,6 +38,8 @@ public interface ItemBuilder extends BuildableItem { ItemBuilder amount(int amount); + ItemBuilder amount(int min_amount, int max_amount); + ItemBuilder tag(boolean tag, String type, String id); ItemBuilder unbreakable(boolean unbreakable); diff --git a/plugin/src/main/java/net/momirealms/customfishing/mechanic/item/ItemManagerImpl.java b/plugin/src/main/java/net/momirealms/customfishing/mechanic/item/ItemManagerImpl.java index 12f69481..00195058 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/mechanic/item/ItemManagerImpl.java +++ b/plugin/src/main/java/net/momirealms/customfishing/mechanic/item/ItemManagerImpl.java @@ -329,7 +329,6 @@ public class ItemManagerImpl implements ItemManager, Listener { itemCFBuilder = CFBuilder.of("vanilla", material.toUpperCase(Locale.ENGLISH)); } itemCFBuilder - .amount(section.getInt("amount", 1)) .stackable(section.getBoolean("stackable", true)) .size(ConfigUtils.getFloatPair(section.getString("size"))) .price((float) section.getDouble("price.base"), (float) section.getDouble("price.bonus")) @@ -350,6 +349,12 @@ public class ItemManagerImpl implements ItemManager, Listener { .head(section.getString("head64")) .name(section.getString("display.name")) .lore(section.getStringList("display.lore")); + if (section.get("amount") instanceof String s) { + Pair pair = ConfigUtils.getIntegerPair(s); + itemCFBuilder.amount(pair.left(), pair.right()); + } else { + itemCFBuilder.amount(section.getInt("amount", 1)); + } return itemCFBuilder; } @@ -498,14 +503,15 @@ public class ItemManagerImpl implements ItemManager, Listener { private final String library; private final String id; - private int amount; + private int min_amount; + private int max_amount; private final LinkedHashMap editors; public CFBuilder(String library, String id) { this.id = id; this.library = library; this.editors = new LinkedHashMap<>(); - this.amount = 1; + this.min_amount = (max_amount = 1); } public static CFBuilder of(String library, String id) { @@ -545,7 +551,15 @@ public class ItemManagerImpl implements ItemManager, Listener { @Override public ItemBuilder amount(int amount) { - this.amount = amount; + this.min_amount = amount; + this.max_amount = amount; + return this; + } + + @Override + public ItemBuilder amount(int min_amount, int max_amount) { + this.min_amount = min_amount; + this.max_amount = max_amount; return this; } @@ -745,6 +759,8 @@ public class ItemManagerImpl implements ItemManager, Listener { cfCompound.setFloat("size", random); placeholders.put("{size}", String.format("%.2f", random)); placeholders.put("{SIZE}", String.valueOf(random)); + placeholders.put("{min_size}", String.valueOf(size.left())); + placeholders.put("{max_size}", String.valueOf(size.right())); }); return this; } @@ -813,7 +829,7 @@ public class ItemManagerImpl implements ItemManager, Listener { @Override public int getAmount() { - return amount; + return ThreadLocalRandom.current().nextInt(min_amount, max_amount + 1); } @Override