1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
package ihl.explosion;
import ic2.core.IC2;
import ihl.IHLMod;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetworkManager;
import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
import net.minecraft.tileentity.TileEntity;
public class PileTileEntity extends TileEntity
{
public ItemStack content = new ItemStack(Blocks.sandstone);
private boolean firstTick = true;
@Override
public boolean canUpdate()
{
return IC2.platform.isRendering();
}
@Override
public void updateEntity()
{
if(firstTick && this.content!=null)
{
if(this.worldObj.isRemote)
{
IHLMod.proxy.requestTileEntityInitdataFromClientToServer(xCoord, yCoord, zCoord);
}
else
{
checkAndFall();
}
firstTick = false;
}
}
public void setContent(ItemStack other)
{
this.content=other;
}
public boolean checkAndFall()
{
Block underblock = this.worldObj.getBlock(xCoord, yCoord-1, zCoord);
if(underblock.isAir(worldObj, xCoord, yCoord-1, zCoord) || underblock==Blocks.air || underblock.getCollisionBoundingBoxFromPool(worldObj, xCoord, yCoord-1, zCoord)==null)
{
IHLEntityFallingPile fallingPile = new IHLEntityFallingPile(worldObj);
fallingPile.setPosition(xCoord+0.5d, yCoord+0.5d, zCoord+0.5d);
fallingPile.setEntityItemStack(content);
this.worldObj.setBlockToAir(xCoord, yCoord, zCoord);
this.worldObj.spawnEntityInWorld(fallingPile);
return false;
}
return true;
}
@Override
public void readFromNBT(NBTTagCompound nbttagcompound)
{
super.readFromNBT(nbttagcompound);
this.content = ItemStack.loadItemStackFromNBT(nbttagcompound.getCompoundTag("content"));
}
@Override
public void writeToNBT(NBTTagCompound nbttagcompound)
{
super.writeToNBT(nbttagcompound);
NBTTagCompound contentNBT = new NBTTagCompound();
this.content.writeToNBT(contentNBT);
nbttagcompound.setTag("content", contentNBT);
}
public void updateBlockRender()
{
Minecraft.getMinecraft().renderGlobal.markBlockForRenderUpdate(xCoord, yCoord, zCoord);
}
@Override
public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt)
{
this.readFromNBT(pkt.func_148857_g());
Minecraft.getMinecraft().renderGlobal.markBlockForRenderUpdate(xCoord, yCoord, zCoord);
}
}
|