Finished BlockLimbo.

There are extra texture files for limbo blocks that appear unused; I left
them in case I'm wrong.
This commit is contained in:
zangamj 2016-07-13 12:14:33 -04:00
parent 881ead8acf
commit bdf7532b14
7 changed files with 37 additions and 47 deletions

View file

@ -7,12 +7,9 @@ import com.zixiken.dimdoors.config.DDProperties;
import com.zixiken.dimdoors.world.LimboDecay; import com.zixiken.dimdoors.world.LimboDecay;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.block.state.IBlockState;
import net.minecraft.util.IIcon; import net.minecraft.util.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class BlockLimbo extends Block { public class BlockLimbo extends Block {
public static final String ID = "blockLimbo"; public static final String ID = "blockLimbo";
@ -31,38 +28,11 @@ public class BlockLimbo extends Block {
setLightLevel(.0F); setLightLevel(.0F);
} }
/**
* Retrieves the block texture to use based on the display side. Args: iBlockAccess, x, y, z, side
*/
@SideOnly(Side.CLIENT)
@Override
public IIcon getIcon(IBlockAccess blockAccess, int x, int y, int z, int side)
{
return this.getIcon(side, blockAccess.getBlockMetadata(x, y, z));
}
@Override
public void registerBlockIcons(IIconRegister iconRegister)
{
this.blockIcon = iconRegister.registerIcon(DimDoors.modid + ":" + this.getUnlocalizedName());
}
@Override
public IIcon getIcon(int par1, int par2)
{
return this.blockIcon;
}
/** /**
* If the block is in Limbo, attempt to decay surrounding blocks upon receiving a random update tick. * If the block is in Limbo, attempt to decay surrounding blocks upon receiving a random update tick.
*/ */
@Override @Override
public void updateTick(World world, int x, int y, int z, Random random) public void updateTick(World worldIn, BlockPos pos, IBlockState state, Random rand) {
{ if(worldIn.provider.getDimensionId() == limboDimensionID) decay.applySpreadDecay(worldIn, pos);
//Make sure this block is in Limbo }
if (world.provider.dimensionId == limboDimensionID)
{
decay.applySpreadDecay(world, x, y, z);
}
}
} }

View file

@ -17,6 +17,7 @@ public class BlockRenderManager {
register(DimDoors.blockDimWall, 2, "Altered"); register(DimDoors.blockDimWall, 2, "Altered");
register(DimDoors.blockDimWallPerm); register(DimDoors.blockDimWallPerm);
register(DimDoors.blockLimbo);
} }
public static void addModelVariants() { public static void addModelVariants() {
@ -29,7 +30,7 @@ public class BlockRenderManager {
private static void register(Block block) { private static void register(Block block) {
Minecraft.getMinecraft().getRenderItem().getItemModelMesher() Minecraft.getMinecraft().getRenderItem().getItemModelMesher()
.register(Item.getItemFromBlock(block), 0, .register(Item.getItemFromBlock(block), 0,
new ModelResourceLocation(ID + ':' + block.getUnlocalizedName().substring(5))); new ModelResourceLocation(ID + ':' + block.getUnlocalizedName().substring(5), "inventory"));
} }
private static void register(Block block, int meta, String name) { private static void register(Block block, int meta, String name) {

View file

@ -6,6 +6,7 @@ import com.zixiken.dimdoors.DimDoors;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer; import net.minecraft.block.BlockContainer;
import net.minecraft.init.Blocks; import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.ChunkCoordIntPair;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.DimensionManager; import net.minecraftforge.common.DimensionManager;
@ -71,20 +72,20 @@ public class LimboDecay {
* Checks the blocks orthogonally around a given location (presumably the location of an Unraveled Fabric block) * Checks the blocks orthogonally around a given location (presumably the location of an Unraveled Fabric block)
* and applies Limbo decay to them. This gives the impression that decay spreads outward from Unraveled Fabric. * and applies Limbo decay to them. This gives the impression that decay spreads outward from Unraveled Fabric.
*/ */
public void applySpreadDecay(World world, int x, int y, int z) public void applySpreadDecay(World world, BlockPos pos) {
{
//Check if we randomly apply decay spread or not. This can be used to moderate the frequency of //Check if we randomly apply decay spread or not. This can be used to moderate the frequency of
//full spread decay checks, which can also shift its performance impact on the game. //full spread decay checks, which can also shift its performance impact on the game.
if (random.nextInt(MAX_DECAY_SPREAD_CHANCE) < DECAY_SPREAD_CHANCE) if (random.nextInt(MAX_DECAY_SPREAD_CHANCE) < DECAY_SPREAD_CHANCE)
{ {
//Apply decay to the blocks above, below, and on all four sides. //Apply decay to the blocks above, below, and on all four sides.
//World.getBlockId() implements bounds checking, so we don't have to worry about reaching out of the world //World.getBlockId() implements bounds checking, so we don't have to worry about reaching out of the world
decayBlock(world, x - 1, y, z); decayBlock(world, pos.west());
decayBlock(world, x + 1, y, z); decayBlock(world, pos.east());
decayBlock(world, x, y, z - 1); decayBlock(world, pos.north());
decayBlock(world, x, y, z + 1); decayBlock(world, pos.south());
decayBlock(world, x, y - 1, z); decayBlock(world, pos.south());
decayBlock(world, x, y + 1, z); decayBlock(world, pos.north());
} }
} }
@ -139,8 +140,7 @@ public class LimboDecay {
/** /**
* Checks if a block can be decayed and, if so, changes it to the next block ID along the decay sequence. * Checks if a block can be decayed and, if so, changes it to the next block ID along the decay sequence.
*/ */
private boolean decayBlock(World world, int x, int y, int z) private boolean decayBlock(World world, BlockPos pos) {
{
int index; int index;
Block block = world.getBlock(x, y, z); Block block = world.getBlock(x, y, z);
if (canDecayBlock(block, world, x, y, z)) if (canDecayBlock(block, world, x, y, z))

View file

@ -0,0 +1,5 @@
{
"variants": {
"normal": { "model": "dimdoors:blockLimbo" }
}
}

View file

@ -0,0 +1,4 @@
{
"parent": "block/cube_all",
"textures": { "all": "dimdoors:blocks/blockLimbo" }
}

View file

@ -0,0 +1,10 @@
{
"parent": "dimdoors:block/blockLimbo",
"display": {
"thirdperson": {
"rotation": [ 10, -45, 170 ],
"translation": [ 0, 1.5, -2.75 ],
"scale": [ 0.375, 0.375, 0.375 ]
}
}
}