96 lines
No EOL
2.5 KiB
Java
96 lines
No EOL
2.5 KiB
Java
package StevenDimDoors.mod_pocketDim.commands;
|
|
|
|
import StevenDimDoors.mod_pocketDim.core.DDTeleporter;
|
|
import StevenDimDoors.mod_pocketDim.core.PocketManager;
|
|
import StevenDimDoors.mod_pocketDim.util.Point4D;
|
|
|
|
import java.util.Arrays;
|
|
import java.util.List;
|
|
|
|
import net.minecraft.command.ICommandSender;
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
import net.minecraftforge.common.DimensionManager;
|
|
|
|
public class CommandTeleportPlayer extends DDCommandBase
|
|
{
|
|
private static CommandTeleportPlayer instance = null;
|
|
|
|
private CommandTeleportPlayer()
|
|
{
|
|
super("dd-tp", new String[] {"<Player Name> <Dimension ID> <X Coord> <Y Coord> <Z Coord>"} );
|
|
}
|
|
|
|
public static CommandTeleportPlayer instance()
|
|
{
|
|
if (instance == null)
|
|
{
|
|
instance = new CommandTeleportPlayer();
|
|
}
|
|
return instance;
|
|
}
|
|
|
|
/**
|
|
* TODO- Change to accept variety of input, like just coords, just dim ID, or two player names.
|
|
*/
|
|
@Override
|
|
protected DDCommandResult processCommand(EntityPlayer sender, String[] command)
|
|
{
|
|
List<Integer> dimensionIDs = Arrays.asList(DimensionManager.getStaticDimensionIDs()); //Gets list of all registered dimensions, regardless if loaded or not
|
|
EntityPlayer targetPlayer = sender;
|
|
int dimDestinationID = sender.worldObj.provider.dimensionId;
|
|
|
|
if(command.length == 5)
|
|
{
|
|
for(int i= 1; i <5;i++)
|
|
{
|
|
if(!isInteger(command[i]))
|
|
{
|
|
return DDCommandResult.INVALID_ARGUMENTS;
|
|
}
|
|
}
|
|
if(sender.worldObj.getPlayerEntityByName(command[0])!=null) //Gets the targeted player
|
|
{
|
|
targetPlayer = sender.worldObj.getPlayerEntityByName(command[0]);
|
|
}
|
|
else
|
|
{
|
|
return DDCommandResult.INVALID_ARGUMENTS;
|
|
}
|
|
dimDestinationID=Integer.parseInt(command[1]);//gets the target dim ID from the command string
|
|
|
|
if(!dimensionIDs.contains(dimDestinationID))
|
|
{
|
|
return DDCommandResult.INVALID_DIMENSION_ID;
|
|
}
|
|
|
|
PocketManager.loadDimension(dimDestinationID);
|
|
Point4D destination = new Point4D(Integer.parseInt(command[2]),Integer.parseInt(command[3]),Integer.parseInt(command[4]),dimDestinationID);
|
|
DDTeleporter.teleportEntity(targetPlayer, destination, false);
|
|
}
|
|
else
|
|
{
|
|
return DDCommandResult.INVALID_ARGUMENTS;
|
|
}
|
|
return DDCommandResult.SUCCESS;
|
|
}
|
|
|
|
public boolean isInteger( String input )
|
|
{
|
|
try
|
|
{
|
|
Integer.parseInt( input );
|
|
return true;
|
|
}
|
|
catch(Exception e )
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public String getCommandUsage(ICommandSender icommandsender) {
|
|
// TODO Auto-generated method stub
|
|
return null;
|
|
}
|
|
|
|
} |