package de.maxgb.minecraft.second_screen.commands.mss_sub;
import net.minecraft.block.Block;
import net.minecraft.command.ICommandSender;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.MovingObjectPosition;
import de.maxgb.minecraft.second_screen.commands.BaseCommand;
import de.maxgb.minecraft.second_screen.data.ObservingManager;
import de.maxgb.minecraft.second_screen.util.Helper;
import de.maxgb.minecraft.second_screen.world_observer.ObservedBlock;
import de.maxgb.minecraft.second_screen.world_observer.RedstoneObserver;
public class RegisterRedstoneInfoCommand implements MssCommand.MssSubCommand {
private static final String TAG = "RegisterRedstoneCommand";
public RegisterRedstoneInfoCommand() {
}
@Override
public boolean canCommandSenderUseCommand(ICommandSender var1) {
if (var1 instanceof EntityPlayer) {
return true;
}
return false;
}
@Override
public String getCommandName() {
return "redinfo";
}
@Override
public void processCommand(ICommandSender var1, String[] var2) {
if (var2 == null || var2.length < 2) {
sendMessage(var1, "Invalid arguments. Usage:");
sendCommandUsage(var1);
return;
}
if (var2[0].equals("add")) {
// Get player
EntityPlayer player;
if (var1 instanceof EntityPlayer) {
player = (EntityPlayer) var1;
} else {
sendMessage(var1, "Player only command");
return;
}
// If the block should be observed publicly
boolean publ = false;
if (var2.length >= 3) {
if (var2[2].equals("public")) {
publ = true;
}
}
// Get Block
MovingObjectPosition p = Helper.getPlayerLookingSpot(player, true);
if (p == null) {
sendMessage(var1, "You have to look at a block");
return;
}
Block b = player.worldObj.getBlockState(p.getBlockPos()).getBlock();
sendMessage(var1,
"You are looking at: " + p.getBlockPos().toString() + " " + b.getLocalizedName());
if (!RedstoneObserver.canObserve(b)) {
sendMessage(var1, "You can only observe solid blocks and levers");
}
if (ObservingManager.observeBlock(var1.getName(), publ, new ObservedBlock(var2[1], p.getBlockPos(), player.worldObj.provider.getDimensionId(), RedstoneObserver.ID, EnumFacing.UP))) {
sendMessage(var1, "Successfully added block to observer list.");
} else {
sendMessage(var1,
"Successfully added block to observer list, but overrode another block with the same label");
}
// var1.addChatMessage(new
// ChatComponentText(""+player.worldObj.isBlockIndirectlyGettingPowered(p.blockX,
// p.blockY, p.blockZ)));
} else if (var2[0].equals("remove")) {
if (ObservingManager.removeObservedBlock(var1.getName(), var2[1])) {
sendMessage(var1, "Successfully removed block from observer list");
} else {
sendMessage(var1, "Failed to remove block from observer list. There is no block with this label");
}
} else {
sendMessage(var1, "Invalid arguments. Usage:");
sendCommandUsage(var1);
return;
}
}
@Override
public void sendCommandUsage(ICommandSender var1) {
sendMessage(var1, "redinfo add <label>");
sendMessage(var1, "redinfo remove <label>");
}
private void sendMessage(ICommandSender var1, String msg) {
BaseCommand.sendMessage(var1, msg);
}
}