diff --git a/src/main/java/com/songoda/epicheads/command/CommandManager.java b/src/main/java/com/songoda/epicheads/command/CommandManager.java index 3f9b1c1..acc9627 100644 --- a/src/main/java/com/songoda/epicheads/command/CommandManager.java +++ b/src/main/java/com/songoda/epicheads/command/CommandManager.java @@ -32,6 +32,7 @@ public class CommandManager implements CommandExecutor { addCommand(new CommandReload(commandEpicHeads)); addCommand(new CommandUrl(commandEpicHeads)); addCommand(new CommandBase64(commandEpicHeads)); + addCommand(new CommandGive(commandEpicHeads)); for (AbstractCommand abstractCommand : commands) { if (abstractCommand.getParent() != null) continue; diff --git a/src/main/java/com/songoda/epicheads/command/commands/CommandGive.java b/src/main/java/com/songoda/epicheads/command/commands/CommandGive.java new file mode 100644 index 0000000..c6f81d1 --- /dev/null +++ b/src/main/java/com/songoda/epicheads/command/commands/CommandGive.java @@ -0,0 +1,88 @@ +package com.songoda.epicheads.command.commands; + +import com.songoda.epicheads.EpicHeads; +import com.songoda.epicheads.command.AbstractCommand; +import com.songoda.epicheads.head.Head; +import com.songoda.epicheads.utils.Methods; +import org.bukkit.Bukkit; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.inventory.meta.SkullMeta; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +public class CommandGive extends AbstractCommand { + + public CommandGive(AbstractCommand parent) { + super(parent, false, "give"); + } + + @Override + protected ReturnType runCommand(EpicHeads instance, CommandSender sender, String... args) { + + if (args.length != 4) return ReturnType.SYNTAX_ERROR; + + Player player = Bukkit.getPlayer(args[1]); + String archive = args[2]; + int headId = Integer.parseInt(args[3]); + + if (player == null) { + sender.sendMessage(instance.getReferences().getPrefix() + instance.getLocale().getMessage("command.give.notonline", args[1])); + return ReturnType.FAILURE; + } + + List
heads; + + if (archive.equalsIgnoreCase("global")) + heads = instance.getHeadManager().getGlobalHeads(); + else if (archive.equalsIgnoreCase("local")) + heads = instance.getHeadManager().getLocalHeads(); + else { + return ReturnType.SYNTAX_ERROR; + } + + Optional head = heads.stream().filter(h -> h.getId() == headId).findFirst(); + + if (head.isPresent()) { + ItemStack item = head.get().asItemStack(); + + ItemMeta meta = item.getItemMeta(); + meta.setLore(new ArrayList<>()); + item.setItemMeta(meta); + + player.getInventory().addItem(item); + } else { + sender.sendMessage(instance.getReferences().getPrefix() + instance.getLocale().getMessage("command.give.notfound", head.get().getName())); + return ReturnType.FAILURE; + } + + sender.sendMessage(instance.getReferences().getPrefix() + instance.getLocale().getMessage("command.give.success", player.getName(), head.get().getName())); + player.sendMessage(instance.getReferences().getPrefix() + instance.getLocale().getMessage("command.give.receive", head.get().getName())); + + return ReturnType.SUCCESS; + } + + @Override + protected List