package net.geforcemods.securitycraft.api;
import net.geforcemods.securitycraft.util.BlockUtils;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
public class LinkedBlock {
public String blockName;
public BlockPos blockPos = null;
public LinkedBlock(String name, BlockPos pos) {
blockName = name;
blockPos = pos;
}
public LinkedBlock(String name, int x, int y, int z) {
blockName = name;
blockPos = BlockUtils.toPos(x, y, z);
}
public LinkedBlock(CustomizableSCTE tileEntity) {
blockName = BlockUtils.getBlock(tileEntity.getWorld(), tileEntity.getPos()).getUnlocalizedName();
blockPos = tileEntity.getPos();
}
public boolean validate(World world) {
if(world == null || (world.isAirBlock(blockPos) || !BlockUtils.getBlock(world, blockPos).getUnlocalizedName().matches(blockName))) return false;
return true;
}
public CustomizableSCTE asTileEntity(World world) {
if(!validate(world)) return null;
return (CustomizableSCTE) world.getTileEntity(blockPos);
}
public String getBlockName() {
return blockName;
}
public void setName(String blockName) {
this.blockName = blockName;
}
public void setPos(BlockPos pos) {
this.blockPos = pos;
}
public BlockPos getPos() {
return blockPos;
}
public int getX() {
return blockPos.getX();
}
public int getY() {
return blockPos.getY();
}
public int getZ() {
return blockPos.getZ();
}
public boolean equals(Object o) {
if(o instanceof LinkedBlock) {
LinkedBlock block = (LinkedBlock) o;
return (block.getPos().getX() == blockPos.getX() && block.getPos().getY() == blockPos.getY() && block.getPos().getZ() == blockPos.getZ());
}
return false;
}
public int hashCode() {
return blockPos.getX() + blockPos.getY() + blockPos.getZ();
}
public String toString() {
return (blockName + " | " + blockPos.getX() + " " + blockPos.getY() + " " + blockPos.getZ());
}
}