package de.maxgb.minecraft.second_screen.commands;
import de.maxgb.minecraft.second_screen.util.Helper;
import net.minecraft.block.Block;
import net.minecraft.command.CommandException;
import net.minecraft.command.ICommand;
import net.minecraft.command.ICommandSender;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos;
import net.minecraft.util.MovingObjectPosition;
import org.apache.commons.lang3.ClassUtils;
import java.util.ArrayList;
import java.util.List;
/**
* Command for development purpose
* Returns all classes and interfaces the looked at block extends/implements
* @author Max
*
*/
@SuppressWarnings({ "rawtypes" })
public class ListInterfacesCommand extends BaseCommand {
private List aliases;
public ListInterfacesCommand() {
this.aliases = new ArrayList();
aliases.add("liint");
}
@Override
public int compareTo(ICommand arg0) {
return 0;
}
@Override
public String getCommandUsage(ICommandSender var1) {
return "/listinterfaces";
}
@Override
public boolean isUsernameIndex(String[] var1, int var2) {
return false;
}
@Override
public String getCommandName() {
return "listinterfaces";
}
@Override
public List getCommandAliases() {
return aliases;
}
@Override
public void processCommand(ICommandSender var1, String[] var2)
throws CommandException {
EntityPlayer player;
if (var1 instanceof EntityPlayer) {
player = (EntityPlayer) var1;
} else {
sendMessage(var1, "Player only command");
return;
}
MovingObjectPosition p = Helper.getPlayerLookingSpot(player, true);
if (p == null) {
sendMessage(var1, "You have to look at a block");
return;
}
Block block = player.worldObj.getBlockState(p.getBlockPos()).getBlock();
TileEntity tile = player.worldObj.getTileEntity(p.getBlockPos());
if(block!=null){
sendMessage(var1,block.getClass().getName());
for(Class c : ClassUtils.getAllInterfaces(block.getClass())){
sendMessage(var1,c.getName());
}
}
if(tile!=null){
sendMessage(var1,tile.getClass().getName());
for(Class c : ClassUtils.getAllInterfaces(tile.getClass())){
sendMessage(var1,c.getName());
}
}
}
@Override
public boolean canCommandSenderUseCommand(ICommandSender sender) {
return true;
}
@Override
public List addTabCompletionOptions(ICommandSender sender, String[] args,
BlockPos pos) {
return null;
}
}