2016-03-02 19:28:01 +00:00
package me.totalfreedom.totalfreedommod.command ;
2013-09-15 02:00:11 +00:00
2015-11-15 23:32:04 +00:00
import me.totalfreedom.totalfreedommod.rank.PlayerRank ;
2013-09-15 02:00:11 +00:00
import java.util.List ;
2015-10-19 17:43:46 +00:00
import me.totalfreedom.totalfreedommod.util.DepreciationAggregator ;
2013-09-15 02:00:11 +00:00
import org.bukkit.Location ;
import org.bukkit.Material ;
import org.bukkit.World ;
import org.bukkit.block.Block ;
import org.bukkit.command.Command ;
import org.bukkit.command.CommandSender ;
import org.bukkit.entity.Player ;
2015-10-19 17:43:46 +00:00
@CommandPermissions ( level = PlayerRank . NON_OP , source = SourceType . BOTH )
2013-09-15 02:00:11 +00:00
@CommandParameters ( description = " Set the on/off state of the lever at position x, y, z in world 'worldname'. " , usage = " /<command> <x> <y> <z> <worldname> <on|off> " )
2015-10-19 17:43:46 +00:00
public class Command_setlever extends FreedomCommand
2013-09-15 02:00:11 +00:00
{
2015-11-22 18:26:47 +00:00
2013-09-15 02:00:11 +00:00
@Override
2015-11-22 18:26:47 +00:00
public boolean run ( CommandSender sender , Player playerSender , Command cmd , String commandLabel , String [ ] args , boolean senderIsConsole )
2013-09-15 02:00:11 +00:00
{
if ( args . length ! = 5 )
{
return false ;
}
double x , y , z ;
try
{
x = Double . parseDouble ( args [ 0 ] ) ;
y = Double . parseDouble ( args [ 1 ] ) ;
z = Double . parseDouble ( args [ 2 ] ) ;
}
catch ( NumberFormatException ex )
{
2016-03-02 19:28:01 +00:00
msg ( " Invalid coordinates. " ) ;
2013-09-15 02:00:11 +00:00
return true ;
}
World world = null ;
final String needleWorldName = args [ 3 ] . trim ( ) ;
final List < World > worlds = server . getWorlds ( ) ;
for ( final World testWorld : worlds )
{
if ( testWorld . getName ( ) . trim ( ) . equalsIgnoreCase ( needleWorldName ) )
{
world = testWorld ;
break ;
}
}
if ( world = = null )
{
2016-03-02 19:28:01 +00:00
msg ( " Invalid world name. " ) ;
2013-09-15 02:00:11 +00:00
return true ;
}
final Location leverLocation = new Location ( world , x , y , z ) ;
2014-07-20 01:02:00 +00:00
final boolean leverOn = ( args [ 4 ] . trim ( ) . equalsIgnoreCase ( " on " ) | | args [ 4 ] . trim ( ) . equalsIgnoreCase ( " 1 " ) ) ;
2013-09-15 02:00:11 +00:00
final Block targetBlock = leverLocation . getBlock ( ) ;
if ( targetBlock . getType ( ) = = Material . LEVER )
{
2015-10-19 17:43:46 +00:00
org . bukkit . material . Lever lever = DepreciationAggregator . makeLeverWithData ( DepreciationAggregator . getData_Block ( targetBlock ) ) ;
2013-09-15 02:00:11 +00:00
lever . setPowered ( leverOn ) ;
2015-10-19 17:43:46 +00:00
DepreciationAggregator . setData_Block ( targetBlock , DepreciationAggregator . getData_MaterialData ( lever ) ) ;
2013-09-15 02:00:11 +00:00
targetBlock . getState ( ) . update ( ) ;
}
else
{
2016-03-02 19:28:01 +00:00
msg ( " Target block " + targetBlock + " is not a lever. " ) ;
2013-09-15 02:00:11 +00:00
return true ;
}
return true ;
}
}