9
0
mirror of https://github.com/Xiao-MoMi/Custom-Fishing.git synced 2026-01-04 15:41:35 +00:00

checkpoint - 2

This commit is contained in:
XiaoMoMi
2024-05-18 23:31:53 +08:00
parent 5166989a48
commit ddc1f4245f
197 changed files with 2673 additions and 5089 deletions

View File

@@ -38,8 +38,6 @@ import net.momirealms.customfishing.mechanic.misc.CoolDownManager;
import net.momirealms.customfishing.mechanic.requirement.RequirementManagerImpl;
import net.momirealms.customfishing.mechanic.statistic.StatisticsManagerImpl;
import net.momirealms.customfishing.mechanic.totem.TotemManagerImpl;
import net.momirealms.customfishing.setting.CFConfig;
import net.momirealms.customfishing.setting.CFLocale;
import net.momirealms.customfishing.storage.StorageManagerImpl;
import net.momirealms.customfishing.version.VersionManagerImpl;
import org.bstats.bukkit.Metrics;

View File

@@ -1,278 +0,0 @@
/*
* Copyright (C) <2022> <XiaoMoMi>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package net.momirealms.customfishing.bukkit.compatibility;
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import net.momirealms.customfishing.api.integration.EnchantmentProvider;
import net.momirealms.customfishing.api.integration.LevelerProvider;
import net.momirealms.customfishing.api.integration.SeasonProvider;
import net.momirealms.customfishing.api.integration.IntegrationManager;
import net.momirealms.customfishing.bukkit.compatibility.block.ItemsAdderBlockImpl;
import net.momirealms.customfishing.bukkit.compatibility.enchant.AdvancedEnchantmentsImpl;
import net.momirealms.customfishing.bukkit.compatibility.enchant.VanillaEnchantmentsImpl;
import net.momirealms.customfishing.bukkit.compatibility.entity.ItemsAdderEntityImpl;
import net.momirealms.customfishing.bukkit.compatibility.entity.MythicEntityImpl;
import net.momirealms.customfishing.bukkit.compatibility.item.*;
import net.momirealms.customfishing.bukkit.compatibility.level.*;
import net.momirealms.customfishing.bukkit.compatibility.quest.BattlePassHook;
import net.momirealms.customfishing.bukkit.compatibility.quest.BetonQuestHook;
import net.momirealms.customfishing.bukkit.compatibility.quest.ClueScrollsHook;
import net.momirealms.customfishing.bukkit.compatibility.season.CustomCropsSeasonImpl;
import net.momirealms.customfishing.bukkit.compatibility.season.RealisticSeasonsImpl;
import net.momirealms.customfishing.compatibility.item.*;
import net.momirealms.customfishing.compatibility.level.*;
import org.bukkit.Bukkit;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class IntegrationManagerImpl implements IntegrationManager {
private final BukkitCustomFishingPlugin plugin;
private final HashMap<String, LevelerProvider> levelPluginMap;
private final HashMap<String, EnchantmentProvider> enchantmentPluginMap;
private SeasonProvider seasonProvider;
public IntegrationManagerImpl(BukkitCustomFishingPlugin plugin) {
this.plugin = plugin;
this.levelPluginMap = new HashMap<>();
this.enchantmentPluginMap = new HashMap<>();
this.load();
}
public void disable() {
this.enchantmentPluginMap.clear();
this.levelPluginMap.clear();
}
public void load() {
if (Bukkit.getPluginManager().getPlugin("ItemsAdder") != null) {
plugin.getItemManager().registerItemLibrary(new ItemsAdderItemImpl());
plugin.getBlockManager().registerBlockLibrary(new ItemsAdderBlockImpl());
plugin.getEntityManager().registerEntityProvider(new ItemsAdderEntityImpl());
hookMessage("ItemsAdder");
}
if (Bukkit.getPluginManager().getPlugin("MMOItems") != null) {
plugin.getItemManager().registerItemLibrary(new MMOItemsItemImpl());
hookMessage("MMOItems");
}
if (Bukkit.getPluginManager().getPlugin("Oraxen") != null) {
plugin.getItemManager().registerItemLibrary(new OraxenItemImpl());
hookMessage("Oraxen");
}
if (plugin.isHookedPluginEnabled("Zaphkiel")) {
plugin.getItemManager().registerItemLibrary(new ZaphkielItemImpl());
hookMessage("Zaphkiel");
}
if (plugin.isHookedPluginEnabled("NeigeItems")) {
plugin.getItemManager().registerItemLibrary(new NeigeItemsItemImpl());
hookMessage("NeigeItems");
}
if (Bukkit.getPluginManager().getPlugin("MythicMobs") != null) {
plugin.getItemManager().registerItemLibrary(new MythicMobsItemImpl());
plugin.getEntityManager().registerEntityProvider(new MythicEntityImpl());
hookMessage("MythicMobs");
}
if (plugin.isHookedPluginEnabled("EcoJobs")) {
registerLevelerProvider("EcoJobs", new EcoJobsImpl());
hookMessage("EcoJobs");
}
if (plugin.isHookedPluginEnabled("EcoSkills")) {
registerLevelerProvider("EcoSkills", new EcoSkillsImpl());
hookMessage("EcoSkills");
}
if (Bukkit.getPluginManager().getPlugin("Jobs") != null) {
registerLevelerProvider("JobsReborn", new JobsRebornImpl());
hookMessage("JobsReborn");
}
if (plugin.isHookedPluginEnabled("MMOCore")) {
registerLevelerProvider("MMOCore", new MMOCoreImpl());
hookMessage("MMOCore");
}
if (plugin.isHookedPluginEnabled("mcMMO")) {
try {
plugin.getItemManager().registerItemLibrary(new McMMOTreasureImpl());
} catch (ClassNotFoundException | NoSuchMethodException e) {
LogUtils.warn("Failed to initialize mcMMO Treasure");
}
registerLevelerProvider("mcMMO", new McMMOImpl());
hookMessage("mcMMO");
}
if (plugin.isHookedPluginEnabled("AureliumSkills")) {
registerLevelerProvider("AureliumSkills", new AureliumSkillsImpl());
hookMessage("AureliumSkills");
}
if (plugin.isHookedPluginEnabled("AuraSkills")) {
registerLevelerProvider("AuraSkills", new AuraSkillsImpl());
hookMessage("AuraSkills");
}
if (plugin.isHookedPluginEnabled("EcoEnchants")) {
this.enchantmentPluginMap.put("EcoEnchants", new VanillaEnchantmentsImpl());
hookMessage("EcoEnchants");
} else {
this.enchantmentPluginMap.put("vanilla", new VanillaEnchantmentsImpl());
}
if (plugin.isHookedPluginEnabled("AdvancedEnchantments")) {
this.enchantmentPluginMap.put("AdvancedEnchantments", new AdvancedEnchantmentsImpl());
hookMessage("AdvancedEnchantments");
}
if (plugin.isHookedPluginEnabled("RealisticSeasons")) {
this.seasonProvider = new RealisticSeasonsImpl();
} else if (plugin.isHookedPluginEnabled("CustomCrops")) {
this.seasonProvider = new CustomCropsSeasonImpl();
}
if (plugin.isHookedPluginEnabled("Vault")) {
VaultHook.initialize();
}
if (plugin.isHookedPluginEnabled("BattlePass")){
BattlePassHook battlePassHook = new BattlePassHook();
battlePassHook.register();
hookMessage("BattlePass");
}
if (plugin.isHookedPluginEnabled("ClueScrolls")) {
ClueScrollsHook clueScrollsHook = new ClueScrollsHook();
clueScrollsHook.register();
hookMessage("ClueScrolls");
}
if (plugin.isHookedPluginEnabled("BetonQuest")) {
BetonQuestHook.register();
hookMessage("BetonQuest");
}
// if (plugin.isHookedPluginEnabled("NotQuests")) {
// NotQuestHook notQuestHook = new NotQuestHook();
// notQuestHook.register();
// hookMessage("NotQuests");
// }
}
/**
* Registers a level plugin with the specified name.
*
* @param plugin The name of the level plugin.
* @param level The implementation of the LevelInterface.
* @return true if the registration was successful, false if the plugin name is already registered.
*/
@Override
public boolean registerLevelerProvider(String plugin, LevelerProvider level) {
if (levelPluginMap.containsKey(plugin)) return false;
levelPluginMap.put(plugin, level);
return true;
}
/**
* Unregisters a level plugin with the specified name.
*
* @param plugin The name of the level plugin to unregister.
* @return true if the unregistration was successful, false if the plugin name is not found.
*/
@Override
public boolean unregisterLevelerProvider(String plugin) {
return levelPluginMap.remove(plugin) != null;
}
/**
* Registers an enchantment provided by a plugin.
*
* @param plugin The name of the plugin providing the enchantment.
* @param enchantment The enchantment to register.
* @return true if the registration was successful, false if the enchantment name is already in use.
*/
@Override
public boolean registerEnchantment(String plugin, EnchantmentProvider enchantment) {
if (enchantmentPluginMap.containsKey(plugin)) return false;
enchantmentPluginMap.put(plugin, enchantment);
return true;
}
/**
* Unregisters an enchantment provided by a plugin.
*
* @param plugin The name of the plugin providing the enchantment.
* @return true if the enchantment was successfully unregistered, false if the enchantment was not found.
*/
@Override
public boolean unregisterEnchantment(String plugin) {
return enchantmentPluginMap.remove(plugin) != null;
}
private void hookMessage(String plugin) {
LogUtils.info( plugin + " hooked!");
}
/**
* Get the LevelInterface provided by a plugin.
*
* @param plugin The name of the plugin providing the LevelInterface.
* @return The LevelInterface provided by the specified plugin, or null if the plugin is not registered.
*/
@Override
@Nullable
public LevelerProvider getLevelPlugin(String plugin) {
return levelPluginMap.get(plugin);
}
/**
* Get an enchantment plugin by its plugin name.
*
* @param plugin The name of the enchantment plugin.
* @return The enchantment plugin interface, or null if not found.
*/
@Override
@Nullable
public EnchantmentProvider getEnchantmentPlugin(String plugin) {
return enchantmentPluginMap.get(plugin);
}
/**
* Get a list of enchantment keys with level applied to the given ItemStack.
*
* @param itemStack The ItemStack to check for enchantments.
* @return A list of enchantment names applied to the ItemStack.
*/
@Override
public List<String> getEnchantments(ItemStack itemStack) {
ArrayList<String> list = new ArrayList<>();
for (EnchantmentProvider enchantmentProvider : enchantmentPluginMap.values()) {
list.addAll(enchantmentProvider.getEnchants(itemStack));
}
return list;
}
/**
* Get the current season interface, if available.
*
* @return The current season interface, or null if not available.
*/
@Nullable
public SeasonProvider getSeasonInterface() {
return seasonProvider;
}
/**
* Set the current season interface.
*
* @param season The season interface to set.
*/
@Override
public void setSeasonInterface(SeasonProvider season) {
this.seasonProvider = season;
}
}

View File

