package com.jaquadro.minecraft.gardencore.block.support;
import com.jaquadro.minecraft.gardencore.api.block.garden.IConnectionProfile;
import com.jaquadro.minecraft.gardencore.block.tile.TileEntityGarden;
import net.minecraft.block.Block;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.IBlockAccess;
public class BasicConnectionProfile implements IConnectionProfile
{
@Override
public boolean isAttachedNeighbor (IBlockAccess blockAccess, int x, int y, int z, int side) {
switch (side) {
case 0: return isAttachedNeighbor(blockAccess, x, y, z, x, y - 1, z);
case 1: return isAttachedNeighbor(blockAccess, x, y, z, x, y + 1, z);
case 2: return isAttachedNeighbor(blockAccess, x, y, z, x, y, z - 1);
case 3: return isAttachedNeighbor(blockAccess, x, y, z, x, y, z + 1);
case 4: return isAttachedNeighbor(blockAccess, x, y, z, x - 1, y, z);
case 5: return isAttachedNeighbor(blockAccess, x, y, z, x + 1, y, z);
}
return false;
}
@Override
public boolean isAttachedNeighbor (IBlockAccess blockAccess, int x, int y, int z, int nx, int ny, int nz) {
if (y != ny || Math.abs(nx - x) > 1 || Math.abs(nz - z) > 1)
return false;
Block sBlock = blockAccess.getBlock(x, y, z);
Block nBlock = blockAccess.getBlock(nx, ny, nz);
if (sBlock != nBlock)
return false;
int sData = blockAccess.getBlockMetadata(x, y, z);
int nData = blockAccess.getBlockMetadata(nx, ny, nz);
if (sData != nData)
return false;
TileEntity sEntity = blockAccess.getTileEntity(x, y, z);
TileEntity nEntity = blockAccess.getTileEntity(nx, ny, nz);
if (sEntity == null || nEntity == null || sEntity.getClass() != nEntity.getClass())
return false;
if (!(sEntity instanceof TileEntityGarden))
return false;
/*TileEntityGarden nGarden = (TileEntityGarden) nEntity;
if ((substrate == null || nGarden.substrate == null) && substrate != nGarden.substrate)
return false;
if (substrate != null) {
if (substrate.getItem() != nGarden.substrate.getItem() || substrate.getItemDamage() != nGarden.substrate.getItemDamage())
return false;
}*/
return true;
}
}