diff --git a/api/src/main/java/net/momirealms/customfishing/api/mechanic/condition/FishingPreparation.java b/api/src/main/java/net/momirealms/customfishing/api/mechanic/condition/FishingPreparation.java index 0f3c579d..646abdef 100644 --- a/api/src/main/java/net/momirealms/customfishing/api/mechanic/condition/FishingPreparation.java +++ b/api/src/main/java/net/momirealms/customfishing/api/mechanic/condition/FishingPreparation.java @@ -66,7 +66,7 @@ public class FishingPreparation extends Condition { NBTCompound cfCompound = nbtItem.getCompound("CustomFishing"); if (cfCompound != null && cfCompound.hasTag("hook_id")) { String hookID = cfCompound.getString("hook_id"); - super.insertArg("{hook}", rodItemID); + super.insertArg("{hook}", hookID); this.hasHook = true; EffectCarrier carrier = plugin.getEffectManager().getEffectCarrier("hook", hookID); if (carrier != null) { @@ -95,6 +95,7 @@ public class FishingPreparation extends Condition { if (!hasBait) { EffectCarrier effect = plugin.getEffectManager().getEffectCarrier("bait", bagItemID); if (effect != null) { + this.hasBait = true; this.baitItemStack = itemInBag; this.effects.add(effect); super.insertArg("{bait}", bagItemID); diff --git a/plugin/src/main/java/net/momirealms/customfishing/mechanic/action/ActionManagerImpl.java b/plugin/src/main/java/net/momirealms/customfishing/mechanic/action/ActionManagerImpl.java index db5eb97e..a7edddb9 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/mechanic/action/ActionManagerImpl.java +++ b/plugin/src/main/java/net/momirealms/customfishing/mechanic/action/ActionManagerImpl.java @@ -788,7 +788,9 @@ public class ActionManagerImpl implements ActionManager { registerAction("random-title", (args, chance) -> { if (args instanceof ConfigurationSection section) { List titles = section.getStringList("titles"); + if (titles.size() == 0) titles.add(""); List subtitles = section.getStringList("subtitles"); + if (subtitles.size() == 0) subtitles.add(""); int fadeIn = section.getInt("fade-in", 20); int stay = section.getInt("stay", 30); int fadeOut = section.getInt("fade-out", 10); diff --git a/plugin/src/main/java/net/momirealms/customfishing/mechanic/competition/Competition.java b/plugin/src/main/java/net/momirealms/customfishing/mechanic/competition/Competition.java index ac817c03..6a17e1a8 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/mechanic/competition/Competition.java +++ b/plugin/src/main/java/net/momirealms/customfishing/mechanic/competition/Competition.java @@ -182,12 +182,13 @@ public class Competition implements FishingCompetition { Pair competitionPlayer = iterator.next(); this.publicPlaceholders.put("{" + i + "_player}", competitionPlayer.left()); this.publicPlaceholders.put("{" + i + "_score}", String.format("%.2f", competitionPlayer.right())); + i++; if (i < rewardsMap.size()) { Player player = Bukkit.getPlayer(competitionPlayer.left()); if (player != null) for (Action action : rewardsMap.get(String.valueOf(i))) action.trigger(new Condition(player)); - i++; + } else { Action[] actions = rewardsMap.get("participation"); if (actions != null) { diff --git a/plugin/src/main/java/net/momirealms/customfishing/mechanic/fishing/FishingManagerImpl.java b/plugin/src/main/java/net/momirealms/customfishing/mechanic/fishing/FishingManagerImpl.java index 9bcc7910..3e48792e 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/mechanic/fishing/FishingManagerImpl.java +++ b/plugin/src/main/java/net/momirealms/customfishing/mechanic/fishing/FishingManagerImpl.java @@ -322,15 +322,7 @@ public class FishingManagerImpl implements Listener, FishingManager { // Store fishhook entity and apply the effects final FishHook fishHook = event.getHook(); this.hookCacheMap.put(player.getUniqueId(), fishHook); -// fishHook.setMaxWaitTime(Math.max(100, (int) (fishHook.getMaxWaitTime() * initialEffect.getHookTimeModifier()))); -// fishHook.setMinWaitTime(Math.max(100, (int) (fishHook.getMinWaitTime() * initialEffect.getHookTimeModifier()))); - if (CFConfig.overrideVanilla) { - double initialTime = ThreadLocalRandom.current().nextInt(CFConfig.waterMaxTime - CFConfig.waterMinTime + 1) + CFConfig.waterMinTime; - fishHook.setWaitTime(Math.max(1, (int) (initialTime * initialEffect.getWaitTimeMultiplier() + initialEffect.getWaitTime()))); - } else { - fishHook.setMaxWaitTime(Math.max(2, (int) (fishHook.getMaxWaitTime() * initialEffect.getWaitTimeMultiplier() + initialEffect.getWaitTime()))); - fishHook.setMinWaitTime(Math.max(1, (int) (fishHook.getMinWaitTime() * initialEffect.getWaitTimeMultiplier() + initialEffect.getWaitTime()))); - } + // Reduce amount & Send animation var baitItem = fishingPreparation.getBaitItemStack(); if (baitItem != null) { diff --git a/plugin/src/main/java/net/momirealms/customfishing/mechanic/fishing/HookCheckTimerTask.java b/plugin/src/main/java/net/momirealms/customfishing/mechanic/fishing/HookCheckTimerTask.java index 8a2d3fc0..0f593aa4 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/mechanic/fishing/HookCheckTimerTask.java +++ b/plugin/src/main/java/net/momirealms/customfishing/mechanic/fishing/HookCheckTimerTask.java @@ -113,7 +113,8 @@ public class HookCheckTimerTask implements Runnable { this.fishingPreparation.triggerActions(ActionTrigger.LAND); FishHookLandEvent event = new FishHookLandEvent(fishingPreparation.getPlayer(), FishHookLandEvent.Target.LAVA, fishHook, initialEffect); Bukkit.getPluginManager().callEvent(event); - firstTime = false; + this.setWaitTime(); + this.firstTime = false; this.setTempState(); } // simulate fishing mechanic @@ -148,6 +149,7 @@ public class HookCheckTimerTask implements Runnable { // if the hook is in water // then cancel the task this.destroy(); + this.setWaitTime(); this.setTempState(); return; } @@ -289,4 +291,14 @@ public class HookCheckTimerTask implements Runnable { public boolean isFishHooked() { return fishHooked; } + + private void setWaitTime() { + if (CFConfig.overrideVanilla) { + double initialTime = ThreadLocalRandom.current().nextInt(CFConfig.waterMaxTime - CFConfig.waterMinTime + 1) + CFConfig.waterMinTime; + fishHook.setWaitTime(Math.max(1, (int) (initialTime * initialEffect.getWaitTimeMultiplier() + initialEffect.getWaitTime()))); + } else { + fishHook.setMaxWaitTime(Math.max(2, (int) (fishHook.getMaxWaitTime() * initialEffect.getWaitTimeMultiplier() + initialEffect.getWaitTime()))); + fishHook.setMinWaitTime(Math.max(1, (int) (fishHook.getMinWaitTime() * initialEffect.getWaitTimeMultiplier() + initialEffect.getWaitTime()))); + } + } }