Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Patch du bug du /settings et mailbox + cache #457

Merged
merged 38 commits into from
Nov 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
75050ce
Patch du bug du /settings
gab4000 Oct 10, 2024
df2ea2c
Création d'un cache pour le /settings
gab4000 Oct 12, 2024
4e4def7
Modification du cache /settings
gab4000 Oct 12, 2024
80b2be7
Merge branch 'ServerOpenMC:main' into main
gab4000 Oct 13, 2024
19382bf
Modification du cache /settings : taches effectuées sur un autre thread
gab4000 Oct 13, 2024
836573f
Merge branch 'main' into main
gab4000 Oct 16, 2024
dd85c74
Recupération des settings lors du lancement du serveur
gab4000 Oct 16, 2024
d78320a
Merge remote-tracking branch 'origin/main'
gab4000 Oct 16, 2024
0bc8da4
Merge branch 'main' into main
gab4000 Oct 17, 2024
e7581b5
Modification de la mailbox (appel db)
gab4000 Oct 18, 2024
562a40b
Merge remote-tracking branch 'origin/main'
gab4000 Oct 18, 2024
31e4b07
Merge branch 'main' into main
gab4000 Oct 18, 2024
bbaac52
Modification de la mailbox pour le /settings #2
gab4000 Oct 18, 2024
c61d4f5
Merge remote-tracking branch 'origin/main'
gab4000 Oct 18, 2024
a408f60
Retour (mauvaise modif)
gab4000 Oct 18, 2024
d0308b0
Retour (mauvaise modif)
gab4000 Oct 18, 2024
7d2c032
Modif de SendingLetter
gab4000 Oct 19, 2024
7712207
Modification du max achetable a l'adminshop (demande de couggette2mer)
gab4000 Oct 19, 2024
59159e0
/settings fonctionnel + Réparation du /players et /freeze
gab4000 Oct 21, 2024
e0abd20
Changement de la version de ProtocolLib (SNAPSHOT -> 5.3.0)
gab4000 Oct 21, 2024
0b471d2
Réparation mailbox
gab4000 Oct 21, 2024
e189ece
Merge branch 'main' into main
gab4000 Oct 22, 2024
9726a1c
Résolution erreurs
gab4000 Oct 22, 2024
90cce73
Merge remote-tracking branch 'origin/main'
gab4000 Oct 22, 2024
e14d149
Résolution erreurs #2
gab4000 Oct 22, 2024
4ffa66c
Résolution erreurs #3
gab4000 Oct 22, 2024
75c20c9
Résolution erreurs #4
gab4000 Oct 22, 2024
57adad1
Opti SettingsListener + changement adminshop (256 items max)
gab4000 Oct 23, 2024
51da5a2
Load nd Save settings
gab4000 Oct 24, 2024
97e0e51
Merge branch 'main' into main
gab4000 Oct 25, 2024
6ace335
rename variables
gab4000 Nov 3, 2024
191c0ce
Merge remote-tracking branch 'origin/main'
gab4000 Nov 3, 2024
089c63f
remove condition in QuestsListener
gab4000 Nov 3, 2024
5d5130d
Merge branch 'ServerOpenMC:main' into main
gab4000 Nov 3, 2024
2548d8e
Merge branch 'main' into main
gab4000 Nov 14, 2024
d660616
Merge branch 'main' into main
gab4000 Nov 16, 2024
42b9853
resolve ProtocolLib confict
gab4000 Nov 16, 2024
b2eb54c
Merge remote-tracking branch 'origin/main'
gab4000 Nov 16, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
150 changes: 73 additions & 77 deletions src/main/java/fr/communaywen/core/AywenCraftPlugin.java

Large diffs are not rendered by default.

17 changes: 9 additions & 8 deletions src/main/java/fr/communaywen/core/Managers.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -46,7 +46,7 @@
@Credit("Xernas")
@Getter
public class Managers {

private AywenCraftPlugin plugin;
private JumpManager jumpManager;
private HeadManager headManager;
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -165,6 +165,7 @@ public void init(AywenCraftPlugin plugin) {
homesManagers.loadHomes();
homesManagers.loadHomeLimits();
disabledWorldHome.loadConfig();
settingsManager.init();
}

public void cleanup() {
Expand All @@ -181,6 +182,6 @@ public void cleanup() {
corpseManager.removeAll();
teamManager.getTeamCache().saveAllTeamsToDatabase();
disabledWorldHome.saveConfig();

settingsManager.saveSettings();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -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);
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -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<String> 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<ItemStack> 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;
}
}
private final static String INV_NAME = "\uF990\uE003";
private final OfflinePlayer receiver;
private final AywenCraftPlugin plugin;
// private final TeamManager teamManager;
// private final List<String> 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();
AxenoDev marked this conversation as resolved.
Show resolved Hide resolved
// playerFriends = (List<String>) 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<ItemStack> 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;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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))
gab4000 marked this conversation as resolved.
Show resolved Hide resolved
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())
Expand Down
Original file line number Diff line number Diff line change
@@ -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) {}
10 changes: 10 additions & 0 deletions src/main/java/fr/communaywen/core/settings/SettingsCache.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package fr.communaywen.core.settings;

import java.util.HashMap;
import java.util.Map;

public class SettingsCache {

public static Map<String, PlayerSettings> settingsMap = new HashMap<>(); // UUID; PlayerSettings

}
Loading
Loading