116 lines
3.4 KiB
Java
116 lines
3.4 KiB
Java
package com.songoda.epicbosses.commands;
|
|
|
|
import com.songoda.core.commands.AbstractCommand;
|
|
import com.songoda.epicbosses.entity.BossEntity;
|
|
import com.songoda.epicbosses.managers.BossEntityManager;
|
|
import com.songoda.epicbosses.managers.files.BossesFileManager;
|
|
import com.songoda.epicbosses.utils.Message;
|
|
import com.songoda.epicbosses.utils.NumberUtils;
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.command.CommandSender;
|
|
import org.bukkit.entity.HumanEntity;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.inventory.ItemStack;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.Arrays;
|
|
import java.util.List;
|
|
import java.util.stream.Collectors;
|
|
|
|
/**
|
|
* @author Charles Cullen
|
|
* @version 1.0.0
|
|
* @since 14-Nov-18
|
|
*/
|
|
public class CommandGiveEgg extends AbstractCommand {
|
|
|
|
private BossEntityManager bossEntityManager;
|
|
private BossesFileManager bossesFileManager;
|
|
|
|
public CommandGiveEgg(BossesFileManager bossesFileManager, BossEntityManager bossEntityManager) {
|
|
super(false, "give", "giveegg");
|
|
|
|
this.bossesFileManager = bossesFileManager;
|
|
this.bossEntityManager = bossEntityManager;
|
|
}
|
|
|
|
@Override
|
|
protected ReturnType runCommand(CommandSender sender, String... args) {
|
|
|
|
if (args.length < 2) {
|
|
Message.Boss_GiveEgg_InvalidArgs.msg(sender);
|
|
return ReturnType.FAILURE;
|
|
}
|
|
|
|
int amount = 1;
|
|
|
|
if (args.length == 3) {
|
|
String amountInput = args[2];
|
|
|
|
if (NumberUtils.get().isInt(amountInput)) {
|
|
amount = Integer.valueOf(amountInput);
|
|
} else {
|
|
Message.General_NotNumber.msg(sender);
|
|
return ReturnType.FAILURE;
|
|
}
|
|
}
|
|
|
|
String playerInput = args[1];
|
|
Player player = Bukkit.getPlayer(playerInput);
|
|
|
|
if (player == null) {
|
|
Message.General_NotOnline.msg(sender, playerInput);
|
|
return ReturnType.FAILURE;
|
|
}
|
|
|
|
String bossInput = args[0];
|
|
BossEntity bossEntity = this.bossesFileManager.getBossEntity(bossInput);
|
|
|
|
if (bossEntity == null) {
|
|
Message.Boss_GiveEgg_InvalidBoss.msg(sender);
|
|
return ReturnType.FAILURE;
|
|
}
|
|
|
|
ItemStack spawnItem = this.bossEntityManager.getSpawnItem(bossEntity);
|
|
|
|
if (spawnItem == null) {
|
|
Message.Boss_GiveEgg_NotSet.msg(sender);
|
|
return ReturnType.FAILURE;
|
|
}
|
|
|
|
spawnItem.setAmount(amount);
|
|
player.getInventory().addItem(spawnItem);
|
|
|
|
Message.Boss_GiveEgg_Given.msg(sender, player.getName(), amount, bossInput);
|
|
Message.Boss_GiveEgg_Received.msg(player, amount, bossInput);
|
|
return ReturnType.SUCCESS;
|
|
}
|
|
|
|
@Override
|
|
protected List<String> onTab(CommandSender commandSender, String... args) {
|
|
if (args.length == 1) {
|
|
return new ArrayList<>(bossesFileManager.getBossEntitiesMap().keySet());
|
|
} else if (args.length == 2) {
|
|
return Bukkit.getOnlinePlayers().stream().map(HumanEntity::getName).collect(Collectors.toList());
|
|
} else if (args.length == 3) {
|
|
return Arrays.asList("1", "2", "3", "4", "5");
|
|
}
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public String getPermissionNode() {
|
|
return "boss.give";
|
|
}
|
|
|
|
@Override
|
|
public String getSyntax() {
|
|
return "giveegg <name> <player> [amount]";
|
|
}
|
|
|
|
@Override
|
|
public String getDescription() {
|
|
return "Gives you the spawn egg of a boss.";
|
|
}
|
|
}
|