From 8d5c36987720716c4ce5e431317beec6b74ebcc5 Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Sat, 30 Sep 2023 00:22:47 +0200 Subject: [PATCH] Made luck level improve fish length too --- src/main/java/com/alttd/fishingevent/fish/Fish.java | 12 ++++++++++-- .../fishingevent/fish_generator/FishGenerator.java | 8 +------- .../com/alttd/fishingevent/listeners/CatchFish.java | 9 +++++++-- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/alttd/fishingevent/fish/Fish.java b/src/main/java/com/alttd/fishingevent/fish/Fish.java index 655cb65..c1fded3 100644 --- a/src/main/java/com/alttd/fishingevent/fish/Fish.java +++ b/src/main/java/com/alttd/fishingevent/fish/Fish.java @@ -92,8 +92,16 @@ public class Fish { * Gives back a different result each call, it generates a length based on the min and max length values for a fish * @return a random length for this fish */ - public float generateLength() { - return new Random().nextFloat(minLength, maxLength); + public float generateLength(int luckLevel) { + float modifiedMinLength = minLength; + if (luckLevel >= 1 && luckLevel <= 5) { + float improvement = luckLevel * 0.1f * (maxLength - minLength); + float availableSpace = maxLength - minLength - 1; + + modifiedMinLength += Math.min(improvement, availableSpace); + } + + return new Random().nextFloat(modifiedMinLength, maxLength); } public net.kyori.adventure.text.@NotNull Component fishName() { diff --git a/src/main/java/com/alttd/fishingevent/fish_generator/FishGenerator.java b/src/main/java/com/alttd/fishingevent/fish_generator/FishGenerator.java index 29e7c39..4ed1a70 100644 --- a/src/main/java/com/alttd/fishingevent/fish_generator/FishGenerator.java +++ b/src/main/java/com/alttd/fishingevent/fish_generator/FishGenerator.java @@ -4,9 +4,6 @@ import com.alttd.fishingevent.config.Fishes; import com.alttd.fishingevent.fish.Fish; import com.alttd.fishingevent.objects.*; import com.alttd.fishingevent.util.Logger; -import org.bukkit.Material; -import org.bukkit.enchantments.Enchantment; -import org.bukkit.inventory.ItemStack; import java.util.List; import java.util.Optional; @@ -22,10 +19,7 @@ public class FishGenerator { this.logger = logger; } - public Optional getFish(ItemStack fishingRod, FishType fishType) { - if (!fishingRod.getType().equals(Material.FISHING_ROD)) - return Optional.empty(); - int luckLevel = fishingRod.getEnchantmentLevel(Enchantment.LUCK); + public Optional getFish(int luckLevel, FishType fishType) { int maxChanceRange = rarityManager.getMaxChanceRange(fishType); int rarityValue = CustomRandom.generateNumber(0, maxChanceRange, luckLevel + 1); Optional optionalRarity = rarityManager.getRarityFromNumber(fishType, rarityValue); diff --git a/src/main/java/com/alttd/fishingevent/listeners/CatchFish.java b/src/main/java/com/alttd/fishingevent/listeners/CatchFish.java index 6e5b386..d56d6ab 100644 --- a/src/main/java/com/alttd/fishingevent/listeners/CatchFish.java +++ b/src/main/java/com/alttd/fishingevent/listeners/CatchFish.java @@ -200,14 +200,19 @@ public class CatchFish implements Listener { ItemStack activeItem = player.getInventory().getItemInMainHand(); if (!activeItem.getType().equals(Material.FISHING_ROD)) activeItem = player.getInventory().getItemInOffHand(); - Optional optionalFish = waterFishGenerator.getFish(activeItem, fishType); + if (!activeItem.getType().equals(Material.FISHING_ROD)) { + + return Optional.empty(); + } + int luckLevel = activeItem.getEnchantmentLevel(Enchantment.LUCK); + Optional optionalFish = waterFishGenerator.getFish(luckLevel, fishType); if (optionalFish.isEmpty()) { logger.warning("Unable to get water fish for %", event.getPlayer().getName()); return Optional.empty(); } Fish fish = optionalFish.get(); - float length = fish.generateLength(); + float length = fish.generateLength(luckLevel); int pointsValue = Math.min(fish.getRarity().maxPointLimit(), pointsManagement.calculatePoints(fish.getRarity(), length)); Optional fishItem = fish.createItem(player, length, pointsValue); if (fishItem.isEmpty()) {