package mods.eln.node.simple; import mods.eln.misc.DescriptorBase; import mods.eln.misc.Direction; import mods.eln.misc.Utils; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.world.World; public abstract class SimpleNodeBlock extends BlockContainer { protected SimpleNodeBlock(Material material) { super(material); } String descriptorKey; public SimpleNodeBlock setDescriptorKey(String descriptorKey) { this.descriptorKey = descriptorKey; return this; } public SimpleNodeBlock setDescriptor(DescriptorBase descriptor) { this.descriptorKey = descriptor.descriptorKey; return this; } Direction getFrontForPlacement(EntityLivingBase e) { return Utils.entityLivingViewDirection(e).getInverse(); } /*@Override public void onBlockPlacedBy(World w, int x, int y, int z, EntityLivingBase e, ItemStack stack) { if(w.isRemote == false){ SimpleNode node = newNode(); node.setDescriptorKey(descriptorKey); node.onBlockPlacedBy(new Coordonate(x,y,z,w), getFrontForPlacement(e), e, stack); } }*/ protected abstract SimpleNode newNode(); SimpleNode getNode(World world, int x, int y, int z) { SimpleNodeEntity entity = (SimpleNodeEntity) world.getTileEntity(x, y, z); if (entity != null) { return entity.getNode(); } return null; } public SimpleNodeEntity getEntity(World world, int x, int y, int z) { SimpleNodeEntity entity = (SimpleNodeEntity) world.getTileEntity(x, y, z); return entity; } @Override public boolean removedByPlayer(World world, EntityPlayer entityPlayer, int x, int y, int z, boolean willHarvest) { if (!world.isRemote) { SimpleNode node = getNode(world, x, y, z); if (node != null) { node.removedByPlayer = (EntityPlayerMP) entityPlayer; } } return super.removedByPlayer(world, entityPlayer, x, y, z, willHarvest); } // client server /*onblockplaced @Override public void onBlockPlacedBy(World world, int x, int y, int z, Direction front, EntityLivingBase entityLiving, int metadata) { SimpleNodeEntity tileEntity = (SimpleNodeEntity) world.getTileEntity(x, y, z); tileEntity.onBlockPlacedBy(front, entityLiving, metadata); }*/ // server @Override public void onBlockAdded(World par1World, int x, int y, int z) { if (par1World.isRemote == false) { SimpleNodeEntity entity = (SimpleNodeEntity) par1World.getTileEntity(x, y, z); entity.onBlockAdded(); } } // server @Override public void breakBlock(World par1World, int x, int y, int z, Block par5, int par6) { SimpleNodeEntity entity = (SimpleNodeEntity) par1World.getTileEntity(x, y, z); entity.onBreakBlock(); super.breakBlock(par1World, x, y, z, par5, par6); } @Override public void onNeighborBlockChange(World world, int x, int y, int z, Block b) { if (Utils.isRemote(world) == false) { SimpleNodeEntity entity = (SimpleNodeEntity) world.getTileEntity(x, y, z); entity.onNeighborBlockChange(); } } // client server @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer entityPlayer, int side, float vx, float vy, float vz) { SimpleNodeEntity entity = (SimpleNodeEntity) world.getTileEntity(x, y, z); return entity.onBlockActivated(entityPlayer, Direction.fromIntMinecraftSide(side), vx, vy, vz); } }