base mod created
This commit is contained in:
@@ -0,0 +1,119 @@
|
||||
package net.minecraft.tileentity;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.init.SoundEvents;
|
||||
import net.minecraft.util.ITickable;
|
||||
import net.minecraft.util.SoundCategory;
|
||||
|
||||
public class TileEntityEnderChest extends TileEntity implements ITickable
|
||||
{
|
||||
public float lidAngle;
|
||||
/** The angle of the ender chest lid last tick */
|
||||
public float prevLidAngle;
|
||||
public int numPlayersUsing;
|
||||
private int ticksSinceSync;
|
||||
|
||||
/**
|
||||
* Like the old updateEntity(), except more generic.
|
||||
*/
|
||||
public void update()
|
||||
{
|
||||
if (++this.ticksSinceSync % 20 * 4 == 0)
|
||||
{
|
||||
this.world.addBlockEvent(this.pos, Blocks.ENDER_CHEST, 1, this.numPlayersUsing);
|
||||
}
|
||||
|
||||
this.prevLidAngle = this.lidAngle;
|
||||
int i = this.pos.getX();
|
||||
int j = this.pos.getY();
|
||||
int k = this.pos.getZ();
|
||||
float f = 0.1F;
|
||||
|
||||
if (this.numPlayersUsing > 0 && this.lidAngle == 0.0F)
|
||||
{
|
||||
double d0 = (double)i + 0.5D;
|
||||
double d1 = (double)k + 0.5D;
|
||||
this.world.playSound((EntityPlayer)null, d0, (double)j + 0.5D, d1, SoundEvents.BLOCK_ENDERCHEST_OPEN, SoundCategory.BLOCKS, 0.5F, this.world.rand.nextFloat() * 0.1F + 0.9F);
|
||||
}
|
||||
|
||||
if (this.numPlayersUsing == 0 && this.lidAngle > 0.0F || this.numPlayersUsing > 0 && this.lidAngle < 1.0F)
|
||||
{
|
||||
float f2 = this.lidAngle;
|
||||
|
||||
if (this.numPlayersUsing > 0)
|
||||
{
|
||||
this.lidAngle += 0.1F;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.lidAngle -= 0.1F;
|
||||
}
|
||||
|
||||
if (this.lidAngle > 1.0F)
|
||||
{
|
||||
this.lidAngle = 1.0F;
|
||||
}
|
||||
|
||||
float f1 = 0.5F;
|
||||
|
||||
if (this.lidAngle < 0.5F && f2 >= 0.5F)
|
||||
{
|
||||
double d3 = (double)i + 0.5D;
|
||||
double d2 = (double)k + 0.5D;
|
||||
this.world.playSound((EntityPlayer)null, d3, (double)j + 0.5D, d2, SoundEvents.BLOCK_ENDERCHEST_CLOSE, SoundCategory.BLOCKS, 0.5F, this.world.rand.nextFloat() * 0.1F + 0.9F);
|
||||
}
|
||||
|
||||
if (this.lidAngle < 0.0F)
|
||||
{
|
||||
this.lidAngle = 0.0F;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean receiveClientEvent(int id, int type)
|
||||
{
|
||||
if (id == 1)
|
||||
{
|
||||
this.numPlayersUsing = type;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return super.receiveClientEvent(id, type);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* invalidates a tile entity
|
||||
*/
|
||||
public void invalidate()
|
||||
{
|
||||
this.updateContainingBlockInfo();
|
||||
super.invalidate();
|
||||
}
|
||||
|
||||
public void openChest()
|
||||
{
|
||||
++this.numPlayersUsing;
|
||||
this.world.addBlockEvent(this.pos, Blocks.ENDER_CHEST, 1, this.numPlayersUsing);
|
||||
}
|
||||
|
||||
public void closeChest()
|
||||
{
|
||||
--this.numPlayersUsing;
|
||||
this.world.addBlockEvent(this.pos, Blocks.ENDER_CHEST, 1, this.numPlayersUsing);
|
||||
}
|
||||
|
||||
public boolean canBeUsed(EntityPlayer player)
|
||||
{
|
||||
if (this.world.getTileEntity(this.pos) != this)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return player.getDistanceSq((double)this.pos.getX() + 0.5D, (double)this.pos.getY() + 0.5D, (double)this.pos.getZ() + 0.5D) <= 64.0D;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user