package sourcecoded.quantum.sceptre.focus;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World;
import sourcecoded.quantum.QuantumAnomalies;
import sourcecoded.quantum.api.block.Colourizer;
import sourcecoded.quantum.api.sceptre.ISceptreFocus;
import sourcecoded.quantum.block.BlockQuantumLock;
import sourcecoded.quantum.registry.QABlocks;
import sourcecoded.quantum.util.save.QAWorldSavedData;
import java.util.Map;
public class FocusDebug implements ISceptreFocus {
@Override
public String getFocusIdentifier() {
return "QA|debug";
}
@Override
public String getName() {
return "DEBUG";
}
@Override
public String[] getLore(ItemStack item) {
return new String[0];
}
@Override
public boolean canBeUsed(EntityPlayer player, ItemStack itemstack) {
return QuantumAnomalies.isDevEnvironment();
}
@Override
public EnumChatFormatting getNameColour() {
return EnumChatFormatting.GREEN;
}
@Override
public void onActivated(ItemStack item) {
}
@Override
public void onDeactivated(ItemStack item) {
}
@Override
public void onClickBegin(EntityPlayer player, ItemStack item, World world) {
}
@Override
public void onClickEnd(EntityPlayer player, ItemStack item, World world, int ticker) {
}
@Override
public boolean onBlockClick(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) {
if (!player.isSneaking()) {
TileEntity tile = world.getTileEntity(x, y, z);
if (tile != null) tile.invalidate();
Block block = world.getBlock(x, y, z);
if (block instanceof BlockQuantumLock) return false;
int meta = world.getBlockMetadata(x, y, z);
QAWorldSavedData.getInstance(world).injectQuantumLock(world, block, meta, x, y, z);
world.setBlock(x, y, z, QABlocks.LOCK.getBlock(), meta, 3);
if (tile != null) {
tile.validate();
world.setTileEntity(x, y, z, tile);
}
} else {
TileEntity tile = world.getTileEntity(x, y, z);
if (tile != null) tile.invalidate();
Block block = world.getBlock(x, y, z);
if (block != QABlocks.LOCK.getBlock()) return false;
Map.Entry<Block, Integer> entry = QAWorldSavedData.getInstance(world).retrieveQuantumLock(x, y, z);
if (entry != null) {
world.setBlock(x, y, z, entry.getKey(), entry.getValue(), 3);
if (tile != null) {
tile.validate();
world.setTileEntity(x, y, z, tile);
}
QAWorldSavedData.getInstance(world).destroyQuantumLock(world, x, y, z, true);
}
}
return !world.isRemote;
}
@Override
public void onItemTick(ItemStack item) {
}
@Override
public void onUsingTick(ItemStack item) {
}
@Override
public float[] getRGB() {
return Colourizer.LIME.rgb;
}
}