diff --git a/api/src/main/java/net/momirealms/customfishing/api/data/DataStorageInterface.java b/api/src/main/java/net/momirealms/customfishing/api/data/DataStorageInterface.java index 85384083..65be3246 100644 --- a/api/src/main/java/net/momirealms/customfishing/api/data/DataStorageInterface.java +++ b/api/src/main/java/net/momirealms/customfishing/api/data/DataStorageInterface.java @@ -18,7 +18,6 @@ package net.momirealms.customfishing.api.data; import net.momirealms.customfishing.api.data.user.OfflineUser; -import net.momirealms.customfishing.api.data.user.OnlineUser; import java.util.Collection; import java.util.Optional; diff --git a/api/src/main/java/net/momirealms/customfishing/api/manager/LootManager.java b/api/src/main/java/net/momirealms/customfishing/api/manager/LootManager.java index a92b6faf..cd58dcdc 100644 --- a/api/src/main/java/net/momirealms/customfishing/api/manager/LootManager.java +++ b/api/src/main/java/net/momirealms/customfishing/api/manager/LootManager.java @@ -20,6 +20,12 @@ package net.momirealms.customfishing.api.manager; import net.momirealms.customfishing.api.mechanic.loot.Loot; import org.jetbrains.annotations.Nullable; +import java.util.List; + public interface LootManager { + Loot getGlobalLootProperties(); + + @Nullable List getLootGroup(String key); + @Nullable Loot getLoot(String key); } diff --git a/api/src/main/java/net/momirealms/customfishing/api/mechanic/effect/AbstractEffect.java b/api/src/main/java/net/momirealms/customfishing/api/mechanic/effect/AbstractEffect.java index f8ddd7ef..a05613c9 100644 --- a/api/src/main/java/net/momirealms/customfishing/api/mechanic/effect/AbstractEffect.java +++ b/api/src/main/java/net/momirealms/customfishing/api/mechanic/effect/AbstractEffect.java @@ -18,9 +18,7 @@ package net.momirealms.customfishing.api.mechanic.effect; import net.momirealms.customfishing.api.common.Pair; -import net.momirealms.customfishing.api.mechanic.condition.Condition; import net.momirealms.customfishing.api.mechanic.loot.Modifier; -import net.momirealms.customfishing.api.mechanic.requirement.Requirement; import java.util.ArrayList; import java.util.List; diff --git a/api/src/main/java/net/momirealms/customfishing/api/mechanic/effect/Effect.java b/api/src/main/java/net/momirealms/customfishing/api/mechanic/effect/Effect.java index 06ea1cb8..4d063238 100644 --- a/api/src/main/java/net/momirealms/customfishing/api/mechanic/effect/Effect.java +++ b/api/src/main/java/net/momirealms/customfishing/api/mechanic/effect/Effect.java @@ -18,9 +18,7 @@ package net.momirealms.customfishing.api.mechanic.effect; import net.momirealms.customfishing.api.common.Pair; -import net.momirealms.customfishing.api.mechanic.condition.Condition; import net.momirealms.customfishing.api.mechanic.loot.Modifier; -import net.momirealms.customfishing.api.mechanic.requirement.Requirement; import java.util.List; diff --git a/api/src/main/java/net/momirealms/customfishing/api/mechanic/effect/FishingEffect.java b/api/src/main/java/net/momirealms/customfishing/api/mechanic/effect/FishingEffect.java index c6096387..0c0d6d81 100644 --- a/api/src/main/java/net/momirealms/customfishing/api/mechanic/effect/FishingEffect.java +++ b/api/src/main/java/net/momirealms/customfishing/api/mechanic/effect/FishingEffect.java @@ -19,7 +19,6 @@ package net.momirealms.customfishing.api.mechanic.effect; import net.momirealms.customfishing.api.common.Pair; import net.momirealms.customfishing.api.mechanic.loot.Modifier; -import net.momirealms.customfishing.api.mechanic.requirement.Requirement; import java.util.List; diff --git a/api/src/main/java/net/momirealms/customfishing/api/mechanic/loot/CFLoot.java b/api/src/main/java/net/momirealms/customfishing/api/mechanic/loot/CFLoot.java new file mode 100644 index 00000000..fea18c92 --- /dev/null +++ b/api/src/main/java/net/momirealms/customfishing/api/mechanic/loot/CFLoot.java @@ -0,0 +1,179 @@ +package net.momirealms.customfishing.api.mechanic.loot; + +import net.momirealms.customfishing.api.CustomFishingPlugin; +import net.momirealms.customfishing.api.mechanic.action.Action; +import net.momirealms.customfishing.api.mechanic.action.ActionTrigger; +import net.momirealms.customfishing.api.mechanic.game.GameConfig; +import org.jetbrains.annotations.NotNull; + +import java.util.HashMap; + +public class CFLoot implements Loot { + + private final String id; + private final LootType type; + private String gameConfig; + private final HashMap actionMap; + private final HashMap successTimesActionMap; + private String nick; + private boolean showInFinder; + private boolean disableGame; + private boolean disableStats; + private boolean instanceGame; + private double score; + private String lootGroup; + + public CFLoot(String id, LootType type) { + this.id = id; + this.type = type; + this.actionMap = new HashMap<>(); + this.successTimesActionMap = new HashMap<>(); + } + + public static CFLoot of(String id, LootType type) { + return new CFLoot(id, type); + } + + public static class Builder { + + private final CFLoot loot; + + public Builder(String id, LootType type) { + this.loot = new CFLoot(id, type); + } + + public Builder nick(String nick) { + this.loot.nick = nick; + return this; + } + + public Builder showInFinder(boolean show) { + this.loot.showInFinder = show; + return this; + } + + public Builder instantGame(boolean instant) { + this.loot.instanceGame = instant; + return this; + } + + public Builder gameConfig(String gameConfig) { + this.loot.gameConfig = gameConfig; + return this; + } + + public Builder disableGames(boolean disable) { + this.loot.disableGame = disable; + return this; + } + + public Builder disableStats(boolean disable) { + this.loot.disableStats = disable; + return this; + } + + public Builder score(double score) { + this.loot.score = score; + return this; + } + + public Builder lootGroup(String group) { + this.loot.lootGroup = group; + return this; + } + + public Builder addActions(ActionTrigger trigger, Action[] actions) { + this.loot.actionMap.put(trigger, actions); + return this; + } + + public Builder addActions(HashMap actionMap) { + this.loot.actionMap.putAll(actionMap); + return this; + } + + public Builder addTimesActions(int times, Action[] actions) { + this.loot.successTimesActionMap.put(times, actions); + return this; + } + + public Builder addTimesActions(HashMap actionMap) { + this.loot.successTimesActionMap.putAll(actionMap); + return this; + } + + public CFLoot build() { + return loot; + } + } + + @Override + public boolean instanceGame() { + return this.instanceGame; + } + + @Override + public String getID() { + return this.id; + } + + @Override + public LootType getType() { + return this.type; + } + + @Override + public @NotNull String getNick() { + return this.nick; + } + + @Override + public boolean showInFinder() { + return this.showInFinder; + } + + @Override + public double getScore() { + return this.score; + } + + @Override + public boolean disableGame() { + return this.disableGame; + } + + @Override + public boolean disableStats() { + return this.disableStats; + } + + @Override + public String getLootGroup() { + return lootGroup; + } + + @Override + public GameConfig getGameConfig() { + return CustomFishingPlugin.get().getGameManager().getGameConfig(this.gameConfig); + } + + @Override + public String getGameConfigKey() { + return this.gameConfig; + } + + @Override + public Action[] getActions(ActionTrigger actionTrigger) { + return actionMap.get(actionTrigger); + } + + @Override + public Action[] getSuccessTimesActions(int times) { + return successTimesActionMap.get(times); + } + + @Override + public HashMap getSuccessTimesActionMap() { + return successTimesActionMap; + } +} \ No newline at end of file diff --git a/api/src/main/java/net/momirealms/customfishing/api/mechanic/loot/Loot.java b/api/src/main/java/net/momirealms/customfishing/api/mechanic/loot/Loot.java index 0d3ef2e1..a552c49e 100644 --- a/api/src/main/java/net/momirealms/customfishing/api/mechanic/loot/Loot.java +++ b/api/src/main/java/net/momirealms/customfishing/api/mechanic/loot/Loot.java @@ -71,12 +71,16 @@ public interface Loot { */ boolean disableStats(); + String getLootGroup(); + /** * Get the game config * @return game config */ GameConfig getGameConfig(); + String getGameConfigKey(); + /** * get actions triggered by certain events * @return actions diff --git a/plugin/src/main/java/net/momirealms/customfishing/command/sub/FishingBagCommand.java b/plugin/src/main/java/net/momirealms/customfishing/command/sub/FishingBagCommand.java index ea514304..17036cfd 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/command/sub/FishingBagCommand.java +++ b/plugin/src/main/java/net/momirealms/customfishing/command/sub/FishingBagCommand.java @@ -18,9 +18,7 @@ package net.momirealms.customfishing.command.sub; import dev.jorel.commandapi.CommandAPICommand; -import dev.jorel.commandapi.arguments.OfflinePlayerArgument; import dev.jorel.commandapi.arguments.PlayerArgument; -import dev.jorel.commandapi.arguments.StringArgument; import dev.jorel.commandapi.arguments.UUIDArgument; import net.momirealms.customfishing.adventure.AdventureManagerImpl; import net.momirealms.customfishing.api.CustomFishingPlugin; @@ -28,11 +26,9 @@ import net.momirealms.customfishing.api.data.user.OfflineUser; import net.momirealms.customfishing.setting.Locale; import net.momirealms.customfishing.storage.user.OfflineUserImpl; import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -import java.util.Objects; import java.util.UUID; public class FishingBagCommand { diff --git a/plugin/src/main/java/net/momirealms/customfishing/command/sub/ItemCommand.java b/plugin/src/main/java/net/momirealms/customfishing/command/sub/ItemCommand.java index 9a7796f8..8e0559de 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/command/sub/ItemCommand.java +++ b/plugin/src/main/java/net/momirealms/customfishing/command/sub/ItemCommand.java @@ -18,7 +18,10 @@ package net.momirealms.customfishing.command.sub; import dev.jorel.commandapi.CommandAPICommand; -import dev.jorel.commandapi.arguments.*; +import dev.jorel.commandapi.arguments.ArgumentSuggestions; +import dev.jorel.commandapi.arguments.EntitySelectorArgument; +import dev.jorel.commandapi.arguments.IntegerArgument; +import dev.jorel.commandapi.arguments.StringArgument; import net.momirealms.customfishing.adventure.AdventureManagerImpl; import net.momirealms.customfishing.api.CustomFishingPlugin; import net.momirealms.customfishing.api.common.Key; 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 408e916e..5659b13f 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 @@ -21,10 +21,12 @@ import net.kyori.adventure.key.Key; import net.kyori.adventure.sound.Sound; import net.momirealms.customfishing.adventure.AdventureManagerImpl; import net.momirealms.customfishing.api.CustomFishingPlugin; +import net.momirealms.customfishing.api.common.Pair; import net.momirealms.customfishing.api.manager.ActionManager; import net.momirealms.customfishing.api.mechanic.action.Action; import net.momirealms.customfishing.api.mechanic.action.ActionExpansion; import net.momirealms.customfishing.api.mechanic.action.ActionFactory; +import net.momirealms.customfishing.api.mechanic.requirement.Requirement; import net.momirealms.customfishing.api.util.LogUtils; import net.momirealms.customfishing.compatibility.papi.PlaceholderManagerImpl; import net.momirealms.customfishing.util.ClassUtils; @@ -69,6 +71,8 @@ public class ActionManagerImpl implements ActionManager { this.registerActionBarAction(); this.registerCloseInvAction(); this.registerDelayedAction(); + this.registerConditionalAction(); + this.registerPriorityAction(); } public void load() { @@ -373,6 +377,64 @@ public class ActionManagerImpl implements ActionManager { }); } + private void registerConditionalAction() { + registerAction("conditional", (args, chance) -> { + if (args instanceof ConfigurationSection section) { + Action[] actions = getActions(section.getConfigurationSection("actions")); + Requirement[] requirements = plugin.getRequirementManager().getRequirements(section.getConfigurationSection("conditions"), false); + return condition -> { + if (Math.random() > chance) return; + if (requirements != null) + for (Requirement requirement : requirements) { + if (!requirement.isConditionMet(condition)) { + return; + } + } + if (actions != null) + for (Action action : actions) { + action.trigger(condition); + } + }; + } + LogUtils.warn("Illegal value format found at action: conditional"); + return null; + }); + } + + private void registerPriorityAction() { + registerAction("priority", (args, chance) -> { + if (args instanceof ConfigurationSection section) { + List> conditionActionPairList = new ArrayList<>(); + for (Map.Entry entry : section.getValues(false).entrySet()) { + if (entry.getValue() instanceof ConfigurationSection inner) { + Action[] actions = getActions(inner.getConfigurationSection("actions")); + Requirement[] requirements = plugin.getRequirementManager().getRequirements(inner.getConfigurationSection("conditions"), false); + conditionActionPairList.add(Pair.of(requirements, actions)); + } + } + return condition -> { + if (Math.random() > chance) return; + outer: + for (Pair pair : conditionActionPairList) { + if (pair.left() != null) + for (Requirement requirement : pair.left()) { + if (!requirement.isConditionMet(condition)) { + continue outer; + } + } + if (pair.right() != null) + for (Action action : pair.right()) { + action.trigger(condition); + } + return; + } + }; + } + LogUtils.warn("Illegal value format found at action: conditional"); + return null; + }); + } + private void registerPluginExpAction() { registerAction("plugin-exp", (args, chance) -> { if (args instanceof ConfigurationSection section) { diff --git a/plugin/src/main/java/net/momirealms/customfishing/mechanic/effect/EffectManagerImpl.java b/plugin/src/main/java/net/momirealms/customfishing/mechanic/effect/EffectManagerImpl.java index 6e2ae1c9..fe94c720 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/mechanic/effect/EffectManagerImpl.java +++ b/plugin/src/main/java/net/momirealms/customfishing/mechanic/effect/EffectManagerImpl.java @@ -19,10 +19,13 @@ package net.momirealms.customfishing.mechanic.effect; import net.momirealms.customfishing.api.CustomFishingPlugin; import net.momirealms.customfishing.api.common.Key; +import net.momirealms.customfishing.api.common.Pair; import net.momirealms.customfishing.api.manager.EffectManager; import net.momirealms.customfishing.api.mechanic.effect.Effect; import net.momirealms.customfishing.api.mechanic.effect.EffectCarrier; import net.momirealms.customfishing.api.mechanic.effect.FishingEffect; +import net.momirealms.customfishing.api.mechanic.loot.Modifier; +import net.momirealms.customfishing.api.util.LogUtils; import net.momirealms.customfishing.util.ConfigUtils; import org.apache.commons.lang3.StringUtils; import org.bukkit.configuration.ConfigurationSection; @@ -111,7 +114,8 @@ public class EffectManagerImpl implements EffectManager { public Effect getEffectFromSection(ConfigurationSection section) { if (section == null) return getInitialEffect(); return new FishingEffect.Builder() - .lootWeightModifier(ConfigUtils.getModifiers(section.getStringList("weight"))) + .lootWeightModifier(ConfigUtils.getModifiers(section.getStringList("weight-single"))) + .lootWeightModifier(getGroupModifiers(section.getStringList("weight-group"))) .timeModifier(section.getDouble("hook-time", 1)) .difficultyModifier(section.getDouble("difficulty", 0)) .multipleLootChance(section.getDouble("multiple-loot", 0)) @@ -140,4 +144,21 @@ public class EffectManagerImpl implements EffectManager { public void disable() { this.effectMap.clear(); } + + private List> getGroupModifiers(List modList) { + List> result = new ArrayList<>(); + for (String group : modList) { + String[] split = group.split(":",2); + String key = split[0]; + List members = plugin.getLootManager().getLootGroup(key); + if (members == null) { + LogUtils.warn("Group " + key + " doesn't include any loot. The effect would not take effect."); + return result; + } + for (String loot : members) { + result.add(Pair.of(loot, ConfigUtils.getModifier(split[1]))); + } + } + return result; + } } 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 70a6b691..30699a77 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 @@ -482,7 +482,7 @@ public class FishingManagerImpl implements Listener, FishingManager { return; } - Action[] globalActions = LootManagerImpl.globalLootProperties.getActions(ActionTrigger.FAILURE); + Action[] globalActions = LootManagerImpl.GlobalSetting.globalLootProperties.getActions(ActionTrigger.FAILURE); if (globalActions != null) for (Action action : globalActions) action.trigger(fishingPreparation); @@ -579,7 +579,7 @@ public class FishingManagerImpl implements Listener, FishingManager { fishingPreparation.insertArg("{score}","-1"); } - Action[] globalActions = LootManagerImpl.globalLootProperties.getActions(ActionTrigger.SUCCESS); + Action[] globalActions = LootManagerImpl.GlobalSetting.globalLootProperties.getActions(ActionTrigger.SUCCESS); if (globalActions != null) for (Action action : globalActions) action.trigger(fishingPreparation); diff --git a/plugin/src/main/java/net/momirealms/customfishing/mechanic/loot/LootManagerImpl.java b/plugin/src/main/java/net/momirealms/customfishing/mechanic/loot/LootManagerImpl.java index 47fb85a7..6487aef8 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/mechanic/loot/LootManagerImpl.java +++ b/plugin/src/main/java/net/momirealms/customfishing/mechanic/loot/LootManagerImpl.java @@ -21,14 +21,13 @@ import net.momirealms.customfishing.api.CustomFishingPlugin; import net.momirealms.customfishing.api.manager.LootManager; import net.momirealms.customfishing.api.mechanic.action.Action; import net.momirealms.customfishing.api.mechanic.action.ActionTrigger; -import net.momirealms.customfishing.api.mechanic.game.GameConfig; +import net.momirealms.customfishing.api.mechanic.loot.CFLoot; import net.momirealms.customfishing.api.mechanic.loot.Loot; import net.momirealms.customfishing.api.mechanic.loot.LootType; import net.momirealms.customfishing.api.util.LogUtils; import org.apache.commons.lang3.StringUtils; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.YamlConfiguration; -import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.io.File; @@ -38,16 +37,22 @@ public class LootManagerImpl implements LootManager { private final CustomFishingPlugin plugin; private final HashMap lootMap; - public static CFLoot globalLootProperties; - private boolean disableStats; - private boolean disableGames; - private boolean instantGame; - private boolean showInFinder; - private String gameGroup; + private final HashMap> lootGroupMap; + + public static class GlobalSetting { + public static CFLoot globalLootProperties; + public static boolean disableStats; + public static boolean disableGames; + public static boolean instantGame; + public static boolean showInFinder; + public static String gameGroup; + public static String lootGroup; + } public LootManagerImpl(CustomFishingPlugin plugin) { this.plugin = plugin; this.lootMap = new HashMap<>(); + this.lootGroupMap = new HashMap<>(); } public void load() { @@ -57,6 +62,7 @@ public class LootManagerImpl implements LootManager { public void unload() { this.lootMap.clear(); + this.lootGroupMap.clear(); } public void disable() { @@ -88,6 +94,17 @@ public class LootManagerImpl implements LootManager { } } + @Override + public Loot getGlobalLootProperties() { + return GlobalSetting.globalLootProperties; + } + + @Nullable + @Override + public List getLootGroup(String key) { + return lootGroupMap.get(key); + } + @Nullable @Override public Loot getLoot(String key) { @@ -96,16 +113,17 @@ public class LootManagerImpl implements LootManager { private void loadGlobalLootProperties() { YamlConfiguration config = plugin.getConfig("config.yml"); - globalLootProperties = getSingleSectionItem( + GlobalSetting.globalLootProperties = getSingleSectionItem( Objects.requireNonNull(config.getConfigurationSection("mechanics.global-loot-properties")), "GLOBAL", "global" ); - disableStats = globalLootProperties.disableStats(); - disableGames = globalLootProperties.disableGame(); - instantGame = globalLootProperties.instanceGame(); - showInFinder = globalLootProperties.showInFinder(); - gameGroup = globalLootProperties.gameConfig; + GlobalSetting.disableStats = GlobalSetting.globalLootProperties.disableStats(); + GlobalSetting.disableGames = GlobalSetting.globalLootProperties.disableGame(); + GlobalSetting.instantGame = GlobalSetting.globalLootProperties.instanceGame(); + GlobalSetting.showInFinder = GlobalSetting.globalLootProperties.showInFinder(); + GlobalSetting.lootGroup = GlobalSetting.globalLootProperties.getLootGroup(); + GlobalSetting.gameGroup = GlobalSetting.globalLootProperties.getGameConfigKey(); } private void loadSingleFile(File file, String namespace) { @@ -122,17 +140,23 @@ public class LootManagerImpl implements LootManager { } else { lootMap.put(entry.getKey(), loot); } + String group = loot.getLootGroup(); + if (group != null) { + List groupMembers = lootGroupMap.computeIfAbsent(group, k -> new ArrayList<>()); + groupMembers.add(loot.getID()); + } } } } private CFLoot getSingleSectionItem(ConfigurationSection section, String namespace, String key) { return new CFLoot.Builder(key, LootType.valueOf(namespace.toUpperCase(Locale.ENGLISH))) - .disableStats(section.getBoolean("disable-stat", disableStats)) - .disableGames(section.getBoolean("disable-game", disableGames)) - .instantGame(section.getBoolean("instant-game", instantGame)) - .showInFinder(section.getBoolean("show-in-fishfinder", showInFinder)) - .gameConfig(section.getString("game-group", gameGroup)) + .disableStats(section.getBoolean("disable-stat", GlobalSetting.disableStats)) + .disableGames(section.getBoolean("disable-game", GlobalSetting.disableGames)) + .instantGame(section.getBoolean("instant-game", GlobalSetting.instantGame)) + .showInFinder(section.getBoolean("show-in-fishfinder", GlobalSetting.showInFinder)) + .gameConfig(section.getString("game-group", GlobalSetting.gameGroup)) + .lootGroup(section.getString("loot-group", GlobalSetting.lootGroup)) .nick(section.getString("nick", section.getString("display.name", key))) .addActions(getActionMap(section.getConfigurationSection("events"))) .addTimesActions(getTimesActionMap(section.getConfigurationSection("events.success-times"))) @@ -163,159 +187,4 @@ public class LootManagerImpl implements LootManager { } return actionMap; } - - public static class CFLoot implements Loot { - - private final String id; - private final LootType type; - private String gameConfig; - private final HashMap actionMap; - private final HashMap successTimesActionMap; - private String nick; - private boolean showInFinder; - private boolean disableGame; - private boolean disableStats; - private boolean instanceGame; - private double score; - - public CFLoot(String id, LootType type) { - this.id = id; - this.type = type; - this.actionMap = new HashMap<>(); - this.successTimesActionMap = new HashMap<>(); - } - - public static CFLoot of(String id, LootType type) { - return new CFLoot(id, type); - } - - public static class Builder { - - private final CFLoot loot; - - public Builder(String id, LootType type) { - this.loot = new CFLoot(id, type); - } - - public Builder nick(String nick) { - this.loot.nick = nick; - return this; - } - - public Builder showInFinder(boolean show) { - this.loot.showInFinder = show; - return this; - } - - public Builder instantGame(boolean instant) { - this.loot.instanceGame = instant; - return this; - } - - public Builder gameConfig(String gameConfig) { - this.loot.gameConfig = gameConfig; - return this; - } - - public Builder disableGames(boolean disable) { - this.loot.disableGame = disable; - return this; - } - - public Builder disableStats(boolean disable) { - this.loot.disableStats = disable; - return this; - } - - public Builder score(double score) { - this.loot.score = score; - return this; - } - - public Builder addActions(ActionTrigger trigger, Action[] actions) { - this.loot.actionMap.put(trigger, actions); - return this; - } - - public Builder addActions(HashMap actionMap) { - this.loot.actionMap.putAll(actionMap); - return this; - } - - public Builder addTimesActions(int times, Action[] actions) { - this.loot.successTimesActionMap.put(times, actions); - return this; - } - - public Builder addTimesActions(HashMap actionMap) { - this.loot.successTimesActionMap.putAll(actionMap); - return this; - } - - public CFLoot build() { - return loot; - } - } - - @Override - public boolean instanceGame() { - return this.instanceGame; - } - - @Override - public String getID() { - return this.id; - } - - @Override - public LootType getType() { - return this.type; - } - - @Override - public @NotNull String getNick() { - return this.nick; - } - - @Override - public boolean showInFinder() { - return this.showInFinder; - } - - @Override - public double getScore() { - return this.score; - } - - @Override - public boolean disableGame() { - return this.disableGame; - } - - @Override - public boolean disableStats() { - return this.disableStats; - } - - @Override - public GameConfig getGameConfig() { - return CustomFishingPlugin.get().getGameManager().getGameConfig(this.gameConfig); - } - - @Override - public Action[] getActions(ActionTrigger actionTrigger) { - return actionMap.get(actionTrigger); - } - - @Override - public Action[] getSuccessTimesActions(int times) { - return successTimesActionMap.get(times); - } - - @Override - public HashMap getSuccessTimesActionMap() { - return successTimesActionMap; - } - } - } diff --git a/plugin/src/main/java/net/momirealms/customfishing/mechanic/requirement/RequirementManagerImpl.java b/plugin/src/main/java/net/momirealms/customfishing/mechanic/requirement/RequirementManagerImpl.java index 0f4a355e..179df566 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/mechanic/requirement/RequirementManagerImpl.java +++ b/plugin/src/main/java/net/momirealms/customfishing/mechanic/requirement/RequirementManagerImpl.java @@ -25,7 +25,6 @@ import net.momirealms.customfishing.api.integration.SeasonInterface; import net.momirealms.customfishing.api.manager.RequirementManager; import net.momirealms.customfishing.api.mechanic.action.Action; import net.momirealms.customfishing.api.mechanic.condition.Condition; -import net.momirealms.customfishing.api.mechanic.game.GameExpansion; import net.momirealms.customfishing.api.mechanic.requirement.Requirement; import net.momirealms.customfishing.api.mechanic.requirement.RequirementExpansion; import net.momirealms.customfishing.api.mechanic.requirement.RequirementFactory; diff --git a/plugin/src/main/java/net/momirealms/customfishing/storage/method/AbstractStorage.java b/plugin/src/main/java/net/momirealms/customfishing/storage/method/AbstractStorage.java index b4ae2a9d..def38b0e 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/storage/method/AbstractStorage.java +++ b/plugin/src/main/java/net/momirealms/customfishing/storage/method/AbstractStorage.java @@ -20,7 +20,6 @@ package net.momirealms.customfishing.storage.method; import net.momirealms.customfishing.api.CustomFishingPlugin; import net.momirealms.customfishing.api.data.DataStorageInterface; import net.momirealms.customfishing.api.data.user.OfflineUser; -import net.momirealms.customfishing.api.data.user.OnlineUser; import java.time.Instant; import java.util.Collection; diff --git a/plugin/src/main/java/net/momirealms/customfishing/storage/method/database/nosql/MongoDBImpl.java b/plugin/src/main/java/net/momirealms/customfishing/storage/method/database/nosql/MongoDBImpl.java index 7628e14c..5f582579 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/storage/method/database/nosql/MongoDBImpl.java +++ b/plugin/src/main/java/net/momirealms/customfishing/storage/method/database/nosql/MongoDBImpl.java @@ -28,7 +28,6 @@ import net.momirealms.customfishing.api.CustomFishingPlugin; import net.momirealms.customfishing.api.data.PlayerData; import net.momirealms.customfishing.api.data.StorageType; import net.momirealms.customfishing.api.data.user.OfflineUser; -import net.momirealms.customfishing.api.data.user.OnlineUser; import net.momirealms.customfishing.api.util.LogUtils; import net.momirealms.customfishing.storage.method.AbstractStorage; import org.bson.Document; diff --git a/plugin/src/main/java/net/momirealms/customfishing/storage/method/database/sql/AbstractSQLDatabase.java b/plugin/src/main/java/net/momirealms/customfishing/storage/method/database/sql/AbstractSQLDatabase.java index edfb555d..4cad501f 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/storage/method/database/sql/AbstractSQLDatabase.java +++ b/plugin/src/main/java/net/momirealms/customfishing/storage/method/database/sql/AbstractSQLDatabase.java @@ -20,7 +20,6 @@ package net.momirealms.customfishing.storage.method.database.sql; import net.momirealms.customfishing.api.CustomFishingPlugin; import net.momirealms.customfishing.api.data.PlayerData; import net.momirealms.customfishing.api.data.user.OfflineUser; -import net.momirealms.customfishing.api.data.user.OnlineUser; import net.momirealms.customfishing.api.util.LogUtils; import net.momirealms.customfishing.setting.Config; import net.momirealms.customfishing.storage.method.AbstractStorage; diff --git a/plugin/src/main/java/net/momirealms/customfishing/storage/method/database/sql/SQLiteImpl.java b/plugin/src/main/java/net/momirealms/customfishing/storage/method/database/sql/SQLiteImpl.java index 56c82f5e..4dc3c73c 100644 --- a/plugin/src/main/java/net/momirealms/customfishing/storage/method/database/sql/SQLiteImpl.java +++ b/plugin/src/main/java/net/momirealms/customfishing/storage/method/database/sql/SQLiteImpl.java @@ -21,7 +21,6 @@ import net.momirealms.customfishing.api.CustomFishingPlugin; import net.momirealms.customfishing.api.data.PlayerData; import net.momirealms.customfishing.api.data.StorageType; import net.momirealms.customfishing.api.data.user.OfflineUser; -import net.momirealms.customfishing.api.data.user.OnlineUser; import net.momirealms.customfishing.api.util.LogUtils; import net.momirealms.customfishing.setting.Config; import org.bukkit.Bukkit;