@@ -21,42 +21,46 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command
2121 sender .sendRichMessage (Message .ERROR_MUST_BE_PLAYER .getMessage ());
2222 return false ;
2323 }
24- ItemStack itemInHand = player .getInventory ().getItemInMainHand ();
25- ItemStack itemInHelmSlot = player .getInventory ().getHelmet ();
26- if (itemInHelmSlot == null && itemInHand .isEmpty ()) {
27- player .sendRichMessage (Message .ERROR_NO_ITEMS_HAT .getMessage ());
24+ ItemStack itemToHat = player .getInventory ().getItemInMainHand ();
25+ ItemStack previousHelm = player .getInventory ().getHelmet ();
26+ boolean userHadHelmetBefore = (previousHelm != null && !previousHelm .isEmpty ());
27+ if (!userHadHelmetBefore && itemToHat .isEmpty ()) {
28+ player .sendRichMessage (Message .ERROR_NO_HAT_ITEMS .getMessage ());
2829 return false ;
2930 }
30- if ((itemInHelmSlot != null && !itemInHelmSlot .isEmpty ()) && (
31- itemInHelmSlot .getItemMeta ().hasEnchant (Enchantment .BINDING_CURSE ) &&
32- ConfigHandler .getInstance ().isHatRespectsCurseOfBinding ()
33- )){
31+ if (userHadHelmetBefore && (previousHelm .getItemMeta ().hasEnchant (Enchantment .BINDING_CURSE ) &&
32+ ConfigHandler .getInstance ().shouldRespectBindingCurse ())) {
3433 player .sendRichMessage (Message .ERROR_CURSE_OF_BINDING .getMessage ());
3534 return false ;
3635 }
37- if (ConfigHandler .getInstance ().getDisabledHatItems ().contains (itemInHand .getType ())) {
36+ if (ConfigHandler .getInstance ().getDisabledHatItems ().contains (itemToHat .getType ())) {
3837 player .sendRichMessage (Message .ERROR_HAT_NOT_ALLOWED .getMessage ());
3938 return false ;
4039 }
41- if (itemInHand .getAmount () > 1 ) {
42- player .getInventory ().setHelmet (itemInHand .asOne ());
43- int amt = itemInHand .getAmount () - 1 ;
44- itemInHand .setAmount (amt );
45- player .getInventory ().setItemInMainHand (itemInHand );
46- if (itemInHelmSlot != null ) {
47- HashMap <Integer , ItemStack > leftover = player .getInventory ().addItem (itemInHelmSlot );
48- if (!leftover .isEmpty ()) {
49- for (Integer integer : leftover .keySet ()) {
50- player .getWorld ().dropItem (player .getLocation (), leftover .get (integer ));
51- }
52- }
53- }
40+ if (itemToHat .isEmpty ()) {
41+ player .getInventory ().setHelmet (null );
42+ player .getInventory ().setItemInMainHand (previousHelm );
43+ player .sendRichMessage (Message .HAT_REMOVED .getMessage ());
44+ return true ;
45+ }
46+ player .getInventory ().setHelmet (itemToHat .asOne ());
47+ itemToHat .subtract ();
48+ if (!userHadHelmetBefore ) {
5449 player .sendRichMessage (Message .HAT_SUCCESSFUL .getMessage ());
55- } else {
56- player .getInventory ().setHelmet (itemInHand );
57- if (itemInHelmSlot != null ) player .getInventory ().setItemInMainHand (itemInHelmSlot );
50+ return true ;
51+ }
52+ if (player .getInventory ().getItemInMainHand ().isEmpty ()) {
53+ player .getInventory ().setItemInMainHand (previousHelm );
5854 player .sendRichMessage (Message .HAT_SUCCESSFUL .getMessage ());
55+ return true ;
56+ }
57+ HashMap <Integer , ItemStack > leftover = player .getInventory ().addItem (previousHelm );
58+ if (!leftover .isEmpty ()) {
59+ for (Integer index : leftover .keySet ()) {
60+ player .getWorld ().dropItem (player .getLocation (), leftover .get (index ));
61+ }
5962 }
63+ player .sendRichMessage (Message .HAT_SUCCESSFUL .getMessage ());
6064 return true ;
6165 }
6266}
0 commit comments