package net.tropicraft.world.worldgen; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; public abstract class TCDirectionalGen extends TCGenBase { public static final int Z_PLUS = 0; public static final int Z_MINUS = 1; public static final int X_PLUS = 2; public static final int X_MINUS = 3; public int originX, originZ; public int dir; public TCDirectionalGen(World world, Random rand) { super(world, rand); } public TCDirectionalGen(World world, Random rand, int dir) { super(world, rand); this.dir = dir; } public void setOrigin(int originX, int originZ) { this.originX = originX; this.originZ = originZ; } public void setDir(int dir) { this.dir = dir; } public Block getBlockWithDir(int i, int j, int k) { switch(this.dir) { case 2: return this.worldObj.getBlock(this.originX + i, j, this.originZ + k); case 0: return this.worldObj.getBlock(this.originX + k, j, this.originZ - i); case 3: return this.worldObj.getBlock(this.originX - i, j, this.originZ - k); case 1: return this.worldObj.getBlock(this.originX - k, j, this.originZ + i); } return null; } public void placeBlockWithDir(int i, int j, int k, Block block, int meta) { switch(this.dir) { case 2: this.worldObj.setBlock(this.originX + i, j, this.originZ + k, block, meta, blockGenNotifyFlag); return; case 0: this.worldObj.setBlock(this.originX + k, j, this.originZ - i, block, meta, blockGenNotifyFlag); return; case 3: this.worldObj.setBlock(this.originX - i, j, this.originZ - k, block, meta, blockGenNotifyFlag); return; case 1: this.worldObj.setBlock(this.originX - k, j, this.originZ + i, block, meta, blockGenNotifyFlag); return; } } public TileEntity getTEWithDir(int i, int j, int k) { switch(this.dir) { case 2: return this.worldObj.getTileEntity(this.originX + i, j, this.originZ + k); case 0: return this.worldObj.getTileEntity(this.originX + k, j, this.originZ - i); case 3: return this.worldObj.getTileEntity(this.originX - i, j, this.originZ - k); case 1: return this.worldObj.getTileEntity(this.originX - k, j, this.originZ + i); } return null; } public int getTerrainHeightWithDir(int i, int k) { switch(this.dir) { case 2: return this.getTerrainHeightAt(this.originX + i, this.originZ + k); case 0: return this.getTerrainHeightAt(this.originX + k, this.originZ - i); case 3: return this.getTerrainHeightAt(this.originX - i, this.originZ - k); case 1: return this.getTerrainHeightAt(this.originX - k, this.originZ + i); } return 64; } public int getActualXAt(int i, int k) { switch(this.dir) { case 2: return this.originX + i; case 0: return this.originX + k; case 3: return this.originX - i; case 1: return this.originX - k; } return this.originX; } public int getActualZAt(int i, int k) { switch(this.dir) { case 2: return this.originZ + k; case 0: return this.originZ - i; case 3: return this.originZ - k; case 1: return this.originZ + i; } return this.originZ; } }