initial commit
This commit is contained in:
parent
3c9ee26b06
commit
22186c33b9
1458 changed files with 282792 additions and 0 deletions
217
java/src/game/block/BlockDragonEgg.java
Executable file
217
java/src/game/block/BlockDragonEgg.java
Executable file
|
@ -0,0 +1,217 @@
|
|||
package game.block;
|
||||
|
||||
import game.entity.item.EntityFalling;
|
||||
import game.entity.npc.EntityNPC;
|
||||
import game.init.Config;
|
||||
import game.material.Material;
|
||||
import game.renderer.blockmodel.ModelBlock;
|
||||
import game.renderer.particle.ParticleType;
|
||||
import game.rng.Random;
|
||||
import game.world.BlockPos;
|
||||
import game.world.Facing;
|
||||
import game.world.IWorldAccess;
|
||||
import game.world.State;
|
||||
import game.world.World;
|
||||
import game.world.WorldServer;
|
||||
|
||||
public class BlockDragonEgg extends Block
|
||||
{
|
||||
private static final ModelBlock dragon_egg = new ModelBlock("dragon_egg").noOcclude()
|
||||
.add(6, 15, 6, 10, 16, 10)
|
||||
.d().uv(6, 6, 10, 10).noCull()
|
||||
.u().uv(6, 6, 10, 10).noCull()
|
||||
.n().uv(6, 15, 10, 16).noCull()
|
||||
.s().uv(6, 15, 10, 16).noCull()
|
||||
.w().uv(6, 15, 10, 16).noCull()
|
||||
.e().uv(6, 15, 10, 16).noCull()
|
||||
.add(5, 14, 5, 11, 15, 11)
|
||||
.d().uv(5, 5, 11, 11).noCull()
|
||||
.u().uv(5, 5, 11, 11).noCull()
|
||||
.n().uv(5, 14, 11, 15).noCull()
|
||||
.s().uv(5, 14, 11, 15).noCull()
|
||||
.w().uv(5, 14, 11, 15).noCull()
|
||||
.e().uv(5, 14, 11, 15).noCull()
|
||||
.add(5, 13, 5, 11, 14, 11)
|
||||
.d().uv(4, 4, 12, 12).noCull()
|
||||
.u().uv(4, 4, 12, 12).noCull()
|
||||
.n().uv(4, 13, 12, 14).noCull()
|
||||
.s().uv(4, 13, 12, 14).noCull()
|
||||
.w().uv(4, 13, 12, 14).noCull()
|
||||
.e().uv(4, 13, 12, 14).noCull()
|
||||
.add(3, 11, 3, 13, 13, 13)
|
||||
.d().uv(3, 3, 13, 13).noCull()
|
||||
.u().uv(3, 3, 13, 13).noCull()
|
||||
.n().uv(3, 11, 13, 13).noCull()
|
||||
.s().uv(3, 11, 13, 13).noCull()
|
||||
.w().uv(3, 11, 13, 13).noCull()
|
||||
.e().uv(3, 11, 13, 13).noCull()
|
||||
.add(2, 8, 2, 14, 11, 14)
|
||||
.d().uv(2, 2, 14, 14).noCull()
|
||||
.u().uv(2, 2, 14, 14).noCull()
|
||||
.n().uv(2, 8, 14, 11).noCull()
|
||||
.s().uv(2, 8, 14, 11).noCull()
|
||||
.w().uv(2, 8, 14, 11).noCull()
|
||||
.e().uv(2, 8, 14, 11).noCull()
|
||||
.add(1, 3, 1, 15, 8, 15)
|
||||
.d().uv(1, 1, 15, 15).noCull()
|
||||
.u().uv(1, 1, 15, 15).noCull()
|
||||
.n().uv(1, 3, 15, 8).noCull()
|
||||
.s().uv(1, 3, 15, 8).noCull()
|
||||
.w().uv(1, 3, 15, 8).noCull()
|
||||
.e().uv(1, 3, 15, 8).noCull()
|
||||
.add(2, 1, 2, 14, 3, 14)
|
||||
.d().uv(2, 2, 14, 14).noCull()
|
||||
.u().uv(2, 2, 14, 14).noCull()
|
||||
.n().uv(2, 1, 14, 3).noCull()
|
||||
.s().uv(2, 1, 14, 3).noCull()
|
||||
.w().uv(2, 1, 14, 3).noCull()
|
||||
.e().uv(2, 1, 14, 3).noCull()
|
||||
.add(3, 0, 3, 13, 1, 13)
|
||||
.d().uv(3, 3, 13, 13).noCull()
|
||||
.u().uv(3, 3, 13, 13).noCull()
|
||||
.n().uv(3, 0, 13, 1).noCull()
|
||||
.s().uv(3, 0, 13, 1).noCull()
|
||||
.w().uv(3, 0, 13, 1).noCull()
|
||||
.e().uv(3, 0, 13, 1).noCull()
|
||||
;
|
||||
|
||||
public BlockDragonEgg()
|
||||
{
|
||||
super(Material.dragonEgg);
|
||||
this.setBlockBounds(0.0625F, 0.0F, 0.0625F, 0.9375F, 1.0F, 0.9375F);
|
||||
}
|
||||
|
||||
public void onBlockAdded(WorldServer worldIn, BlockPos pos, State state)
|
||||
{
|
||||
worldIn.scheduleUpdate(pos, this, this.tickRate(worldIn, pos));
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when a neighboring block changes.
|
||||
*/
|
||||
public void onNeighborBlockChange(World worldIn, BlockPos pos, State state, Block neighborBlock)
|
||||
{
|
||||
worldIn.scheduleUpdate(pos, this, this.tickRate(worldIn, pos));
|
||||
}
|
||||
|
||||
public void updateTick(WorldServer worldIn, BlockPos pos, State state, Random rand)
|
||||
{
|
||||
if(Config.blockGravity)
|
||||
this.checkFall(worldIn, pos);
|
||||
}
|
||||
|
||||
private void checkFall(World worldIn, BlockPos pos)
|
||||
{
|
||||
if (BlockFalling.canFallInto(worldIn, pos.down()) && pos.getY() >= 0)
|
||||
{
|
||||
int i = 32;
|
||||
|
||||
if (!BlockFalling.fallInstantly && worldIn.isAreaLoaded(pos.add(-i, -i, -i), pos.add(i, i, i)))
|
||||
{
|
||||
worldIn.spawnEntityInWorld(new EntityFalling(worldIn, (double)((float)pos.getX() + 0.5F), (double)pos.getY(), (double)((float)pos.getZ() + 0.5F), this.getState()));
|
||||
}
|
||||
else
|
||||
{
|
||||
worldIn.setBlockToAir(pos);
|
||||
BlockPos blockpos;
|
||||
for(blockpos = pos; BlockFalling.canFallInto(worldIn, blockpos) && blockpos.getY() > 0; blockpos = blockpos.down()) {
|
||||
}
|
||||
if(blockpos != pos)
|
||||
blockpos = blockpos.up();
|
||||
if(blockpos.getY() > 0)
|
||||
worldIn.setState(blockpos, this.getState(), 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean onBlockActivated(World worldIn, BlockPos pos, State state, EntityNPC playerIn, Facing side, float hitX, float hitY, float hitZ)
|
||||
{
|
||||
this.teleport(worldIn, pos);
|
||||
return true;
|
||||
}
|
||||
|
||||
public void onBlockClicked(World worldIn, BlockPos pos, EntityNPC playerIn)
|
||||
{
|
||||
this.teleport(worldIn, pos);
|
||||
}
|
||||
|
||||
private void teleport(World worldIn, BlockPos pos)
|
||||
{
|
||||
State iblockstate = worldIn.getState(pos);
|
||||
|
||||
if (iblockstate.getBlock() == this)
|
||||
{
|
||||
for (int i = 0; i < 1000; ++i)
|
||||
{
|
||||
BlockPos blockpos = pos.add(worldIn.rand.zrange(16) - worldIn.rand.zrange(16), worldIn.rand.zrange(8) - worldIn.rand.zrange(8), worldIn.rand.zrange(16) - worldIn.rand.zrange(16));
|
||||
|
||||
if (worldIn.getState(blockpos).getBlock().material == Material.air)
|
||||
{
|
||||
if (worldIn.client)
|
||||
{
|
||||
for (int j = 0; j < 128; ++j)
|
||||
{
|
||||
double d0 = worldIn.rand.doublev();
|
||||
float f = (worldIn.rand.floatv() - 0.5F) * 0.2F;
|
||||
float f1 = (worldIn.rand.floatv() - 0.5F) * 0.2F;
|
||||
float f2 = (worldIn.rand.floatv() - 0.5F) * 0.2F;
|
||||
double d1 = (double)blockpos.getX() + (double)(pos.getX() - blockpos.getX()) * d0 + (worldIn.rand.doublev() - 0.5D) * 1.0D + 0.5D;
|
||||
double d2 = (double)blockpos.getY() + (double)(pos.getY() - blockpos.getY()) * d0 + worldIn.rand.doublev() * 1.0D - 0.5D;
|
||||
double d3 = (double)blockpos.getZ() + (double)(pos.getZ() - blockpos.getZ()) * d0 + (worldIn.rand.doublev() - 0.5D) * 1.0D + 0.5D;
|
||||
worldIn.spawnParticle(ParticleType.PORTAL, d1, d2, d3, (double)f, (double)f1, (double)f2);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
worldIn.setBlockToAir(pos);
|
||||
if(!Config.blockGravity) {
|
||||
BlockPos blockpos2;
|
||||
for(blockpos2 = blockpos; BlockFalling.canFallInto(worldIn, blockpos2) && blockpos2.getY() > 0; blockpos2 = blockpos2.down()) {
|
||||
}
|
||||
if(blockpos2 != blockpos)
|
||||
blockpos = blockpos2.up();
|
||||
}
|
||||
worldIn.setState(blockpos, iblockstate, 2);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* How many world ticks before ticking
|
||||
*/
|
||||
public int tickRate(World worldIn, BlockPos pos)
|
||||
{
|
||||
return 5;
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to determine ambient occlusion and culling when rebuilding chunks for render
|
||||
*/
|
||||
public boolean isOpaqueCube()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isFullCube()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean shouldSideBeRendered(IWorldAccess worldIn, BlockPos pos, Facing side)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// public Item getItem(World worldIn, BlockPos pos)
|
||||
// {
|
||||
// return null;
|
||||
// }
|
||||
|
||||
public ModelBlock getModel(String name, State state) {
|
||||
return dragon_egg;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue