diff --git a/api/build.gradle.kts b/api/build.gradle.kts index 37334e57..7c3b1d7b 100644 --- a/api/build.gradle.kts +++ b/api/build.gradle.kts @@ -22,6 +22,7 @@ dependencies { compileOnly("com.google.code.gson:gson:${rootProject.properties["gson_version"]}") compileOnly("me.clip:placeholderapi:${rootProject.properties["placeholder_api_version"]}") compileOnly("com.github.Xiao-MoMi:Sparrow-Heart:${rootProject.properties["sparrow_heart_version"]}") +// compileOnly(files("libs/Sparrow-Heart-${rootProject.properties["sparrow_heart_version"]}.jar")) } java { diff --git a/core/build.gradle.kts b/core/build.gradle.kts index 55f0dbef..c6b34518 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -33,6 +33,7 @@ dependencies { implementation("com.saicone.rtag:rtag-item:${rootProject.properties["rtag_version"]}") // nms util implementation("com.github.Xiao-MoMi:Sparrow-Heart:${rootProject.properties["sparrow_heart_version"]}") + //implementation(files("libs/Sparrow-Heart-${rootProject.properties["sparrow_heart_version"]}.jar")) // bstats compileOnly("org.bstats:bstats-bukkit:${rootProject.properties["bstats_version"]}") // config diff --git a/core/libs/Sparrow-Heart-0.19.jar b/core/libs/Sparrow-Heart-0.19.jar deleted file mode 100644 index 669b9bb1..00000000 Binary files a/core/libs/Sparrow-Heart-0.19.jar and /dev/null differ diff --git a/core/src/main/java/net/momirealms/customfishing/bukkit/config/BukkitConfigManager.java b/core/src/main/java/net/momirealms/customfishing/bukkit/config/BukkitConfigManager.java index 27198007..74467370 100644 --- a/core/src/main/java/net/momirealms/customfishing/bukkit/config/BukkitConfigManager.java +++ b/core/src/main/java/net/momirealms/customfishing/bukkit/config/BukkitConfigManager.java @@ -245,15 +245,49 @@ public class BukkitConfigManager extends ConfigManager { return map; } + private List> getPossibleEnchantments(Section section) { + List> list = new ArrayList<>(); + for (Map.Entry entry : section.getStringRouteMappedValues(false).entrySet()) { + if (entry.getValue() instanceof Section inner) { + Tuple tuple = Tuple.of( + inner.getDouble("chance"), + inner.getString("enchant"), + Short.valueOf(String.valueOf(inner.getInt("level"))) + ); + list.add(tuple); + } + } + return list; + } + private Pair getEnchantmentPair(String enchantmentWithLevel) { String[] split = enchantmentWithLevel.split(":", 3); return Pair.of(Key.of(split[0], split[1]), Short.parseShort(split[2])); } private void registerBuiltInItemProperties() { - Function, Context>> function = arg -> { + Function, Context>> f2 = arg -> { + Section section = (Section) arg; + boolean stored = Objects.equals(section.getNameAsString(), "stored-random-enchantments"); + List> enchantments = getPossibleEnchantments(section); + return (item, context) -> { + HashSet ids = new HashSet<>(); + for (Tuple pair : enchantments) { + if (Math.random() < pair.left() && !ids.contains(pair.mid())) { + if (stored) { + item.addStoredEnchantment(Key.fromString(pair.mid()), pair.right()); + } else { + item.addEnchantment(Key.fromString(pair.mid()), pair.right()); + } + ids.add(pair.mid()); + } + } + }; + }; + this.registerItemParser(f2, 4850, "random-stored-enchantments"); + this.registerItemParser(f2, 4750, "random-enchantments"); + Function, Context>> f1 = arg -> { Section section = (Section) arg; - System.out.println(section.getNameAsString()); boolean stored = Objects.equals(section.getNameAsString(), "stored-enchantment-pool"); Section amountSection = section.getSection("amount"); Section enchantSection = section.getSection("pool"); @@ -286,7 +320,8 @@ public class BukkitConfigManager extends ConfigManager { Pair enchantPair = WeightUtils.getRandom(cloned); Enchantment enchantment = Registry.ENCHANTMENT.get(Objects.requireNonNull(NamespacedKey.fromString(enchantPair.left().toString()))); if (enchantment == null) { - throw new NullPointerException("Enchantment: " + enchantPair.left() + " doesn't exist."); + plugin.getPluginLogger().warn("Enchantment: " + enchantPair.left() + " doesn't exist."); + return; } if (!stored) { for (Enchantment added : addedEnchantments) { @@ -307,8 +342,8 @@ public class BukkitConfigManager extends ConfigManager { } }; }; - this.registerItemParser(function, 4800, "stored-enchantment-pool"); - this.registerItemParser(function, 4700, "enchantment-pool"); + this.registerItemParser(f1, 4800, "stored-enchantment-pool"); + this.registerItemParser(f1, 4700, "enchantment-pool"); this.registerItemParser(arg -> { Section section = (Section) arg; Map map = getEnchantments(section); diff --git a/core/src/main/java/net/momirealms/customfishing/bukkit/item/impl/ComponentItemFactory.java b/core/src/main/java/net/momirealms/customfishing/bukkit/item/impl/ComponentItemFactory.java index f8c9e5ef..5373d92a 100644 --- a/core/src/main/java/net/momirealms/customfishing/bukkit/item/impl/ComponentItemFactory.java +++ b/core/src/main/java/net/momirealms/customfishing/bukkit/item/impl/ComponentItemFactory.java @@ -6,6 +6,7 @@ import net.momirealms.customfishing.bukkit.item.BukkitItemFactory; import net.momirealms.customfishing.common.item.ComponentKeys; import net.momirealms.customfishing.common.plugin.CustomFishingPlugin; import net.momirealms.customfishing.common.util.Key; +import net.momirealms.sparrow.heart.SparrowHeart; import java.util.HashMap; import java.util.List; @@ -150,11 +151,17 @@ public class ComponentItemFactory extends BukkitItemFactory { @Override protected void addEnchantment(RtagItem item, Key enchantment, int level) { - + Object enchant = item.getComponent(ComponentKeys.ENCHANTMENTS); + Map map = SparrowHeart.getInstance().itemEnchantmentsToMap(enchant); + map.put(enchantment.toString(), level); + item.setComponent(ComponentKeys.ENCHANTMENTS, map); } @Override protected void addStoredEnchantment(RtagItem item, Key enchantment, int level) { - + Object enchant = item.getComponent(ComponentKeys.STORED_ENCHANTMENTS); + Map map = SparrowHeart.getInstance().itemEnchantmentsToMap(enchant); + map.put(enchantment.toString(), level); + item.setComponent(ComponentKeys.STORED_ENCHANTMENTS, map); } } \ No newline at end of file diff --git a/core/src/main/resources/contents/item/default.yml b/core/src/main/resources/contents/item/default.yml index e8c21aab..b148b8f5 100644 --- a/core/src/main/resources/contents/item/default.yml +++ b/core/src/main/resources/contents/item/default.yml @@ -218,8 +218,6 @@ enchantment_book: 'minecraft:looting:1': 12 'minecraft:looting:2': 6 'minecraft:looting:3': 2 - 'minecraft:sweeping:1': 8 - 'minecraft:sweeping:2': 4 'minecraft:soul_speed:1': 8 'minecraft:soul_speed:2': 4 'minecraft:fire_aspect:1': 10 diff --git a/core/src/main/resources/contents/rod/default.yml b/core/src/main/resources/contents/rod/default.yml index 88bde615..bf0c4184 100644 --- a/core/src/main/resources/contents/rod/default.yml +++ b/core/src/main/resources/contents/rod/default.yml @@ -150,7 +150,7 @@ magical_rod: requirements: requirement_1: type: level - value: 10 + value: 1 not-met-actions: action_1: type: message @@ -169,7 +169,7 @@ magical_rod: cast: action_level: type: level - value: -10 + value: -1 effects: effect_1: type: group-mod-ignore-conditions diff --git a/gradle.properties b/gradle.properties index 6dc42c88..b5a42c67 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,7 +17,7 @@ h2_driver_version=2.2.224 sqlite_driver_version=3.46.0.0 adventure_bundle_version=4.17.0 adventure_platform_version=4.3.3 -sparrow_heart_version=0.22 +sparrow_heart_version=0.23 cloud_core_version=2.0.0-rc.2 cloud_services_version=2.0.0-rc.2 cloud_brigadier_version=2.0.0-beta.8