package com.hbm.commands; import com.hbm.items.ISatChip; import com.hbm.items.ModItems; import com.hbm.saveddata.SatelliteSavedData; import com.hbm.saveddata.satellites.Satellite; import net.minecraft.command.CommandBase; import net.minecraft.command.ICommandSender; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; public class CommandSatellites extends CommandBase { @Override public String getCommandName() { return "ntmsatellites"; } @Override public String getCommandUsage(ICommandSender iCommandSender) { return String.format( "%s/%s orbit %s- Launch the held satellite\n" + "%s/%s descend %s- Deletes satellite by frequency.", EnumChatFormatting.GREEN, getCommandName(), EnumChatFormatting.LIGHT_PURPLE, EnumChatFormatting.GREEN, getCommandName(), EnumChatFormatting.LIGHT_PURPLE ); } @Override public void processCommand(ICommandSender sender, String[] args) { if(!(sender instanceof EntityPlayer)) { sender.addChatMessage(new ChatComponentTranslation( "commands.satellite.should_be_run_as_player").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); return; } switch (args[0]) { case "orbit": EntityPlayer player = getCommandSenderAsPlayer(sender); if(player.getHeldItem().getItem() instanceof ISatChip && player.getHeldItem().getItem() != ModItems.sat_chip) { Satellite.orbit( player.worldObj, Satellite.getIDFromItem(player.getHeldItem().getItem()), ISatChip.getFreqS(player.getHeldItem()), player.posX, player.posY, player.posZ ); player.getHeldItem().stackSize -= 1; sender.addChatMessage(new ChatComponentTranslation("commands.satellite.satellite_orbited").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GREEN))); } else { sender.addChatMessage(new ChatComponentTranslation("commands.satellite.not_a_satellite").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); } break; case "descend": int freq = parseInt(sender, args[1]); SatelliteSavedData data = SatelliteSavedData.getData(sender.getEntityWorld()); if(data.sats.containsKey(freq)) { data.sats.remove(freq); data.markDirty(); sender.addChatMessage(new ChatComponentTranslation( "commands.satellite.satellite_descended").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GREEN))); } else { sender.addChatMessage(new ChatComponentTranslation( "commands.satellite.no_satellite").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); } break; } } @SuppressWarnings("rawtypes") @Override public List addTabCompletionOptions(ICommandSender sender, String[] args) { if(!(sender instanceof EntityPlayer)) { return Collections.emptyList(); } if(args.length < 1) { return Collections.emptyList(); } if(args.length == 1) { return getListOfStringsMatchingLastWord(args, "orbit", "descend"); } if (args[0].equals("descend")) { return getListOfStringsFromIterableMatchingLastWord(args, SatelliteSavedData.getData(sender.getEntityWorld()).sats.keySet().stream().map(String::valueOf).collect(Collectors.toList())); } return Collections.emptyList(); } }