mirror of
https://github.com/Sollace/Unicopia.git
synced 2024-11-27 23:27:59 +01:00
Particles and other finishing touches
This commit is contained in:
parent
e00f9850b3
commit
33ffa0fafe
1 changed files with 42 additions and 9 deletions
|
@ -18,10 +18,12 @@ import net.minecraft.block.state.BlockStateContainer;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.creativetab.CreativeTabs;
|
import net.minecraft.creativetab.CreativeTabs;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
import net.minecraft.init.Items;
|
import net.minecraft.init.Items;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.util.BlockRenderLayer;
|
import net.minecraft.util.BlockRenderLayer;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraft.util.EnumParticleTypes;
|
||||||
import net.minecraft.util.IStringSerializable;
|
import net.minecraft.util.IStringSerializable;
|
||||||
import net.minecraft.util.SoundCategory;
|
import net.minecraft.util.SoundCategory;
|
||||||
import net.minecraft.util.math.AxisAlignedBB;
|
import net.minecraft.util.math.AxisAlignedBB;
|
||||||
|
@ -108,7 +110,7 @@ public class BlockGrowingCuccoon extends Block {
|
||||||
@Override
|
@Override
|
||||||
public void updateTick(World world, BlockPos pos, IBlockState state, Random rand) {
|
public void updateTick(World world, BlockPos pos, IBlockState state, Random rand) {
|
||||||
if (!checkSupport(world, pos)) {
|
if (!checkSupport(world, pos)) {
|
||||||
world.destroyBlock(pos, true);
|
breakConnected(world, pos);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -143,6 +145,15 @@ public class BlockGrowingCuccoon extends Block {
|
||||||
world.scheduleUpdate(pos, this, tickRate(world));
|
world.scheduleUpdate(pos, this, tickRate(world));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void breakConnected(World world, BlockPos pos) {
|
||||||
|
world.destroyBlock(pos, true);
|
||||||
|
|
||||||
|
pos = pos.down();
|
||||||
|
if (world.getBlockState(pos).getBlock() == this) {
|
||||||
|
breakConnected(world, pos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected int getMaximumAge(World world, BlockPos pos, IBlockState state, boolean spaceBelow) {
|
protected int getMaximumAge(World world, BlockPos pos, IBlockState state, boolean spaceBelow) {
|
||||||
if (state.getValue(SHAPE) == Shape.STRING) {
|
if (state.getValue(SHAPE) == Shape.STRING) {
|
||||||
IBlockState higher = world.getBlockState(pos.up());
|
IBlockState higher = world.getBlockState(pos.up());
|
||||||
|
@ -151,7 +162,9 @@ public class BlockGrowingCuccoon extends Block {
|
||||||
return 7;
|
return 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ((BlockGrowingCuccoon)higher.getBlock()).getMaximumAge(world, pos.up(), higher, false) - 1;
|
return Math.min(higher.getValue(AGE),
|
||||||
|
((BlockGrowingCuccoon)higher.getBlock()).getMaximumAge(world, pos.up(), higher, false) - 1
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!spaceBelow) {
|
if (!spaceBelow) {
|
||||||
|
@ -162,15 +175,13 @@ public class BlockGrowingCuccoon extends Block {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Item getItemDropped(IBlockState state, Random rand, int fortune) {
|
public int quantityDropped(IBlockState state, int fortune, Random random) {
|
||||||
return Items.SLIME_BALL;
|
return random.nextInt(3) == 0 ? state.getValue(AGE) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dropBlockAsItemWithChance(World world, BlockPos pos, IBlockState state, float chance, int fortune) {
|
public Item getItemDropped(IBlockState state, Random rand, int fortune) {
|
||||||
if (state.getValue(AGE) == 7) {
|
return Items.SLIME_BALL;
|
||||||
super.dropBlockAsItemWithChance(world, pos, state, chance, fortune);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -181,7 +192,7 @@ public class BlockGrowingCuccoon extends Block {
|
||||||
@Override
|
@Override
|
||||||
public void onNeighborChange(IBlockAccess world, BlockPos pos, BlockPos neighbor) {
|
public void onNeighborChange(IBlockAccess world, BlockPos pos, BlockPos neighbor) {
|
||||||
if (world instanceof World && !checkSupport(world, pos)) {
|
if (world instanceof World && !checkSupport(world, pos)) {
|
||||||
((World)world).destroyBlock(pos, true);
|
breakConnected((World)world, pos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -266,6 +277,28 @@ public class BlockGrowingCuccoon extends Block {
|
||||||
return new BlockStateContainer(this, AGE, SHAPE);
|
return new BlockStateContainer(this, AGE, SHAPE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isLadder(IBlockState state, IBlockAccess world, BlockPos pos, EntityLivingBase entity) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void randomDisplayTick(IBlockState state, World world, BlockPos pos, Random rand) {
|
||||||
|
if (state.getValue(SHAPE) == Shape.BULB) {
|
||||||
|
if (rand.nextInt(8) == 0) {
|
||||||
|
|
||||||
|
AxisAlignedBB bounds = BULBS[state.getValue(AGE) / 2]
|
||||||
|
.offset(pos)
|
||||||
|
.offset(state.getOffset(world, pos));
|
||||||
|
|
||||||
|
double x = bounds.minX + (bounds.maxX - bounds.minX) * rand.nextFloat();
|
||||||
|
double y = bounds.minY;
|
||||||
|
double z = bounds.minZ + (bounds.maxZ - bounds.minZ) * rand.nextFloat();
|
||||||
|
|
||||||
|
world.spawnParticle(EnumParticleTypes.DRIP_LAVA, x, y, z, 0, 0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static enum Shape implements IStringSerializable {
|
static enum Shape implements IStringSerializable {
|
||||||
BULB,
|
BULB,
|
||||||
STRING;
|
STRING;
|
||||||
|
|
Loading…
Reference in a new issue