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

fix fishing bag

This commit is contained in:
XiaoMoMi
2023-09-10 03:24:56 +08:00
parent 4c38dda7d3
commit 4741e383a1
11 changed files with 108 additions and 31 deletions

View File

@@ -158,7 +158,8 @@ public class CustomFishingPluginImpl extends CustomFishingPlugin {
((StatisticsManagerImpl) this.statisticsManager).load();
((PlaceholderManagerImpl) this.placeholderManager).unload();
((PlaceholderManagerImpl) this.placeholderManager).load();
this.commandManager.loadCommands();
this.commandManager.unload();
this.commandManager.load();
}
private void loadDependencies() {

View File

@@ -17,18 +17,17 @@
package net.momirealms.customfishing.command;
import dev.jorel.commandapi.CommandAPI;
import dev.jorel.commandapi.CommandAPIBukkitConfig;
import dev.jorel.commandapi.CommandAPICommand;
import dev.jorel.commandapi.CommandPermission;
import dev.jorel.commandapi.*;
import dev.jorel.commandapi.arguments.EntitySelectorArgument;
import net.momirealms.customfishing.CustomFishingPluginImpl;
import net.momirealms.customfishing.adventure.AdventureManagerImpl;
import net.momirealms.customfishing.api.CustomFishingPlugin;
import net.momirealms.customfishing.api.manager.CommandManager;
import net.momirealms.customfishing.api.util.LogUtils;
import net.momirealms.customfishing.command.sub.*;
import net.momirealms.customfishing.setting.Locale;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import java.util.Collection;
@@ -42,7 +41,7 @@ public class CommandManagerImpl implements CommandManager {
}
@Override
public void loadCommands() {
public void load() {
new CommandAPICommand("customfishing")
.withAliases("cfishing")
.withPermission(CommandPermission.OP)
@@ -57,18 +56,25 @@ public class CommandManagerImpl implements CommandManager {
)
.register();
new CommandAPICommand("sellfish")
.withPermission("customfishing.sellfish")
.executesPlayer((player, args) -> {
plugin.getMarketManager().openMarketGUI(player);
})
.register();
if (plugin.getMarketManager().isEnable()) {
new CommandAPICommand("sellfish")
.withPermission("customfishing.sellfish")
.executesPlayer((player, args) -> {
if (plugin.getMarketManager().isEnable())
plugin.getMarketManager().openMarketGUI(player);
})
.register();
}
if (plugin.getBagManager().isBagEnabled()) {
if (plugin.getBagManager().isEnabled()) {
FishingBagCommand.INSTANCE.getBagCommand().register();
}
}
@Override
public void unload() {
}
private CommandAPICommand getReloadCommand() {
return new CommandAPICommand("reload")
.executes((sender, args) -> {
@@ -80,17 +86,39 @@ public class CommandManagerImpl implements CommandManager {
@SuppressWarnings("unchecked")
private CommandAPICommand getMarketCommand() {
return new CommandAPICommand("market").withSubcommand(
new CommandAPICommand("open")
.withArguments(new EntitySelectorArgument.ManyPlayers("player"))
.executes((sender, args) -> {
Collection<Player> players = (Collection<Player>) args.get("player");
assert players != null;
for (Player player : players) {
plugin.getMarketManager().openMarketGUI(player);
CommandAPICommand command = new CommandAPICommand("open");
if (plugin.getMarketManager().isEnable()) {
command.withSubcommand(
new CommandAPICommand("market")
.withArguments(new EntitySelectorArgument.ManyPlayers("player"))
.executes((sender, args) -> {
Collection<Player> players = (Collection<Player>) args.get("player");
assert players != null;
for (Player player : players) {
plugin.getMarketManager().openMarketGUI(player);
AdventureManagerImpl.getInstance().sendMessageWithPrefix(sender, Locale.MSG_Market_GUI_Open.replace("{player}", player.getName()));
}
}));
}
if (plugin.getBagManager().isEnabled()) {
command.withSubcommand(
new CommandAPICommand("bag")
.withArguments(new EntitySelectorArgument.ManyPlayers("player"))
.executes((sender, args) -> {
Collection<Player> players = (Collection<Player>) args.get("player");
assert players != null;
for (Player player : players) {
Inventory inventory = plugin.getBagManager().getOnlineBagInventory(player.getUniqueId());
if (inventory != null) {
player.openInventory(inventory);
AdventureManagerImpl.getInstance().sendMessageWithPrefix(sender, Locale.MSG_Market_GUI_Open.replace("{player}", player.getName()));
} else {
LogUtils.warn("Player " + player.getName() + "'s bag data has not been loaded.");
}
}));
}
}));
}
return command;
}
private CommandAPICommand getAboutCommand() {

View File

@@ -20,6 +20,7 @@ package net.momirealms.customfishing.command.sub;
import dev.jorel.commandapi.CommandAPICommand;
import dev.jorel.commandapi.arguments.PlayerArgument;
import dev.jorel.commandapi.arguments.UUIDArgument;
import net.momirealms.customfishing.CustomFishingPluginImpl;
import net.momirealms.customfishing.adventure.AdventureManagerImpl;
import net.momirealms.customfishing.api.CustomFishingPlugin;
import net.momirealms.customfishing.api.data.user.OfflineUser;
@@ -40,11 +41,13 @@ public class FishingBagCommand {
.withPermission("fishingbag.user")
.withSubcommands(getEditOnlineCommand(), getEditOfflineCommand())
.executesPlayer(((player, args) -> {
var inv = CustomFishingPlugin.get().getBagManager().getOnlineBagInventory(player.getUniqueId());
if (inv != null) {
player.openInventory(inv);
} else {
AdventureManagerImpl.getInstance().sendMessageWithPrefix(player, Locale.MSG_Data_Not_Loaded);
if (CustomFishingPlugin.get().getBagManager().isEnabled()) {
var inv = CustomFishingPlugin.get().getBagManager().getOnlineBagInventory(player.getUniqueId());
if (inv != null) {
player.openInventory(inv);
} else {
AdventureManagerImpl.getInstance().sendMessageWithPrefix(player, Locale.MSG_Data_Not_Loaded);
}
}
}));
}

View File

@@ -22,15 +22,19 @@ import net.momirealms.customfishing.api.CustomFishingPlugin;
import net.momirealms.customfishing.api.data.user.OfflineUser;
import net.momirealms.customfishing.api.manager.BagManager;
import net.momirealms.customfishing.api.mechanic.bag.FishingBagHolder;
import net.momirealms.customfishing.api.mechanic.condition.Condition;
import net.momirealms.customfishing.setting.Config;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import java.util.HashMap;
import java.util.UUID;
@@ -46,7 +50,7 @@ public class BagManagerImpl implements BagManager, Listener {
}
@Override
public boolean isBagEnabled() {
public boolean isEnabled() {
return Config.enableFishingBag;
}
@@ -89,6 +93,32 @@ public class BagManagerImpl implements BagManager, Listener {
plugin.getStorageManager().saveUserData(offlineUser, true);
}
@EventHandler
public void onInvClick(InventoryClickEvent event) {
if (event.isCancelled())
return;
if (!(event.getInventory().getHolder() instanceof FishingBagHolder))
return;
Inventory clicked = event.getClickedInventory();
if (clicked != event.getWhoClicked().getInventory())
return;
ItemStack clickedItem = event.getCurrentItem();
if (clickedItem == null || clickedItem.getType() == Material.AIR)
return;
if (Config.bagWhiteListItems.contains(clickedItem.getType()))
return;
String id = plugin.getItemManager().getAnyItemID(clickedItem);
if (plugin.getEffectManager().getEffect("rod", id) != null)
return;
if (plugin.getEffectManager().getEffect("bait", id) != null)
return;
if (plugin.getEffectManager().getEffect("util", id) != null)
return;
if (Config.bagStoreLoots && plugin.getLootManager().getLoot(id) != null)
return;
event.setCancelled(true);
}
@EventHandler
public void onQuit(PlayerQuitEvent event) {
OfflineUser offlineUser = tempEditMap.remove(event.getPlayer().getUniqueId());

View File

@@ -69,6 +69,7 @@ public class MarketManagerImpl implements MarketManager, Listener {
private double earningLimit;
private boolean allowItemWithNoPrice;
private final ConcurrentHashMap<UUID, MarketGUI> marketGUIMap;
private boolean enable;
public MarketManagerImpl(CustomFishingPlugin plugin) {
this.plugin = plugin;
@@ -94,6 +95,8 @@ public class MarketManagerImpl implements MarketManager, Listener {
private void loadConfig() {
YamlConfiguration config = plugin.getConfig("market.yml");
this.enable = config.getBoolean("enable", true);
if (!this.enable) return;
this.layout = config.getStringList("layout").toArray(new String[0]);
this.title = config.getString("title", "market.title");
this.formula = config.getString("price-formula", "{base} + {bonus} * {size}");
@@ -355,4 +358,9 @@ public class MarketManagerImpl implements MarketManager, Listener {
public BuildableItem getFunctionIconDenyBuilder() {
return functionIconDenyBuilder;
}
@Override
public boolean isEnable() {
return enable;
}
}