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:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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())) {
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.*;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
package net.momirealms.customfishing.mechanic.fishing;
|
||||
|
||||
public class BukkitFishingManager {
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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())));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
package net.momirealms.customfishing.mechanic.requirement;
|
||||
|
||||
public class BukkitRequirementManager {
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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"));
|
||||
}
|
||||
}
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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()));
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user