diff --git a/api/src/main/java/net/momirealms/customfishing/api/mechanic/fishing/CustomFishingHook.java b/api/src/main/java/net/momirealms/customfishing/api/mechanic/fishing/CustomFishingHook.java index ea68be0c..8f8df1e9 100644 --- a/api/src/main/java/net/momirealms/customfishing/api/mechanic/fishing/CustomFishingHook.java +++ b/api/src/main/java/net/momirealms/customfishing/api/mechanic/fishing/CustomFishingHook.java @@ -228,6 +228,8 @@ public class CustomFishingHook { handleSuccessfulFishing(); end(); } else { + plugin.getEventManager().trigger(context, nextLoot.id(), MechanicType.LOOT, ActionTrigger.HOOK); + gears.trigger(ActionTrigger.HOOK, context); gameStart(); } } diff --git a/api/src/main/java/net/momirealms/customfishing/api/mechanic/misc/placeholder/BukkitPlaceholderManager.java b/api/src/main/java/net/momirealms/customfishing/api/mechanic/misc/placeholder/BukkitPlaceholderManager.java index 66043318..8784c507 100644 --- a/api/src/main/java/net/momirealms/customfishing/api/mechanic/misc/placeholder/BukkitPlaceholderManager.java +++ b/api/src/main/java/net/momirealms/customfishing/api/mechanic/misc/placeholder/BukkitPlaceholderManager.java @@ -18,6 +18,7 @@ package net.momirealms.customfishing.api.mechanic.misc.placeholder; import net.momirealms.customfishing.api.BukkitCustomFishingPlugin; +import net.momirealms.customfishing.common.util.RandomUtils; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.jetbrains.annotations.Nullable; @@ -26,6 +27,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.function.Function; import java.util.regex.Matcher; import java.util.stream.Collectors; @@ -33,7 +35,7 @@ public class BukkitPlaceholderManager implements PlaceholderManager { private final BukkitCustomFishingPlugin plugin; private boolean hasPapi; - private final HashMap customPlaceholderMap; + private final HashMap> customPlaceholderMap; private static BukkitPlaceholderManager instance; public BukkitPlaceholderManager(BukkitCustomFishingPlugin plugin) { @@ -43,8 +45,14 @@ public class BukkitPlaceholderManager implements PlaceholderManager { } @Override - public void reload() { + public void load() { this.hasPapi = Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI"); + this.customPlaceholderMap.put("{random}", (p) -> String.valueOf(RandomUtils.generateRandomDouble(0, 1))); + } + + @Override + public void unload() { + this.customPlaceholderMap.clear(); } public static BukkitPlaceholderManager getInstance() { @@ -54,7 +62,7 @@ public class BukkitPlaceholderManager implements PlaceholderManager { @Override public boolean registerCustomPlaceholder(String placeholder, String original) { if (this.customPlaceholderMap.containsKey(placeholder)) return false; - this.customPlaceholderMap.put(placeholder, original); + this.customPlaceholderMap.put(placeholder, (p) -> PlaceholderAPIUtils.parse(p, original)); return true; } @@ -77,7 +85,7 @@ public class BukkitPlaceholderManager implements PlaceholderManager { result = replacements.get(placeholder); if (result != null) return result; - String custom = customPlaceholderMap.get(placeholder); + String custom = customPlaceholderMap.get(placeholder).apply(player); if (custom == null) return placeholder; return setPlaceholders(player, custom); @@ -92,7 +100,7 @@ public class BukkitPlaceholderManager implements PlaceholderManager { replacer = replacements.get(papi); } if (replacer == null) { - String custom = customPlaceholderMap.get(papi); + String custom = customPlaceholderMap.get(papi).apply(player); if (custom != null) replacer = setPlaceholders(player, parse(player, custom, replacements)); } diff --git a/core/src/main/java/net/momirealms/customfishing/bukkit/action/BukkitActionManager.java b/core/src/main/java/net/momirealms/customfishing/bukkit/action/BukkitActionManager.java index 21a18c18..a0723eb8 100644 --- a/core/src/main/java/net/momirealms/customfishing/bukkit/action/BukkitActionManager.java +++ b/core/src/main/java/net/momirealms/customfishing/bukkit/action/BukkitActionManager.java @@ -361,7 +361,8 @@ public class BukkitActionManager implements ActionManager { return context -> { if (Math.random() > chance) return; final Player player = context.getHolder(); - player.getLocation().getWorld().spawn(player.getLocation().clone().add(0,0.5,0), ExperienceOrb.class, e -> e.setExperience((int) value.evaluate(context))); + ExperienceOrb entity = player.getLocation().getWorld().spawn(player.getLocation().clone().add(0,0.5,0), ExperienceOrb.class); + entity.setExperience((int) value.evaluate(context)); }; }); registerAction("exp", (args, chance) -> { diff --git a/core/src/main/java/net/momirealms/customfishing/bukkit/command/feature/DebugLootCommand.java b/core/src/main/java/net/momirealms/customfishing/bukkit/command/feature/DebugLootCommand.java index 33e35cdc..707af3e6 100644 --- a/core/src/main/java/net/momirealms/customfishing/bukkit/command/feature/DebugLootCommand.java +++ b/core/src/main/java/net/momirealms/customfishing/bukkit/command/feature/DebugLootCommand.java @@ -24,7 +24,6 @@ import net.momirealms.customfishing.api.mechanic.context.Context; import net.momirealms.customfishing.api.mechanic.context.ContextKeys; import net.momirealms.customfishing.api.mechanic.effect.Effect; import net.momirealms.customfishing.api.mechanic.effect.EffectModifier; -import net.momirealms.customfishing.api.mechanic.effect.EffectProperties; import net.momirealms.customfishing.api.mechanic.fishing.FishingGears; import net.momirealms.customfishing.bukkit.command.BukkitCommandFeature; import net.momirealms.customfishing.common.command.CustomFishingCommandManager; @@ -39,14 +38,12 @@ import org.incendo.cloud.CommandManager; import org.incendo.cloud.context.CommandContext; import org.incendo.cloud.context.CommandInput; import org.incendo.cloud.parser.standard.StringParser; -import org.incendo.cloud.parser.standard.UUIDParser; import org.incendo.cloud.suggestion.Suggestion; import org.incendo.cloud.suggestion.SuggestionProvider; import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.UUID; import java.util.concurrent.CompletableFuture; import java.util.stream.Stream; 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 4cebb290..97b4dc08 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 @@ -839,6 +839,11 @@ public class BukkitConfigManager extends ConfigManager { Action[] actions = plugin.getActionManager().parseActions(section); return builder -> builder.action(ActionTrigger.INTERACT, actions); }, "events", "interact"); + this.registerEventParser(object -> { + Section section = (Section) object; + Action[] actions = plugin.getActionManager().parseActions(section); + return builder -> builder.action(ActionTrigger.REEL, actions); + }, "events", "reel"); this.registerEventParser(object -> { Section section = (Section) object; Action[] actions = plugin.getActionManager().parseActions(section); diff --git a/core/src/main/java/net/momirealms/customfishing/bukkit/event/BukkitEventManager.java b/core/src/main/java/net/momirealms/customfishing/bukkit/event/BukkitEventManager.java index ea20a7c0..79dde552 100644 --- a/core/src/main/java/net/momirealms/customfishing/bukkit/event/BukkitEventManager.java +++ b/core/src/main/java/net/momirealms/customfishing/bukkit/event/BukkitEventManager.java @@ -37,6 +37,7 @@ import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.ItemStack; import java.util.HashMap; +import java.util.List; import java.util.Optional; public class BukkitEventManager implements EventManager, Listener { @@ -84,7 +85,13 @@ public class BukkitEventManager implements EventManager, Listener { Context context = Context.player(event.getPlayer()); Block clicked = event.getClickedBlock(); context.arg(ContextKeys.OTHER_LOCATION, clicked == null ? event.getPlayer().getLocation() : clicked.getLocation()); - trigger(context, id, MechanicType.UTIL, ActionTrigger.INTERACT); + List mechanics = MechanicType.getTypeByID(id); + if (mechanics != null) { + for (MechanicType type : mechanics) { + if (type == MechanicType.ROD) continue; + trigger(context, id, type, ActionTrigger.INTERACT); + } + } } @EventHandler (ignoreCancelled = true) diff --git a/core/src/main/java/net/momirealms/customfishing/bukkit/requirement/BukkitRequirementManager.java b/core/src/main/java/net/momirealms/customfishing/bukkit/requirement/BukkitRequirementManager.java index dff85941..454aad18 100644 --- a/core/src/main/java/net/momirealms/customfishing/bukkit/requirement/BukkitRequirementManager.java +++ b/core/src/main/java/net/momirealms/customfishing/bukkit/requirement/BukkitRequirementManager.java @@ -184,6 +184,7 @@ public class BukkitRequirementManager implements RequirementManager { this.registerPluginLevelRequirement(); this.registerItemInHandRequirement(); this.registerImpossibleRequirement(); + this.registerPotionEffectRequirement(); } private void registerImpossibleRequirement() { diff --git a/core/src/main/resources/config.yml b/core/src/main/resources/config.yml index f3d813ce..427fa637 100644 --- a/core/src/main/resources/config.yml +++ b/core/src/main/resources/config.yml @@ -417,7 +417,6 @@ other-settings: '{date}': '%server_time_yyyy-MM-dd-HH:mm:ss%' # Requires player expansion '{yaw}': '%player_yaw%' - '{random}': '%customfishing_random%' # CustomFishing supports using items/blocks from other plugins # If items share the same id, they would inherit the effects # Check the wiki for examples