@@ -19,7 +19,6 @@ package net.momirealms.customfishing.bukkit.compatibility.papi;
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import net.momirealms.customfishing.api.data.user.OnlineUser;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
@@ -87,7 +86,7 @@ public class CFPapi extends PlaceholderExpansion {
}
}
case "earnings" -> {
OnlineUser user;
OnlineUserData user;
if (split.length < 3) {
user = plugin.getStorageManager().getOnlineUser(player.getUniqueId());
} else {
@@ -103,7 +102,7 @@ public class CFPapi extends PlaceholderExpansion {
}
case "canearn" -> {
if (split.length < 3) {
OnlineUser user = plugin.getStorageManager().getOnlineUser(player.getUniqueId());
OnlineUserData user = plugin.getStorageManager().getOnlineUser(player.getUniqueId());
if (user == null)
return "";
return String.format("%.2f", plugin.getMarketManager().getEarningLimit(player) - user.getEarningData().earnings);
@@ -113,7 +112,7 @@ public class CFPapi extends PlaceholderExpansion {
return "";
}
OnlineUser user = plugin.getStorageManager().getOnlineUser(another.getUniqueId());
OnlineUserData user = plugin.getStorageManager().getOnlineUser(another.getUniqueId());
if (user == null)
return "";
return String.format("%.2f", plugin.getMarketManager().getEarningLimit(another) - user.getEarningData().earnings);

View File

@@ -20,7 +20,6 @@ package net.momirealms.customfishing.bukkit.compatibility.papi;
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import net.momirealms.customfishing.api.mechanic.competition.FishingCompetition;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.OfflinePlayer;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

View File

@@ -19,8 +19,6 @@ package net.momirealms.customfishing.bukkit.compatibility.papi;
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import net.momirealms.customfishing.api.data.user.OnlineUser;
import net.momirealms.customfishing.api.mechanic.statistic.Statistics;
import org.bukkit.OfflinePlayer;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -65,7 +63,7 @@ public class StatisticsPapi extends PlaceholderExpansion {
@Override
public @Nullable String onRequest(OfflinePlayer player, @NotNull String params) {
OnlineUser onlineUser = plugin.getStorageManager().getOnlineUser(player.getUniqueId());
OnlineUserData onlineUser = plugin.getStorageManager().getOnlineUser(player.getUniqueId());
if (onlineUser == null) return "Data not loaded";
Statistics statistics = onlineUser.getStatistics();
String[] split = params.split("_", 2);

View File

@@ -65,7 +65,7 @@ public class BattlePassHook implements Listener {
.buildAndExecute();
// Group Fish Quest
String[] lootGroup = event.getLoot().getLootGroup();
String[] lootGroup = event.getLoot().lootGroup();
if (event.getLoot() != null && lootGroup != null)
for (String group : lootGroup) {
this.executionBuilder("group")

View File

@@ -148,7 +148,7 @@ public class BetonQuestHook {
if (isInvalidLocation(event, onlineProfile)) {
return;
}
String[] groups = event.getLoot().getLootGroup();
String[] groups = event.getLoot().lootGroup();
if (groups != null)
for (String group : groups) {
if (this.loot_groups.contains(group) && this.checkConditions(onlineProfile)) {

View File

@@ -61,8 +61,8 @@ public class ClueScrollsHook implements Listener {
);
}
if (loot != null && loot.getLootGroup() != null) {
for (String group : event.getLoot().getLootGroup()) {
if (loot != null && loot.lootGroup() != null) {
for (String group : event.getLoot().lootGroup()) {
groupClue.handle(
player,
event.getAmount(),

View File

@@ -55,7 +55,7 @@ public class NotQuestHook implements Listener {
for (final ActiveObjective activeObjective : activeQuest.getActiveObjectives()) {
if (activeObjective.getObjective() instanceof GroupObjective groupObjective) {
if (activeObjective.isUnlocked()) {
final String[] groups = loot.getLootGroup();
final String[] groups = loot.lootGroup();
if (groups != null)
for (String group : groups) {
if (group.equals(groupObjective.getGroupToFish())) {

View File

@@ -0,0 +1,152 @@
package net.momirealms.customfishing.bukkit.config;
import dev.dejvokep.boostedyaml.block.implementation.Section;
import net.momirealms.customfishing.api.mechanic.config.ConfigManager;
import net.momirealms.customfishing.api.mechanic.context.ContextKeys;
import net.momirealms.customfishing.api.mechanic.misc.value.MathValue;
import net.momirealms.customfishing.api.mechanic.misc.value.TextValue;
import net.momirealms.customfishing.api.mechanic.statistic.StatisticsKeys;
import net.momirealms.customfishing.common.helper.AdventureHelper;
import net.momirealms.customfishing.common.plugin.CustomFishingPlugin;
import net.momirealms.customfishing.common.util.ListUtils;
import net.momirealms.customfishing.common.util.RandomUtils;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
public class BukkitConfigLoader extends ConfigManager {
public BukkitConfigLoader(CustomFishingPlugin plugin) {
super(plugin);
this.registerBuiltInItemProperties();
this.registerBuiltInBaseEffectParser();
this.registerBuiltInLootParser();
}
private void registerBuiltInItemProperties() {
this.registerItemParser(arg -> {
MathValue<Player> mathValue = MathValue.auto(arg);
return (item, context) -> item.customModelData((int) mathValue.evaluate(context));
}, 5000, "custom-model-data");
this.registerItemParser(arg -> {
TextValue<Player> textValue = TextValue.auto((String) arg);
return (item, context) -> {
item.displayName(AdventureHelper.miniMessageToJson(textValue.render(context)));
};
}, 4000, "display", "name");
this.registerItemParser(arg -> {
List<String> list = ListUtils.toList(arg);
List<TextValue<Player>> lore = new ArrayList<>();
for (String text : list) {
lore.add(TextValue.auto(text));
}
return (item, context) -> {
item.lore(lore.stream()
.map(it -> AdventureHelper.miniMessageToJson(it.render(context)))
.toList());
};
}, 3_000, "display", "lore");
this.registerItemParser(arg -> {
boolean enable = (boolean) arg;
return (item, context) -> {
if (!enable) return;
item.setTag(context.arg(ContextKeys.ID), "CustomFishing", "id");
item.setTag(context.arg(ContextKeys.TYPE), "CustomFishing", "type");
};
}, 2_000, "tag");
this.registerItemParser(arg -> {
String sizePair = (String) arg;
String[] split = sizePair.split("~", 2);
MathValue<Player> min = MathValue.auto(split[0]);
MathValue<Player> max = MathValue.auto(split[1]);
return (item, context) -> {
double minSize = min.evaluate(context);
double maxSize = max.evaluate(context);
float size = (float) RandomUtils.generateRandomDouble(minSize, maxSize);
item.setTag(size, "CustomFishing", "size");
context.arg(ContextKeys.SIZE, size);
};
}, 1_000, "size");
this.registerItemParser(arg -> {
Section section = (Section) arg;
MathValue<Player> base = MathValue.auto(section.get("base"));
MathValue<Player> bonus = MathValue.auto(section.get("bonus"));
return (item, context) -> {
double basePrice = base.evaluate(context);
double bonusPrice = bonus.evaluate(context);
float size = Optional.ofNullable(context.arg(ContextKeys.SIZE)).orElse(0f);
double price = basePrice + bonusPrice * size;
item.setTag(price, "CustomFishing", "price");
context.arg(ContextKeys.PRICE, price);
};
}, 1_500, "price");
}
private void registerBuiltInBaseEffectParser() {
this.registerBaseEffectParser(object -> {
MathValue<Player> mathValue = MathValue.auto(object);
return builder -> builder.difficultyAdder(mathValue);
}, "base-difficulty-adder");
this.registerBaseEffectParser(object -> {
MathValue<Player> mathValue = MathValue.auto(object);
return builder -> builder.difficultyMultiplier(mathValue);
}, "base-difficulty-multiplier");
this.registerBaseEffectParser(object -> {
MathValue<Player> mathValue = MathValue.auto(object);
return builder -> builder.gameTimeAdder(mathValue);
}, "base-game-time-adder");
this.registerBaseEffectParser(object -> {
MathValue<Player> mathValue = MathValue.auto(object);
return builder -> builder.gameTimeMultiplier(mathValue);
}, "base-game-time-multiplier");
this.registerBaseEffectParser(object -> {
MathValue<Player> mathValue = MathValue.auto(object);
return builder -> builder.waitTimeAdder(mathValue);
}, "base-wait-time-adder");
this.registerBaseEffectParser(object -> {
MathValue<Player> mathValue = MathValue.auto(object);
return builder -> builder.waitTimeMultiplier(mathValue);
}, "base-wait-time-multiplier");
}
private void registerBuiltInLootParser() {
this.registerLootParser(object -> {
String string = (String) object;
return builder -> builder.nick(string);
}, "nick");
this.registerLootParser(object -> {
boolean value = (boolean) object;
return builder -> builder.showInFinder(value);
}, "show-in-fishfinder");
this.registerLootParser(object -> {
boolean value = (boolean) object;
return builder -> builder.disableStatistics(value);
}, "disable-stat");
this.registerLootParser(object -> {
boolean value = (boolean) object;
return builder -> builder.disableGame(value);
}, "disable-game");
this.registerLootParser(object -> {
boolean value = (boolean) object;
return builder -> builder.instantGame(value);
}, "instant-game");
this.registerLootParser(object -> {
MathValue<Player> mathValue = MathValue.auto(object);
return builder -> builder.score(mathValue);
}, "score");
this.registerLootParser(object -> {
List<String> args = ListUtils.toList(object);
return builder -> builder.groups(args.toArray(new String[0]));
}, "group");
this.registerLootParser(object -> {
Section section = (Section) object;
StatisticsKeys keys = new StatisticsKeys(
section.getString("amount"),
section.getString("size")
);
return builder -> builder.statisticsKeys(keys);
}, "statistics");
}
}

View File

@@ -0,0 +1,32 @@
package net.momirealms.customfishing.bukkit.event;
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import net.momirealms.customfishing.api.mechanic.event.EventCarrier;
import net.momirealms.customfishing.api.mechanic.event.EventManager;
import java.util.HashMap;
import java.util.Optional;
public class BukkitEventManager implements EventManager {
private final HashMap<String, EventCarrier> carrierMap = new HashMap<>();
private BukkitCustomFishingPlugin plugin;
public BukkitEventManager(BukkitCustomFishingPlugin plugin) {
this.plugin = plugin;
}
@Override
public Optional<EventCarrier> getEventCarrier(String id) {
return Optional.ofNullable(carrierMap.get(id));
}
@Override
public boolean registerEventCarrier(String id, EventCarrier carrier) {
if (carrierMap.containsKey(id)) {
return false;
}
carrierMap.put(id, carrier);
return true;
}
}

View File

@@ -7,11 +7,6 @@ import net.momirealms.customfishing.api.integration.ItemProvider;
import net.momirealms.customfishing.api.mechanic.context.Context;
import net.momirealms.customfishing.api.mechanic.item.CustomFishingItem;
import net.momirealms.customfishing.api.mechanic.item.ItemManager;
import net.momirealms.customfishing.api.mechanic.misc.function.FormatFunction;
import net.momirealms.customfishing.api.mechanic.misc.function.ItemPropertyFunction;
import net.momirealms.customfishing.api.mechanic.misc.value.MathValue;
import net.momirealms.customfishing.api.mechanic.misc.value.TextValue;
import net.momirealms.customfishing.common.config.node.Node;
import net.momirealms.customfishing.common.item.Item;
import org.bukkit.Material;
import org.bukkit.entity.Player;
@@ -21,10 +16,7 @@ import org.jetbrains.annotations.Nullable;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.function.BiConsumer;
import java.util.function.Function;
import static java.util.Objects.requireNonNull;

View File

@@ -20,7 +20,6 @@ package net.momirealms.customfishing.gui.icon;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.Icon;
import net.momirealms.customfishing.gui.page.file.FileSelector;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;

View File

@@ -19,7 +19,6 @@ package net.momirealms.customfishing.gui.icon;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.ParentPage;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;

View File

@@ -19,7 +19,6 @@ package net.momirealms.customfishing.gui.icon;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.Icon;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import xyz.xenondevs.invui.gui.PagedGui;
import xyz.xenondevs.invui.item.ItemProvider;

View File

@@ -19,7 +19,6 @@ package net.momirealms.customfishing.gui.icon;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.Icon;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import xyz.xenondevs.invui.gui.PagedGui;
import xyz.xenondevs.invui.item.ItemProvider;

View File

@@ -19,7 +19,6 @@ package net.momirealms.customfishing.gui.icon;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.Icon;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import xyz.xenondevs.invui.gui.ScrollGui;
import xyz.xenondevs.invui.item.ItemProvider;

View File

@@ -19,7 +19,6 @@ package net.momirealms.customfishing.gui.icon;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.Icon;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import xyz.xenondevs.invui.gui.ScrollGui;
import xyz.xenondevs.invui.item.ItemProvider;

View File

@@ -20,7 +20,6 @@ package net.momirealms.customfishing.gui.icon.property.item;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.gui.page.property.AmountEditor;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;

View File

@@ -20,7 +20,6 @@ package net.momirealms.customfishing.gui.icon.property.item;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.gui.page.property.CustomModelDataEditor;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;

View File

@@ -20,7 +20,6 @@ package net.momirealms.customfishing.gui.icon.property.item;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.gui.page.property.DisplayNameEditor;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;

View File

@@ -20,7 +20,6 @@ package net.momirealms.customfishing.gui.icon.property.item;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.gui.page.property.DurabilityEditor;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;

View File

@@ -20,7 +20,6 @@ package net.momirealms.customfishing.gui.icon.property.item;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.gui.page.property.EnchantmentEditor;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;

View File

@@ -21,7 +21,6 @@ import net.momirealms.customfishing.BukkitCustomFishingPluginImpl;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;

View File

@@ -20,7 +20,6 @@ package net.momirealms.customfishing.gui.icon.property.item;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.gui.page.property.ItemFlagEditor;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;

View File

@@ -20,7 +20,6 @@ package net.momirealms.customfishing.gui.icon.property.item;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.gui.page.property.LoreEditor;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;

View File

@@ -20,7 +20,6 @@ package net.momirealms.customfishing.gui.icon.property.item;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.gui.page.property.MaterialEditor;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;

View File

@@ -20,7 +20,6 @@ package net.momirealms.customfishing.gui.icon.property.item;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.gui.page.property.NBTEditor;
import net.momirealms.customfishing.setting.CFLocale;
import net.momirealms.customfishing.util.ConfigUtils;
import org.bukkit.Material;
import org.bukkit.entity.Player;

View File

@@ -19,7 +19,6 @@ package net.momirealms.customfishing.gui.icon.property.item;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;

View File

@@ -20,7 +20,6 @@ package net.momirealms.customfishing.gui.icon.property.item;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.gui.page.property.PriceEditor;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;

View File

@@ -19,7 +19,6 @@ package net.momirealms.customfishing.gui.icon.property.item;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;

View File

@@ -20,7 +20,6 @@ package net.momirealms.customfishing.gui.icon.property.item;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.gui.page.property.SizeEditor;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;

View File

@@ -19,7 +19,6 @@ package net.momirealms.customfishing.gui.icon.property.item;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;

View File

@@ -20,7 +20,6 @@ package net.momirealms.customfishing.gui.icon.property.item;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.gui.page.property.EnchantmentEditor;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;

View File

@@ -19,7 +19,6 @@ package net.momirealms.customfishing.gui.icon.property.item;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;

View File

@@ -19,7 +19,6 @@ package net.momirealms.customfishing.gui.icon.property.item;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;

View File

@@ -19,7 +19,6 @@ package net.momirealms.customfishing.gui.icon.property.loot;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;

View File

@@ -19,7 +19,6 @@ package net.momirealms.customfishing.gui.icon.property.loot;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;

View File

@@ -19,7 +19,6 @@ package net.momirealms.customfishing.gui.icon.property.loot;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;

View File

@@ -20,7 +20,6 @@ package net.momirealms.customfishing.gui.icon.property.loot;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.gui.page.property.NickEditor;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;

View File

@@ -20,7 +20,6 @@ package net.momirealms.customfishing.gui.icon.property.loot;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.gui.page.property.ScoreEditor;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;

View File

@@ -19,7 +19,6 @@ package net.momirealms.customfishing.gui.icon.property.loot;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;

View File

@@ -23,7 +23,6 @@ import net.momirealms.customfishing.gui.icon.BackToFolderItem;
import net.momirealms.customfishing.gui.icon.ScrollDownItem;
import net.momirealms.customfishing.gui.icon.ScrollUpItem;
import net.momirealms.customfishing.gui.page.item.ItemSelector;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;

View File

@@ -24,7 +24,6 @@ import net.momirealms.customfishing.gui.icon.BackGroundItem;
import net.momirealms.customfishing.gui.icon.BackToPageItem;
import net.momirealms.customfishing.gui.icon.NextPageItem;
import net.momirealms.customfishing.gui.icon.PreviousPageItem;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;

View File

@@ -25,7 +25,6 @@ import net.momirealms.customfishing.gui.icon.BackGroundItem;
import net.momirealms.customfishing.gui.icon.BackToFolderItem;
import net.momirealms.customfishing.gui.icon.NextPageItem;
import net.momirealms.customfishing.gui.icon.PreviousPageItem;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.YamlConfiguration;

View File

@@ -20,7 +20,6 @@ package net.momirealms.customfishing.gui.page.property;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.gui.icon.BackGroundItem;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;

View File

@@ -21,7 +21,6 @@ import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWra
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.gui.icon.BackGroundItem;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;

View File

@@ -20,7 +20,6 @@ package net.momirealms.customfishing.gui.page.property;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.gui.icon.BackGroundItem;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;

View File

@@ -20,7 +20,6 @@ package net.momirealms.customfishing.gui.page.property;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.gui.icon.BackGroundItem;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;

View File

@@ -20,7 +20,6 @@ package net.momirealms.customfishing.gui.page.property;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.gui.icon.BackGroundItem;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;

View File

@@ -21,7 +21,6 @@ import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWra
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.gui.icon.BackGroundItem;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;

View File

@@ -20,7 +20,6 @@ package net.momirealms.customfishing.gui.page.property;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.gui.icon.BackGroundItem;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;

View File

@@ -22,7 +22,6 @@ import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.gui.icon.BackGroundItem;
import net.momirealms.customfishing.mechanic.item.ItemManagerImpl;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;

View File

@@ -20,7 +20,6 @@ package net.momirealms.customfishing.gui.page.property;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.gui.icon.BackGroundItem;
import net.momirealms.customfishing.setting.CFLocale;
import net.momirealms.customfishing.util.ConfigUtils;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;

View File

@@ -20,7 +20,6 @@ package net.momirealms.customfishing.gui.page.property;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.gui.icon.BackGroundItem;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;

View File

@@ -20,7 +20,6 @@ package net.momirealms.customfishing.gui.page.property;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.gui.icon.BackGroundItem;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;

View File

@@ -20,7 +20,6 @@ package net.momirealms.customfishing.gui.page.property;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.gui.icon.BackGroundItem;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;

View File

@@ -20,7 +20,6 @@ package net.momirealms.customfishing.gui.page.property;
import net.momirealms.customfishing.bukkit.adventure.ShadedAdventureComponentWrapper;
import net.momirealms.customfishing.gui.SectionPage;
import net.momirealms.customfishing.gui.icon.BackGroundItem;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;

View File

@@ -23,7 +23,6 @@ import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import net.momirealms.customfishing.api.common.Pair;
import net.momirealms.customfishing.api.mechanic.action.ActionManager;
import net.momirealms.customfishing.api.mechanic.loot.LootManager;
import net.momirealms.customfishing.api.mechanic.GlobalSettings;
import net.momirealms.customfishing.api.mechanic.action.Action;
import net.momirealms.customfishing.api.mechanic.action.ActionExpansion;
import net.momirealms.customfishing.api.mechanic.action.ActionFactory;
@@ -34,7 +33,6 @@ import net.momirealms.customfishing.api.scheduler.CancellableTask;
import net.momirealms.customfishing.bukkit.compatibility.VaultHook;
import net.momirealms.customfishing.bukkit.compatibility.papi.PlaceholderManagerImpl;
import net.momirealms.customfishing.common.util.ClassUtils;
import net.momirealms.customfishing.setting.CFLocale;
import net.momirealms.customfishing.util.*;
import org.bukkit.Bukkit;
import org.bukkit.Location;

View File

@@ -19,15 +19,11 @@ package net.momirealms.customfishing.mechanic.bag;
import net.momirealms.customfishing.BukkitCustomFishingPluginImpl;
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import net.momirealms.customfishing.api.data.user.OfflineUser;
import net.momirealms.customfishing.api.mechanic.bag.BagManager;
import net.momirealms.customfishing.api.mechanic.effect.EffectManager;
import net.momirealms.customfishing.api.storage.user.UserData;
import net.momirealms.customfishing.api.mechanic.action.Action;
import net.momirealms.customfishing.api.mechanic.bag.FishingBagHolder;
import net.momirealms.customfishing.api.mechanic.requirement.Requirement;
import net.momirealms.customfishing.api.util.InventoryUtils;
import net.momirealms.customfishing.bukkit.compatibility.papi.PlaceholderManagerImpl;
import net.momirealms.customfishing.setting.CFConfig;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
@@ -48,7 +44,7 @@ import java.util.*;
public class BagManagerImpl implements BagManager, Listener {
private final BukkitCustomFishingPlugin plugin;
private final HashMap<UUID, OfflineUser> tempEditMap;
private final HashMap<UUID, UserData> tempEditMap;
private Action[] collectLootActions;
private Action[] bagFullActions;
private boolean bagStoreLoots;
@@ -145,7 +141,7 @@ public class BagManagerImpl implements BagManager, Listener {
* @param userData The OfflineUser data of the player whose bag is being edited.
*/
@Override
public void editOfflinePlayerBag(Player admin, OfflineUser userData) {
public void editOfflinePlayerBag(Player admin, UserData userData) {
this.tempEditMap.put(admin.getUniqueId(), userData);
admin.openInventory(userData.getHolder().getInventory());
}
@@ -160,10 +156,10 @@ public class BagManagerImpl implements BagManager, Listener {
if (!(event.getInventory().getHolder() instanceof FishingBagHolder))
return;
final Player viewer = (Player) event.getPlayer();
OfflineUser offlineUser = tempEditMap.remove(viewer.getUniqueId());
if (offlineUser == null)
UserData userData = tempEditMap.remove(viewer.getUniqueId());
if (userData == null)
return;
plugin.getStorageManager().saveUserData(offlineUser, true);
plugin.getStorageManager().saveUserData(userData, true);
}
/**
@@ -210,10 +206,10 @@ public class BagManagerImpl implements BagManager, Listener {
*/
@EventHandler
public void onQuit(PlayerQuitEvent event) {
OfflineUser offlineUser = tempEditMap.remove(event.getPlayer().getUniqueId());
if (offlineUser == null)
UserData userData = tempEditMap.remove(event.getPlayer().getUniqueId());
if (userData == null)
return;
plugin.getStorageManager().saveUserData(offlineUser, true);
plugin.getStorageManager().saveUserData(userData, true);
}
@Override

View File

@@ -25,7 +25,6 @@ import net.momirealms.customfishing.api.mechanic.block.BlockManager;
import net.momirealms.customfishing.api.mechanic.block.*;
import net.momirealms.customfishing.api.mechanic.loot.Loot;
import net.momirealms.customfishing.bukkit.compatibility.block.VanillaBlockImpl;
import net.momirealms.customfishing.setting.CFConfig;
import net.momirealms.customfishing.util.ConfigUtils;
import org.bukkit.*;
import org.bukkit.block.*;

View File

@@ -30,8 +30,6 @@ import net.momirealms.customfishing.mechanic.competition.actionbar.ActionBarMana
import net.momirealms.customfishing.mechanic.competition.bossbar.BossBarManager;
import net.momirealms.customfishing.mechanic.competition.ranking.LocalRankingImpl;
import net.momirealms.customfishing.mechanic.competition.ranking.RedisRankingImpl;
import net.momirealms.customfishing.setting.CFConfig;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;

View File

@@ -25,7 +25,6 @@ import net.momirealms.customfishing.api.mechanic.competition.*;
import net.momirealms.customfishing.api.mechanic.competition.info.ActionBarConfigImpl;
import net.momirealms.customfishing.api.mechanic.competition.info.BossBarConfigImpl;
import net.momirealms.customfishing.api.scheduler.CancellableTask;
import net.momirealms.customfishing.setting.CFLocale;
import net.momirealms.customfishing.storage.method.database.nosql.RedisManager;
import net.momirealms.customfishing.util.ConfigUtils;
import org.bukkit.Bukkit;

View File

@@ -22,7 +22,6 @@ import net.momirealms.customfishing.api.mechanic.competition.info.ActionBarConfi
import net.momirealms.customfishing.api.scheduler.CancellableTask;
import net.momirealms.customfishing.mechanic.competition.Competition;
import net.momirealms.customfishing.mechanic.misc.DynamicText;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.entity.Player;
import java.util.HashMap;

View File

@@ -30,7 +30,6 @@ import net.momirealms.customfishing.api.scheduler.CancellableTask;
import net.momirealms.customfishing.api.util.ReflectionUtils;
import net.momirealms.customfishing.mechanic.competition.Competition;
import net.momirealms.customfishing.mechanic.misc.DynamicText;
import net.momirealms.customfishing.setting.CFLocale;
import org.bukkit.boss.BarColor;
import org.bukkit.entity.Player;

View File

@@ -20,7 +20,6 @@ package net.momirealms.customfishing.mechanic.competition.ranking;
import net.momirealms.customfishing.api.common.Pair;
import net.momirealms.customfishing.api.mechanic.competition.CompetitionPlayer;
import net.momirealms.customfishing.api.mechanic.competition.Ranking;
import net.momirealms.customfishing.setting.CFConfig;
import net.momirealms.customfishing.storage.method.database.nosql.RedisManager;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.resps.Tuple;

View File

@@ -20,12 +20,7 @@ package net.momirealms.customfishing.mechanic.effect;
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import net.momirealms.customfishing.api.common.Key;
import net.momirealms.customfishing.api.common.Pair;
import net.momirealms.customfishing.api.mechanic.effect.EffectManager;
import net.momirealms.customfishing.api.mechanic.GlobalSettings;
import net.momirealms.customfishing.api.mechanic.effect.BaseEffect;
import net.momirealms.customfishing.api.mechanic.effect.EffectCarrier;
import net.momirealms.customfishing.api.mechanic.effect.EffectModifier;
import net.momirealms.customfishing.api.mechanic.effect.FishingEffect;
import net.momirealms.customfishing.api.mechanic.effect.LootBaseEffectImpl;
import net.momirealms.customfishing.api.mechanic.misc.value.MathValue;
import net.momirealms.customfishing.api.mechanic.requirement.Requirement;
import net.momirealms.customfishing.mechanic.misc.value.PlainMathValue;
@@ -208,7 +203,7 @@ public class EffectManagerImpl implements EffectManager {
for (String group : modList) {
String[] split = group.split(":",2);
String key = split[0];
List<String> members = plugin.getLootManager().getLootGroup(key);
List<String> members = plugin.getLootManager().getGroupMembers(key);
if (members == null) {
LogUtils.warn("Group " + key + " doesn't contain any loot. The effect would not take effect.");
return result;
@@ -242,8 +237,8 @@ public class EffectManagerImpl implements EffectManager {
}
@Override
public BaseEffect getBaseEffect(ConfigurationSection section) {
if (section == null) return new BaseEffect(
public LootBaseEffectImpl getBaseEffect(ConfigurationSection section) {
if (section == null) return new LootBaseEffectImpl(
new PlainMathValue(0), new PlainMathValue(1d),
new PlainMathValue(0), new PlainMathValue(1d),
new PlainMathValue(0), new PlainMathValue(1d)
@@ -254,7 +249,7 @@ public class EffectManagerImpl implements EffectManager {
MathValue waitTimeMultiplier = section.contains("wait-time-multiplier") ? ConfigUtils.getValue(section.get("wait-time-multiplier")) : new PlainMathValue(1);
MathValue difficultyMultiplier = section.contains("difficulty-multiplier") ? ConfigUtils.getValue(section.get("difficulty-multiplier")) : new PlainMathValue(1);
MathValue gameTimeMultiplier = section.contains("game-time-multiplier") ? ConfigUtils.getValue(section.get("game-time-multiplier")) : new PlainMathValue(1);
return new BaseEffect(
return new LootBaseEffectImpl(
waitTime, waitTimeMultiplier,
difficulty, difficultyMultiplier,
gameTime, gameTimeMultiplier

View File

@@ -0,0 +1,4 @@
package net.momirealms.customfishing.mechanic.fishing;
public class BukkitFishingManager {
}

View File

@@ -29,14 +29,9 @@ import net.momirealms.customfishing.api.event.LavaFishingEvent;
import net.momirealms.customfishing.api.event.RodCastEvent;
import net.momirealms.customfishing.api.mechanic.fishing.FishingManager;
import net.momirealms.customfishing.api.mechanic.requirement.RequirementManager;
import net.momirealms.customfishing.api.mechanic.GlobalSettings;
import net.momirealms.customfishing.api.mechanic.TempFishingState;
import net.momirealms.customfishing.api.mechanic.action.ActionTrigger;
import net.momirealms.customfishing.api.mechanic.competition.FishingCompetition;
import net.momirealms.customfishing.api.mechanic.effect.Effect;
import net.momirealms.customfishing.api.mechanic.effect.EffectCarrier;
import net.momirealms.customfishing.api.mechanic.effect.EffectModifier;
import net.momirealms.customfishing.api.mechanic.effect.FishingEffect;
import net.momirealms.customfishing.api.mechanic.game.BasicGameConfig;
import net.momirealms.customfishing.api.mechanic.game.GameInstance;
import net.momirealms.customfishing.api.mechanic.game.GameSettings;
@@ -45,7 +40,6 @@ import net.momirealms.customfishing.api.mechanic.loot.Loot;
import net.momirealms.customfishing.api.mechanic.loot.LootType;
import net.momirealms.customfishing.api.util.WeightUtils;
import net.momirealms.customfishing.mechanic.requirement.RequirementManagerImpl;
import net.momirealms.customfishing.setting.CFConfig;
import net.momirealms.customfishing.util.ItemUtils;
import org.bukkit.*;
import org.bukkit.entity.*;
@@ -481,7 +475,7 @@ public class FishingManagerImpl implements Listener, FishingManager {
loot.triggerActions(ActionTrigger.BITE, fishingPreparation);
fishingPreparation.triggerActions(ActionTrigger.BITE);
if (loot.instanceGame() && !loot.disableGame()) {
if (loot.instantGame() && !loot.disableGame()) {
if (!loot.disableGlobalAction())
GlobalSettings.triggerLootActions(ActionTrigger.HOOK, fishingPreparation);
loot.triggerActions(ActionTrigger.HOOK, fishingPreparation);

View File

@@ -20,12 +20,8 @@ package net.momirealms.customfishing.mechanic.fishing;
import de.tr7zw.changeme.nbtapi.NBTCompound;
import de.tr7zw.changeme.nbtapi.NBTItem;
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import net.momirealms.customfishing.api.mechanic.GlobalSettings;
import net.momirealms.customfishing.api.mechanic.action.Action;
import net.momirealms.customfishing.api.mechanic.action.ActionTrigger;
import net.momirealms.customfishing.api.mechanic.effect.EffectCarrier;
import net.momirealms.customfishing.api.mechanic.effect.EffectModifier;
import net.momirealms.customfishing.api.mechanic.effect.FishingEffect;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;

View File

@@ -22,13 +22,10 @@ import net.kyori.adventure.sound.Sound;
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import net.momirealms.customfishing.api.event.FishHookLandEvent;
import net.momirealms.customfishing.api.event.LavaFishingEvent;
import net.momirealms.customfishing.api.mechanic.TempFishingState;
import net.momirealms.customfishing.api.mechanic.action.ActionTrigger;
import net.momirealms.customfishing.api.mechanic.effect.Effect;
import net.momirealms.customfishing.api.mechanic.effect.FishingEffect;
import net.momirealms.customfishing.api.mechanic.loot.Loot;
import net.momirealms.customfishing.api.scheduler.CancellableTask;
import net.momirealms.customfishing.setting.CFConfig;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
@@ -146,7 +143,7 @@ public class HookCheckTimerTask implements Runnable {
this.setNextLoot();
if (this.loot != null) {
this.tempEffect = this.loot.getBaseEffect().build(fishingPreparation.getPlayer(), fishingPreparation.getArgs());
this.tempEffect = this.loot.baseEffect().build(fishingPreparation.getPlayer(), fishingPreparation.getArgs());
this.tempEffect.merge(this.initialEffect);
this.setTempState();
this.startLavaFishingMechanic();
@@ -191,7 +188,7 @@ public class HookCheckTimerTask implements Runnable {
this.manager.removeTempFishingState(fishingPreparation.getPlayer());
BukkitCustomFishingPlugin.get().debug("No loot available for " + fishingPreparation.getPlayer().getName() + " at " + fishingPreparation.getLocation());
} else {
this.tempEffect = this.loot.getBaseEffect().build(fishingPreparation.getPlayer(), fishingPreparation.getArgs());
this.tempEffect = this.loot.baseEffect().build(fishingPreparation.getPlayer(), fishingPreparation.getArgs());
this.tempEffect.merge(this.initialEffect);
this.setWaitTime();
this.setTempState();
@@ -263,14 +260,14 @@ public class HookCheckTimerTask implements Runnable {
int random;
if (CFConfig.overrideVanilla) {
random = ThreadLocalRandom.current().nextInt(CFConfig.lavaMinTime, CFConfig.lavaMaxTime);
random *= tempEffect.getWaitTimeMultiplier();
random *= tempEffect.waitTimeMultiplier();
random += tempEffect.waitTimeAdder();
random = Math.max(1, random);
} else {
random = ThreadLocalRandom.current().nextInt(CFConfig.lavaMinTime, CFConfig.lavaMaxTime);
random -= lureLevel * 100;
random = Math.max(CFConfig.lavaMinTime, random);
random *= tempEffect.getWaitTimeMultiplier();
random *= tempEffect.waitTimeMultiplier();
random += tempEffect.waitTimeAdder();
random = Math.max(1, random);
}
@@ -347,10 +344,10 @@ public class HookCheckTimerTask implements Runnable {
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 * tempEffect.getWaitTimeMultiplier() + tempEffect.waitTimeAdder())));
fishHook.setWaitTime(Math.max(1, (int) (initialTime * tempEffect.waitTimeMultiplier() + tempEffect.waitTimeAdder())));
} else {
fishHook.setMinWaitTime(Math.max(1, (int) (fishHook.getMinWaitTime() * tempEffect.getWaitTimeMultiplier() + tempEffect.waitTimeAdder())));
fishHook.setMaxWaitTime(Math.max(2, (int) (fishHook.getMaxWaitTime() * tempEffect.getWaitTimeMultiplier() + tempEffect.waitTimeAdder())));
fishHook.setMinWaitTime(Math.max(1, (int) (fishHook.getMinWaitTime() * tempEffect.waitTimeMultiplier() + tempEffect.waitTimeAdder())));
fishHook.setMaxWaitTime(Math.max(2, (int) (fishHook.getMaxWaitTime() * tempEffect.waitTimeMultiplier() + tempEffect.waitTimeAdder())));
}
}
}

View File

@@ -20,12 +20,10 @@ package net.momirealms.customfishing.mechanic.game;
import net.kyori.adventure.key.Key;
import net.kyori.adventure.sound.Sound;
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import net.momirealms.customfishing.api.common.Pair;
import net.momirealms.customfishing.api.mechanic.game.GameManager;
import net.momirealms.customfishing.api.mechanic.game.*;
import net.momirealms.customfishing.api.util.OffsetUtils;
import net.momirealms.customfishing.common.util.Pair;
import net.momirealms.customfishing.mechanic.requirement.RequirementManagerImpl;
import net.momirealms.customfishing.util.ClassUtils;
import net.momirealms.customfishing.util.ConfigUtils;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.YamlConfiguration;

View File

@@ -17,12 +17,9 @@
package net.momirealms.customfishing.mechanic.hook;
import de.tr7zw.changeme.nbtapi.NBTCompound;
import de.tr7zw.changeme.nbtapi.NBTItem;
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import net.momirealms.customfishing.api.mechanic.hook.HookManager;
import net.momirealms.customfishing.api.mechanic.requirement.RequirementManager;
import net.momirealms.customfishing.api.mechanic.effect.EffectCarrier;
import net.momirealms.customfishing.api.mechanic.hook.HookSetting;
import net.momirealms.customfishing.mechanic.item.ItemManagerImpl;
import net.momirealms.customfishing.util.ItemUtils;

View File

@@ -31,17 +31,14 @@ import net.momirealms.customfishing.api.event.FishingLootSpawnEvent;
import net.momirealms.customfishing.api.mechanic.action.ActionManager;
import net.momirealms.customfishing.api.mechanic.item.ItemManager;
import net.momirealms.customfishing.api.mechanic.requirement.RequirementManager;
import net.momirealms.customfishing.api.mechanic.GlobalSettings;
import net.momirealms.customfishing.api.mechanic.action.Action;
import net.momirealms.customfishing.api.mechanic.action.ActionTrigger;
import net.momirealms.customfishing.api.mechanic.effect.EffectCarrier;
import net.momirealms.customfishing.api.integration.ItemProvider;
import net.momirealms.customfishing.api.mechanic.loot.Loot;
import net.momirealms.customfishing.api.mechanic.misc.value.MathValue;
import net.momirealms.customfishing.bukkit.compatibility.item.CustomFishingItemImpl;
import net.momirealms.customfishing.bukkit.compatibility.item.VanillaItemImpl;
import net.momirealms.customfishing.bukkit.compatibility.papi.PlaceholderManagerImpl;
import net.momirealms.customfishing.setting.CFConfig;
import net.momirealms.customfishing.util.ConfigUtils;
import net.momirealms.customfishing.util.ItemUtils;
import net.momirealms.customfishing.util.LocationUtils;

View File

@@ -0,0 +1,82 @@
package net.momirealms.customfishing.mechanic.loot;
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import net.momirealms.customfishing.api.mechanic.context.Context;
import net.momirealms.customfishing.api.mechanic.effect.Effect;
import net.momirealms.customfishing.api.mechanic.loot.Loot;
import net.momirealms.customfishing.api.mechanic.loot.LootManager;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.*;
import static java.util.Objects.requireNonNull;
public class BukkitLootManager implements LootManager {
private final BukkitCustomFishingPlugin plugin;
private final HashMap<String, Loot> lootMap = new HashMap<>();
private final HashMap<String, List<String>> groupMembersMap = new HashMap<>();
public BukkitLootManager(BukkitCustomFishingPlugin plugin) {
this.plugin = plugin;
}
private void loadConfig() {
}
@Override
public void registerLoot(@NotNull final Loot loot) {
requireNonNull(loot, "loot cannot be null");
this.lootMap.put(loot.getID(), loot);
for (String group : loot.lootGroup()) {
addGroupMember(group, loot.getID());
}
}
private void addGroupMember(String group, String member) {
List<String> members = groupMembersMap.get(group);
if (members == null) {
members = new ArrayList<>(List.of(member));
groupMembersMap.put(group, members);
} else {
members.add(member);
}
}
@NotNull
@Override
public List<String> getGroupMembers(String key) {
return Optional.ofNullable(groupMembersMap.get(key)).orElse(List.of());
}
@NotNull
@Override
public Optional<Loot> getLoot(String key) {
return Optional.ofNullable(lootMap.get(key));
}
@Override
public HashMap<String, Double> getLootWithWeight(Context<Player> context) {
return null;
}
@Override
public Collection<String> getPossibleLootKeys(Context<Player> context) {
return List.of();
}
@NotNull
@Override
public Map<String, Double> getPossibleLootKeysWithWeight(Effect effect, Context<Player> context) {
return Map.of();
}
@Nullable
@Override
public Loot getNextLoot(Effect effect, Context<Player> context) {
return null;
}
}

View File

@@ -26,7 +26,6 @@ import net.momirealms.customfishing.api.mechanic.loot.LootType;
import net.momirealms.customfishing.api.mechanic.statistic.StatisticsKeys;
import net.momirealms.customfishing.api.util.WeightUtils;
import net.momirealms.customfishing.mechanic.requirement.RequirementManagerImpl;
import net.momirealms.customfishing.setting.CFConfig;
import net.momirealms.customfishing.util.ConfigUtils;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.YamlConfiguration;
@@ -101,9 +100,9 @@ public class LootManagerImpl implements LootManager {
* @param key The key of the loot group.
* @return A list of loot IDs belonging to the specified loot group, or null if not found.
*/
@Nullable
@NotNull
@Override
public List<String> getLootGroup(String key) {
public List<String> getGroupMembers(String key) {
return lootGroupMap.get(key);
}
@@ -113,7 +112,7 @@ public class LootManagerImpl implements LootManager {
* @param key The key of the loot configuration.
* @return The Loot object associated with the specified loot key, or null if not found.
*/
@Nullable
@NotNull
@Override
public Loot getLoot(String key) {
return lootMap.get(key);
@@ -173,12 +172,12 @@ public class LootManagerImpl implements LootManager {
public Map<String, Double> getPossibleLootKeysWithWeight(Effect effect, PlayerContext playerContext) {
Map<String, Double> lootWithWeight = ((RequirementManagerImpl) plugin.getRequirementManager()).getLootWithWeight(playerContext);
Player player = playerContext.getPlayer();
for (Pair<String, WeightModifier> pair : effect.weightModifier()) {
for (Pair<String, WeightModifier> pair : effect.weightOperations()) {
Double previous = lootWithWeight.get(pair.left());
if (previous != null)
lootWithWeight.put(pair.left(), pair.right().modify(player, previous));
}
for (Pair<String, WeightModifier> pair : effect.weightModifierIgnored()) {
for (Pair<String, WeightModifier> pair : effect.weightOperationsIgnored()) {
double previous = lootWithWeight.getOrDefault(pair.left(), 0d);
lootWithWeight.put(pair.left(), pair.right().modify(player, previous));
}

View File

@@ -18,7 +18,7 @@
package net.momirealms.customfishing.mechanic.market;
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import net.momirealms.customfishing.api.data.EarningData;
import net.momirealms.customfishing.api.storage.data.EarningData;
import net.momirealms.customfishing.api.mechanic.market.MarketGUIHolder;
import net.momirealms.customfishing.api.util.InventoryUtils;
import net.momirealms.customfishing.util.ItemUtils;

View File

@@ -19,8 +19,7 @@ package net.momirealms.customfishing.mechanic.market;
import de.tr7zw.changeme.nbtapi.NBTItem;
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import net.momirealms.customfishing.api.data.EarningData;
import net.momirealms.customfishing.api.data.user.OnlineUser;
import net.momirealms.customfishing.api.storage.data.EarningData;
import net.momirealms.customfishing.api.mechanic.market.MarketManager;
import net.momirealms.customfishing.api.mechanic.action.Action;
import net.momirealms.customfishing.api.mechanic.market.MarketGUIHolder;
@@ -96,7 +95,7 @@ public class MarketManagerImpl implements MarketManager, Listener {
int now = getRealTimeDate();
if (this.date != now) {
this.date = now;
for (OnlineUser onlineUser : plugin.getStorageManager().getOnlineUsers()) {
for (OnlineUserData onlineUser : plugin.getStorageManager().getOnlineUsers()) {
onlineUser.getEarningData().date = now;
onlineUser.getEarningData().earnings = 0d;
}
@@ -193,7 +192,7 @@ public class MarketManagerImpl implements MarketManager, Listener {
@Override
public void openMarketGUI(Player player) {
if (!isEnable()) return;
OnlineUser user = plugin.getStorageManager().getOnlineUser(player.getUniqueId());
OnlineUserData user = plugin.getStorageManager().getOnlineUser(player.getUniqueId());
if (user == null) {
LogUtils.warn("Player " + player.getName() + "'s market data is not loaded yet.");
return;

View File

@@ -1,38 +0,0 @@
/*
* Copyright (C) <2022> <XiaoMoMi>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package net.momirealms.customfishing.mechanic.misc.value;
import net.momirealms.customfishing.api.mechanic.misc.value.MathValue;
import net.momirealms.customfishing.util.ConfigUtils;
import org.bukkit.entity.Player;
import java.util.Map;
public class ExpressionMathValue implements MathValue {
private final String expression;
public ExpressionMathValue(String expression) {
this.expression = expression;
}
@Override
public double get(Player player, Map<String, String> values) {
return ConfigUtils.getExpressionValue(player, expression, values);
}
}

View File

@@ -1,37 +0,0 @@
/*
* Copyright (C) <2022> <XiaoMoMi>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package net.momirealms.customfishing.mechanic.misc.value;
import net.momirealms.customfishing.api.mechanic.misc.value.MathValue;
import org.bukkit.entity.Player;
import java.util.Map;
public class PlainMathValue implements MathValue {
private final double value;
public PlainMathValue(double value) {
this.value = value;
}
@Override
public double get(Player player, Map<String, String> values) {
return value;
}
}

View File

@@ -0,0 +1,4 @@
package net.momirealms.customfishing.mechanic.requirement;
public class BukkitRequirementManager {
}

View File

@@ -372,7 +372,7 @@ public class RequirementManagerImpl implements RequirementManager {
return condition -> {
String lootID = condition.getArg("{loot}");
Loot loot = plugin.getLootManager().getLoot(lootID);
String[] groups = loot.getLootGroup();
String[] groups = loot.lootGroup();
if (groups != null) {
for (String g : groups) {
if (arg.contains(g)) {
@@ -389,7 +389,7 @@ public class RequirementManagerImpl implements RequirementManager {
return condition -> {
String lootID = condition.getArg("{loot}");
Loot loot = plugin.getLootManager().getLoot(lootID);
String[] groups = loot.getLootGroup();
String[] groups = loot.lootGroup();
if (groups == null) {
return true;
}

View File

@@ -18,9 +18,7 @@
package net.momirealms.customfishing.mechanic.statistic;
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import net.momirealms.customfishing.api.data.user.OnlineUser;
import net.momirealms.customfishing.api.mechanic.statistic.StatisticsManager;
import net.momirealms.customfishing.api.mechanic.statistic.Statistics;
import org.bukkit.configuration.file.YamlConfiguration;
import org.jetbrains.annotations.Nullable;
@@ -58,7 +56,7 @@ public class StatisticsManagerImpl implements StatisticsManager {
@Override
@Nullable
public Statistics getStatistics(UUID uuid) {
OnlineUser onlineUser = plugin.getStorageManager().getOnlineUser(uuid);
OnlineUserData onlineUser = plugin.getStorageManager().getOnlineUser(uuid);
if (onlineUser == null) return null;
return onlineUser.getStatistics();
}

View File

@@ -20,7 +20,6 @@ package net.momirealms.customfishing.mechanic.totem;
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import net.momirealms.customfishing.api.mechanic.action.Action;
import net.momirealms.customfishing.api.mechanic.action.ActionTrigger;
import net.momirealms.customfishing.api.mechanic.effect.EffectCarrier;
import net.momirealms.customfishing.api.mechanic.totem.TotemConfig;
import net.momirealms.customfishing.api.mechanic.totem.TotemParticle;
import net.momirealms.customfishing.api.scheduler.CancellableTask;

View File

@@ -24,7 +24,6 @@ import net.momirealms.customfishing.api.event.TotemActivateEvent;
import net.momirealms.customfishing.api.mechanic.totem.TotemManager;
import net.momirealms.customfishing.api.mechanic.action.Action;
import net.momirealms.customfishing.api.mechanic.action.ActionTrigger;
import net.momirealms.customfishing.api.mechanic.effect.EffectCarrier;
import net.momirealms.customfishing.api.mechanic.totem.TotemConfig;
import net.momirealms.customfishing.api.mechanic.totem.TotemModel;
import net.momirealms.customfishing.api.mechanic.totem.block.TotemBlock;

View File

@@ -1,175 +0,0 @@
/*
* Copyright (C) <2022> <XiaoMoMi>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package net.momirealms.customfishing.setting;
import dev.dejvokep.boostedyaml.YamlDocument;
import dev.dejvokep.boostedyaml.dvs.versioning.BasicVersioning;
import dev.dejvokep.boostedyaml.settings.dumper.DumperSettings;
import dev.dejvokep.boostedyaml.settings.general.GeneralSettings;
import dev.dejvokep.boostedyaml.settings.loader.LoaderSettings;
import dev.dejvokep.boostedyaml.settings.updater.UpdaterSettings;
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import net.momirealms.customfishing.api.util.OffsetUtils;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.event.EventPriority;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
public class CFConfig {
// config version
public static String configVersion = "32";
// Debug mode
public static boolean debug;
// language
public static String language;
// update checker
public static boolean updateChecker;
// BStats
public static boolean metrics;
// fishing event priority
public static EventPriority eventPriority;
// thread pool settings
public static int corePoolSize;
public static int maximumPoolSize;
public static int keepAliveTime;
// detection order for item id
public static List<String> itemDetectOrder = new ArrayList<>();
public static List<String> blockDetectOrder = new ArrayList<>();
// fishing bag
public static boolean enableFishingBag;
// Fishing wait time
public static boolean overrideVanilla;
public static int waterMinTime;
public static int waterMaxTime;
// Lava fishing
public static int lavaMinTime;
public static int lavaMaxTime;
// Competition
public static boolean redisRanking;
public static String serverGroup;
public static int placeholderLimit;
// Data save interval
public static int dataSaveInterval;
// Lock data on join
public static boolean lockData;
public static boolean logDataSaving;
public static boolean restrictedSizeRange;
// Legacy color code support
public static boolean legacyColorSupport;
// Durability lore
public static List<String> durabilityLore;
public static boolean globalShowInFinder;
public static boolean globalDisableStats;
public static boolean globalDisableGame;
public static boolean globalInstantGame;
public static int multipleLootSpawnDelay;
public static void load() {
try {
YamlDocument.create(
new File(BukkitCustomFishingPlugin.getInstance().getDataFolder(), "config.yml"),
Objects.requireNonNull(BukkitCustomFishingPlugin.getInstance().getResource("config.yml")),
GeneralSettings.DEFAULT,
LoaderSettings
.builder()
.setAutoUpdate(true)
.build(),
DumperSettings.DEFAULT,
UpdaterSettings
.builder()
.setVersioning(new BasicVersioning("config-version"))
.addIgnoredRoute(configVersion, "mechanics.mechanic-requirements", '.')
.addIgnoredRoute(configVersion, "mechanics.global-events", '.')
.addIgnoredRoute(configVersion, "mechanics.global-effects", '.')
.addIgnoredRoute(configVersion, "mechanics.fishing-bag.collect-actions", '.')
.addIgnoredRoute(configVersion, "mechanics.fishing-bag.full-actions", '.')
.addIgnoredRoute(configVersion, "other-settings.placeholder-register", '.')
.build()
);
loadSettings(BukkitCustomFishingPlugin.getInstance().getConfig("config.yml"));
} catch (IOException e) {
LogUtils.warn(e.getMessage());
}
}
private static void loadSettings(YamlConfiguration config) {
debug = config.getBoolean("debug", false);
language = config.getString("lang", "english");
updateChecker = config.getBoolean("update-checker");
metrics = config.getBoolean("metrics");
eventPriority = EventPriority.valueOf(config.getString("other-settings.event-priority", "NORMAL").toUpperCase(Locale.ENGLISH));
corePoolSize = config.getInt("other-settings.thread-pool-settings.corePoolSize", 1);
maximumPoolSize = config.getInt("other-settings.thread-pool-settings.maximumPoolSize", 1);
keepAliveTime = config.getInt("other-settings.thread-pool-settings.keepAliveTime", 30);
itemDetectOrder = config.getStringList("other-settings.item-detection-order");
blockDetectOrder = config.getStringList("other-settings.block-detection-order");
enableFishingBag = config.getBoolean("mechanics.fishing-bag.enable", true);
overrideVanilla = config.getBoolean("mechanics.fishing-wait-time.override-vanilla", false);
waterMinTime = config.getInt("mechanics.fishing-wait-time.min-wait-time", 100);
waterMaxTime = config.getInt("mechanics.fishing-wait-time.min-wait-time", 600);
lavaMinTime = config.getInt("mechanics.lava-fishing.min-wait-time", 100);
lavaMaxTime = config.getInt("mechanics.lava-fishing.max-wait-time", 600);
restrictedSizeRange = config.getBoolean("mechanics.size.restricted-size-range", true);
globalShowInFinder = config.getBoolean("mechanics.global-loot-property.show-in-fishfinder", true);
globalDisableStats = config.getBoolean("mechanics.global-loot-property.disable-stat", false);
globalDisableGame = config.getBoolean("mechanics.global-loot-property.disable-game", false);
globalInstantGame = config.getBoolean("mechanics.global-loot-property.instant-game", false);
redisRanking = config.getBoolean("mechanics.competition.redis-ranking", false);
placeholderLimit = config.getInt("mechanics.competition.placeholder-limit", 3);
serverGroup = config.getString("mechanics.competition.server-group","default");
multipleLootSpawnDelay = config.getInt("mechanics.multiple-loot-spawn-delay", 0);
dataSaveInterval = config.getInt("other-settings.data-saving-interval", 600);
logDataSaving = config.getBoolean("other-settings.log-data-saving", true);
lockData = config.getBoolean("other-settings.lock-data", true);
legacyColorSupport = config.getBoolean("other-settings.legacy-color-code-support", false);
durabilityLore = config.getStringList("other-settings.custom-durability-format").stream().map(it -> "<!i>" + it).toList();
OffsetUtils.loadConfig(config.getConfigurationSection("other-settings.offset-characters"));
}
}

View File

@@ -1,308 +0,0 @@
/*
* Copyright (C) <2022> <XiaoMoMi>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package net.momirealms.customfishing.setting;
import dev.dejvokep.boostedyaml.YamlDocument;
import dev.dejvokep.boostedyaml.dvs.versioning.BasicVersioning;
import dev.dejvokep.boostedyaml.settings.dumper.DumperSettings;
import dev.dejvokep.boostedyaml.settings.general.GeneralSettings;
import dev.dejvokep.boostedyaml.settings.loader.LoaderSettings;
import dev.dejvokep.boostedyaml.settings.updater.UpdaterSettings;
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.YamlConfiguration;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
public class CFLocale {
public static String MSG_Total_Size;
public static String MSG_Catch_Amount;
public static String MSG_Total_Score;
public static String MSG_Max_Size;
public static String MSG_No_Player;
public static String MSG_No_Score;
public static String MSG_Prefix;
public static String MSG_Reload;
public static String MSG_Competition_Not_Exist;
public static String MSG_No_Competition_Ongoing;
public static String MSG_End_Competition;
public static String MSG_Stop_Competition;
public static String MSG_No_Rank;
public static String MSG_Item_Not_Exists;
public static String MSG_Get_Item;
public static String MSG_Give_Item;
public static String MSG_Never_Played;
public static String MSG_Unsafe_Modification;
public static String MSG_Data_Not_Loaded;
public static String MSG_Market_GUI_Open;
public static String MSG_Fishing_Bag_Open;
public static String MSG_Split_Char;
public static String MSG_Possible_Loots;
public static String FORMAT_Day;
public static String FORMAT_Hour;
public static String FORMAT_Minute;
public static String FORMAT_Second;
public static String GUI_SCROLL_DOWN;
public static String GUI_SCROLL_UP;
public static String GUI_CANNOT_SCROLL_UP;
public static String GUI_CANNOT_SCROLL_DOWN;
public static String GUI_NEXT_PAGE;
public static String GUI_GOTO_NEXT_PAGE;
public static String GUI_CANNOT_GOTO_NEXT_PAGE;
public static String GUI_PREVIOUS_PAGE;
public static String GUI_GOTO_PREVIOUS_PAGE;
public static String GUI_CANNOT_GOTO_PREVIOUS_PAGE;
public static String GUI_BACK_TO_PARENT_PAGE;
public static String GUI_BACK_TO_PARENT_FOLDER;
public static String GUI_CURRENT_VALUE;
public static String GUI_CLICK_TO_TOGGLE;
public static String GUI_LEFT_CLICK_EDIT;
public static String GUI_RIGHT_CLICK_RESET;
public static String GUI_RIGHT_CLICK_DELETE;
public static String GUI_LOOT_SHOW_IN_FINDER;
public static String GUI_LOOT_SCORE;
public static String GUI_LOOT_NICK;
public static String GUI_LOOT_INSTANT_GAME;
public static String GUI_LOOT_DISABLE_STATS;
public static String GUI_LOOT_DISABLE_GAME;
public static String GUI_ITEM_AMOUNT;
public static String GUI_ITEM_MODEL_DATA;
public static String GUI_ITEM_DISPLAY_NAME;
public static String GUI_ITEM_DURABILITY;
public static String GUI_ITEM_ENCHANTMENT;
public static String GUI_ITEM_HEAD64;
public static String GUI_ITEM_FLAG;
public static String GUI_ITEM_LORE;
public static String GUI_ITEM_MATERIAL;
public static String GUI_ITEM_NBT;
public static String GUI_ITEM_PREVENT_GRAB;
public static String GUI_ITEM_PRICE;
public static String GUI_ITEM_PRICE_BASE;
public static String GUI_ITEM_PRICE_BONUS;
public static String GUI_ITEM_RANDOM_DURABILITY;
public static String GUI_ITEM_SIZE;
public static String GUI_ITEM_STACKABLE;
public static String GUI_ITEM_STORED_ENCHANTMENT;
public static String GUI_ITEM_TAG;
public static String GUI_ITEM_UNBREAKABLE;
public static String GUI_DELETE_PROPERTY;
public static String GUI_NEW_VALUE;
public static String GUI_CLICK_CONFIRM;
public static String GUI_INVALID_NUMBER;
public static String GUI_ILLEGAL_FORMAT;
public static String GUI_TITLE_AMOUNT;
public static String GUI_TITLE_MODEL_DATA;
public static String GUI_TITLE_DISPLAY_NAME;
public static String GUI_NEW_DISPLAY_NAME;
public static String GUI_TITLE_CUSTOM_DURABILITY;
public static String GUI_TITLE_ENCHANTMENT;
public static String GUI_TITLE_STORED_ENCHANTMENT;
public static String GUI_SELECT_ONE_ENCHANTMENT;
public static String GUI_ADD_NEW_ENCHANTMENT;
public static String GUI_TITLE_ITEM_FLAG;
public static String GUI_TITLE_LORE;
public static String GUI_ADD_NEW_LORE;
public static String GUI_SELECT_ONE_LORE;
public static String GUI_TITLE_MATERIAL;
public static String GUI_TITLE_NBT_COMPOUND;
public static String GUI_TITLE_NBT_LIST;
public static String GUI_TITLE_NBT_KEY;
public static String GUI_NBT_INVALID_KEY;
public static String GUI_RIGHT_CLICK_CANCEL;
public static String GUI_NBT_ADD_COMPOUND;
public static String GUI_NBT_ADD_LIST;
public static String GUI_NBT_ADD_VALUE;
public static String GUI_NBT_PREVIEW;
public static String GUI_NBT_BACK_TO_COMPOUND;
public static String GUI_NBT_SET_VALUE_TITLE;
public static String GUI_NBT_EDIT_TITLE;
public static String GUI_NICK_TITLE;
public static String GUI_NICK_NEW;
public static String GUI_PRICE_TITLE;
public static String GUI_PRICE_BASE;
public static String GUI_PRICE_BONUS;
public static String GUI_SCORE_TITLE;
public static String GUI_SIZE_TITLE;
public static String GUI_SIZE_MIN;
public static String GUI_SIZE_MAX;
public static String GUI_SIZE_MAX_NO_LESS;
public static String GUI_SELECT_FILE;
public static String GUI_SELECT_ITEM;
public static String GUI_ADD_NEW_KEY;
public static String GUI_DUPE_INVALID_KEY;
public static String GUI_SEARCH;
public static String GUI_TEMP_NEW_KEY;
public static String GUI_SET_NEW_KEY;
public static String GUI_EDIT_KEY;
public static void load() {
InputStream inputStream = BukkitCustomFishingPlugin.getInstance().getResource("messages/" + CFConfig.language + ".yml");
if (inputStream != null) {
try {
YamlDocument.create(
new File(BukkitCustomFishingPlugin.getInstance().getDataFolder(), "messages/" + CFConfig.language + ".yml"),
inputStream,
GeneralSettings.DEFAULT,
LoaderSettings
.builder()
.setAutoUpdate(true)
.build(),
DumperSettings.DEFAULT,
UpdaterSettings
.builder()
.setVersioning(new BasicVersioning("config-version"))
.build()
);
inputStream.close();
} catch (IOException e) {
LogUtils.warn(e.getMessage());
}
}
loadSettings(BukkitCustomFishingPlugin.get().getConfig("messages/" + CFConfig.language + ".yml"));
}
private static void loadSettings(YamlConfiguration locale) {
ConfigurationSection msgSection = locale.getConfigurationSection("messages");
if (msgSection != null) {
MSG_Prefix = msgSection.getString("prefix");
MSG_Reload = msgSection.getString("reload");
MSG_Competition_Not_Exist = msgSection.getString("competition-not-exist");
MSG_No_Competition_Ongoing = msgSection.getString("no-competition-ongoing");
MSG_Stop_Competition = msgSection.getString("stop-competition");
MSG_End_Competition = msgSection.getString("end-competition");
MSG_No_Player = msgSection.getString("no-player");
MSG_No_Score = msgSection.getString("no-score");
MSG_No_Rank = msgSection.getString("no-rank");
MSG_Catch_Amount = msgSection.getString("goal-catch-amount");
MSG_Max_Size = msgSection.getString("goal-max-size");
MSG_Total_Score = msgSection.getString("goal-total-score");
MSG_Total_Size = msgSection.getString("goal-total-size");
MSG_Item_Not_Exists = msgSection.getString("item-not-exist");
MSG_Get_Item = msgSection.getString("get-item");
MSG_Give_Item = msgSection.getString("give-item");
MSG_Never_Played = msgSection.getString("never-played");
MSG_Unsafe_Modification = msgSection.getString("unsafe-modification");
MSG_Data_Not_Loaded = msgSection.getString("data-not-loaded");
MSG_Market_GUI_Open = msgSection.getString("open-market-gui");
MSG_Fishing_Bag_Open = msgSection.getString("open-fishing-bag");
MSG_Split_Char = msgSection.getString("split-char");
MSG_Possible_Loots = msgSection.getString("possible-loots");
FORMAT_Day = msgSection.getString("format-day");
FORMAT_Hour = msgSection.getString("format-hour");
FORMAT_Minute = msgSection.getString("format-minute");
FORMAT_Second = msgSection.getString("format-second");
}
ConfigurationSection guiSection = locale.getConfigurationSection("gui");
if (guiSection != null) {
GUI_SEARCH = guiSection.getString("search");
GUI_EDIT_KEY = guiSection.getString("edit-key");
GUI_DELETE_PROPERTY = guiSection.getString("delete-property");
GUI_DUPE_INVALID_KEY = guiSection.getString("dupe-invalid-key");
GUI_SELECT_ITEM = guiSection.getString("select-item");
GUI_SELECT_FILE = guiSection.getString("select-file");
GUI_TEMP_NEW_KEY = guiSection.getString("temp-new-key");
GUI_SET_NEW_KEY = guiSection.getString("set-new-key");
GUI_ADD_NEW_KEY = guiSection.getString("page-add-new-key");
GUI_SCROLL_UP = guiSection.getString("scroll-up");
GUI_SCROLL_DOWN = guiSection.getString("scroll-down");
GUI_CANNOT_SCROLL_UP = guiSection.getString("cannot-scroll-up");
GUI_CANNOT_SCROLL_DOWN = guiSection.getString("cannot-scroll-down");
GUI_NEXT_PAGE = guiSection.getString("next-page");
GUI_GOTO_NEXT_PAGE = guiSection.getString("goto-next-page");
GUI_CANNOT_GOTO_NEXT_PAGE = guiSection.getString("cannot-goto-next-page");
GUI_PREVIOUS_PAGE = guiSection.getString("previous-page");
GUI_GOTO_PREVIOUS_PAGE = guiSection.getString("goto-previous-page");
GUI_CANNOT_GOTO_PREVIOUS_PAGE = guiSection.getString("cannot-goto-previous-page");
GUI_BACK_TO_PARENT_PAGE = guiSection.getString("back-to-parent-page");
GUI_BACK_TO_PARENT_FOLDER = guiSection.getString("back-to-parent-folder");
GUI_CURRENT_VALUE = guiSection.getString("current-value");
GUI_CLICK_TO_TOGGLE = guiSection.getString("click-to-toggle");
GUI_LEFT_CLICK_EDIT = guiSection.getString("left-click-edit");
GUI_RIGHT_CLICK_RESET = guiSection.getString("right-click-reset");
GUI_RIGHT_CLICK_DELETE = guiSection.getString("right-click-delete");
GUI_RIGHT_CLICK_CANCEL = guiSection.getString("right-click-cancel");
GUI_LOOT_SHOW_IN_FINDER = guiSection.getString("loot-show-in-finder");
GUI_LOOT_SCORE = guiSection.getString("loot-score");
GUI_LOOT_NICK = guiSection.getString("loot-nick");
GUI_LOOT_INSTANT_GAME = guiSection.getString("loot-instant-game");
GUI_LOOT_DISABLE_STATS = guiSection.getString("loot-disable-statistics");
GUI_LOOT_DISABLE_GAME = guiSection.getString("loot-disable-game");
GUI_ITEM_AMOUNT = guiSection.getString("item-amount");
GUI_ITEM_MODEL_DATA = guiSection.getString("item-custom-model-data");
GUI_ITEM_DISPLAY_NAME = guiSection.getString("item-display-name");
GUI_ITEM_DURABILITY = guiSection.getString("item-custom-durability");
GUI_ITEM_ENCHANTMENT = guiSection.getString("item-enchantment");
GUI_ITEM_HEAD64 = guiSection.getString("item-head64");
GUI_ITEM_FLAG = guiSection.getString("item-item-flag");
GUI_ITEM_LORE = guiSection.getString("item-lore");
GUI_ITEM_MATERIAL = guiSection.getString("item-material");
GUI_ITEM_NBT = guiSection.getString("item-nbt");
GUI_ITEM_PREVENT_GRAB = guiSection.getString("item-prevent-grab");
GUI_ITEM_PRICE = guiSection.getString("item-price");
GUI_ITEM_PRICE_BASE = guiSection.getString("item-price-base");
GUI_ITEM_PRICE_BONUS = guiSection.getString("item-price-bonus");
GUI_ITEM_RANDOM_DURABILITY = guiSection.getString("item-random-durability");
GUI_ITEM_SIZE = guiSection.getString("item-size");
GUI_ITEM_STACKABLE = guiSection.getString("item-stackable");
GUI_ITEM_STORED_ENCHANTMENT = guiSection.getString("item-stored-enchantment");
GUI_ITEM_TAG = guiSection.getString("item-tag");
GUI_ITEM_UNBREAKABLE = guiSection.getString("item-unbreakable");
GUI_NEW_VALUE = guiSection.getString("new-value");
GUI_CLICK_CONFIRM = guiSection.getString("click-confirm");
GUI_INVALID_NUMBER = guiSection.getString("invalid-number");
GUI_ILLEGAL_FORMAT = guiSection.getString("illegal-format");
GUI_TITLE_AMOUNT = guiSection.getString("page-amount-title");
GUI_TITLE_MODEL_DATA = guiSection.getString("page-model-data-title");
GUI_TITLE_DISPLAY_NAME = guiSection.getString("page-display-name-title");
GUI_NEW_DISPLAY_NAME = guiSection.getString("page-new-display-name");
GUI_TITLE_CUSTOM_DURABILITY = guiSection.getString("page-custom-durability-title");
GUI_TITLE_ENCHANTMENT = guiSection.getString("page-enchantment-title");
GUI_TITLE_STORED_ENCHANTMENT = guiSection.getString("page-stored-enchantment-title");
GUI_SELECT_ONE_ENCHANTMENT = guiSection.getString("page-select-one-enchantment");
GUI_ADD_NEW_ENCHANTMENT = guiSection.getString("page-add-new-enchantment");
GUI_TITLE_ITEM_FLAG = guiSection.getString("page-item-flag-title");
GUI_TITLE_LORE = guiSection.getString("page-lore-title");
GUI_ADD_NEW_LORE = guiSection.getString("page-add-new-lore");
GUI_SELECT_ONE_LORE = guiSection.getString("page-select-one-lore");
GUI_TITLE_MATERIAL = guiSection.getString("page-material-title");
GUI_TITLE_NBT_COMPOUND = guiSection.getString("page-nbt-compound-key-title");
GUI_TITLE_NBT_LIST = guiSection.getString("page-nbt-list-key-title");
GUI_TITLE_NBT_KEY = guiSection.getString("page-nbt-key-title");
GUI_NBT_INVALID_KEY = guiSection.getString("page-nbt-invalid-key");
GUI_NBT_ADD_COMPOUND = guiSection.getString("page-nbt-add-new-compound");
GUI_NBT_ADD_LIST = guiSection.getString("page-nbt-add-new-list");
GUI_NBT_ADD_VALUE = guiSection.getString("page-nbt-add-new-value");
GUI_NBT_PREVIEW = guiSection.getString("page-nbt-preview");
GUI_NBT_BACK_TO_COMPOUND = guiSection.getString("page-nbt-back-to-compound");
GUI_NBT_SET_VALUE_TITLE = guiSection.getString("page-nbt-set-value-title");
GUI_NBT_EDIT_TITLE = guiSection.getString("page-nbt-edit-title");
GUI_NICK_TITLE = guiSection.getString("page-nick-title");
GUI_NICK_NEW = guiSection.getString("page-new-nick");
GUI_PRICE_TITLE = guiSection.getString("page-price-title");
GUI_PRICE_BASE = guiSection.getString("page-base-price");
GUI_PRICE_BONUS = guiSection.getString("page-base-bonus");
GUI_SCORE_TITLE = guiSection.getString("page-score-title");
GUI_SIZE_TITLE = guiSection.getString("page-size-title");
GUI_SIZE_MIN = guiSection.getString("page-size-min");
GUI_SIZE_MAX = guiSection.getString("page-size-max");
GUI_SIZE_MAX_NO_LESS = guiSection.getString("page-size-max-no-less-min");
}
}
}

View File

@@ -22,14 +22,12 @@ import com.google.gson.GsonBuilder;
import com.google.gson.JsonSyntaxException;
import net.momirealms.customfishing.BukkitCustomFishingPluginImpl;
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import net.momirealms.customfishing.api.data.DataStorageInterface;
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.manager.StorageManager;
import net.momirealms.customfishing.api.storage.DataStorageProvider;
import net.momirealms.customfishing.api.storage.data.PlayerData;
import net.momirealms.customfishing.api.storage.StorageType;
import net.momirealms.customfishing.api.storage.user.UserData;
import net.momirealms.customfishing.api.storage.StorageManager;
import net.momirealms.customfishing.api.scheduler.CancellableTask;
import net.momirealms.customfishing.setting.CFConfig;
import net.momirealms.customfishing.storage.method.database.nosql.MongoDBImpl;
import net.momirealms.customfishing.storage.method.database.nosql.RedisManager;
import net.momirealms.customfishing.storage.method.database.sql.H2Impl;
@@ -38,8 +36,7 @@ import net.momirealms.customfishing.storage.method.database.sql.MySQLImpl;
import net.momirealms.customfishing.storage.method.database.sql.SQLiteImpl;
import net.momirealms.customfishing.storage.method.file.JsonImpl;
import net.momirealms.customfishing.storage.method.file.YAMLImpl;
import net.momirealms.customfishing.storage.user.OfflineUserImpl;
import net.momirealms.customfishing.storage.user.OnlineUserImpl;
import net.momirealms.customfishing.storage.user.OfflineUser;
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
@@ -67,9 +64,9 @@ import java.util.concurrent.TimeUnit;
public class StorageManagerImpl implements StorageManager, Listener {
private final BukkitCustomFishingPlugin plugin;
private DataStorageInterface dataSource;
private DataStorageProvider dataSource;
private StorageType previousType;
private final ConcurrentHashMap<UUID, OnlineUser> onlineUserMap;
private final ConcurrentHashMap<UUID, OnlineUserData> onlineUserMap;
private final HashSet<UUID> locked;
private boolean hasRedis;
private RedisManager redisManager;
@@ -174,12 +171,12 @@ public class StorageManagerImpl implements StorageManager, Listener {
* @return An OnlineUser instance if the player is online, or null if not.
*/
@Override
public OnlineUser getOnlineUser(UUID uuid) {
public OnlineUserData getOnlineUser(UUID uuid) {
return onlineUserMap.get(uuid);
}
@Override
public Collection<OnlineUser> getOnlineUsers() {
public Collection<OnlineUserData> getOnlineUsers() {
return onlineUserMap.values();
}
@@ -191,7 +188,7 @@ public class StorageManagerImpl implements StorageManager, Listener {
* @return A CompletableFuture that resolves to an Optional containing the OfflineUser instance if found, or empty if not found or locked.
*/
@Override
public CompletableFuture<Optional<OfflineUser>> getOfflineUser(UUID uuid, boolean lock) {
public CompletableFuture<Optional<UserData>> getOfflineUser(UUID uuid, boolean lock) {
var optionalDataFuture = dataSource.getPlayerData(uuid, lock);
return optionalDataFuture.thenCompose(optionalUser -> {
if (optionalUser.isEmpty()) {
@@ -200,29 +197,29 @@ public class StorageManagerImpl implements StorageManager, Listener {
}
PlayerData data = optionalUser.get();
if (data.isLocked()) {
return CompletableFuture.completedFuture(Optional.of(OfflineUserImpl.LOCKED_USER));
return CompletableFuture.completedFuture(Optional.of(OfflineUser.LOCKED_USER));
} else {
OfflineUser offlineUser = new OfflineUserImpl(uuid, data.getName(), data);
return CompletableFuture.completedFuture(Optional.of(offlineUser));
UserData userData = new OfflineUser(uuid, data.getName(), data);
return CompletableFuture.completedFuture(Optional.of(userData));
}
});
}
@Override
public boolean isLockedData(OfflineUser offlineUser) {
return OfflineUserImpl.LOCKED_USER == offlineUser;
public boolean isLockedData(UserData userData) {
return OfflineUser.LOCKED_USER == userData;
}
/**
* Asynchronously saves user data for an OfflineUser.
*
* @param offlineUser The OfflineUser whose data needs to be saved.
* @param userData The OfflineUser whose data needs to be saved.
* @param unlock Whether to unlock the data after saving.
* @return A CompletableFuture that resolves to a boolean indicating the success of the data saving operation.
*/
@Override
public CompletableFuture<Boolean> saveUserData(OfflineUser offlineUser, boolean unlock) {
return dataSource.updatePlayerData(offlineUser.getUUID(), offlineUser.getPlayerData(), unlock);
public CompletableFuture<Boolean> saveUserData(UserData userData, boolean unlock) {
return dataSource.updatePlayerData(userData.getUUID(), userData.getPlayerData(), unlock);
}
/**
@@ -231,7 +228,7 @@ public class StorageManagerImpl implements StorageManager, Listener {
* @return The data source.
*/
@Override
public DataStorageInterface getDataSource() {
public DataStorageProvider getDataSource() {
return dataSource;
}
@@ -270,7 +267,7 @@ public class StorageManagerImpl implements StorageManager, Listener {
if (locked.contains(uuid))
return;
OnlineUser onlineUser = onlineUserMap.remove(uuid);
OnlineUserData onlineUser = onlineUserMap.remove(uuid);
if (onlineUser == null) return;
PlayerData data = onlineUser.getPlayerData();
@@ -370,7 +367,7 @@ public class StorageManagerImpl implements StorageManager, Listener {
*/
public void putDataInCache(Player player, PlayerData playerData) {
locked.remove(player.getUniqueId());
OnlineUserImpl bukkitUser = new OnlineUserImpl(player, playerData);
OnlineUserDataImpl bukkitUser = new OnlineUserDataImpl(player, playerData);
onlineUserMap.put(player.getUniqueId(), bukkitUser);
}

View File

@@ -18,9 +18,9 @@
package net.momirealms.customfishing.storage.method;
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import net.momirealms.customfishing.api.data.DataStorageInterface;
import net.momirealms.customfishing.api.data.PlayerData;
import net.momirealms.customfishing.api.data.user.OfflineUser;
import net.momirealms.customfishing.api.storage.DataStorageProvider;
import net.momirealms.customfishing.api.storage.data.PlayerData;
import net.momirealms.customfishing.api.storage.user.UserData;
import java.time.Instant;
import java.util.Collection;
@@ -30,7 +30,7 @@ import java.util.concurrent.CompletableFuture;
/**
* An abstract class that implements the DataStorageInterface and provides common functionality for data storage.
*/
public abstract class AbstractStorage implements DataStorageInterface {
public abstract class AbstractStorage implements DataStorageProvider {
protected BukkitCustomFishingPlugin plugin;
@@ -58,9 +58,9 @@ public abstract class AbstractStorage implements DataStorageInterface {
}
@Override
public void updateManyPlayersData(Collection<? extends OfflineUser> users, boolean unlock) {
public void updateManyPlayersData(Collection<? extends UserData> users, boolean unlock) {
// Update data for multiple players by iterating through the collection of OfflineUser objects.
for (OfflineUser user : users) {
for (UserData user : users) {
this.updatePlayerData(user.getUUID(), user.getPlayerData(), unlock);
}
}

View File

@@ -22,10 +22,9 @@ import com.mongodb.client.*;
import com.mongodb.client.model.*;
import com.mongodb.client.result.UpdateResult;
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
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.setting.CFConfig;
import net.momirealms.customfishing.api.storage.data.PlayerData;
import net.momirealms.customfishing.api.storage.StorageType;
import net.momirealms.customfishing.api.storage.user.UserData;
import net.momirealms.customfishing.storage.method.AbstractStorage;
import org.bson.Document;
import org.bson.UuidRepresentation;
@@ -190,7 +189,7 @@ public class MongoDBImpl extends AbstractStorage {
* @param unlock Flag indicating whether to unlock the data.
*/
@Override
public void updateManyPlayersData(Collection<? extends OfflineUser> users, boolean unlock) {
public void updateManyPlayersData(Collection<? extends UserData> users, boolean unlock) {
MongoCollection<Document> collection = database.getCollection(getCollectionName("data"));
try {
int lock = unlock ? 0 : getCurrentSeconds();

View File

@@ -18,9 +18,8 @@
package net.momirealms.customfishing.storage.method.database.nosql;
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import net.momirealms.customfishing.api.data.PlayerData;
import net.momirealms.customfishing.api.data.StorageType;
import net.momirealms.customfishing.setting.CFConfig;
import net.momirealms.customfishing.api.storage.data.PlayerData;
import net.momirealms.customfishing.api.storage.StorageType;
import net.momirealms.customfishing.storage.method.AbstractStorage;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.YamlConfiguration;

View File

@@ -20,7 +20,11 @@ package net.momirealms.customfishing.storage.method.database.sql;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import net.momirealms.customfishing.api.data.*;
import net.momirealms.customfishing.api.storage.*;
import net.momirealms.customfishing.api.storage.data.EarningData;
import net.momirealms.customfishing.api.storage.data.InventoryData;
import net.momirealms.customfishing.api.storage.data.PlayerData;
import net.momirealms.customfishing.api.storage.data.StatisticData;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.YamlConfiguration;
@@ -150,16 +154,16 @@ public abstract class AbstractHikariDatabase extends AbstractSQLDatabase impleme
try (
Connection connection = getConnection()
) {
var builder = new PlayerData.Builder().setName("");
var builder = new PlayerData.Builder().name("");
PreparedStatement statementOne = connection.prepareStatement(String.format(SqlConstants.SQL_SELECT_BY_UUID, getTableName("fishingbag")));
statementOne.setString(1, uuid.toString());
ResultSet rsOne = statementOne.executeQuery();
if (rsOne.next()) {
int size = rsOne.getInt("size");
String contents = rsOne.getString("contents");
builder.setBagData(new InventoryData(contents, size));
builder.bag(new InventoryData(contents, size));
} else {
builder.setBagData(InventoryData.empty());
builder.bag(InventoryData.empty());
}
PreparedStatement statementTwo = connection.prepareStatement(String.format(SqlConstants.SQL_SELECT_BY_UUID, getTableName("selldata")));
@@ -168,9 +172,9 @@ public abstract class AbstractHikariDatabase extends AbstractSQLDatabase impleme
if (rsTwo.next()) {
int date = rsTwo.getInt("date");
double money = rsTwo.getInt("money");
builder.setEarningData(new EarningData(money, date));
builder.earnings(new EarningData(money, date));
} else {
builder.setEarningData(EarningData.empty());
builder.earnings(EarningData.empty());
}
PreparedStatement statementThree = connection.prepareStatement(String.format(SqlConstants.SQL_SELECT_BY_UUID, getTableName("statistics")));
@@ -182,9 +186,9 @@ public abstract class AbstractHikariDatabase extends AbstractSQLDatabase impleme
.map(element -> element.split(":"))
.filter(pair -> pair.length == 2)
.collect(Collectors.toMap(pair -> pair[0], pair -> Integer.parseInt(pair[1])));
builder.setStats(new StatisticData(amountMap, new HashMap<>()));
builder.stats(new StatisticData(amountMap, new HashMap<>()));
} else {
builder.setStats(StatisticData.empty());
builder.stats(StatisticData.empty());
}
future.complete(Optional.of(builder.build()));
} catch (SQLException e) {

View File

@@ -18,9 +18,8 @@
package net.momirealms.customfishing.storage.method.database.sql;
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import net.momirealms.customfishing.api.data.PlayerData;
import net.momirealms.customfishing.api.data.user.OfflineUser;
import net.momirealms.customfishing.setting.CFConfig;
import net.momirealms.customfishing.api.storage.data.PlayerData;
import net.momirealms.customfishing.api.storage.user.UserData;
import net.momirealms.customfishing.storage.method.AbstractStorage;
import org.bukkit.Bukkit;
import org.jetbrains.annotations.NotNull;
@@ -197,12 +196,12 @@ public abstract class AbstractSQLDatabase extends AbstractStorage {
* @param unlock Whether to unlock the player data after updating.
*/
@Override
public void updateManyPlayersData(Collection<? extends OfflineUser> users, boolean unlock) {
public void updateManyPlayersData(Collection<? extends UserData> users, boolean unlock) {
String sql = String.format(SqlConstants.SQL_UPDATE_BY_UUID, getTableName("data"));
try (Connection connection = getConnection()) {
connection.setAutoCommit(false);
try (PreparedStatement statement = connection.prepareStatement(sql)) {
for (OfflineUser user : users) {
for (UserData user : users) {
statement.setInt(1, unlock ? 0 : getCurrentSeconds());
statement.setBlob(2, new ByteArrayInputStream(plugin.getStorageManager().toBytes(user.getPlayerData())));
statement.setString(3, user.getUUID().toString());

View File

@@ -19,7 +19,7 @@ package net.momirealms.customfishing.storage.method.database.sql;
import net.momirealms.customfishing.BukkitCustomFishingPluginImpl;
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import net.momirealms.customfishing.api.data.StorageType;
import net.momirealms.customfishing.api.storage.StorageType;
import net.momirealms.customfishing.libraries.dependencies.Dependency;
import org.bukkit.configuration.file.YamlConfiguration;

View File

@@ -18,7 +18,7 @@
package net.momirealms.customfishing.storage.method.database.sql;
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import net.momirealms.customfishing.api.data.StorageType;
import net.momirealms.customfishing.api.storage.StorageType;
public class MariaDBImpl extends AbstractHikariDatabase {

View File

@@ -18,7 +18,7 @@
package net.momirealms.customfishing.storage.method.database.sql;
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import net.momirealms.customfishing.api.data.StorageType;
import net.momirealms.customfishing.api.storage.StorageType;
public class MySQLImpl extends AbstractHikariDatabase {

View File

@@ -19,11 +19,10 @@ package net.momirealms.customfishing.storage.method.database.sql;
import net.momirealms.customfishing.BukkitCustomFishingPluginImpl;
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
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.storage.data.PlayerData;
import net.momirealms.customfishing.api.storage.StorageType;
import net.momirealms.customfishing.api.storage.user.UserData;
import net.momirealms.customfishing.libraries.dependencies.Dependency;
import net.momirealms.customfishing.setting.CFConfig;
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.YamlConfiguration;
@@ -191,12 +190,12 @@ public class SQLiteImpl extends AbstractSQLDatabase {
* @param unlock Flag indicating whether to unlock the data.
*/
@Override
public void updateManyPlayersData(Collection<? extends OfflineUser> users, boolean unlock) {
public void updateManyPlayersData(Collection<? extends UserData> users, boolean unlock) {
String sql = String.format(SqlConstants.SQL_UPDATE_BY_UUID, getTableName("data"));
try (Connection connection = getConnection()) {
connection.setAutoCommit(false);
try (PreparedStatement statement = connection.prepareStatement(sql)) {
for (OfflineUser user : users) {
for (UserData user : users) {
statement.setInt(1, unlock ? 0 : getCurrentSeconds());
statement.setBytes(2, plugin.getStorageManager().toBytes(user.getPlayerData()));
statement.setString(3, user.getUUID().toString());

View File

@@ -19,8 +19,8 @@ package net.momirealms.customfishing.storage.method.file;
import com.google.gson.Gson;
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import net.momirealms.customfishing.api.data.PlayerData;
import net.momirealms.customfishing.api.data.StorageType;
import net.momirealms.customfishing.api.storage.data.PlayerData;
import net.momirealms.customfishing.api.storage.StorageType;
import net.momirealms.customfishing.storage.method.AbstractStorage;
import org.bukkit.Bukkit;

View File

@@ -18,7 +18,11 @@
package net.momirealms.customfishing.storage.method.file;
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import net.momirealms.customfishing.api.data.*;
import net.momirealms.customfishing.api.storage.*;
import net.momirealms.customfishing.api.storage.data.EarningData;
import net.momirealms.customfishing.api.storage.data.InventoryData;
import net.momirealms.customfishing.api.storage.data.PlayerData;
import net.momirealms.customfishing.api.storage.data.StatisticData;
import net.momirealms.customfishing.storage.method.AbstractStorage;
import net.momirealms.customfishing.util.ConfigUtils;
import org.bukkit.Bukkit;
@@ -70,10 +74,10 @@ public class YAMLImpl extends AbstractStorage implements LegacyDataStorageInterf
YamlConfiguration data = ConfigUtils.readData(dataFile);
PlayerData playerData = new PlayerData.Builder()
.setBagData(new InventoryData(data.getString("bag", ""), data.getInt("size", 9)))
.setEarningData(new EarningData(data.getDouble("earnings"), data.getInt("date")))
.setStats(getStatistics(data.getConfigurationSection("stats")))
.setName(data.getString("name"))
.bag(new InventoryData(data.getString("bag", ""), data.getInt("size", 9)))
.earnings(new EarningData(data.getDouble("earnings"), data.getInt("date")))
.stats(getStatistics(data.getConfigurationSection("stats")))
.name(data.getString("name"))
.build();
return CompletableFuture.completedFuture(Optional.of(playerData));
}
@@ -153,15 +157,15 @@ public class YAMLImpl extends AbstractStorage implements LegacyDataStorageInterf
@Override
public CompletableFuture<Optional<PlayerData>> getLegacyPlayerData(UUID uuid) {
// Retrieve legacy player data (YAML format) for a given UUID.
var builder = new PlayerData.Builder().setName("");
var builder = new PlayerData.Builder().name("");
File bagFile = new File(plugin.getDataFolder(), "data/fishingbag/" + uuid + ".yml");
if (bagFile.exists()) {
YamlConfiguration yaml = YamlConfiguration.loadConfiguration(bagFile);
String contents = yaml.getString("contents", "");
int size = yaml.getInt("size", 9);
builder.setBagData(new InventoryData(contents, size));
builder.bag(new InventoryData(contents, size));
} else {
builder.setBagData(InventoryData.empty());
builder.bag(InventoryData.empty());
}
File statFile = new File(plugin.getDataFolder(), "data/statistics/" + uuid + ".yml");
@@ -173,17 +177,17 @@ public class YAMLImpl extends AbstractStorage implements LegacyDataStorageInterf
map.put(entry.getKey(), integer);
}
}
builder.setStats(new StatisticData(map, new HashMap<>()));
builder.stats(new StatisticData(map, new HashMap<>()));
} else {
builder.setStats(StatisticData.empty());
builder.stats(StatisticData.empty());
}
File sellFile = new File(plugin.getDataFolder(), "data/sell/" + uuid + ".yml");
if (sellFile.exists()) {
YamlConfiguration yaml = YamlConfiguration.loadConfiguration(sellFile);
builder.setEarningData(new EarningData(yaml.getDouble("earnings"), yaml.getInt("date")));
builder.earnings(new EarningData(yaml.getDouble("earnings"), yaml.getInt("date")));
} else {
builder.setEarningData(EarningData.empty());
builder.earnings(EarningData.empty());
}
return CompletableFuture.completedFuture(Optional.of(builder.build()));

View File

@@ -18,14 +18,11 @@
package net.momirealms.customfishing.storage.user;
import net.momirealms.customfishing.api.BukkitCustomFishingPlugin;
import net.momirealms.customfishing.api.data.EarningData;
import net.momirealms.customfishing.api.data.InventoryData;
import net.momirealms.customfishing.api.data.PlayerData;
import net.momirealms.customfishing.api.data.StatisticData;
import net.momirealms.customfishing.api.data.user.OfflineUser;
import net.momirealms.customfishing.api.mechanic.bag.FishingBagHolder;
import net.momirealms.customfishing.api.mechanic.statistic.Statistics;
import net.momirealms.customfishing.api.util.InventoryUtils;
import net.momirealms.customfishing.api.storage.data.EarningData;
import net.momirealms.customfishing.api.storage.data.InventoryData;
import net.momirealms.customfishing.api.storage.data.PlayerData;
import net.momirealms.customfishing.api.storage.data.StatisticData;
import net.momirealms.customfishing.api.storage.user.UserData;
import net.momirealms.customfishing.bukkit.compatibility.papi.PlaceholderManagerImpl;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
@@ -38,14 +35,14 @@ import java.util.UUID;
/**
* Implementation of the OfflineUser interface for representing offline player data.
*/
public class OfflineUserImpl implements OfflineUser {
public class OfflineUser implements UserData<OfflinePlayer> {
private final UUID uuid;
private final String name;
private final FishingBagHolder holder;
private final EarningData earningData;
private final Statistics statistics;
public static OfflineUserImpl LOCKED_USER = new OfflineUserImpl(UUID.randomUUID(), "-locked-", PlayerData.empty());
private boolean isDirty;
/**
* Constructor to create an OfflineUserImpl instance.
@@ -54,7 +51,7 @@ public class OfflineUserImpl implements OfflineUser {
* @param name The name of the player.
* @param playerData The player's data, including bag contents, earnings, and statistics.
*/
public OfflineUserImpl(UUID uuid, String name, PlayerData playerData) {
public OfflineUser(UUID uuid, String name, PlayerData playerData) {
this.name = name;
this.uuid = uuid;
this.holder = new FishingBagHolder(uuid);
@@ -113,10 +110,15 @@ public class OfflineUserImpl implements OfflineUser {
public PlayerData getPlayerData() {
// Create a new PlayerData instance based on the stored information
return new PlayerData.Builder()
.setBagData(new InventoryData(InventoryUtils.stacksToBase64(holder.getInventory().getStorageContents()), holder.getInventory().getSize()))
.setEarningData(earningData)
.setStats(new StatisticData(statistics.getStatisticMap(), statistics.getSizeMap()))
.setName(name)
.bag(new InventoryData(InventoryUtils.stacksToBase64(holder.getInventory().getStorageContents()), holder.getInventory().getSize()))
.earnings(earningData)
.stats(new StatisticData(statistics.getStatisticMap(), statistics.getSizeMap()))
.name(name)
.build();
}
@Override
public OfflinePlayer getUser() {
return null;
}
}

Some files were not shown because too many files have changed in this diff Show More