11package fr .communaywen .core .mailboxes .menu .letter ;
22
33import fr .communaywen .core .AywenCraftPlugin ;
4- import fr .communaywen .core .friends .FriendsManager ;
54import fr .communaywen .core .mailboxes .MailboxManager ;
65import fr .communaywen .core .mailboxes .utils .MailboxInv ;
76import fr .communaywen .core .mailboxes .utils .MailboxMenuManager ;
8- import fr .communaywen .core .teams . TeamManager ;
7+ import fr .communaywen .core .settings . SettingsCache ;
98import org .bukkit .Bukkit ;
109import org .bukkit .OfflinePlayer ;
1110import org .bukkit .entity .Player ;
1211import org .bukkit .inventory .ItemStack ;
1312
14- import java .sql .SQLException ;
1513import java .util .ArrayList ;
1614import java .util .List ;
17- import java .util .Objects ;
1815
1916import static fr .communaywen .core .mailboxes .utils .MailboxMenuManager .*;
2017import static fr .communaywen .core .mailboxes .utils .MailboxUtils .getHead ;
2118import static fr .communaywen .core .mailboxes .utils .MailboxUtils .sendFailureMessage ;
2219
2320public 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+ }
0 commit comments