mirror of
https://github.com/Ellpeck/ActuallyAdditions.git
synced 2024-11-22 23:28:35 +01:00
Changed the Lava Factory Completeness Detection to be less stupid and better to use
This commit is contained in:
parent
7304619c32
commit
ac9574ffeb
3 changed files with 30 additions and 20 deletions
|
@ -73,7 +73,6 @@
|
||||||
-Ring of Growth: Lets Plants grow, more Reach with Tier 2
|
-Ring of Growth: Lets Plants grow, more Reach with Tier 2
|
||||||
-Ring of Thorns: Hurts Attackers when they hit you with a Projectile
|
-Ring of Thorns: Hurts Attackers when they hit you with a Projectile
|
||||||
-Ring of Water Walking
|
-Ring of Water Walking
|
||||||
-Ring of Flight
|
|
||||||
-Ring of Aquadive: Fast underwater movement
|
-Ring of Aquadive: Fast underwater movement
|
||||||
-Ring of Suction: Sucks up Items in the area
|
-Ring of Suction: Sucks up Items in the area
|
||||||
-Ring of Water Absorption: Removes Water around
|
-Ring of Water Absorption: Removes Water around
|
||||||
|
|
|
@ -5,7 +5,7 @@ import cofh.api.energy.IEnergyReceiver;
|
||||||
import ellpeck.actuallyadditions.blocks.InitBlocks;
|
import ellpeck.actuallyadditions.blocks.InitBlocks;
|
||||||
import ellpeck.actuallyadditions.blocks.metalists.TheMiscBlocks;
|
import ellpeck.actuallyadditions.blocks.metalists.TheMiscBlocks;
|
||||||
import ellpeck.actuallyadditions.config.values.ConfigIntValues;
|
import ellpeck.actuallyadditions.config.values.ConfigIntValues;
|
||||||
import net.minecraft.block.Block;
|
import ellpeck.actuallyadditions.util.WorldUtil;
|
||||||
import net.minecraft.init.Blocks;
|
import net.minecraft.init.Blocks;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
@ -19,6 +19,9 @@ public class TileEntityLavaFactoryController extends TileEntityBase implements I
|
||||||
private final int maxWorkTime = ConfigIntValues.LAVA_FACTORY_TIME.getValue();
|
private final int maxWorkTime = ConfigIntValues.LAVA_FACTORY_TIME.getValue();
|
||||||
private int currentWorkTime;
|
private int currentWorkTime;
|
||||||
|
|
||||||
|
//The Positions the Case Blocks should be in for the Factory to work
|
||||||
|
private static final int[][] CASE_POSITIONS = {{-1, 1, 0}, {1, 1, 0}, {0, 1, -1}, {0, 1, 1}};
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public void updateEntity(){
|
public void updateEntity(){
|
||||||
|
@ -36,24 +39,12 @@ public class TileEntityLavaFactoryController extends TileEntityBase implements I
|
||||||
}
|
}
|
||||||
|
|
||||||
public int isMultiblock(){
|
public int isMultiblock(){
|
||||||
Block blockNorth = worldObj.getBlock(xCoord+ForgeDirection.NORTH.offsetX, yCoord+1, zCoord+ForgeDirection.NORTH.offsetZ);
|
if(WorldUtil.hasBlocksInPlacesGiven(CASE_POSITIONS, InitBlocks.blockMisc, TheMiscBlocks.LAVA_FACTORY_CASE.ordinal(), worldObj, xCoord, yCoord, zCoord)){
|
||||||
Block blockEast = worldObj.getBlock(xCoord+ForgeDirection.EAST.offsetX, yCoord+1, zCoord+ForgeDirection.EAST.offsetZ);
|
if(worldObj.getBlock(xCoord, yCoord+1, zCoord) == Blocks.lava || worldObj.getBlock(xCoord, yCoord+1, zCoord) == Blocks.flowing_lava){
|
||||||
Block blockSouth = worldObj.getBlock(xCoord+ForgeDirection.SOUTH.offsetX, yCoord+1, zCoord+ForgeDirection.SOUTH.offsetZ);
|
return HAS_LAVA;
|
||||||
Block blockWest = worldObj.getBlock(xCoord+ForgeDirection.WEST.offsetX, yCoord+1, zCoord+ForgeDirection.WEST.offsetZ);
|
}
|
||||||
int metaNorth = worldObj.getBlockMetadata(xCoord+ForgeDirection.NORTH.offsetX, yCoord+1, zCoord+ForgeDirection.NORTH.offsetZ);
|
if(worldObj.getBlock(xCoord, yCoord+1, zCoord) == null || worldObj.isAirBlock(xCoord, yCoord+1, zCoord)){
|
||||||
int metaEast = worldObj.getBlockMetadata(xCoord+ForgeDirection.EAST.offsetX, yCoord+1, zCoord+ForgeDirection.EAST.offsetZ);
|
return HAS_AIR;
|
||||||
int metaSouth = worldObj.getBlockMetadata(xCoord+ForgeDirection.SOUTH.offsetX, yCoord+1, zCoord+ForgeDirection.SOUTH.offsetZ);
|
|
||||||
int metaWest = worldObj.getBlockMetadata(xCoord+ForgeDirection.WEST.offsetX, yCoord+1, zCoord+ForgeDirection.WEST.offsetZ);
|
|
||||||
int metaNeeded = TheMiscBlocks.LAVA_FACTORY_CASE.ordinal();
|
|
||||||
|
|
||||||
if(blockNorth == InitBlocks.blockMisc && blockEast == InitBlocks.blockMisc && blockSouth == InitBlocks.blockMisc && blockWest == InitBlocks.blockMisc){
|
|
||||||
if(metaNorth == metaNeeded && metaEast == metaNeeded && metaSouth == metaNeeded && metaWest == metaNeeded){
|
|
||||||
if(worldObj.getBlock(xCoord, yCoord+1, zCoord) == Blocks.lava || worldObj.getBlock(xCoord, yCoord+1, zCoord) == Blocks.flowing_lava){
|
|
||||||
return HAS_LAVA;
|
|
||||||
}
|
|
||||||
if(worldObj.getBlock(xCoord, yCoord+1, zCoord) == null || worldObj.isAirBlock(xCoord, yCoord+1, zCoord)){
|
|
||||||
return HAS_AIR;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return NOT_MULTI;
|
return NOT_MULTI;
|
||||||
|
|
|
@ -50,6 +50,26 @@ public class WorldUtil{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if a given Block with a given Meta is present in given Positions
|
||||||
|
* @param positions The Positions, an array of {xCoord, yCoord, zCoord} arrays containing RELATIVE Positions
|
||||||
|
* @param block The Block
|
||||||
|
* @param meta The Meta
|
||||||
|
* @param world The World
|
||||||
|
* @param x The Start X Coord
|
||||||
|
* @param y The Start Y Coord
|
||||||
|
* @param z The Start Z Coord
|
||||||
|
* @return Is every block present?
|
||||||
|
*/
|
||||||
|
public static boolean hasBlocksInPlacesGiven(int[][] positions, Block block, int meta, World world, int x, int y, int z){
|
||||||
|
for(int[] xYZ : positions){
|
||||||
|
if(!(world.getBlock(x+xYZ[0], y+xYZ[1], z+xYZ[2]) == block && world.getBlockMetadata(x+xYZ[0], y+xYZ[1], z+xYZ[2]) == meta)){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
public static void updateTileAndTilesAround(TileEntity tile){
|
public static void updateTileAndTilesAround(TileEntity tile){
|
||||||
tile.getWorldObj().markBlockForUpdate(tile.xCoord+1, tile.yCoord, tile.zCoord);
|
tile.getWorldObj().markBlockForUpdate(tile.xCoord+1, tile.yCoord, tile.zCoord);
|
||||||
tile.getWorldObj().markBlockForUpdate(tile.xCoord-1, tile.yCoord, tile.zCoord);
|
tile.getWorldObj().markBlockForUpdate(tile.xCoord-1, tile.yCoord, tile.zCoord);
|
||||||
|
|
Loading…
Reference in a new issue