Skip to content
This repository was archived by the owner on Oct 12, 2025. It is now read-only.

Commit 77034f7

Browse files
authored
Patch du bug du /settings et mailbox + cache (#457)
*Avez vous lu le [Code de Conduite](https://github.com/Margouta/PluginOpenMC/blob/main/CODE_OF_CONDUCT.md)?*: oui *Votre code se compile t-il en local ?*: oui *Avez-vous supprimez les imports inutilisés ?*: oui ## Décrivez vos changements *Clairement et avec des screenshots si nécessaires* - Ecriture des paramètres automatique lors de la connexion pour ne pas retourner _null_ lors de l'ouverture des paramètres - Ajout d'un cache pour éviter les requêtes SQL permanentes - Réparation du /players - Réparation de la mailbox - Nouveau namespace pour le /settings : ### **Pensez à retirer le namespace *omc_settings*, s'il existe et de mettre celui là** [settings.zip](https://github.com/user-attachments/files/17487001/settings.zip)
2 parents 96b099c + b2eb54c commit 77034f7

File tree

18 files changed

+572
-569
lines changed

18 files changed

+572
-569
lines changed

src/main/java/fr/communaywen/core/AywenCraftPlugin.java

Lines changed: 73 additions & 77 deletions
Large diffs are not rendered by default.

src/main/java/fr/communaywen/core/Managers.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,22 @@
77
import fr.communaywen.core.corpse.CorpseManager;
88
import fr.communaywen.core.credit.Credit;
99
import fr.communaywen.core.credit.FeatureManager;
10-
import fr.communaywen.core.dreamdim.DimensionManager;
1110
import fr.communaywen.core.customitems.managers.CustomItemsManager;
11+
import fr.communaywen.core.dreamdim.DimensionManager;
1212
import fr.communaywen.core.economy.EconomyManager;
1313
import fr.communaywen.core.friends.FriendsManager;
14-
import fr.communaywen.core.guideline.advancements.dream.DreamTabManager;
15-
import fr.communaywen.core.homes.world.DisabledWorldHome;
1614
import fr.communaywen.core.guideline.GuidelineManager;
15+
import fr.communaywen.core.guideline.advancements.dream.DreamTabManager;
1716
import fr.communaywen.core.homes.HomeUpgradeManager;
1817
import fr.communaywen.core.homes.HomesManagers;
18+
import fr.communaywen.core.homes.world.DisabledWorldHome;
1919
import fr.communaywen.core.levels.LevelsDataManager;
2020
import fr.communaywen.core.levels.LevelsManager;
21+
import fr.communaywen.core.luckyblocks.managers.LBPlayerManager;
22+
import fr.communaywen.core.luckyblocks.managers.LuckyBlockManager;
2123
import fr.communaywen.core.managers.LeaderboardManager;
2224
import fr.communaywen.core.personalhome.Home;
2325
import fr.communaywen.core.personalhome.HomeManager;
24-
import fr.communaywen.core.luckyblocks.managers.LBPlayerManager;
25-
import fr.communaywen.core.luckyblocks.managers.LuckyBlockManager;
2626
import fr.communaywen.core.scoreboard.ScoreboardManager;
2727
import fr.communaywen.core.settings.SettingsManager;
2828
import fr.communaywen.core.space.moon.MoonDimensionManager;
@@ -46,7 +46,7 @@
4646
@Credit("Xernas")
4747
@Getter
4848
public class Managers {
49-
49+
5050
private AywenCraftPlugin plugin;
5151
private JumpManager jumpManager;
5252
private HeadManager headManager;
@@ -135,7 +135,7 @@ public void init(AywenCraftPlugin plugin) {
135135
guidelineManager = new GuidelineManager(plugin);
136136
contestCache = new ContestCache(plugin);
137137
contestManager = new ContestManager(plugin, contestCache);
138-
this.teamManager = new TeamManager(plugin);
138+
teamManager = new TeamManager(plugin);
139139
scoreboardManager = new ScoreboardManager(plugin);
140140
dreamdimManager = new DimensionManager(plugin);
141141
homeManager = new HomeManager(plugin);
@@ -165,6 +165,7 @@ public void init(AywenCraftPlugin plugin) {
165165
homesManagers.loadHomes();
166166
homesManagers.loadHomeLimits();
167167
disabledWorldHome.loadConfig();
168+
settingsManager.init();
168169
}
169170

170171
public void cleanup() {
@@ -181,6 +182,6 @@ public void cleanup() {
181182
corpseManager.removeAll();
182183
teamManager.getTeamCache().saveAllTeamsToDatabase();
183184
disabledWorldHome.saveConfig();
184-
185+
settingsManager.saveSettings();
185186
}
186187
}

src/main/java/fr/communaywen/core/adminshop/menu/buy/AdminShopBuy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public class AdminShopBuy extends Menu {
2020
BaseItems items;
2121
private final AtomicInteger number;
2222
private final AtomicDouble prize;
23-
private static final int MAX_ITEMS = 255;
23+
private static final int MAX_ITEMS = 256;
2424
private String material = null;
2525

2626
public AdminShopBuy(Player player, BaseItems items) {

src/main/java/fr/communaywen/core/listeners/FreezeListener.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,17 @@
11
package fr.communaywen.core.listeners;
22

33
import fr.communaywen.core.AywenCraftPlugin;
4-
import fr.communaywen.core.utils.FreezeUtils;
54
import org.bukkit.BanList;
65
import org.bukkit.Bukkit;
7-
import org.bukkit.ChatColor;
86
import org.bukkit.entity.Entity;
97
import org.bukkit.entity.Player;
108
import org.bukkit.event.EventHandler;
119
import org.bukkit.event.Listener;
1210
import org.bukkit.event.entity.EntityDamageEvent;
13-
import org.bukkit.event.player.PlayerCommandSendEvent;
1411
import org.bukkit.event.player.PlayerMoveEvent;
1512
import org.bukkit.event.player.PlayerQuitEvent;
1613
import org.bukkit.event.player.PlayerTeleportEvent;
1714

18-
import java.util.Collection;
1915
import java.util.Date;
2016
import java.util.UUID;
2117
import java.util.concurrent.TimeUnit;
@@ -45,7 +41,7 @@ public void onPlayerQuit(PlayerQuitEvent event) {
4541
public void onPlayerMove(PlayerMoveEvent e) {
4642
Player player = e.getPlayer();
4743
if (AywenCraftPlugin.frozenPlayers.contains(player)) {
48-
e.setTo(e.getFrom());
44+
e.setCancelled(true);
4945
}
5046
}
5147

Lines changed: 99 additions & 120 deletions
Original file line numberDiff line numberDiff line change
@@ -1,139 +1,118 @@
11
package fr.communaywen.core.mailboxes.menu.letter;
22

33
import fr.communaywen.core.AywenCraftPlugin;
4-
import fr.communaywen.core.friends.FriendsManager;
54
import fr.communaywen.core.mailboxes.MailboxManager;
65
import fr.communaywen.core.mailboxes.utils.MailboxInv;
76
import fr.communaywen.core.mailboxes.utils.MailboxMenuManager;
8-
import fr.communaywen.core.teams.TeamManager;
7+
import fr.communaywen.core.settings.SettingsCache;
98
import org.bukkit.Bukkit;
109
import org.bukkit.OfflinePlayer;
1110
import org.bukkit.entity.Player;
1211
import org.bukkit.inventory.ItemStack;
1312

14-
import java.sql.SQLException;
1513
import java.util.ArrayList;
1614
import java.util.List;
17-
import java.util.Objects;
1815

1916
import static fr.communaywen.core.mailboxes.utils.MailboxMenuManager.*;
2017
import static fr.communaywen.core.mailboxes.utils.MailboxUtils.getHead;
2118
import static fr.communaywen.core.mailboxes.utils.MailboxUtils.sendFailureMessage;
2219

2320
public class SendingLetter extends MailboxInv {
24-
private final static String INV_NAME = "\uF990\uE003";
25-
private final OfflinePlayer receiver;
26-
private final AywenCraftPlugin plugin;
27-
private final TeamManager teamManager;
28-
private List<String> playerFriends = new ArrayList<>();
29-
30-
int mail_accept;
31-
32-
public SendingLetter(Player player, OfflinePlayer receiver, AywenCraftPlugin plugin) throws SQLException {
33-
super(player);
34-
this.receiver = receiver;
35-
this.plugin = plugin;
36-
this.teamManager = plugin.getManagers().getTeamManager();
37-
inventory = Bukkit.createInventory(this, 54, MailboxMenuManager.getInvTitle(INV_NAME));
38-
inventory.setItem(49, getHead(receiver));
39-
inventory.setItem(45, homeBtn());
40-
inventory.setItem(48, sendBtn());
41-
inventory.setItem(50, cancelBtn());
42-
43-
for (int i = 0; i < 9; i++) inventory.setItem(i, transparentItem());
44-
45-
FriendsManager friendsManager = new FriendsManager(plugin.getManagers().getDatabaseManager(), this.plugin);
46-
friendsManager.getFriendsAsync(player.getName()).thenAccept(friends -> {
47-
this.playerFriends = friends;
48-
plugin.getLogger().info("Amis chargés pour " + player.getName());
49-
}).exceptionally(ex -> {
50-
plugin.getLogger().severe("Erreur lors du chargement des amis : " + ex.getMessage());
51-
return null;
52-
});
53-
54-
this.mail_accept = plugin.getManagers().getSettingsManager().findPlayerSettingsByUUID(Objects.requireNonNull(receiver.getPlayer())).mail_accept();
55-
}
56-
57-
@Override
58-
public void openInventory() {
59-
player.openInventory(this.inventory);
60-
}
61-
62-
public ItemStack[] getItems() {
63-
List<ItemStack> itemsList = new ArrayList<>(27);
64-
for (int slot = 9; slot < 36; slot++) {
65-
ItemStack item = inventory.getItem(slot);
66-
if (item != null && !item.getType().isAir()) itemsList.add(item);
67-
}
68-
return itemsList.toArray(new ItemStack[0]);
69-
}
70-
71-
public void sendLetter() {
72-
ItemStack[] items = getItems();
73-
inventory.clear();
74-
player.closeInventory();
75-
if (items.length == 0) {
76-
sendFailureMessage(player, "Vous ne pouvez pas envoyer de lettre vide");
77-
return;
78-
}
79-
80-
plugin.getLogger().info("Mail Accept: " + mail_accept);
81-
82-
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
83-
switch (mail_accept) {
84-
case 0:
85-
Bukkit.getScheduler().runTask(plugin, () -> sendFailureMessage(player, "Ce joueur n'accepte pas les lettres"));
86-
break;
87-
88-
case 1:
89-
if (!playerFriends.contains(receiver.getName())) {
90-
Bukkit.getScheduler().runTask(plugin, () -> sendFailureMessage(player, "Ce joueur n'accepte pas les lettres"));
91-
} else {
92-
sendMailItems(player, receiver, items);
93-
}
94-
break;
95-
96-
case 2:
97-
String playerTeamName = teamManager.getTeamByPlayer(player.getUniqueId()).getName();
98-
String receiverTeamName = teamManager.getTeamByPlayer(receiver.getUniqueId()).getName();
99-
plugin.getLogger().info("Nom de l'équipe du joueur : " + playerTeamName);
100-
plugin.getLogger().info("Nom de l'équipe du destinataire : " + receiverTeamName);
101-
102-
if (!playerTeamName.equals(receiverTeamName)) {
103-
Bukkit.getScheduler().runTask(plugin, () -> sendFailureMessage(player, "Ce joueur n'accepte pas les lettres"));
104-
} else {
105-
sendMailItems(player, receiver, items);
106-
}
107-
break;
108-
109-
default:
110-
sendMailItems(player, receiver, items);
111-
break;
112-
}
113-
});
114-
}
115-
116-
private void sendMailItems(Player player, OfflinePlayer receiver, ItemStack[] items) {
117-
Bukkit.getScheduler().runTask(plugin, () -> {
118-
if (!MailboxManager.sendItems(player, receiver, items)) {
119-
MailboxManager.givePlayerItems(player, items);
120-
}
121-
});
122-
}
123-
124-
public void giveItems() {
125-
MailboxManager.givePlayerItems(player, getItems());
126-
}
127-
128-
public boolean noSpace(ItemStack item) {
129-
if (item == null || item.getType().isAir()) return false;
130-
int size = item.getAmount();
131-
for (int slot = 9; slot < 36; slot++) {
132-
ItemStack targetItem = inventory.getItem(slot);
133-
if (targetItem == null || targetItem.getType().isAir()) return false;
134-
if (targetItem.isSimilar(item)) size -= targetItem.getMaxStackSize() - targetItem.getAmount();
135-
if (size <= 0) return false;
136-
}
137-
return true;
138-
}
139-
}
21+
private final static String INV_NAME = "\uF990\uE003";
22+
private final OfflinePlayer receiver;
23+
private final AywenCraftPlugin plugin;
24+
// private final TeamManager teamManager;
25+
// private final List<String> playerFriends; -> Temporaire
26+
27+
int mailAccept;
28+
29+
public SendingLetter(Player player, OfflinePlayer receiver, AywenCraftPlugin plugin) {
30+
super(player);
31+
this.receiver = receiver;
32+
this.plugin = plugin;
33+
// this.teamManager = plugin.getManagers().getTeamManager();
34+
// FriendsManager friendsManager = plugin.getManagers().getFriendsManager();
35+
// playerFriends = (List<String>) friendsManager.getFriendsAsync(player.getName());
36+
mailAccept = SettingsCache.settingsMap.get(receiver.getUniqueId().toString()).mailAccept();
37+
inventory = Bukkit.createInventory(this, 54, MailboxMenuManager.getInvTitle(INV_NAME));
38+
inventory.setItem(49, getHead(receiver));
39+
inventory.setItem(45, homeBtn());
40+
inventory.setItem(48, sendBtn());
41+
inventory.setItem(50, cancelBtn());
42+
43+
for (int i = 0; i < 9; i++) inventory.setItem(i, transparentItem());
44+
}
45+
46+
@Override
47+
public void openInventory() {
48+
player.openInventory(inventory);
49+
}
50+
51+
public ItemStack[] getItems() {
52+
List<ItemStack> itemsList = new ArrayList<>(27);
53+
for (int slot = 9; slot < 36; slot++) {
54+
ItemStack item = inventory.getItem(slot);
55+
if (item != null && ! item.getType().isAir()) itemsList.add(item);
56+
}
57+
return itemsList.toArray(new ItemStack[0]);
58+
}
59+
60+
public void sendLetter() {
61+
ItemStack[] items = getItems();
62+
inventory.clear();
63+
player.closeInventory();
64+
if (items.length == 0) {
65+
sendFailureMessage(player, "Vous ne pouvez pas envoyer de lettre vide");
66+
return;
67+
}
68+
plugin.getLogger().info("Mail Accept" + mailAccept);
69+
switch (mailAccept) {
70+
case 0:
71+
sendFailureMessage(player, "Ce joueur n'accepte pas les lettres");
72+
for (ItemStack item : items) player.getWorld().dropItemNaturally(player.getLocation(), item);
73+
break;
74+
75+
// case 1:
76+
// if (! playerFriends.contains(receiver.getName())) {
77+
// sendFailureMessage(player, "Ce joueur n'accepte pas les lettres");
78+
// } else {
79+
// if (! MailboxManager.sendItems(player, receiver, items)) {
80+
// MailboxManager.givePlayerItems(player, items);
81+
// }
82+
// }
83+
// break;
84+
85+
// case 2:
86+
// String playerTeamName = teamManager.getTeamByPlayer(player.getUniqueId()).getName();
87+
// String receiverTeamName = teamManager.getTeamByPlayer(receiver.getUniqueId()).getName();
88+
// if (! playerTeamName.equals(receiverTeamName)) {
89+
// sendFailureMessage(player, "Ce joueur n'accepte pas les lettres");
90+
// } else {
91+
// if (! MailboxManager.sendItems(player, receiver, items)) {
92+
// MailboxManager.givePlayerItems(player, items);
93+
// }
94+
// }
95+
// break;
96+
97+
default:
98+
if (! MailboxManager.sendItems(player, receiver, items)) MailboxManager.givePlayerItems(player, items);
99+
break;
100+
}
101+
}
102+
103+
public void giveItems() {
104+
MailboxManager.givePlayerItems(player, getItems());
105+
}
106+
107+
public boolean noSpace(ItemStack item) {
108+
if (item == null || item.getType().isAir()) return false;
109+
int size = item.getAmount();
110+
for (int slot = 9; slot < 36; slot++) {
111+
ItemStack targetItem = inventory.getItem(slot);
112+
if (targetItem == null || targetItem.getType().isAir()) return false;
113+
if (targetItem.isSimilar(item)) size -= targetItem.getMaxStackSize() - targetItem.getAmount();
114+
if (size <= 0) return false;
115+
}
116+
return true;
117+
}
118+
}

src/main/java/fr/communaywen/core/quests/QuestsListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ public void onPlayerMove(PlayerMoveEvent event) {
130130
int blockZ = to.getBlockZ();
131131

132132

133-
if (blockX != from.getBlockX() || blockZ != from.getBlockZ())
133+
if ((blockX != from.getBlockX() || blockZ != from.getBlockZ()) && !AywenCraftPlugin.frozenPlayers.contains(player))
134134
QuestsManager.manageQuestsPlayer(player.getUniqueId(), QUESTS.WALK_BLOCKS, 1, "Block(s) marché(s)");
135135

136136
// if (blockX == NINJA_JUMP_END.getBlockX() && blockY == NINJA_JUMP_END.getBlockY() && blockZ == NINJA_JUMP_END.getBlockZ())
Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
11
package fr.communaywen.core.settings;
22

3-
public record PlayerSettings(String uuid, int mail_accept, int trade_accept, int tpa_accept) {
4-
5-
}
3+
public record PlayerSettings(String uuid, int mailAccept, int tradeAccept, int tpaAccept) {}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package fr.communaywen.core.settings;
2+
3+
import java.util.HashMap;
4+
import java.util.Map;
5+
6+
public class SettingsCache {
7+
8+
public static Map<String, PlayerSettings> settingsMap = new HashMap<>(); // UUID; PlayerSettings
9+
10+
}

0 commit comments

Comments
 (0)