package com.sijobe.spc.command;
import com.sijobe.spc.util.ForgeHelper;
import com.sijobe.spc.validation.Parameter;
import com.sijobe.spc.validation.Parameters;
import com.sijobe.spc.validation.ParameterDouble;
import com.sijobe.spc.wrapper.CommandException;
import com.sijobe.spc.wrapper.CommandSender;
import com.sijobe.spc.wrapper.Minecraft;
import com.sijobe.spc.wrapper.Player;
import net.minecraft.src.EntityPlayerMP;
import java.util.List;
/**
* Changes block reach distance
*
* @author q3hardcore
* @version 1.0
*/
@Command (
name = "blockreach",
description = "Changes block reach distance",
alias = {"reach"}
)
public class BlockReach extends StandardCommand {
/**
* The parameters of the command
*/
private static final Parameters PARAMETERS = new Parameters (
new Parameter[] {
new ParameterDouble("[DISTANCE]", true),
}
);
/**
* @see com.sijobe.spc.wrapper.CommandBase#execute(com.sijobe.spc.wrapper.CommandSender, java.util.List)
*/
@Override
public void execute(CommandSender sender, List<?> params) throws CommandException {
Player player = getSenderAsPlayer(sender);
if(!(player.getMinecraftPlayer() instanceof EntityPlayerMP)) {
throw new CommandException("Command must be executed by non-client player.");
}
EntityPlayerMP playerEntity = (EntityPlayerMP)player.getMinecraftPlayer();
if(params.size() == 0) {
sender.sendMessageToPlayer("Current block reach distance: " +
ForgeHelper.getBlockReachDistance(playerEntity.theItemInWorldManager));
} else {
double newReach = (Double)params.get(0);
if(newReach < 4.5D || newReach > 255.0D) {
throw new CommandException("Reach distance must be between 4.5 and 255.");
}
ForgeHelper.setBlockReachDistance(playerEntity.theItemInWorldManager, newReach);
Minecraft.getMinecraft().thePlayer.setClientReach(newReach);
sender.sendMessageToPlayer("Set block reach distance to: " + newReach);
}
}
/**
* Only enabled in single player since this is a client-side mod
*
* @see com.sijobe.spc.wrapper.CommandBase#isEnabled()
*/
@Override
public boolean isEnabled() {
return Minecraft.isSinglePlayer() && ForgeHelper.HAS_FORGE;
}
/**
* @see com.sijobe.spc.wrapper.CommandBase#getParameters()
*/
@Override
public Parameters getParameters() {
return PARAMETERS;
}
}