-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHat.java
More file actions
66 lines (61 loc) · 2.77 KB
/
Hat.java
File metadata and controls
66 lines (61 loc) · 2.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package simplexity.adminhax.commands.basic;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
import simplexity.adminhax.config.ConfigHandler;
import simplexity.adminhax.config.Message;
import java.util.HashMap;
public class Hat implements CommandExecutor {
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String s, @NotNull String[] args) {
if (!(sender instanceof Player player)) {
sender.sendRichMessage(Message.ERROR_MUST_BE_PLAYER.getMessage());
return false;
}
ItemStack itemToHat = player.getInventory().getItemInMainHand();
ItemStack previousHelm = player.getInventory().getHelmet();
boolean userHadHelmetBefore = (previousHelm != null && !previousHelm.isEmpty());
if (!userHadHelmetBefore && itemToHat.isEmpty()) {
player.sendRichMessage(Message.ERROR_NO_HAT_ITEMS.getMessage());
return false;
}
if (userHadHelmetBefore && (previousHelm.getItemMeta().hasEnchant(Enchantment.BINDING_CURSE) &&
ConfigHandler.getInstance().shouldRespectBindingCurse())) {
player.sendRichMessage(Message.ERROR_CURSE_OF_BINDING.getMessage());
return false;
}
if (ConfigHandler.getInstance().getDisabledHatItems().contains(itemToHat.getType())) {
player.sendRichMessage(Message.ERROR_HAT_NOT_ALLOWED.getMessage());
return false;
}
if (itemToHat.isEmpty()) {
player.getInventory().setHelmet(null);
player.getInventory().setItemInMainHand(previousHelm);
player.sendRichMessage(Message.HAT_REMOVED.getMessage());
return true;
}
player.getInventory().setHelmet(itemToHat.asOne());
itemToHat.subtract();
if (!userHadHelmetBefore) {
player.sendRichMessage(Message.HAT_SUCCESSFUL.getMessage());
return true;
}
if (player.getInventory().getItemInMainHand().isEmpty()) {
player.getInventory().setItemInMainHand(previousHelm);
player.sendRichMessage(Message.HAT_SUCCESSFUL.getMessage());
return true;
}
HashMap<Integer, ItemStack> leftover = player.getInventory().addItem(previousHelm);
if (!leftover.isEmpty()) {
for (Integer index : leftover.keySet()) {
player.getWorld().dropItem(player.getLocation(), leftover.get(index));
}
}
player.sendRichMessage(Message.HAT_SUCCESSFUL.getMessage());
return true;
}
}