-
Notifications
You must be signed in to change notification settings - Fork 1
/
TileEntityHumanEgg.java
95 lines (76 loc) · 2.73 KB
/
TileEntityHumanEgg.java
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
92
93
94
95
package net.minecraft.src;
import java.util.Random;
public class TileEntityHumanEgg extends TileEntity{
public TileEntityHumanEgg(){
timeStarted = 0;
}
int timeout = 0;
@Override
public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt);
size = nbt.getLong("size");
zapped = nbt.getBoolean("zapped");
}
@Override
public void writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt);
nbt.setLong("size", size);
nbt.setBoolean("zapped", zapped);
}
private float getSoundPitch()
{
return (r.nextFloat() - r.nextFloat()) * 0.2F + 1.0F;
}
public long getDiff(){
return size - worldObj.getWorldTime();
}
public float percentDone(){
return (float)((48000d-(double)getDiff())/48000d);
}
//20MC 1IRL
@Override
public void updateEntity() {
if(zapped){
if(timeout-- < 1){
if(r.nextFloat() < .1){
worldObj.playSoundEffect(((double)xCoord)+.5D, ((double)yCoord)+.5D, ((double)zCoord)+.5D, "step.gravel", .8f*percentDone(), getSoundPitch());
spawnParticles();
}
timeout = 100;
}
if(worldObj.getWorldTime()>size){
ModLoader.getMinecraftInstance().sndManager.playSound(Block.blocksList[mod_MyPeople.humanEgg.blockID].stepSound.getStepSound(), (float)xCoord + 0.5F, (float)yCoord + 0.5F, (float)zCoord + 0.5F, (Block.blocksList[mod_MyPeople.humanEgg.blockID].stepSound.getVolume() + 1.0F) / 8F, Block.blocksList[mod_MyPeople.humanEgg.blockID].stepSound.getPitch() * 0.5F);
worldObj.setBlockWithNotify(xCoord, yCoord, zCoord, 0);
ModLoader.getMinecraftInstance().displayGuiScreen(new GuiChooseName(xCoord, yCoord, zCoord));
}
if(timeStarted < System.currentTimeMillis()){
timeStarted += 1000;
size += (1f-(1f*worldObj.getLightBrightness(xCoord, yCoord, zCoord)))*20;
if(timeStarted +1000 < System.currentTimeMillis()){
timeStarted = System.currentTimeMillis();
}
}
}
}
private void spawnParticles() {
int i = (int)Math.floor(percentDone()*50d)+1;
if(i>0){
for(int a = 0; a < r.nextInt(i)+i; a++){
worldObj.spawnParticle((new StringBuilder()).append("tilecrack_").append(mod_MyPeople.humanEgg.blockID).toString(), (double)xCoord + ((r.nextFloat()*2d)-1d)/2d+.5d, (double)yCoord + ((r.nextFloat()))/2d+.2d, (double)zCoord + ((r.nextFloat()*2d)-1d)/2d+.5d, ((r.nextFloat()*2d)-1d), r.nextFloat(), ((r.nextFloat()*2d)-1d));
}
}
}
long timeStarted = 0;
public void onPowered() {
if(zapped == false){
zapped = true;
size = worldObj.getWorldTime() + 48000;
for(int a = 0; a < 6; a++){
worldObj.playSoundEffect(((double)xCoord)+.5D, ((double)yCoord)+.5D, ((double)zCoord)+.5D, "random.fizz", 2f, getSoundPitch());
}
}
}
Random r = new Random();
boolean zapped = false;
long size = 0;
}