diff --git a/src/main/java/fr/communaywen/core/AywenCraftPlugin.java b/src/main/java/fr/communaywen/core/AywenCraftPlugin.java index 568e91f6..d47ee2b6 100644 --- a/src/main/java/fr/communaywen/core/AywenCraftPlugin.java +++ b/src/main/java/fr/communaywen/core/AywenCraftPlugin.java @@ -117,7 +117,7 @@ public final class AywenCraftPlugin extends JavaPlugin { @Getter private TabList tabList; @Getter private HashMap, HashMap>> flags; - + /** * Format a permission with the permission prefix. * @@ -127,10 +127,10 @@ public final class AywenCraftPlugin extends JavaPlugin { * @see PermissionCategory #PERMISSION_PREFIX */ public static @NotNull String formatPermission(final @NotNull PermissionCategory category, - final @NotNull String suffix) { + final @NotNull String suffix) { return category.formatPermission(suffix); } - + @Override public void onLoad() { this.registerFlags(new StateFlag("disable-thor-hammer", false)); @@ -140,16 +140,16 @@ public void onLoad() { this.registerFlags(new StateFlag("disable-spawn-grave", false)); this.registerFlags(new StateFlag("disable-wind-charge", false)); } - + @SneakyThrows @Override public void onEnable() { // Logs super.getLogger().info("Hello le monde, ici le plugin AywenCraft !"); - + // Gardez les au début sinon ça pète tout instance = this; - + RegisteredServiceProvider provider = Bukkit.getServicesManager().getRegistration(LuckPerms.class); if (provider != null) { api = provider.getProvider(); @@ -158,55 +158,55 @@ public void onEnable() { Bukkit.getPluginManager().disablePlugin(this); return; } - + MenuLib.init(this); managers.initConfig(this); managers.init(this); jumpManager = managers.getJumpManager(); contestManager = managers.getContestManager(); ClaimConfigDataBase.loadAllClaimsData(); - + eventsManager = new EventsManager(this, loadEventsManager()); // TODO: include to Managers.java - + mvCore = (MultiverseCore) Bukkit.getServer().getPluginManager().getPlugin("Multiverse-Core"); - + LinkerAPI linkerAPI = new LinkerAPI(managers.getDatabaseManager()); - + OnPlayers onPlayers = new OnPlayers(); onPlayers.setLinkerAPI(linkerAPI); onPlayers.setLuckPerms(api); - + MOTDChanger motdChanger = new MOTDChanger(); motdChanger.startMOTDChanger(this); - + this.adventure = BukkitAudiences.create(this); - + this.regions = new ArrayList<>(); - + this.tabList = new TabList(); - + /* ----- */ - + String webhookUrl = getConfig().getString("discord.webhookURL"); String botName = getConfig().getString("discord.webhookName"); String botAvatarUrl = getConfig().getString("discord.webhookIconURL"); DiscordWebhook discordWebhook = new DiscordWebhook(webhookUrl, botName, botAvatarUrl); - + /* COMMANDS */ - + this.handler = BukkitCommandHandler.create(this); this.interactiveHelpMenu = InteractiveHelpMenu.create(); this.handler.accept(interactiveHelpMenu); this.handler.getTranslator().setLocale(Locale.FRENCH); - + this.handler.getAutoCompleter().registerSuggestion("homes", (args, sender, command) -> { Player player = Bukkit.getPlayer(sender.getUniqueId()); List suggestions = new ArrayList<>(); - + if(command.getName().equals("home")) { suggestions.add("upgrade"); } - + assert player != null; if(!command.equals("renamehome")) { if(args.isEmpty()) { @@ -215,16 +215,16 @@ public void onEnable() { .map(OfflinePlayer::getName) .map(name -> name + ":") .toList()); - + } suggestions.addAll(managers.getHomesManagers().getHomeNamesByPlayer(player.getUniqueId())); } else { String arg = args.getFirst(); - + if(arg.contains(":") && player.hasPermission("ayw.home.teleport.others")) { String[] parts = arg.split(":", 2); Player target = Bukkit.getPlayer(parts[0]); - + if(target != null) { String prefix = parts[0] + ":"; suggestions.addAll(managers.getHomesManagers().getHomeNamesByPlayer(target.getUniqueId()) @@ -240,16 +240,16 @@ public void onEnable() { .map(name -> name + ":") .toList()); } - + suggestions.addAll(managers.getHomesManagers().getHomeNamesByPlayer(player.getUniqueId()) .stream() .filter(home -> home.toLowerCase().startsWith(arg.toLowerCase())) .toList()); } - + return suggestions; } - + if(player.hasPermission("ayw.home.teleport.others")) { suggestions.addAll(Bukkit.getOnlinePlayers().stream() .map(OfflinePlayer::getName) @@ -257,48 +257,48 @@ public void onEnable() { .toList()); } } - + suggestions.addAll(HomesManagers.homes.stream() .filter(home -> home.getPlayer().equals(sender.getUniqueId().toString())) .map(Home::getName) .toList()); - + suggestions.add("upgrade"); return suggestions; }); - + this.handler.getAutoCompleter().registerSuggestion("featureName", SuggestionProvider.of(managers.getWikiConfig().getKeys(false))); this.handler.getAutoCompleter().registerSuggestion("lbEventsId", SuggestionProvider.of(managers.getLuckyBlockManager().getLuckyBlocksIds())); this.handler.getAutoCompleter().registerSuggestion("colorContest", SuggestionProvider.of(managers.getContestManager().getColorContestList())); this.handler.getAutoCompleter().registerSuggestion("trade", SuggestionProvider.of(managers.getContestManager().getRessListFromConfig())); this.handler.getAutoCompleter().registerSuggestion("listLeaderboard", SuggestionProvider.of(managers.getLeaderboardManager().getLbList())); this.handler.getAutoCompleter().registerSuggestion("homeWorldsAdd", (args, sender, command) -> { - + List allWorlds = new ArrayList<>(Bukkit.getWorlds().stream().map(World::getName).toList()); allWorlds.removeAll(managers.getDisabledWorldHome().getDisabledWorlds()); - + return allWorlds; }); this.handler.getAutoCompleter().registerSuggestion("homeWorldsRemove", (args, sender, command) -> { DisabledWorldHome disabledWorldHome = managers.getDisabledWorldHome(); - + return (List) new ArrayList(disabledWorldHome.getDisabledWorlds()); }); - + this.handler.getAutoCompleter().registerParameterSuggestions(OfflinePlayer.class, ((args, sender, command) -> { OfflinePlayer[] offlinePlayers = Bukkit.getServer().getOfflinePlayers(); List playerNames = new ArrayList<>(); - + for (OfflinePlayer player : offlinePlayers) { String playerName = player.getName(); if (playerName != null) { playerNames.add(playerName); } } - + return playerNames; })); - + this.handler.register( new LeaderboardCommand(this, jumpManager), new SettingsCommand(this), @@ -358,9 +358,9 @@ public void onEnable() { new RenameHomeCommands(managers.getHomesManagers()), new HomeDisabledWorldCommand(managers.getDisabledWorldHome()) ); - + /* -------- */ - + new BukkitRunnable() { @Override public void run() { @@ -372,9 +372,9 @@ public void run() { } } }.runTaskTimer(this, 0L, 100L); - + new CompassClockTask().runTaskTimer(this, 0L, 5L); - + /* LISTENERS */ registerEvents( new CubeListener(), @@ -424,28 +424,26 @@ public void run() { new LBPlayerInteractListener(managers.getLuckyBlockManager()), new LBEntityDeathListener(managers.getLuckyBlockManager()) ); - + getServer().getPluginManager().registerEvents(eventsManager, this); // TODO: refactor - + /* --------- */ - + saveDefaultConfig(); - + createSandRecipe(); createFarineRecipe(); createCrazyPotion(); - + for (Player player : Bukkit.getOnlinePlayers()) { new GamePlayer(player.getName()); QuestsManager.loadPlayerData(player); } - + QuestsManager.initializeQuestsTable(); ClaimConfigDataBase.processStoredClaimData(); new BandageRecipe(); - new CubeManager(this); - // BETTER SPAWN // - Leaderboard LeaderboardManager.createLeaderboardBalTop(); @@ -465,29 +463,27 @@ public void run() { } catch (IOException e) { throw new RuntimeException(e); } - + } - + @SneakyThrows @Override public void onDisable() { // VIDER LES DONNEES this.getManagers().getContestCache().clearContestCache(); this.getManagers().getContestCache().clearPlayerContestCache(); - + // Remove Leaderboard LeaderboardManager.removeLeaderboardBalTop(); LeaderboardManager.removeLeaderboardTeamTop(); jumpManager.removeLeaderboardLeaderboardRecord(); LeaderboardManager.removeLeaderboardContribution(); LeaderboardManager.removeLeaderboardPlayTime(); - + jumpManager.removeDisplayJumpStart(); jumpManager.removeDisplayJumpEnd(); - CubeManager.saveCubeLocation(); CubeManager.clearCube(); - for (Player player : Bukkit.getOnlinePlayers()) { PlayerQuests pq = QuestsManager.getPlayerQuests(player.getUniqueId()); // Load quest progress QuestsManager.savePlayerQuestProgress(player, pq); // Save quest progress @@ -499,16 +495,16 @@ public void onDisable() { } catch (IOException e) { throw new RuntimeException(e); } - + managers.cleanup(); } - + public void registerEvents(Listener... args) { for (Listener listener : args) { getServer().getPluginManager().registerEvents(listener, this); } } - + private void registerFlags(Flag flag) { FlagRegistry registry = WorldGuard.getInstance().getFlagRegistry(); if (this.flags == null) { @@ -536,61 +532,61 @@ private void registerFlags(Flag flag) { } } } - + public int getBanDuration() { return getConfig().getInt("deco_freeze_nombre_de_jours_ban", 30); } - + private void createFarineRecipe() { ItemStack farine = new ItemStack(Material.SUGAR); ItemMeta meta = farine.getItemMeta(); assert meta != null; meta.setDisplayName("Farine"); farine.setItemMeta(meta); - + ShapedRecipe recipe = new ShapedRecipe(new NamespacedKey(this, "farine"), farine); recipe.shape(" A ", " B ", " "); recipe.setIngredient('A', Material.GUNPOWDER); recipe.setIngredient('B', Material.WHEAT); - + Bukkit.addRecipe(recipe); } - + private void createCrazyPotion() { ItemStack crazyPotion = new ItemStack(Material.POTION); PotionMeta meta = (PotionMeta) crazyPotion.getItemMeta(); - + meta.setDisplayName("§k NEW §r §4 Mining Potion §r §k NEW"); meta.addCustomEffect(new PotionEffect(PotionEffectType.SPEED, 4800, 9), true); meta.addCustomEffect(new PotionEffect(PotionEffectType.HASTE, 4800, 55), true); - + crazyPotion.setItemMeta(meta); - + NamespacedKey nmKey = new NamespacedKey(this, "crazypotion_craft"); ShapedRecipe recipe = new ShapedRecipe(nmKey, crazyPotion); - + recipe.shape("BBB", "WGW", "IEI"); - + recipe.setIngredient('B', Material.DIAMOND_BLOCK); recipe.setIngredient('G', Material.GLASS_BOTTLE); recipe.setIngredient('W', Material.WATER_BUCKET); recipe.setIngredient('E', Material.ENDER_PEARL); recipe.setIngredient('I', Material.IRON_INGOT); - + getServer().addRecipe(recipe); - + } - + private void createSandRecipe() { ItemStack sand = new ItemStack(Material.SAND, 4); - + ShapedRecipe recipe = new ShapedRecipe(new NamespacedKey(this, "sand_craft"), sand); recipe.shape("A"); recipe.setIngredient('A', Material.SANDSTONE); - + Bukkit.addRecipe(recipe); } - + private Menu hasMenuOpened(Player player) { Inventory inv = player.getOpenInventory().getTopInventory(); if (inv.getHolder() instanceof Menu invMenu) { @@ -598,7 +594,7 @@ private Menu hasMenuOpened(Player player) { } return null; } - + // TODO: include to Managers.java private FileConfiguration loadEventsManager() { File eventsFile = new File(getDataFolder(), "events.yml"); @@ -607,4 +603,4 @@ private FileConfiguration loadEventsManager() { } return YamlConfiguration.loadConfiguration(eventsFile); } -} +} \ No newline at end of file diff --git a/src/main/java/fr/communaywen/core/Managers.java b/src/main/java/fr/communaywen/core/Managers.java index 3e85a880..726aa454 100644 --- a/src/main/java/fr/communaywen/core/Managers.java +++ b/src/main/java/fr/communaywen/core/Managers.java @@ -7,22 +7,22 @@ import fr.communaywen.core.corpse.CorpseManager; import fr.communaywen.core.credit.Credit; import fr.communaywen.core.credit.FeatureManager; -import fr.communaywen.core.dreamdim.DimensionManager; import fr.communaywen.core.customitems.managers.CustomItemsManager; +import fr.communaywen.core.dreamdim.DimensionManager; import fr.communaywen.core.economy.EconomyManager; import fr.communaywen.core.friends.FriendsManager; -import fr.communaywen.core.guideline.advancements.dream.DreamTabManager; -import fr.communaywen.core.homes.world.DisabledWorldHome; import fr.communaywen.core.guideline.GuidelineManager; +import fr.communaywen.core.guideline.advancements.dream.DreamTabManager; import fr.communaywen.core.homes.HomeUpgradeManager; import fr.communaywen.core.homes.HomesManagers; +import fr.communaywen.core.homes.world.DisabledWorldHome; import fr.communaywen.core.levels.LevelsDataManager; import fr.communaywen.core.levels.LevelsManager; +import fr.communaywen.core.luckyblocks.managers.LBPlayerManager; +import fr.communaywen.core.luckyblocks.managers.LuckyBlockManager; import fr.communaywen.core.managers.LeaderboardManager; import fr.communaywen.core.personalhome.Home; import fr.communaywen.core.personalhome.HomeManager; -import fr.communaywen.core.luckyblocks.managers.LBPlayerManager; -import fr.communaywen.core.luckyblocks.managers.LuckyBlockManager; import fr.communaywen.core.scoreboard.ScoreboardManager; import fr.communaywen.core.settings.SettingsManager; import fr.communaywen.core.space.moon.MoonDimensionManager; @@ -46,7 +46,7 @@ @Credit("Xernas") @Getter public class Managers { - + private AywenCraftPlugin plugin; private JumpManager jumpManager; private HeadManager headManager; @@ -135,7 +135,7 @@ public void init(AywenCraftPlugin plugin) { guidelineManager = new GuidelineManager(plugin); contestCache = new ContestCache(plugin); contestManager = new ContestManager(plugin, contestCache); - this.teamManager = new TeamManager(plugin); + teamManager = new TeamManager(plugin); scoreboardManager = new ScoreboardManager(plugin); dreamdimManager = new DimensionManager(plugin); homeManager = new HomeManager(plugin); @@ -165,6 +165,7 @@ public void init(AywenCraftPlugin plugin) { homesManagers.loadHomes(); homesManagers.loadHomeLimits(); disabledWorldHome.loadConfig(); + settingsManager.init(); } public void cleanup() { @@ -181,6 +182,6 @@ public void cleanup() { corpseManager.removeAll(); teamManager.getTeamCache().saveAllTeamsToDatabase(); disabledWorldHome.saveConfig(); - + settingsManager.saveSettings(); } } diff --git a/src/main/java/fr/communaywen/core/adminshop/menu/buy/AdminShopBuy.java b/src/main/java/fr/communaywen/core/adminshop/menu/buy/AdminShopBuy.java index 0954a125..545efcd4 100644 --- a/src/main/java/fr/communaywen/core/adminshop/menu/buy/AdminShopBuy.java +++ b/src/main/java/fr/communaywen/core/adminshop/menu/buy/AdminShopBuy.java @@ -20,7 +20,7 @@ public class AdminShopBuy extends Menu { BaseItems items; private final AtomicInteger number; private final AtomicDouble prize; - private static final int MAX_ITEMS = 255; + private static final int MAX_ITEMS = 256; private String material = null; public AdminShopBuy(Player player, BaseItems items) { diff --git a/src/main/java/fr/communaywen/core/listeners/FreezeListener.java b/src/main/java/fr/communaywen/core/listeners/FreezeListener.java index 493f66bc..da76027d 100644 --- a/src/main/java/fr/communaywen/core/listeners/FreezeListener.java +++ b/src/main/java/fr/communaywen/core/listeners/FreezeListener.java @@ -1,21 +1,17 @@ package fr.communaywen.core.listeners; import fr.communaywen.core.AywenCraftPlugin; -import fr.communaywen.core.utils.FreezeUtils; import org.bukkit.BanList; import org.bukkit.Bukkit; -import org.bukkit.ChatColor; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityDamageEvent; -import org.bukkit.event.player.PlayerCommandSendEvent; import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerTeleportEvent; -import java.util.Collection; import java.util.Date; import java.util.UUID; import java.util.concurrent.TimeUnit; @@ -45,7 +41,7 @@ public void onPlayerQuit(PlayerQuitEvent event) { public void onPlayerMove(PlayerMoveEvent e) { Player player = e.getPlayer(); if (AywenCraftPlugin.frozenPlayers.contains(player)) { - e.setTo(e.getFrom()); + e.setCancelled(true); } } diff --git a/src/main/java/fr/communaywen/core/mailboxes/menu/letter/SendingLetter.java b/src/main/java/fr/communaywen/core/mailboxes/menu/letter/SendingLetter.java index b5de4139..eb0e4c95 100644 --- a/src/main/java/fr/communaywen/core/mailboxes/menu/letter/SendingLetter.java +++ b/src/main/java/fr/communaywen/core/mailboxes/menu/letter/SendingLetter.java @@ -1,139 +1,118 @@ package fr.communaywen.core.mailboxes.menu.letter; import fr.communaywen.core.AywenCraftPlugin; -import fr.communaywen.core.friends.FriendsManager; import fr.communaywen.core.mailboxes.MailboxManager; import fr.communaywen.core.mailboxes.utils.MailboxInv; import fr.communaywen.core.mailboxes.utils.MailboxMenuManager; -import fr.communaywen.core.teams.TeamManager; +import fr.communaywen.core.settings.SettingsCache; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -import java.sql.SQLException; import java.util.ArrayList; import java.util.List; -import java.util.Objects; import static fr.communaywen.core.mailboxes.utils.MailboxMenuManager.*; import static fr.communaywen.core.mailboxes.utils.MailboxUtils.getHead; import static fr.communaywen.core.mailboxes.utils.MailboxUtils.sendFailureMessage; public class SendingLetter extends MailboxInv { - private final static String INV_NAME = "\uF990\uE003"; - private final OfflinePlayer receiver; - private final AywenCraftPlugin plugin; - private final TeamManager teamManager; - private List playerFriends = new ArrayList<>(); - - int mail_accept; - - public SendingLetter(Player player, OfflinePlayer receiver, AywenCraftPlugin plugin) throws SQLException { - super(player); - this.receiver = receiver; - this.plugin = plugin; - this.teamManager = plugin.getManagers().getTeamManager(); - inventory = Bukkit.createInventory(this, 54, MailboxMenuManager.getInvTitle(INV_NAME)); - inventory.setItem(49, getHead(receiver)); - inventory.setItem(45, homeBtn()); - inventory.setItem(48, sendBtn()); - inventory.setItem(50, cancelBtn()); - - for (int i = 0; i < 9; i++) inventory.setItem(i, transparentItem()); - - FriendsManager friendsManager = new FriendsManager(plugin.getManagers().getDatabaseManager(), this.plugin); - friendsManager.getFriendsAsync(player.getName()).thenAccept(friends -> { - this.playerFriends = friends; - plugin.getLogger().info("Amis chargés pour " + player.getName()); - }).exceptionally(ex -> { - plugin.getLogger().severe("Erreur lors du chargement des amis : " + ex.getMessage()); - return null; - }); - - this.mail_accept = plugin.getManagers().getSettingsManager().findPlayerSettingsByUUID(Objects.requireNonNull(receiver.getPlayer())).mail_accept(); - } - - @Override - public void openInventory() { - player.openInventory(this.inventory); - } - - public ItemStack[] getItems() { - List itemsList = new ArrayList<>(27); - for (int slot = 9; slot < 36; slot++) { - ItemStack item = inventory.getItem(slot); - if (item != null && !item.getType().isAir()) itemsList.add(item); - } - return itemsList.toArray(new ItemStack[0]); - } - - public void sendLetter() { - ItemStack[] items = getItems(); - inventory.clear(); - player.closeInventory(); - if (items.length == 0) { - sendFailureMessage(player, "Vous ne pouvez pas envoyer de lettre vide"); - return; - } - - plugin.getLogger().info("Mail Accept: " + mail_accept); - - Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> { - switch (mail_accept) { - case 0: - Bukkit.getScheduler().runTask(plugin, () -> sendFailureMessage(player, "Ce joueur n'accepte pas les lettres")); - break; - - case 1: - if (!playerFriends.contains(receiver.getName())) { - Bukkit.getScheduler().runTask(plugin, () -> sendFailureMessage(player, "Ce joueur n'accepte pas les lettres")); - } else { - sendMailItems(player, receiver, items); - } - break; - - case 2: - String playerTeamName = teamManager.getTeamByPlayer(player.getUniqueId()).getName(); - String receiverTeamName = teamManager.getTeamByPlayer(receiver.getUniqueId()).getName(); - plugin.getLogger().info("Nom de l'équipe du joueur : " + playerTeamName); - plugin.getLogger().info("Nom de l'équipe du destinataire : " + receiverTeamName); - - if (!playerTeamName.equals(receiverTeamName)) { - Bukkit.getScheduler().runTask(plugin, () -> sendFailureMessage(player, "Ce joueur n'accepte pas les lettres")); - } else { - sendMailItems(player, receiver, items); - } - break; - - default: - sendMailItems(player, receiver, items); - break; - } - }); - } - - private void sendMailItems(Player player, OfflinePlayer receiver, ItemStack[] items) { - Bukkit.getScheduler().runTask(plugin, () -> { - if (!MailboxManager.sendItems(player, receiver, items)) { - MailboxManager.givePlayerItems(player, items); - } - }); - } - - public void giveItems() { - MailboxManager.givePlayerItems(player, getItems()); - } - - public boolean noSpace(ItemStack item) { - if (item == null || item.getType().isAir()) return false; - int size = item.getAmount(); - for (int slot = 9; slot < 36; slot++) { - ItemStack targetItem = inventory.getItem(slot); - if (targetItem == null || targetItem.getType().isAir()) return false; - if (targetItem.isSimilar(item)) size -= targetItem.getMaxStackSize() - targetItem.getAmount(); - if (size <= 0) return false; - } - return true; - } -} \ No newline at end of file + private final static String INV_NAME = "\uF990\uE003"; + private final OfflinePlayer receiver; + private final AywenCraftPlugin plugin; +// private final TeamManager teamManager; +// private final List playerFriends; -> Temporaire + + int mailAccept; + + public SendingLetter(Player player, OfflinePlayer receiver, AywenCraftPlugin plugin) { + super(player); + this.receiver = receiver; + this.plugin = plugin; +// this.teamManager = plugin.getManagers().getTeamManager(); +// FriendsManager friendsManager = plugin.getManagers().getFriendsManager(); +// playerFriends = (List) friendsManager.getFriendsAsync(player.getName()); + mailAccept = SettingsCache.settingsMap.get(receiver.getUniqueId().toString()).mailAccept(); + inventory = Bukkit.createInventory(this, 54, MailboxMenuManager.getInvTitle(INV_NAME)); + inventory.setItem(49, getHead(receiver)); + inventory.setItem(45, homeBtn()); + inventory.setItem(48, sendBtn()); + inventory.setItem(50, cancelBtn()); + + for (int i = 0; i < 9; i++) inventory.setItem(i, transparentItem()); + } + + @Override + public void openInventory() { + player.openInventory(inventory); + } + + public ItemStack[] getItems() { + List itemsList = new ArrayList<>(27); + for (int slot = 9; slot < 36; slot++) { + ItemStack item = inventory.getItem(slot); + if (item != null && ! item.getType().isAir()) itemsList.add(item); + } + return itemsList.toArray(new ItemStack[0]); + } + + public void sendLetter() { + ItemStack[] items = getItems(); + inventory.clear(); + player.closeInventory(); + if (items.length == 0) { + sendFailureMessage(player, "Vous ne pouvez pas envoyer de lettre vide"); + return; + } + plugin.getLogger().info("Mail Accept" + mailAccept); + switch (mailAccept) { + case 0: + sendFailureMessage(player, "Ce joueur n'accepte pas les lettres"); + for (ItemStack item : items) player.getWorld().dropItemNaturally(player.getLocation(), item); + break; + +// case 1: +// if (! playerFriends.contains(receiver.getName())) { +// sendFailureMessage(player, "Ce joueur n'accepte pas les lettres"); +// } else { +// if (! MailboxManager.sendItems(player, receiver, items)) { +// MailboxManager.givePlayerItems(player, items); +// } +// } +// break; + +// case 2: +// String playerTeamName = teamManager.getTeamByPlayer(player.getUniqueId()).getName(); +// String receiverTeamName = teamManager.getTeamByPlayer(receiver.getUniqueId()).getName(); +// if (! playerTeamName.equals(receiverTeamName)) { +// sendFailureMessage(player, "Ce joueur n'accepte pas les lettres"); +// } else { +// if (! MailboxManager.sendItems(player, receiver, items)) { +// MailboxManager.givePlayerItems(player, items); +// } +// } +// break; + + default: + if (! MailboxManager.sendItems(player, receiver, items)) MailboxManager.givePlayerItems(player, items); + break; + } + } + + public void giveItems() { + MailboxManager.givePlayerItems(player, getItems()); + } + + public boolean noSpace(ItemStack item) { + if (item == null || item.getType().isAir()) return false; + int size = item.getAmount(); + for (int slot = 9; slot < 36; slot++) { + ItemStack targetItem = inventory.getItem(slot); + if (targetItem == null || targetItem.getType().isAir()) return false; + if (targetItem.isSimilar(item)) size -= targetItem.getMaxStackSize() - targetItem.getAmount(); + if (size <= 0) return false; + } + return true; + } +} diff --git a/src/main/java/fr/communaywen/core/quests/QuestsListener.java b/src/main/java/fr/communaywen/core/quests/QuestsListener.java index 4e89fef5..ab4dd99e 100644 --- a/src/main/java/fr/communaywen/core/quests/QuestsListener.java +++ b/src/main/java/fr/communaywen/core/quests/QuestsListener.java @@ -130,7 +130,7 @@ public void onPlayerMove(PlayerMoveEvent event) { int blockZ = to.getBlockZ(); - if (blockX != from.getBlockX() || blockZ != from.getBlockZ()) + if ((blockX != from.getBlockX() || blockZ != from.getBlockZ()) && !AywenCraftPlugin.frozenPlayers.contains(player)) QuestsManager.manageQuestsPlayer(player.getUniqueId(), QUESTS.WALK_BLOCKS, 1, "Block(s) marché(s)"); // if (blockX == NINJA_JUMP_END.getBlockX() && blockY == NINJA_JUMP_END.getBlockY() && blockZ == NINJA_JUMP_END.getBlockZ()) diff --git a/src/main/java/fr/communaywen/core/settings/PlayerSettings.java b/src/main/java/fr/communaywen/core/settings/PlayerSettings.java index 063eec0e..df08153b 100644 --- a/src/main/java/fr/communaywen/core/settings/PlayerSettings.java +++ b/src/main/java/fr/communaywen/core/settings/PlayerSettings.java @@ -1,5 +1,3 @@ package fr.communaywen.core.settings; -public record PlayerSettings(String uuid, int mail_accept, int trade_accept, int tpa_accept) { - -} +public record PlayerSettings(String uuid, int mailAccept, int tradeAccept, int tpaAccept) {} \ No newline at end of file diff --git a/src/main/java/fr/communaywen/core/settings/SettingsCache.java b/src/main/java/fr/communaywen/core/settings/SettingsCache.java new file mode 100644 index 00000000..fb9ea40f --- /dev/null +++ b/src/main/java/fr/communaywen/core/settings/SettingsCache.java @@ -0,0 +1,10 @@ +package fr.communaywen.core.settings; + +import java.util.HashMap; +import java.util.Map; + +public class SettingsCache { + + public static Map settingsMap = new HashMap<>(); // UUID; PlayerSettings + +} \ No newline at end of file diff --git a/src/main/java/fr/communaywen/core/settings/SettingsListener.java b/src/main/java/fr/communaywen/core/settings/SettingsListener.java new file mode 100644 index 00000000..cbe24e14 --- /dev/null +++ b/src/main/java/fr/communaywen/core/settings/SettingsListener.java @@ -0,0 +1,31 @@ +package fr.communaywen.core.settings; + +import fr.communaywen.core.AywenCraftPlugin; +import fr.communaywen.core.utils.constant.MessageManager; +import fr.communaywen.core.utils.constant.MessageType; +import fr.communaywen.core.utils.constant.Prefix; +import org.bukkit.Bukkit; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +import java.sql.SQLException; + +public class SettingsListener implements Listener { + + AywenCraftPlugin plugin; + + public SettingsListener(AywenCraftPlugin plugin) { + this.plugin = plugin; + } + + @EventHandler + public void onJoin(PlayerJoinEvent e) { + String uuid = e.getPlayer().getUniqueId().toString(); + if (SettingsCache.settingsMap.get(uuid) == null) { + SettingsCache.settingsMap.put(uuid, new PlayerSettings(uuid, 3, 3, 3)); + MessageManager.sendMessageType(e.getPlayer(), "Settings créés", Prefix.SETTINGS, MessageType.INFO, false); + } + } +} \ No newline at end of file diff --git a/src/main/java/fr/communaywen/core/settings/SettingsManager.java b/src/main/java/fr/communaywen/core/settings/SettingsManager.java index 671cea90..876e0691 100644 --- a/src/main/java/fr/communaywen/core/settings/SettingsManager.java +++ b/src/main/java/fr/communaywen/core/settings/SettingsManager.java @@ -1,9 +1,7 @@ package fr.communaywen.core.settings; - import fr.communaywen.core.AywenCraftPlugin; import fr.communaywen.core.utils.database.DatabaseConnector; -import org.bukkit.entity.Player; import java.sql.PreparedStatement; import java.sql.ResultSet; @@ -17,46 +15,49 @@ public SettingsManager(AywenCraftPlugin plugin) { this.plugin = plugin; } - public PlayerSettings findPlayerSettingsByUUID(Player player) throws SQLException { - String sql = "SELECT * FROM settings WHERE player = ?"; - PreparedStatement statement = connection.prepareStatement(sql); - statement.setString(1, player.getUniqueId().toString()); - ResultSet results = statement.executeQuery(); - if (results.next()) { - int mail_accept = results.getInt("mail_accept"); - int trade_accept = results.getInt("trade_accept"); - int tpa_accept = results.getInt("tpa_accept"); - PlayerSettings playerSettings = new PlayerSettings(player.getUniqueId().toString(), mail_accept, trade_accept, tpa_accept); - statement.close(); - return playerSettings; + public void init() { + try { + String sql = "SELECT * FROM settings"; + PreparedStatement statement = connection.prepareStatement(sql); + ResultSet results = statement.executeQuery(); + while (results.next()) { + PlayerSettings playerSettings = new PlayerSettings( + results.getString("player"), + results.getInt("mail_accept"), + results.getInt("trade_accept"), + results.getInt("tpa_accept")); + SettingsCache.settingsMap.put(playerSettings.uuid(), playerSettings); + } + } catch (SQLException e) { + e.printStackTrace(); } - statement.close(); - return null; } - public void createPlayerSettings(PlayerSettings settings) throws SQLException { - - String sql = "INSERT INTO settings ( player, mail_accept, trade_accept, tpa_accept ) VALUES (?, ?, ?, ?)"; - PreparedStatement statement = connection.prepareStatement(sql); - statement.setString(1, settings.uuid()); - statement.setInt(2, settings.mail_accept()); - statement.setInt(3, settings.trade_accept()); - statement.setInt(4, settings.tpa_accept()); - - statement.executeUpdate(); - statement.close(); + public void saveSettings() { + try { + PreparedStatement clearAllStatement = plugin.getManagers().getDatabaseManager().getConnection().prepareStatement("DELETE FROM settings"); + clearAllStatement.executeUpdate(); + for (PlayerSettings settings : SettingsCache.settingsMap.values()) { + createPlayerSettings(settings); + } + } catch (SQLException e) { + e.printStackTrace(); + } } - public void updatePlayerSettings(PlayerSettings settings) throws SQLException { - - String sql = "UPDATE settings SET mail_accept = ?, trade_accept = ?, tpa_accept = ? WHERE player = ?"; - PreparedStatement statement = connection.prepareStatement(sql); - statement.setInt(1, settings.mail_accept()); - statement.setInt(2, settings.trade_accept()); - statement.setInt(3, settings.tpa_accept()); - statement.setString(4, settings.uuid()); - - statement.executeUpdate(); - statement.close(); + public void createPlayerSettings(PlayerSettings settings) { + try { + String sql = "INSERT INTO settings (player, mail_accept, trade_accept, tpa_accept) VALUES (?, ?, ?, ?)"; + PreparedStatement statement = connection.prepareStatement(sql); + statement.setString(1, settings.uuid()); + statement.setInt(2, settings.mailAccept()); + statement.setInt(3, settings.tradeAccept()); + statement.setInt(4, settings.tpaAccept()); + + statement.executeUpdate(); + statement.close(); + } catch (SQLException e) { + e.printStackTrace(); + } } -} +} \ No newline at end of file diff --git a/src/main/java/fr/communaywen/core/settings/SettingsMenu.java b/src/main/java/fr/communaywen/core/settings/SettingsMenu.java index 3d63c8b0..322db547 100644 --- a/src/main/java/fr/communaywen/core/settings/SettingsMenu.java +++ b/src/main/java/fr/communaywen/core/settings/SettingsMenu.java @@ -1,21 +1,23 @@ package fr.communaywen.core.settings; +import dev.lone.itemsadder.api.CustomStack; import dev.xernas.menulib.Menu; import dev.xernas.menulib.utils.InventorySize; import dev.xernas.menulib.utils.ItemBuilder; import fr.communaywen.core.AywenCraftPlugin; import fr.communaywen.core.settings.menus.MailboxManagerMenu; +import fr.communaywen.core.utils.constant.MessageManager; +import fr.communaywen.core.utils.constant.MessageType; +import fr.communaywen.core.utils.constant.Prefix; import lombok.Getter; import lombok.Setter; import me.clip.placeholderapi.PlaceholderAPI; import org.bukkit.ChatColor; -import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; -import java.sql.SQLException; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -28,16 +30,16 @@ public class SettingsMenu extends Menu { @Getter @Setter - private int mail_accept, trade_accept, tpa_accept; + private int mailAccept, tradeAccept, tpaAccept; - public SettingsMenu(AywenCraftPlugin plugin, Player owner, SettingsManager manager) throws SQLException { + public SettingsMenu(AywenCraftPlugin plugin, Player owner, SettingsManager manager) { super(owner); this.plugin = plugin; this.owner = owner; this.manager = manager; - this.mail_accept = manager.findPlayerSettingsByUUID(owner).mail_accept(); - this.trade_accept = manager.findPlayerSettingsByUUID(owner).trade_accept(); - this.tpa_accept = manager.findPlayerSettingsByUUID(owner).tpa_accept(); + mailAccept = SettingsCache.settingsMap.get(owner.getUniqueId().toString()).mailAccept(); + tradeAccept = SettingsCache.settingsMap.get(owner.getUniqueId().toString()).tradeAccept(); + tpaAccept = SettingsCache.settingsMap.get(owner.getUniqueId().toString()).tpaAccept(); } @Override @@ -59,30 +61,19 @@ public void onInventoryClick(InventoryClickEvent inventoryClickEvent) { public @NotNull Map getContent() { Map map = new HashMap<>(); - map.put(22, new ItemBuilder(this, Material.PAPER, itemMeta -> { + map.put(22, new ItemBuilder(this, CustomStack.getInstance("settings:mailbox_settings_btn").getItemStack(), itemMeta -> { itemMeta.setDisplayName(ChatColor.GOLD + "Mailbox"); - itemMeta.setCustomModelData(8000); - // itemMeta.setLore(List.of(SettingsUtils.getMailStatus(this.mail_accept))); + itemMeta.setLore(List.of(SettingsUtils.getMailStatus(mailAccept))); }).setNextMenu(new MailboxManagerMenu(owner, this))); - map.put(45, new ItemBuilder(this, Material.BARRIER, itemMeta -> { + map.put(45, new ItemBuilder(this, CustomStack.getInstance("settings:close_btn").getItemStack(), itemMeta -> { itemMeta.setDisplayName(ChatColor.DARK_RED + "Fermer"); - itemMeta.setCustomModelData(8100); }).setCloseButton()); - map.put(53, new ItemBuilder(this, Material.PAPER, itemMeta -> { + map.put(53, new ItemBuilder(this, CustomStack.getInstance("settings:save_btn").getItemStack(), itemMeta -> { itemMeta.setDisplayName(ChatColor.GREEN + "Sauvegarder"); - itemMeta.setCustomModelData(8001); }).setOnClick(inventoryClickEvent -> { - try { - if (plugin.getManagers().getSettingsManager().findPlayerSettingsByUUID(owner) == null) { - manager.createPlayerSettings(new PlayerSettings(owner.getUniqueId().toString(), mail_accept, trade_accept, tpa_accept)); - } else { - manager.updatePlayerSettings(new PlayerSettings(owner.getUniqueId().toString(), mail_accept, trade_accept, tpa_accept)); - } - } catch (SQLException e) { - e.printStackTrace(); - } + SettingsCache.settingsMap.replace(owner.getUniqueId().toString(), new PlayerSettings(owner.getUniqueId().toString(), mailAccept, tradeAccept, tpaAccept)); + MessageManager.sendMessageType(owner, "Settings enregistrés", Prefix.SETTINGS, MessageType.INFO, false); })); - return map; } -} +} \ No newline at end of file diff --git a/src/main/java/fr/communaywen/core/settings/SettingsUtils.java b/src/main/java/fr/communaywen/core/settings/SettingsUtils.java index 21fb0ef6..e96522dc 100644 --- a/src/main/java/fr/communaywen/core/settings/SettingsUtils.java +++ b/src/main/java/fr/communaywen/core/settings/SettingsUtils.java @@ -4,8 +4,8 @@ public class SettingsUtils { - public static String getMailStatus(int mail_accept) { - return switch (mail_accept) { + public static String getMailStatus(int mailAccept) { + return switch (mailAccept) { case 0 -> ChatColor.RED + "Personne"; case 1 -> ChatColor.GOLD + "Amis seulement"; case 2 -> ChatColor.YELLOW + "Team seulement"; diff --git a/src/main/java/fr/communaywen/core/settings/menus/MailboxManagerMenu.java b/src/main/java/fr/communaywen/core/settings/menus/MailboxManagerMenu.java index 9b4f8a72..f7df8bde 100644 --- a/src/main/java/fr/communaywen/core/settings/menus/MailboxManagerMenu.java +++ b/src/main/java/fr/communaywen/core/settings/menus/MailboxManagerMenu.java @@ -22,7 +22,7 @@ public class MailboxManagerMenu extends Menu { public MailboxManagerMenu(Player owner, SettingsMenu settingsMenu) { super(owner); - this.player = owner; + player = owner; this.settingsMenu = settingsMenu; } @@ -47,32 +47,32 @@ public void onInventoryClick(InventoryClickEvent inventoryClickEvent) { map.put(1, new ItemBuilder(this, Material.RED_WOOL, itemMeta -> { itemMeta.setDisplayName(ChatColor.DARK_RED + "Personne"); - itemMeta.setEnchantmentGlintOverride(settingsMenu.getMail_accept() == 0); + itemMeta.setEnchantmentGlintOverride(settingsMenu.getMailAccept() == 0); }).setOnClick(inventoryClickEvent -> { - settingsMenu.setMail_accept(0); + settingsMenu.setMailAccept(0); back(); })); // map.put(3, new ItemBuilder(this, Material.ORANGE_WOOL, itemMeta -> { // itemMeta.setDisplayName(ChatColor.GOLD + "Amis seulement"); -// itemMeta.setEnchantmentGlintOverride(settingsMenu.getMail_accept() == 1); +// itemMeta.setEnchantmentGlintOverride(settingsMenu.getMailAccept() == 1); // }).setOnClick(inventoryClickEvent -> { -// settingsMenu.setMail_accept(1); +// settingsMenu.setMailAccept(1); // back(); // })); // map.put(5, new ItemBuilder(this, Material.YELLOW_WOOL, itemMeta -> { // itemMeta.setDisplayName(ChatColor.YELLOW + "Team seulement"); -// itemMeta.setEnchantmentGlintOverride(settingsMenu.getMail_accept() == 2); +// itemMeta.setEnchantmentGlintOverride(settingsMenu.getMaiLAccept() == 2); // }).setOnClick(inventoryClickEvent -> { -// settingsMenu.setMail_accept(2); +// settingsMenu.setMailAccept(2); // back(); // })); map.put(7, new ItemBuilder(this, Material.GREEN_WOOL, itemMeta -> { itemMeta.setDisplayName(ChatColor.GREEN + "Tout le monde"); - itemMeta.setEnchantmentGlintOverride(settingsMenu.getMail_accept() == 3); + itemMeta.setEnchantmentGlintOverride(settingsMenu.getMailAccept() == 3); }).setOnClick(inventoryClickEvent -> { - settingsMenu.setMail_accept(3); + settingsMenu.setMailAccept(3); back(); })); return map; } -} +} \ No newline at end of file diff --git a/src/main/java/fr/communaywen/core/staff/players/PlayerDetailsMenu.java b/src/main/java/fr/communaywen/core/staff/players/PlayerDetailsMenu.java index 47ffec92..ec734473 100644 --- a/src/main/java/fr/communaywen/core/staff/players/PlayerDetailsMenu.java +++ b/src/main/java/fr/communaywen/core/staff/players/PlayerDetailsMenu.java @@ -1,5 +1,6 @@ package fr.communaywen.core.staff.players; +import dev.lone.itemsadder.api.CustomStack; import dev.xernas.menulib.Menu; import dev.xernas.menulib.utils.InventorySize; import dev.xernas.menulib.utils.ItemBuilder; @@ -21,109 +22,112 @@ import java.util.Map; public class PlayerDetailsMenu extends Menu { - private final Player target; - private final AywenCraftPlugin instance = AywenCraftPlugin.getInstance(); - private final TeamManager teamManager = new TeamManager(instance); - - public PlayerDetailsMenu(Player owner, Player target) { - super(owner); - this.target = target; - } - - @Override - public @NotNull String getName() { - return ChatColor.BLUE + "Détails"; - } - - @Override - public @NotNull InventorySize getInventorySize() { - return InventorySize.SMALLEST; - } - - @Override - public void onInventoryClick(InventoryClickEvent inventoryClickEvent) { - } - - @Override - public @NotNull Map getContent() { - Map map = new HashMap<>(); - map.put(0, new ItemBuilder(this, Material.PAPER, itemMeta -> { - itemMeta.setDisplayName(ChatColor.DARK_GREEN + "Retour"); - itemMeta.setCustomModelData(10005); - }).setBackButton()); - - map.put(1, new ItemBuilder(this, Material.COMPASS, itemMeta -> { - itemMeta.setDisplayName(ChatColor.DARK_GREEN + "Position/Cliquer pour se téléporter"); - itemMeta.setLore(List.of(ChatColor.BLUE + String.valueOf(target.getLocation().getBlockX()) + ", " + target.getLocation().getBlockY() + ", " + target.getLocation().getBlockZ())); - }).setOnClick(inventoryClickEvent -> { - if (!checkAuthorized()) return; - getOwner().teleport(target.getLocation()); - getOwner().sendMessage(ChatColor.DARK_GREEN + "Vous avez été téléporté au joueur " + ChatColor.BLUE + target.getDisplayName() + ChatColor.DARK_GREEN + " !"); - getOwner().closeInventory(); - })); - - map.put(2, new ItemBuilder(this, Material.APPLE, itemMeta -> { - itemMeta.setDisplayName(ChatColor.DARK_GREEN + "Vie"); - itemMeta.setLore(List.of(ChatColor.BLUE + String.valueOf(target.getHealth()))); - })); - - map.put(3, new ItemBuilder(this, Material.COOKED_BEEF, itemMeta -> { - itemMeta.setDisplayName(ChatColor.DARK_GREEN + "Faim"); - itemMeta.setLore(List.of(ChatColor.BLUE + String.valueOf(target.getFoodLevel()))); - })); - - map.put(4, new ItemBuilder(this, ItemUtils.getPlayerSkull(target.getUniqueId()), itemMeta -> { - itemMeta.setDisplayName(ChatColor.DARK_GREEN + target.getDisplayName()); - itemMeta.setLore(List.of(ChatColor.BLUE + "Team : " + teamManager.getTeamByPlayer(target.getUniqueId()).getName())); - })); - - map.put(5, new ItemBuilder(this, Material.EXPERIENCE_BOTTLE, itemMeta -> { - itemMeta.setDisplayName(ChatColor.DARK_GREEN + "Expérience"); - itemMeta.setLore(List.of(ChatColor.BLUE + "Niveau " + target.getLevel(), "Xp : " + target.getExp())); - })); - - map.put(6, new ItemBuilder(this, Material.ENDER_EYE, itemMeta -> { - itemMeta.setDisplayName(ChatColor.DARK_GREEN + "Voir l'inventaire"); - }).setOnClick(inventoryClickEvent -> { - if (!checkAuthorized() || !checkOnline()) return; - getOwner().openInventory(target.getInventory()); - })); - - map.put(7, new ItemBuilder(this, Material.PACKED_ICE, itemMeta -> { - itemMeta.setDisplayName(ChatColor.DARK_GREEN + "Geler le joueur"); - itemMeta.setLore(List.of(ChatColor.BLUE + "État : " + (AywenCraftPlugin.frozenPlayers.contains(target) ? "§4Freeze" : "§2Unfreeze"))); - }).setOnClick(inventoryClickEvent -> { - if (!checkAuthorized() || !checkOnline()) return; - FreezeUtils.switch_freeze(getOwner(), target); - getOwner().closeInventory(); - })); - - map.put(8, new ItemBuilder(this, Material.WOODEN_AXE, itemMeta -> { - itemMeta.setDisplayName(ChatColor.DARK_GREEN + "Bannir le joueur"); - }).setOnClick(inventoryClickEvent -> { - if (!checkAuthorized()) return; - String name = target.getName(); - Bukkit.getServer().getBanList(BanList.Type.NAME).addBan(name, "Aucune raison spécifiée", null, getOwner().getName()); - getOwner().sendMessage(ChatColor.BLUE + name + ChatColor.DARK_RED + " a bien été banni !"); - target.kickPlayer("Vous avez été banni pour aucune raison spécifiée"); - getOwner().closeInventory(); - })); - return map; - } - - public boolean checkOnline() { - if (target.isOnline()) return true; - - getOwner().sendMessage(ChatColor.RED + target.getName() + " n'est plus connecté"); - getOwner().closeInventory(); - return false; - } - - public boolean checkAuthorized() { - if (getOwner().hasPermission("openmc.staff.players")) return true; - - getOwner().sendMessage(ChatColor.RED + "Vous n'avez pas la permission de faire cela"); - getOwner().closeInventory(); - return false; - } + private final Player target; + private final AywenCraftPlugin instance = AywenCraftPlugin.getInstance(); + private final TeamManager teamManager = new TeamManager(instance); + + public PlayerDetailsMenu(Player owner, Player target) { + super(owner); + this.target = target; + } + + @Override + public @NotNull String getName() { + return ChatColor.BLUE + "Détails"; + } + + @Override + public @NotNull InventorySize getInventorySize() { + return InventorySize.SMALLEST; + } + + @Override + public void onInventoryClick(InventoryClickEvent inventoryClickEvent) { + } + + @Override + public @NotNull Map getContent() { + Map map = new HashMap<>(); + map.put(0, new ItemBuilder(this, CustomStack.getInstance("_iainternal:icon_back_orange") + .getItemStack(), itemMeta -> itemMeta.setDisplayName(ChatColor.DARK_GREEN + "Retour")).setBackButton()); + + map.put(1, new ItemBuilder(this, Material.COMPASS, itemMeta -> { + itemMeta.setDisplayName(ChatColor.DARK_GREEN + "Position/Cliquer pour se téléporter"); + itemMeta.setLore(List.of(ChatColor.BLUE + String.valueOf( + target.getLocation().getBlockX()) + + ", " + target.getLocation().getBlockY() + + ", " + target.getLocation().getBlockZ()) + ); + }).setOnClick(inventoryClickEvent -> { + if (! checkAuthorized()) return; + getOwner().teleport(target.getLocation()); + getOwner().sendMessage(ChatColor.DARK_GREEN + "Vous avez été téléporté au joueur " + ChatColor.BLUE + target.getDisplayName() + ChatColor.DARK_GREEN + " !"); + getOwner().closeInventory(); + })); + + map.put(2, new ItemBuilder(this, Material.APPLE, itemMeta -> { + itemMeta.setDisplayName(ChatColor.DARK_GREEN + "Vie"); + itemMeta.setLore(List.of(ChatColor.BLUE + String.valueOf(target.getHealth()))); + })); + + map.put(3, new ItemBuilder(this, Material.COOKED_BEEF, itemMeta -> { + itemMeta.setDisplayName(ChatColor.DARK_GREEN + "Faim"); + itemMeta.setLore(List.of(ChatColor.BLUE + String.valueOf(target.getFoodLevel()))); + })); + + map.put(4, new ItemBuilder(this, ItemUtils.getPlayerSkull(target.getUniqueId()), itemMeta -> { + itemMeta.setDisplayName(ChatColor.DARK_GREEN + target.getDisplayName()); + itemMeta.setLore(List.of(ChatColor.BLUE + "Team : " + (teamManager.getTeamByPlayer(target.getUniqueId()) == null ? + ChatColor.ITALIC + "Wilderness" : teamManager.getTeamByPlayer(target.getUniqueId()).getName()))); + })); + + map.put(5, new ItemBuilder(this, Material.EXPERIENCE_BOTTLE, itemMeta -> { + itemMeta.setDisplayName(ChatColor.DARK_GREEN + "Expérience"); + itemMeta.setLore(List.of(ChatColor.BLUE + "Niveau " + target.getLevel(), "Xp : " + target.getExp())); + })); + + map.put(6, new ItemBuilder(this, Material.ENDER_EYE, itemMeta -> { + itemMeta.setDisplayName(ChatColor.DARK_GREEN + "Voir l'inventaire"); + }).setOnClick(inventoryClickEvent -> { + if (! checkAuthorized() || ! checkOnline()) return; + getOwner().openInventory(target.getInventory()); + })); + + map.put(7, new ItemBuilder(this, Material.PACKED_ICE, itemMeta -> { + itemMeta.setDisplayName(ChatColor.DARK_GREEN + "Geler le joueur"); + itemMeta.setLore(List.of(ChatColor.BLUE + "État : " + (AywenCraftPlugin.frozenPlayers.contains(target) ? "§4Freeze" : "§2Unfreeze"))); + }).setOnClick(inventoryClickEvent -> { + if (! checkAuthorized() || ! checkOnline()) return; + FreezeUtils.switch_freeze(getOwner(), target); + getOwner().closeInventory(); + })); + + map.put(8, new ItemBuilder(this, Material.WOODEN_AXE, itemMeta -> { + itemMeta.setDisplayName(ChatColor.DARK_GREEN + "Bannir le joueur"); + }).setOnClick(inventoryClickEvent -> { + if (! checkAuthorized()) return; + String name = target.getName(); + Bukkit.getServer().getBanList(BanList.Type.NAME).addBan(name, "Aucune raison spécifiée", null, getOwner().getName()); + getOwner().sendMessage(ChatColor.BLUE + name + ChatColor.DARK_RED + " a bien été banni !"); + target.kickPlayer("Vous avez été banni pour aucune raison spécifiée"); + getOwner().closeInventory(); + })); + return map; + } + + public boolean checkOnline() { + if (target.isOnline()) return true; + + getOwner().sendMessage(ChatColor.RED + target.getName() + " n'est plus connecté"); + getOwner().closeInventory(); + return false; + } + + public boolean checkAuthorized() { + if (getOwner().hasPermission("openmc.staff.players")) return true; + + getOwner().sendMessage(ChatColor.RED + "Vous n'avez pas la permission de faire cela"); + getOwner().closeInventory(); + return false; + } } \ No newline at end of file diff --git a/src/main/java/fr/communaywen/core/staff/players/PlayersMenu.java b/src/main/java/fr/communaywen/core/staff/players/PlayersMenu.java index 9ca4b834..9ab2a531 100644 --- a/src/main/java/fr/communaywen/core/staff/players/PlayersMenu.java +++ b/src/main/java/fr/communaywen/core/staff/players/PlayersMenu.java @@ -1,5 +1,6 @@ package fr.communaywen.core.staff.players; +import dev.lone.itemsadder.api.CustomStack; import dev.xernas.menulib.PaginatedMenu; import dev.xernas.menulib.utils.ItemBuilder; import dev.xernas.menulib.utils.ItemUtils; @@ -20,64 +21,60 @@ import java.util.Map; public class PlayersMenu extends PaginatedMenu { - private final AywenCraftPlugin instance = new AywenCraftPlugin(); - private final TeamManager teamManager = new TeamManager(instance); - public PlayersMenu(Player owner) { - super(owner); - } - - @Override - public @Nullable Material getBorderMaterial() { - return Material.LIGHT_GRAY_STAINED_GLASS_PANE; - } - - @Override - public @NotNull List getStaticSlots() { - return StaticSlots.BOTTOM; - } - - @Override - public @NotNull List getItems() { - ArrayList players = new ArrayList<>(this.getOwner().getServer().getOnlinePlayers()); - - List items = new ArrayList<>(); - for (Player player : players) { - items.add(new ItemBuilder(this, ItemUtils.getPlayerSkull(player.getUniqueId()), itemMeta -> { - itemMeta.setDisplayName(ChatColor.WHITE + player.getName()); - itemMeta.setLore(List.of( - ChatColor.GOLD + "Vie : " + ChatColor.RED + player.getHealth(), - ChatColor.GOLD + "XP : " + ChatColor.AQUA + player.getExp(), - ChatColor.BLUE + "Team : " + teamManager.getTeamByPlayer(player.getUniqueId()).getName() - )); - }).setNextMenu(new PlayerDetailsMenu(this.getOwner(), player))); - } - return items; - } - - @Override - public Map getButtons() { - Map map = new HashMap<>(); - map.put(49, new ItemBuilder(this, Material.PAPER, itemMeta -> { - itemMeta.setDisplayName(ChatColor.GRAY + "Fermer"); - itemMeta.setCustomModelData(10003); - }).setCloseButton()); - map.put(48, new ItemBuilder(this, Material.PAPER, itemMeta -> { - itemMeta.setDisplayName(ChatColor.RED + "Page précédente"); - itemMeta.setCustomModelData(10005); - }).setPreviousPageButton()); - map.put(50, new ItemBuilder(this, Material.PAPER, itemMeta -> { - itemMeta.setDisplayName(ChatColor.GREEN + "Page suivante"); - itemMeta.setCustomModelData(10006); - }).setNextPageButton()); - return map; - } - - @Override - public @NotNull String getName() { - return ChatColor.BLUE + "Liste des joueurs"; - } - - @Override - public void onInventoryClick(InventoryClickEvent inventoryClickEvent) { - } + private final AywenCraftPlugin instance = AywenCraftPlugin.getInstance(); + private final TeamManager teamManager = new TeamManager(instance); + + public PlayersMenu(Player owner) { + super(owner); + } + + @Override + public @Nullable Material getBorderMaterial() { + return Material.LIGHT_GRAY_STAINED_GLASS_PANE; + } + + @Override + public @NotNull List getStaticSlots() { + return StaticSlots.BOTTOM; + } + + @Override + public @NotNull List getItems() { + ArrayList players = new ArrayList<>(this.getOwner().getServer().getOnlinePlayers()); + + List items = new ArrayList<>(); + for (Player player : players) { + items.add(new ItemBuilder(this, ItemUtils.getPlayerSkull(player.getUniqueId()), itemMeta -> { + itemMeta.setDisplayName(ChatColor.WHITE + player.getName()); + itemMeta.setLore(List.of( + ChatColor.GOLD + "Vie : " + ChatColor.RED + player.getHealth(), + ChatColor.GOLD + "XP : " + ChatColor.AQUA + player.getExp(), + ChatColor.BLUE + "Team : " + (teamManager.getTeamByPlayer(player.getUniqueId()) == null ? + ChatColor.ITALIC + "Wilderness" : teamManager.getTeamByPlayer(player.getUniqueId()).getName()) + )); + }).setNextMenu(new PlayerDetailsMenu(this.getOwner(), player))); + } + return items; + } + + @Override + public Map getButtons() { + Map map = new HashMap<>(); + map.put(49, new ItemBuilder(this, CustomStack.getInstance("_iainternal:icon_cancel") + .getItemStack(), itemMeta -> itemMeta.setDisplayName(ChatColor.GRAY + "Fermer")).setCloseButton()); + map.put(48, new ItemBuilder(this, CustomStack.getInstance("_iainternal:icon_back_orange") + .getItemStack(), itemMeta -> itemMeta.setDisplayName(ChatColor.RED + "Page précédente")).setPreviousPageButton()); + map.put(50, new ItemBuilder(this, CustomStack.getInstance("_iainternal:icon_next_orange") + .getItemStack(), itemMeta -> itemMeta.setDisplayName(ChatColor.GREEN + "Page suivante")).setNextPageButton()); + return map; + } + + @Override + public @NotNull String getName() { + return ChatColor.BLUE + "Liste des joueurs"; + } + + @Override + public void onInventoryClick(InventoryClickEvent inventoryClickEvent) { + } } diff --git a/src/main/java/fr/communaywen/core/utils/FriendsUtils.java b/src/main/java/fr/communaywen/core/utils/FriendsUtils.java index 840fcf10..3790d0eb 100644 --- a/src/main/java/fr/communaywen/core/utils/FriendsUtils.java +++ b/src/main/java/fr/communaywen/core/utils/FriendsUtils.java @@ -1,8 +1,6 @@ package fr.communaywen.core.utils; -import fr.communaywen.core.AywenCraftPlugin; import fr.communaywen.core.utils.database.DatabaseManager; -import org.bukkit.Bukkit; import java.sql.*; import java.util.ArrayList; @@ -10,113 +8,112 @@ import java.util.concurrent.CompletableFuture; public class FriendsUtils { - - private static final String TABLE_NAME = "friends"; - - public static boolean addInDatabase(DatabaseManager dbManager, String firstUUID, String secondUUID) throws SQLException { - try { - Connection connection = dbManager.getConnection(); - - PreparedStatement statement = connection.prepareStatement("INSERT INTO " + TABLE_NAME + " (firstPlayer_uuid, secondPlayer_uuid, friendDate) VALUES (?, ?, ?)"); - - statement.setString(1, firstUUID); - statement.setString(2, secondUUID); - statement.setTimestamp(3, new Timestamp(System.currentTimeMillis())); - - statement.executeUpdate(); - - return true; - } catch (Exception e) { - System.out.println(e.toString()); - return false; - } - } - - public static boolean removeInDatabase(DatabaseManager dbManager, String firstUUID, String secondUUID) throws SQLException { - try { - Connection connection = dbManager.getConnection(); - - PreparedStatement statement = connection.prepareStatement("DELETE FROM " + TABLE_NAME + " WHERE firstPlayer_uuid = ? AND secondPlayer_uuid = ?"); - - statement.setString(1, firstUUID); - statement.setString(2, secondUUID); - - statement.executeUpdate(); - - return true; - } catch (Exception e) { - System.out.println(e.toString()); - return false; - } - } - - public static boolean areFriends(DatabaseManager dbManager, String firstUUID, String secondUUID) throws SQLException { - try { - Connection connection = dbManager.getConnection(); - - PreparedStatement statement = connection.prepareStatement("SELECT * FROM " + TABLE_NAME + " WHERE (firstPlayer_uuid = ? AND secondPlayer_uuid = ?) OR (firstPlayer_uuid = ? AND secondPlayer_uuid = ?)"); - - statement.setString(1, firstUUID); - statement.setString(2, secondUUID); - statement.setString(3, secondUUID); - statement.setString(4, firstUUID); - - ResultSet resultSet = statement.executeQuery(); - - return resultSet.next(); - } catch (Exception e) { - System.out.println(e.toString()); - return false; - } - } - - public static Timestamp getTimestamp(DatabaseManager dbManager, String firstUUID, String secondUUID) throws SQLException { - try { - Connection connection = dbManager.getConnection(); - - PreparedStatement statement = connection.prepareStatement("SELECT friendDate FROM " + TABLE_NAME + " WHERE (firstPlayer_uuid = ? AND secondPlayer_uuid = ?) OR (firstPlayer_uuid = ? AND secondPlayer_uuid = ?)"); - - statement.setString(1, firstUUID); - statement.setString(2, secondUUID); - statement.setString(3, secondUUID); - statement.setString(4, firstUUID); - - ResultSet resultSet = statement.executeQuery(); - if (resultSet.next()) { - return resultSet.getTimestamp("friendDate"); - } - - } catch (Exception e) { - System.out.println(e.toString()); - } - - return null; - } - - public static CompletableFuture> getAllFriendsAsync(DatabaseManager dbManager, String uuid) { - return CompletableFuture.supplyAsync(() -> { - List friends = new ArrayList<>(); - - try { - Connection connection = dbManager.getConnection(); - - String sql = "SELECT * FROM " + TABLE_NAME + " WHERE firstPlayer_uuid = ? OR secondPlayer_uuid = ?"; - PreparedStatement statement = connection.prepareStatement(sql); - statement.setString(1, uuid); - statement.setString(2, uuid); - - ResultSet resultSet = statement.executeQuery(); - while (resultSet.next()) { - String friendUUID = resultSet.getString("firstPlayer_uuid").equals(uuid) ? resultSet.getString("secondPlayer_uuid") : resultSet.getString("firstPlayer_uuid"); - friends.add(friendUUID); - } - - } catch (SQLException e) { - System.out.println(e.getMessage()); - } - - return friends; - }); - } - + + private static final String TABLE_NAME = "friends"; + + public static boolean addInDatabase(DatabaseManager dbManager, String firstUUID, String secondUUID) { + try { + Connection connection = dbManager.getConnection(); + + PreparedStatement statement = connection.prepareStatement("INSERT INTO " + TABLE_NAME + " (firstPlayer_uuid, secondPlayer_uuid, friendDate) VALUES (?, ?, ?)"); + + statement.setString(1, firstUUID); + statement.setString(2, secondUUID); + statement.setTimestamp(3, new Timestamp(System.currentTimeMillis())); + + statement.executeUpdate(); + + return true; + } catch (Exception e) { + System.out.println(e.toString()); + return false; + } + } + + public static boolean removeInDatabase(DatabaseManager dbManager, String firstUUID, String secondUUID) { + try { + Connection connection = dbManager.getConnection(); + + PreparedStatement statement = connection.prepareStatement("DELETE FROM " + TABLE_NAME + " WHERE firstPlayer_uuid = ? AND secondPlayer_uuid = ?"); + + statement.setString(1, firstUUID); + statement.setString(2, secondUUID); + + statement.executeUpdate(); + + return true; + } catch (Exception e) { + System.out.println(e.toString()); + return false; + } + } + + public static boolean areFriends(DatabaseManager dbManager, String firstUUID, String secondUUID) { + try { + Connection connection = dbManager.getConnection(); + + PreparedStatement statement = connection.prepareStatement("SELECT * FROM " + TABLE_NAME + " WHERE (firstPlayer_uuid = ? AND secondPlayer_uuid = ?) OR (firstPlayer_uuid = ? AND secondPlayer_uuid = ?)"); + + statement.setString(1, firstUUID); + statement.setString(2, secondUUID); + statement.setString(3, secondUUID); + statement.setString(4, firstUUID); + + ResultSet resultSet = statement.executeQuery(); + + return resultSet.next(); + } catch (Exception e) { + System.out.println(e.toString()); + return false; + } + } + + public static Timestamp getTimestamp(DatabaseManager dbManager, String firstUUID, String secondUUID) { + try { + Connection connection = dbManager.getConnection(); + + PreparedStatement statement = connection.prepareStatement("SELECT friendDate FROM " + TABLE_NAME + " WHERE (firstPlayer_uuid = ? AND secondPlayer_uuid = ?) OR (firstPlayer_uuid = ? AND secondPlayer_uuid = ?)"); + + statement.setString(1, firstUUID); + statement.setString(2, secondUUID); + statement.setString(3, secondUUID); + statement.setString(4, firstUUID); + + ResultSet resultSet = statement.executeQuery(); + if (resultSet.next()) { + return resultSet.getTimestamp("friendDate"); + } + + } catch (Exception e) { + System.out.println(e.toString()); + } + + return null; + } + + public static CompletableFuture> getAllFriendsAsync(DatabaseManager dbManager, String uuid) { + return CompletableFuture.supplyAsync(() -> { + List friends = new ArrayList<>(); + + try { + Connection connection = dbManager.getConnection(); + + String sql = "SELECT * FROM " + TABLE_NAME + " WHERE firstPlayer_uuid = ? OR secondPlayer_uuid = ?"; + PreparedStatement statement = connection.prepareStatement(sql); + statement.setString(1, uuid); + statement.setString(2, uuid); + + ResultSet resultSet = statement.executeQuery(); + while (resultSet.next()) { + String friendUUID = resultSet.getString("firstPlayer_uuid").equals(uuid) ? resultSet.getString("secondPlayer_uuid") : resultSet.getString("firstPlayer_uuid"); + friends.add(friendUUID); + } + + } catch (SQLException e) { + System.out.println(e.getMessage()); + } + + return friends; + }); + } } diff --git a/src/main/java/fr/communaywen/core/utils/command/InteractiveHelpMenu.java b/src/main/java/fr/communaywen/core/utils/command/InteractiveHelpMenu.java index d5b8a604..9b9db723 100644 --- a/src/main/java/fr/communaywen/core/utils/command/InteractiveHelpMenu.java +++ b/src/main/java/fr/communaywen/core/utils/command/InteractiveHelpMenu.java @@ -39,7 +39,7 @@ * } * *
  • Create the commands that you would like to display the help menu in. Send the help - * menu using {@link InteractiveHelpMenu#sendInteractiveMenu(Audience, CommandHelp, int, ExecutableCommand)}. + * menu using @link InteractiveHelpMenu#sendInteractiveMenu(Audience, CommandHelp, int, ExecutableCommand). * All the parameters should be parameters in the help method, and Lamp will resolve them automatically * to the appropriate values. *
    {@code
    @@ -74,7 +74,7 @@
      *     
  • /foo bar help: Lists all commands in /foo bar
  • *
  • /foo buzz bar help: Lists all commands in /foo buzz bar
  • * - * This is why {@link #sendInteractiveMenu(Audience, CommandHelp, int, ExecutableCommand)} requires + * This is why @link #sendInteractiveMenu(Audience, CommandHelp, int, ExecutableCommand) requires * an {@link ExecutableCommand}, as it uses it to resolve sibling commands that should be * listed in the help menu. */ diff --git a/src/main/java/fr/communaywen/core/utils/constant/Prefix.java b/src/main/java/fr/communaywen/core/utils/constant/Prefix.java index 9ec3b75b..6317eb2c 100644 --- a/src/main/java/fr/communaywen/core/utils/constant/Prefix.java +++ b/src/main/java/fr/communaywen/core/utils/constant/Prefix.java @@ -15,6 +15,8 @@ public enum Prefix { // Font: https://lingojam.com/MinecraftSmallFont // For gradient color: https://www.birdflop.com/resources/rgb/ // Color format: §x§r§r§g§g§b§b§l + + SETTINGS("§x§c§1§1§9§e§e§lѕ§x§c§1§1§9§e§e§lᴇ§x§c§1§1§9§e§e§lᴛ§x§c§1§1§9§e§e§lᴛ§x§c§1§1§9§e§e§lɪ§x§c§1§1§9§e§e§lɴ§x§c§1§1§9§e§e§lɢ§x§c§1§1§9§e§e§lѕ"), OPENMC("§x§F§F§4§5§7§3§l@§x§F§F§4§D§7§9§lᴏ§x§F§F§5§5§7§F§lᴘ§x§F§F§5§D§8§5§lᴇ§x§F§F§6§4§8§B§lɴ§x§F§F§6§C§9§1§lᴍ§x§F§F§7§4§9§7§lᴄ"), FREEZE("§x§1§9§5§0§E§E§l@§x§1§9§5§0§E§E§lꜰ§x§1§9§5§0§E§E§lʀ§x§1§9§5§0§E§E§lᴇ§x§1§9§5§0§E§E§lᴇ§x§1§9§5§0§E§E§lᴢ§x§1§9§5§0§E§E§lᴇ"),