2013-07-30 23:56:59 +02:00
package StevenDimDoors.mod_pocketDim.commands ;
2013-11-06 00:15:23 +01:00
import StevenDimDoors.mod_pocketDim.core.DDTeleporter ;
import StevenDimDoors.mod_pocketDim.core.PocketManager ;
import StevenDimDoors.mod_pocketDim.util.Point4D ;
2013-07-30 23:56:59 +02:00
2013-11-07 00:15:30 +01:00
import java.util.Arrays ;
import java.util.List ;
2013-11-06 22:40:49 +01:00
import net.minecraft.command.ICommandSender ;
2013-07-30 23:56:59 +02:00
import net.minecraft.entity.player.EntityPlayer ;
2013-11-06 00:15:23 +01:00
import net.minecraftforge.common.DimensionManager ;
2013-07-30 23:56:59 +02:00
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 )
{
2013-11-07 00:15:30 +01:00
List < Integer > dimensionIDs = Arrays . asList ( DimensionManager . getStaticDimensionIDs ( ) ) ; //Gets list of all registered dimensions, regardless if loaded or not
2013-07-30 23:56:59 +02:00
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 ;
}
2013-11-06 00:15:23 +01:00
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 ) ;
2013-07-30 23:56:59 +02:00
}
else
{
return DDCommandResult . INVALID_ARGUMENTS ;
}
return DDCommandResult . SUCCESS ;
}
public boolean isInteger ( String input )
{
try
{
Integer . parseInt ( input ) ;
return true ;
}
catch ( Exception e )
{
return false ;
}
2013-11-06 22:40:49 +01:00
}
@Override
public String getCommandUsage ( ICommandSender icommandsender ) {
// TODO Auto-generated method stub
return null ;
}
2013-07-30 23:56:59 +02:00
}