You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
2.3 KiB
Java
65 lines
2.3 KiB
Java
package com.zivilon.cinder_loe.command;
|
|
|
|
import com.zivilon.cinder_loe.carriage.CarriageDestination;
|
|
import com.zivilon.cinder_loe.carriage.CarriageDestinationsData;
|
|
import com.zivilon.cinder_loe.carriage.CarriageRoadRegistry;
|
|
import net.minecraft.command.CommandBase;
|
|
import net.minecraft.command.CommandException;
|
|
import net.minecraft.command.ICommandSender;
|
|
import net.minecraft.command.WrongUsageException;
|
|
import net.minecraft.entity.player.EntityPlayerMP;
|
|
import net.minecraft.util.ChatComponentText;
|
|
import net.minecraft.util.EnumChatFormatting;
|
|
import net.minecraft.world.World;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
public class CommandSetDestination extends CommandBase {
|
|
@Override
|
|
public String getCommandName() {
|
|
return "set_destination";
|
|
}
|
|
|
|
@Override
|
|
public String getCommandUsage(ICommandSender sender) {
|
|
return "/set_destination \"Destination Name\" roadId";
|
|
}
|
|
|
|
@Override
|
|
public void processCommand(ICommandSender sender, String[] args) throws CommandException {
|
|
if (args.length < 2) {
|
|
throw new WrongUsageException(getCommandUsage(sender));
|
|
}
|
|
|
|
// last arg is the road ID
|
|
String roadId = args[args.length - 1].toLowerCase();
|
|
if (CarriageRoadRegistry.getRoad(roadId) == null) {
|
|
throw new CommandException("Unknown road ID: " + roadId);
|
|
}
|
|
|
|
// everything before is the destination name
|
|
String name = StringUtils.join(args, " ", 0, args.length - 1);
|
|
|
|
if (!(sender instanceof EntityPlayerMP)) {
|
|
throw new CommandException("Must be run by a player.");
|
|
}
|
|
|
|
EntityPlayerMP player = (EntityPlayerMP) sender;
|
|
World world = player.worldObj;
|
|
|
|
int x = (int) Math.floor(player.posX);
|
|
int y = (int) Math.floor(player.posY);
|
|
int z = (int) Math.floor(player.posZ);
|
|
int dim = player.dimension;
|
|
|
|
CarriageDestinationsData data = CarriageDestinationsData.get(world);
|
|
if (data == null) {
|
|
throw new CommandException("Failed to access destination storage.");
|
|
}
|
|
|
|
data.addDestination(new CarriageDestination(name, x, y, z, dim, roadId));
|
|
sender.addChatMessage(new ChatComponentText(
|
|
EnumChatFormatting.YELLOW + "Destination '" + name + "' on road '" + roadId + "' saved."
|
|
));
|
|
}
|
|
}
|