Adding all Entities into CraftBukkit.
These are needed to properly allow for determining class type, in accordance with current practice.
Dieser Commit ist enthalten in:
Ursprung
5f2c8108b7
Commit
5209e17e1b
36
src/main/java/net/minecraft/server/EntityAnimals.java
Normale Datei
36
src/main/java/net/minecraft/server/EntityAnimals.java
Normale Datei
@ -0,0 +1,36 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
public abstract class EntityAnimals extends EntityCreature implements IAnimals {
|
||||
|
||||
public EntityAnimals(World world) {
|
||||
super(world);
|
||||
}
|
||||
|
||||
protected float a(int i, int j, int k) {
|
||||
if (l.a(i, j - 1, k) == Block.u.bi) {
|
||||
return 10F;
|
||||
} else {
|
||||
return l.l(i, j, k) - 0.5F;
|
||||
}
|
||||
}
|
||||
|
||||
public void a(NBTTagCompound nbttagcompound) {
|
||||
super.a(nbttagcompound);
|
||||
}
|
||||
|
||||
public void b(NBTTagCompound nbttagcompound) {
|
||||
super.b(nbttagcompound);
|
||||
}
|
||||
|
||||
public boolean b() {
|
||||
int i = MathHelper.b(p);
|
||||
int j = MathHelper.b(z.b);
|
||||
int k = MathHelper.b(r);
|
||||
|
||||
return l.a(i, j - 1, k) == Block.u.bi && l.j(i, j, k) > 8 && super.b();
|
||||
}
|
||||
|
||||
public int c() {
|
||||
return 120;
|
||||
}
|
||||
}
|
78
src/main/java/net/minecraft/server/EntityChicken.java
Normale Datei
78
src/main/java/net/minecraft/server/EntityChicken.java
Normale Datei
@ -0,0 +1,78 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class EntityChicken extends EntityAnimals {
|
||||
|
||||
public boolean a;
|
||||
public float b;
|
||||
public float c;
|
||||
public float f;
|
||||
public float ak;
|
||||
public float al;
|
||||
public int am;
|
||||
|
||||
public EntityChicken(World world) {
|
||||
super(world);
|
||||
a = false;
|
||||
b = 0.0F;
|
||||
c = 0.0F;
|
||||
al = 1.0F;
|
||||
aP = "/mob/chicken.png";
|
||||
a(0.3F, 0.4F);
|
||||
aZ = 4;
|
||||
am = W.nextInt(6000) + 6000;
|
||||
}
|
||||
|
||||
public void o() {
|
||||
super.o();
|
||||
ak = b;
|
||||
f = c;
|
||||
c += ((float) ((double) (A ? -1 : 4) * 0.29999999999999999D));
|
||||
if (c < 0.0F) {
|
||||
c = 0.0F;
|
||||
}
|
||||
if (c > 1.0F) {
|
||||
c = 1.0F;
|
||||
}
|
||||
if (!A && al < 1.0F) {
|
||||
al = 1.0F;
|
||||
}
|
||||
al *= 0.90000000000000002D;
|
||||
if (!A && t < 0.0D) {
|
||||
t *= 0.59999999999999998D;
|
||||
}
|
||||
b += al * 2.0F;
|
||||
if (!l.z && --am <= 0) {
|
||||
l.a(((Entity) (this)), "mob.chickenplop", 1.0F, (W.nextFloat() - W.nextFloat()) * 0.2F + 1.0F);
|
||||
a(Item.aN.ba, 1);
|
||||
am = W.nextInt(6000) + 6000;
|
||||
}
|
||||
}
|
||||
|
||||
protected void a(float f1) {}
|
||||
|
||||
public void a(NBTTagCompound nbttagcompound) {
|
||||
super.a(nbttagcompound);
|
||||
}
|
||||
|
||||
public void b(NBTTagCompound nbttagcompound) {
|
||||
super.b(nbttagcompound);
|
||||
}
|
||||
|
||||
protected String e() {
|
||||
return "mob.chicken";
|
||||
}
|
||||
|
||||
protected String f() {
|
||||
return "mob.chickenhurt";
|
||||
}
|
||||
|
||||
protected String g() {
|
||||
return "mob.chickenhurt";
|
||||
}
|
||||
|
||||
protected int h() {
|
||||
return Item.J.ba;
|
||||
}
|
||||
}
|
49
src/main/java/net/minecraft/server/EntityCow.java
Normale Datei
49
src/main/java/net/minecraft/server/EntityCow.java
Normale Datei
@ -0,0 +1,49 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
public class EntityCow extends EntityAnimals {
|
||||
|
||||
public EntityCow(World world) {
|
||||
super(world);
|
||||
aP = "/mob/cow.png";
|
||||
a(0.9F, 1.3F);
|
||||
}
|
||||
|
||||
public void a(NBTTagCompound nbttagcompound) {
|
||||
super.a(nbttagcompound);
|
||||
}
|
||||
|
||||
public void b(NBTTagCompound nbttagcompound) {
|
||||
super.b(nbttagcompound);
|
||||
}
|
||||
|
||||
protected String e() {
|
||||
return "mob.cow";
|
||||
}
|
||||
|
||||
protected String f() {
|
||||
return "mob.cowhurt";
|
||||
}
|
||||
|
||||
protected String g() {
|
||||
return "mob.cowhurt";
|
||||
}
|
||||
|
||||
protected float i() {
|
||||
return 0.4F;
|
||||
}
|
||||
|
||||
protected int h() {
|
||||
return Item.aD.ba;
|
||||
}
|
||||
|
||||
public boolean a(EntityPlayer entityplayer) {
|
||||
ItemStack itemstack = entityplayer.an.e();
|
||||
|
||||
if (itemstack != null && itemstack.c == Item.au.ba) {
|
||||
entityplayer.an.a(entityplayer.an.c, new ItemStack(Item.aE));
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
149
src/main/java/net/minecraft/server/EntityCreature.java
Normale Datei
149
src/main/java/net/minecraft/server/EntityCreature.java
Normale Datei
@ -0,0 +1,149 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class EntityCreature extends EntityLiving {
|
||||
|
||||
private PathEntity a;
|
||||
protected Entity d;
|
||||
protected boolean e;
|
||||
|
||||
public EntityCreature(World world) {
|
||||
super(world);
|
||||
e = false;
|
||||
}
|
||||
|
||||
protected void d() {
|
||||
e = false;
|
||||
float f = 16F;
|
||||
|
||||
if (d == null) {
|
||||
d = l();
|
||||
if (d != null) {
|
||||
a = l.a(((Entity) (this)), d, f);
|
||||
}
|
||||
} else if (!d.B()) {
|
||||
d = null;
|
||||
} else {
|
||||
float f1 = d.a(((Entity) (this)));
|
||||
|
||||
if (i(d)) {
|
||||
a(d, f1);
|
||||
}
|
||||
}
|
||||
if (!e && d != null && (a == null || W.nextInt(20) == 0)) {
|
||||
a = l.a(((Entity) (this)), d, f);
|
||||
} else if (a == null && W.nextInt(80) == 0 || W.nextInt(80) == 0) {
|
||||
boolean flag = false;
|
||||
int j = -1;
|
||||
int k = -1;
|
||||
int i1 = -1;
|
||||
float f2 = -99999F;
|
||||
|
||||
for (int j1 = 0; j1 < 10; j1++) {
|
||||
int k1 = MathHelper.b((p + (double) W.nextInt(13)) - 6D);
|
||||
int l1 = MathHelper.b((q + (double) W.nextInt(7)) - 3D);
|
||||
int i2 = MathHelper.b((r + (double) W.nextInt(13)) - 6D);
|
||||
float f3 = a(k1, l1, i2);
|
||||
|
||||
if (f3 > f2) {
|
||||
f2 = f3;
|
||||
j = k1;
|
||||
k = l1;
|
||||
i1 = i2;
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (flag) {
|
||||
a = l.a(((Entity) (this)), j, k, i1, 10F);
|
||||
}
|
||||
}
|
||||
int i = MathHelper.b(z.b);
|
||||
boolean flag1 = v();
|
||||
boolean flag2 = x();
|
||||
|
||||
w = 0.0F;
|
||||
if (a == null || W.nextInt(100) == 0) {
|
||||
super.d();
|
||||
a = null;
|
||||
return;
|
||||
}
|
||||
Vec3D vec3d = a.a(((Entity) (this)));
|
||||
|
||||
for (double d1 = I * 2.0F; vec3d != null && vec3d.d(p, vec3d.b, r) < d1 * d1;) {
|
||||
a.a();
|
||||
if (a.b()) {
|
||||
vec3d = null;
|
||||
a = null;
|
||||
} else {
|
||||
vec3d = a.a(((Entity) (this)));
|
||||
}
|
||||
}
|
||||
|
||||
bA = false;
|
||||
if (vec3d != null) {
|
||||
double d2 = vec3d.a - p;
|
||||
double d3 = vec3d.c - r;
|
||||
double d4 = vec3d.b - (double) i;
|
||||
float f4 = (float) ((Math.atan2(d3, d2) * 180D) / 3.1415927410125732D) - 90F;
|
||||
float f5 = f4 - v;
|
||||
|
||||
by = bC;
|
||||
for (; f5 < -180F; f5 += 360F) {
|
||||
;
|
||||
}
|
||||
for (; f5 >= 180F; f5 -= 360F) {
|
||||
;
|
||||
}
|
||||
if (f5 > 30F) {
|
||||
f5 = 30F;
|
||||
}
|
||||
if (f5 < -30F) {
|
||||
f5 = -30F;
|
||||
}
|
||||
v += f5;
|
||||
if (e && d != null) {
|
||||
double d5 = d.p - p;
|
||||
double d6 = d.r - r;
|
||||
float f7 = v;
|
||||
|
||||
v = (float) ((Math.atan2(d6, d5) * 180D) / 3.1415927410125732D) - 90F;
|
||||
float f6 = (((f7 - v) + 90F) * 3.141593F) / 180F;
|
||||
|
||||
bx = -MathHelper.a(f6) * by * 1.0F;
|
||||
by = MathHelper.b(f6) * by * 1.0F;
|
||||
}
|
||||
if (d4 > 0.0D) {
|
||||
bA = true;
|
||||
}
|
||||
}
|
||||
if (d != null) {
|
||||
b(d, 30F);
|
||||
}
|
||||
if (B) {
|
||||
bA = true;
|
||||
}
|
||||
if (W.nextFloat() < 0.8F && (flag1 || flag2)) {
|
||||
bA = true;
|
||||
}
|
||||
}
|
||||
|
||||
protected void a(Entity entity, float f) {}
|
||||
|
||||
protected float a(int i, int j, int k) {
|
||||
return 0.0F;
|
||||
}
|
||||
|
||||
protected Entity l() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean b() {
|
||||
int i = MathHelper.b(p);
|
||||
int j = MathHelper.b(z.b);
|
||||
int k = MathHelper.b(r);
|
||||
|
||||
return super.b() && a(i, j, k) >= 0.0F;
|
||||
}
|
||||
}
|
96
src/main/java/net/minecraft/server/EntityCreeper.java
Normale Datei
96
src/main/java/net/minecraft/server/EntityCreeper.java
Normale Datei
@ -0,0 +1,96 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class EntityCreeper extends EntityMobs {
|
||||
|
||||
int a;
|
||||
int b;
|
||||
|
||||
public EntityCreeper(World world) {
|
||||
super(world);
|
||||
aP = "/mob/creeper.png";
|
||||
}
|
||||
|
||||
protected void a() {
|
||||
super.a();
|
||||
af.a(16, ((Byte.valueOf((byte) -1))));
|
||||
}
|
||||
|
||||
public void a(NBTTagCompound nbttagcompound) {
|
||||
super.a(nbttagcompound);
|
||||
}
|
||||
|
||||
public void b(NBTTagCompound nbttagcompound) {
|
||||
super.b(nbttagcompound);
|
||||
}
|
||||
|
||||
public void b_() {
|
||||
b = a;
|
||||
if (l.z) {
|
||||
int i = K();
|
||||
|
||||
if (i > 0 && a == 0) {
|
||||
l.a(((Entity) (this)), "random.fuse", 1.0F, 0.5F);
|
||||
}
|
||||
a += i;
|
||||
if (a < 0) {
|
||||
a = 0;
|
||||
}
|
||||
if (a >= 30) {
|
||||
a = 30;
|
||||
}
|
||||
}
|
||||
super.b_();
|
||||
}
|
||||
|
||||
protected String f() {
|
||||
return "mob.creeper";
|
||||
}
|
||||
|
||||
protected String g() {
|
||||
return "mob.creeperdeath";
|
||||
}
|
||||
|
||||
public void f(Entity entity) {
|
||||
super.f(entity);
|
||||
if (entity instanceof EntitySkeleton) {
|
||||
a(Item.aY.ba + W.nextInt(2), 1);
|
||||
}
|
||||
}
|
||||
|
||||
protected void a(Entity entity, float f1) {
|
||||
int i = K();
|
||||
|
||||
if (i <= 0 && f1 < 3F || i > 0 && f1 < 7F) {
|
||||
if (a == 0) {
|
||||
l.a(((Entity) (this)), "random.fuse", 1.0F, 0.5F);
|
||||
}
|
||||
a(1);
|
||||
a++;
|
||||
if (a >= 30) {
|
||||
l.a(((Entity) (this)), p, q, r, 3F);
|
||||
q();
|
||||
}
|
||||
e = true;
|
||||
} else {
|
||||
a(-1);
|
||||
a--;
|
||||
if (a < 0) {
|
||||
a = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected int h() {
|
||||
return Item.K.ba;
|
||||
}
|
||||
|
||||
private int K() {
|
||||
return ((int) (af.a(16)));
|
||||
}
|
||||
|
||||
private void a(int i) {
|
||||
af.b(16, ((Byte.valueOf((byte) i))));
|
||||
}
|
||||
}
|
78
src/main/java/net/minecraft/server/EntityFallingSand.java
Normale Datei
78
src/main/java/net/minecraft/server/EntityFallingSand.java
Normale Datei
@ -0,0 +1,78 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
public class EntityFallingSand extends Entity {
|
||||
|
||||
public int a;
|
||||
public int b;
|
||||
|
||||
public EntityFallingSand(World world) {
|
||||
super(world);
|
||||
b = 0;
|
||||
}
|
||||
|
||||
public EntityFallingSand(World world, double d, double d1, double d2, int i) {
|
||||
super(world);
|
||||
b = 0;
|
||||
a = i;
|
||||
this.i = true;
|
||||
a(0.98F, 0.98F);
|
||||
H = J / 2.0F;
|
||||
a(d, d1, d2);
|
||||
s = 0.0D;
|
||||
t = 0.0D;
|
||||
u = 0.0D;
|
||||
M = false;
|
||||
m = d;
|
||||
n = d1;
|
||||
o = d2;
|
||||
}
|
||||
|
||||
protected void a() {}
|
||||
|
||||
public boolean c_() {
|
||||
return !G;
|
||||
}
|
||||
|
||||
public void b_() {
|
||||
if (a == 0) {
|
||||
q();
|
||||
return;
|
||||
}
|
||||
m = p;
|
||||
n = q;
|
||||
o = r;
|
||||
b++;
|
||||
t -= 0.039999999105930328D;
|
||||
c(s, t, u);
|
||||
s *= 0.98000001907348633D;
|
||||
t *= 0.98000001907348633D;
|
||||
u *= 0.98000001907348633D;
|
||||
int i = MathHelper.b(p);
|
||||
int j = MathHelper.b(q);
|
||||
int k = MathHelper.b(r);
|
||||
|
||||
if (l.a(i, j, k) == a) {
|
||||
l.e(i, j, k, 0);
|
||||
}
|
||||
if (A) {
|
||||
s *= 0.69999998807907104D;
|
||||
u *= 0.69999998807907104D;
|
||||
t *= -0.5D;
|
||||
q();
|
||||
if ((!l.a(a, i, j, k, true) || !l.e(i, j, k, a)) && !l.z) {
|
||||
a(a, 1);
|
||||
}
|
||||
} else if (b > 100 && !l.z) {
|
||||
a(a, 1);
|
||||
q();
|
||||
}
|
||||
}
|
||||
|
||||
protected void a(NBTTagCompound nbttagcompound) {
|
||||
nbttagcompound.a("Tile", (byte) a);
|
||||
}
|
||||
|
||||
protected void b(NBTTagCompound nbttagcompound) {
|
||||
a = nbttagcompound.b("Tile") & 0xff;
|
||||
}
|
||||
}
|
67
src/main/java/net/minecraft/server/EntityFlying.java
Normale Datei
67
src/main/java/net/minecraft/server/EntityFlying.java
Normale Datei
@ -0,0 +1,67 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
public class EntityFlying extends EntityLiving {
|
||||
|
||||
public EntityFlying(World world) {
|
||||
super(world);
|
||||
}
|
||||
|
||||
protected void a(float f) {}
|
||||
|
||||
public void c(float f, float f1) {
|
||||
if (v()) {
|
||||
a(f, f1, 0.02F);
|
||||
c(s, t, u);
|
||||
s *= 0.80000001192092896D;
|
||||
t *= 0.80000001192092896D;
|
||||
u *= 0.80000001192092896D;
|
||||
} else if (x()) {
|
||||
a(f, f1, 0.02F);
|
||||
c(s, t, u);
|
||||
s *= 0.5D;
|
||||
t *= 0.5D;
|
||||
u *= 0.5D;
|
||||
} else {
|
||||
float f2 = 0.91F;
|
||||
|
||||
if (A) {
|
||||
f2 = 0.5460001F;
|
||||
int i = l.a(MathHelper.b(p), MathHelper.b(z.b) - 1, MathHelper.b(r));
|
||||
|
||||
if (i > 0) {
|
||||
f2 = Block.m[i].bu * 0.91F;
|
||||
}
|
||||
}
|
||||
float f3 = 0.1627714F / (f2 * f2 * f2);
|
||||
|
||||
a(f, f1, A ? 0.1F * f3 : 0.02F);
|
||||
f2 = 0.91F;
|
||||
if (A) {
|
||||
f2 = 0.5460001F;
|
||||
int j = l.a(MathHelper.b(p), MathHelper.b(z.b) - 1, MathHelper.b(r));
|
||||
|
||||
if (j > 0) {
|
||||
f2 = Block.m[j].bu * 0.91F;
|
||||
}
|
||||
}
|
||||
c(s, t, u);
|
||||
s *= f2;
|
||||
t *= f2;
|
||||
u *= f2;
|
||||
}
|
||||
bl = bm;
|
||||
double d = p - m;
|
||||
double d1 = r - o;
|
||||
float f4 = MathHelper.a(d * d + d1 * d1) * 4F;
|
||||
|
||||
if (f4 > 1.0F) {
|
||||
f4 = 1.0F;
|
||||
}
|
||||
bm += (f4 - bm) * 0.4F;
|
||||
bn += bm;
|
||||
}
|
||||
|
||||
public boolean m() {
|
||||
return false;
|
||||
}
|
||||
}
|
145
src/main/java/net/minecraft/server/EntityGhast.java
Normale Datei
145
src/main/java/net/minecraft/server/EntityGhast.java
Normale Datei
@ -0,0 +1,145 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
public class EntityGhast extends EntityFlying implements IMobs {
|
||||
|
||||
public int a;
|
||||
public double b;
|
||||
public double c;
|
||||
public double d;
|
||||
private Entity ak;
|
||||
private int al;
|
||||
public int e;
|
||||
public int f;
|
||||
|
||||
public EntityGhast(World world) {
|
||||
super(world);
|
||||
a = 0;
|
||||
ak = null;
|
||||
al = 0;
|
||||
e = 0;
|
||||
f = 0;
|
||||
aP = "/mob/ghast.png";
|
||||
a(4F, 4F);
|
||||
ae = true;
|
||||
}
|
||||
|
||||
protected void d() {
|
||||
if (l.k == 0) {
|
||||
q();
|
||||
}
|
||||
e = f;
|
||||
double d1 = b - p;
|
||||
double d2 = c - q;
|
||||
double d3 = d - r;
|
||||
double d4 = MathHelper.a(d1 * d1 + d2 * d2 + d3 * d3);
|
||||
|
||||
if (d4 < 1.0D || d4 > 60D) {
|
||||
b = p + (double) ((W.nextFloat() * 2.0F - 1.0F) * 16F);
|
||||
c = q + (double) ((W.nextFloat() * 2.0F - 1.0F) * 16F);
|
||||
d = r + (double) ((W.nextFloat() * 2.0F - 1.0F) * 16F);
|
||||
}
|
||||
if (a-- <= 0) {
|
||||
a += W.nextInt(5) + 2;
|
||||
if (a(b, c, d, d4)) {
|
||||
s += (d1 / d4) * 0.10000000000000001D;
|
||||
t += (d2 / d4) * 0.10000000000000001D;
|
||||
u += (d3 / d4) * 0.10000000000000001D;
|
||||
} else {
|
||||
b = p;
|
||||
c = q;
|
||||
d = r;
|
||||
}
|
||||
}
|
||||
if (ak != null && ak.G) {
|
||||
ak = null;
|
||||
}
|
||||
if (ak == null || al-- <= 0) {
|
||||
ak = ((Entity) (l.a(((Entity) (this)), 100D)));
|
||||
if (ak != null) {
|
||||
al = 20;
|
||||
}
|
||||
}
|
||||
double d5 = 64D;
|
||||
|
||||
if (ak != null && ak.b(((Entity) (this))) < d5 * d5) {
|
||||
double d6 = ak.p - p;
|
||||
double d7 = (ak.z.b + (double) (ak.J / 2.0F)) - (q + (double) (J / 2.0F));
|
||||
double d8 = ak.r - r;
|
||||
|
||||
aI = v = (-(float) Math.atan2(d6, d8) * 180F) / 3.141593F;
|
||||
if (i(ak)) {
|
||||
if (f == 10) {
|
||||
l.a(((Entity) (this)), "mob.ghast.charge", i(), (W.nextFloat() - W.nextFloat()) * 0.2F + 1.0F);
|
||||
}
|
||||
f++;
|
||||
if (f == 20) {
|
||||
l.a(((Entity) (this)), "mob.ghast.fireball", i(), (W.nextFloat() - W.nextFloat()) * 0.2F + 1.0F);
|
||||
EntityFireball entityfireball = new EntityFireball(l, ((EntityLiving) (this)), d6, d7, d8);
|
||||
double d9 = 4D;
|
||||
Vec3D vec3d = c(1.0F);
|
||||
|
||||
entityfireball.p = p + vec3d.a * d9;
|
||||
entityfireball.q = q + (double) (J / 2.0F) + 0.5D;
|
||||
entityfireball.r = r + vec3d.c * d9;
|
||||
l.a(((Entity) (entityfireball)));
|
||||
f = -40;
|
||||
}
|
||||
} else if (f > 0) {
|
||||
f--;
|
||||
}
|
||||
} else {
|
||||
aI = v = (-(float) Math.atan2(s, u) * 180F) / 3.141593F;
|
||||
if (f > 0) {
|
||||
f--;
|
||||
}
|
||||
}
|
||||
aP = f <= 10 ? "/mob/ghast.png" : "/mob/ghast_fire.png";
|
||||
}
|
||||
|
||||
private boolean a(double d1, double d2, double d3, double d4) {
|
||||
double d5 = (b - p) / d4;
|
||||
double d6 = (c - q) / d4;
|
||||
double d7 = (d - r) / d4;
|
||||
AxisAlignedBB axisalignedbb = z.b();
|
||||
|
||||
for (int k = 1; (double) k < d4; k++) {
|
||||
axisalignedbb.d(d5, d6, d7);
|
||||
if (l.a(((Entity) (this)), axisalignedbb).size() > 0) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
protected String e() {
|
||||
return "mob.ghast.moan";
|
||||
}
|
||||
|
||||
protected String f() {
|
||||
return "mob.ghast.scream";
|
||||
}
|
||||
|
||||
protected String g() {
|
||||
return "mob.ghast.death";
|
||||
}
|
||||
|
||||
protected int h() {
|
||||
return Item.K.ba;
|
||||
}
|
||||
|
||||
protected float i() {
|
||||
return 10F;
|
||||
}
|
||||
|
||||
public boolean b() {
|
||||
return W.nextInt(20) == 0 && super.b() && l.k > 0;
|
||||
}
|
||||
|
||||
public int j() {
|
||||
return 1;
|
||||
}
|
||||
}
|
191
src/main/java/net/minecraft/server/EntityItem.java
Normale Datei
191
src/main/java/net/minecraft/server/EntityItem.java
Normale Datei
@ -0,0 +1,191 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class EntityItem extends Entity {
|
||||
|
||||
public ItemStack a;
|
||||
private int e;
|
||||
public int b;
|
||||
public int c;
|
||||
private int f;
|
||||
public float d;
|
||||
|
||||
public EntityItem(World world, double d1, double d2, double d3, ItemStack itemstack) {
|
||||
super(world);
|
||||
b = 0;
|
||||
f = 5;
|
||||
d = (float) (Math.random() * 3.1415926535897931D * 2D);
|
||||
a(0.25F, 0.25F);
|
||||
H = J / 2.0F;
|
||||
a(d1, d2, d3);
|
||||
a = itemstack;
|
||||
v = (float) (Math.random() * 360D);
|
||||
s = (float) (Math.random() * 0.20000000298023224D - 0.10000000149011612D);
|
||||
t = 0.20000000298023224D;
|
||||
u = (float) (Math.random() * 0.20000000298023224D - 0.10000000149011612D);
|
||||
M = false;
|
||||
}
|
||||
|
||||
public EntityItem(World world) {
|
||||
super(world);
|
||||
b = 0;
|
||||
f = 5;
|
||||
d = (float) (Math.random() * 3.1415926535897931D * 2D);
|
||||
a(0.25F, 0.25F);
|
||||
H = J / 2.0F;
|
||||
}
|
||||
|
||||
protected void a() {}
|
||||
|
||||
public void b_() {
|
||||
super.b_();
|
||||
if (c > 0) {
|
||||
c--;
|
||||
}
|
||||
m = p;
|
||||
n = q;
|
||||
o = r;
|
||||
t -= 0.039999999105930328D;
|
||||
if (l.c(MathHelper.b(p), MathHelper.b(q), MathHelper.b(r)) == Material.g) {
|
||||
t = 0.20000000298023224D;
|
||||
s = (W.nextFloat() - W.nextFloat()) * 0.2F;
|
||||
u = (W.nextFloat() - W.nextFloat()) * 0.2F;
|
||||
l.a(((Entity) (this)), "random.fizz", 0.4F, 2.0F + W.nextFloat() * 0.4F);
|
||||
}
|
||||
g(p, q, r);
|
||||
c(s, t, u);
|
||||
float f1 = 0.98F;
|
||||
|
||||
if (A) {
|
||||
f1 = 0.5880001F;
|
||||
int i = l.a(MathHelper.b(p), MathHelper.b(z.b) - 1, MathHelper.b(r));
|
||||
|
||||
if (i > 0) {
|
||||
f1 = Block.m[i].bu * 0.98F;
|
||||
}
|
||||
}
|
||||
s *= f1;
|
||||
t *= 0.98000001907348633D;
|
||||
u *= f1;
|
||||
if (A) {
|
||||
t *= -0.5D;
|
||||
}
|
||||
e++;
|
||||
b++;
|
||||
if (b >= 6000) {
|
||||
q();
|
||||
}
|
||||
}
|
||||
|
||||
public boolean v() {
|
||||
return l.a(z, Material.f, ((Entity) (this)));
|
||||
}
|
||||
|
||||
private boolean g(double d1, double d2, double d3) {
|
||||
int i = MathHelper.b(d1);
|
||||
int j = MathHelper.b(d2);
|
||||
int k = MathHelper.b(d3);
|
||||
double d4 = d1 - (double) i;
|
||||
double d5 = d2 - (double) j;
|
||||
double d6 = d3 - (double) k;
|
||||
|
||||
if (Block.o[l.a(i, j, k)]) {
|
||||
boolean flag = !Block.o[l.a(i - 1, j, k)];
|
||||
boolean flag1 = !Block.o[l.a(i + 1, j, k)];
|
||||
boolean flag2 = !Block.o[l.a(i, j - 1, k)];
|
||||
boolean flag3 = !Block.o[l.a(i, j + 1, k)];
|
||||
boolean flag4 = !Block.o[l.a(i, j, k - 1)];
|
||||
boolean flag5 = !Block.o[l.a(i, j, k + 1)];
|
||||
byte byte0 = -1;
|
||||
double d7 = 9999D;
|
||||
|
||||
if (flag && d4 < d7) {
|
||||
d7 = d4;
|
||||
byte0 = 0;
|
||||
}
|
||||
if (flag1 && 1.0D - d4 < d7) {
|
||||
d7 = 1.0D - d4;
|
||||
byte0 = 1;
|
||||
}
|
||||
if (flag2 && d5 < d7) {
|
||||
d7 = d5;
|
||||
byte0 = 2;
|
||||
}
|
||||
if (flag3 && 1.0D - d5 < d7) {
|
||||
d7 = 1.0D - d5;
|
||||
byte0 = 3;
|
||||
}
|
||||
if (flag4 && d6 < d7) {
|
||||
d7 = d6;
|
||||
byte0 = 4;
|
||||
}
|
||||
if (flag5 && 1.0D - d6 < d7) {
|
||||
double d8 = 1.0D - d6;
|
||||
|
||||
byte0 = 5;
|
||||
}
|
||||
float f1 = W.nextFloat() * 0.2F + 0.1F;
|
||||
|
||||
if (byte0 == 0) {
|
||||
s = -f1;
|
||||
}
|
||||
if (byte0 == 1) {
|
||||
s = f1;
|
||||
}
|
||||
if (byte0 == 2) {
|
||||
t = -f1;
|
||||
}
|
||||
if (byte0 == 3) {
|
||||
t = f1;
|
||||
}
|
||||
if (byte0 == 4) {
|
||||
u = -f1;
|
||||
}
|
||||
if (byte0 == 5) {
|
||||
u = f1;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
protected void b(int i) {
|
||||
a(((Entity) (null)), i);
|
||||
}
|
||||
|
||||
public boolean a(Entity entity, int i) {
|
||||
y();
|
||||
f -= i;
|
||||
if (f <= 0) {
|
||||
q();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void a(NBTTagCompound nbttagcompound) {
|
||||
nbttagcompound.a("Health", (byte) f);
|
||||
nbttagcompound.a("Age", (short) b);
|
||||
nbttagcompound.a("Item", a.a(new NBTTagCompound()));
|
||||
}
|
||||
|
||||
public void b(NBTTagCompound nbttagcompound) {
|
||||
f = nbttagcompound.c("Health") & 0xff;
|
||||
b = ((int) (nbttagcompound.c("Age")));
|
||||
NBTTagCompound nbttagcompound1 = nbttagcompound.j("Item");
|
||||
|
||||
a = new ItemStack(nbttagcompound1);
|
||||
}
|
||||
|
||||
public void b(EntityPlayer entityplayer) {
|
||||
if (l.z) {
|
||||
return;
|
||||
}
|
||||
int i = a.a;
|
||||
|
||||
if (c == 0 && entityplayer.an.a(a)) {
|
||||
l.a(((Entity) (this)), "random.pop", 0.2F, ((W.nextFloat() - W.nextFloat()) * 0.7F + 1.0F) * 2.0F);
|
||||
entityplayer.c(((Entity) (this)), i);
|
||||
q();
|
||||
}
|
||||
}
|
||||
}
|
100
src/main/java/net/minecraft/server/EntityList.java
Normale Datei
100
src/main/java/net/minecraft/server/EntityList.java
Normale Datei
@ -0,0 +1,100 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
import java.io.PrintStream;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class EntityList {
|
||||
|
||||
private static Map a = new HashMap();
|
||||
private static Map b = new HashMap();
|
||||
private static Map c = new HashMap();
|
||||
private static Map d = new HashMap();
|
||||
|
||||
public EntityList() {}
|
||||
|
||||
private static void a(Class class1, String s, int i) {
|
||||
a.put(((s)), ((class1)));
|
||||
b.put(((class1)), ((s)));
|
||||
c.put(((Integer.valueOf(i))), ((class1)));
|
||||
d.put(((class1)), ((Integer.valueOf(i))));
|
||||
}
|
||||
|
||||
public static Entity a(String s, World world) {
|
||||
Entity entity = null;
|
||||
|
||||
try {
|
||||
Class class1 = (Class) a.get(((s)));
|
||||
|
||||
if (class1 != null) {
|
||||
entity = (Entity) class1.getConstructor(new Class[] {
|
||||
net.minecraft.server.World.class
|
||||
}).newInstance(new Object[] {
|
||||
world
|
||||
});
|
||||
}
|
||||
} catch (Exception exception) {
|
||||
exception.printStackTrace();
|
||||
}
|
||||
return entity;
|
||||
}
|
||||
|
||||
public static Entity a(NBTTagCompound nbttagcompound, World world) {
|
||||
Entity entity = null;
|
||||
|
||||
try {
|
||||
Class class1 = (Class) a.get(((nbttagcompound.h("id"))));
|
||||
|
||||
if (class1 != null) {
|
||||
entity = (Entity) class1.getConstructor(new Class[] {
|
||||
net.minecraft.server.World.class
|
||||
}).newInstance(new Object[] {
|
||||
world
|
||||
});
|
||||
}
|
||||
} catch (Exception exception) {
|
||||
exception.printStackTrace();
|
||||
}
|
||||
if (entity != null) {
|
||||
entity.e(nbttagcompound);
|
||||
} else {
|
||||
System.out.println((new StringBuilder()).append("Skipping Entity with id ").append(nbttagcompound.h("id")).toString());
|
||||
}
|
||||
return entity;
|
||||
}
|
||||
|
||||
public static int a(Entity entity) {
|
||||
return ((Integer) d.get(((((entity)).getClass())))).intValue();
|
||||
}
|
||||
|
||||
public static String b(Entity entity) {
|
||||
return (String) b.get(((((entity)).getClass())));
|
||||
}
|
||||
|
||||
static {
|
||||
a(net.minecraft.server.EntityArrow.class, "Arrow", 10);
|
||||
a(net.minecraft.server.EntitySnowball.class, "Snowball", 11);
|
||||
a(net.minecraft.server.EntityItem.class, "Item", 1);
|
||||
a(net.minecraft.server.EntityPainting.class, "Painting", 9);
|
||||
a(net.minecraft.server.EntityLiving.class, "Mob", 48);
|
||||
a(net.minecraft.server.EntityMobs.class, "Monster", 49);
|
||||
a(net.minecraft.server.EntityCreeper.class, "Creeper", 50);
|
||||
a(net.minecraft.server.EntitySkeleton.class, "Skeleton", 51);
|
||||
a(net.minecraft.server.EntitySpider.class, "Spider", 52);
|
||||
a(net.minecraft.server.EntityZombieSimple.class, "Giant", 53);
|
||||
a(net.minecraft.server.EntityZombie.class, "Zombie", 54);
|
||||
a(net.minecraft.server.EntitySlime.class, "Slime", 55);
|
||||
a(net.minecraft.server.EntityGhast.class, "Ghast", 56);
|
||||
a(net.minecraft.server.EntityPigZombie.class, "PigZombie", 57);
|
||||
a(net.minecraft.server.EntityPig.class, "Pig", 90);
|
||||
a(net.minecraft.server.EntitySheep.class, "Sheep", 91);
|
||||
a(net.minecraft.server.EntityCow.class, "Cow", 92);
|
||||
a(net.minecraft.server.EntityChicken.class, "Chicken", 93);
|
||||
a(net.minecraft.server.EntitySquid.class, "Squid", 94);
|
||||
a(net.minecraft.server.EntityTNTPrimed.class, "PrimedTnt", 20);
|
||||
a(net.minecraft.server.EntityFallingSand.class, "FallingSand", 21);
|
||||
a(net.minecraft.server.EntityMinecart.class, "Minecart", 40);
|
||||
a(net.minecraft.server.EntityBoat.class, "Boat", 41);
|
||||
}
|
||||
}
|
723
src/main/java/net/minecraft/server/EntityLiving.java
Normale Datei
723
src/main/java/net/minecraft/server/EntityLiving.java
Normale Datei
@ -0,0 +1,723 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
public abstract class EntityLiving extends Entity {
|
||||
|
||||
public int aF;
|
||||
public float aG;
|
||||
public float aH;
|
||||
public float aI;
|
||||
public float aJ;
|
||||
protected float aK;
|
||||
protected float aL;
|
||||
protected float aM;
|
||||
protected float aN;
|
||||
protected boolean aO;
|
||||
protected String aP;
|
||||
protected boolean aQ;
|
||||
protected float aR;
|
||||
protected String aS;
|
||||
protected float aT;
|
||||
protected int aU;
|
||||
protected float aV;
|
||||
public boolean aW;
|
||||
public float aX;
|
||||
public float aY;
|
||||
public int aZ;
|
||||
public int ba;
|
||||
private int a;
|
||||
public int bb;
|
||||
public int bc;
|
||||
public float bd;
|
||||
public int be;
|
||||
public int bf;
|
||||
public float bg;
|
||||
public float bh;
|
||||
protected boolean bi;
|
||||
public int bj;
|
||||
public float bk;
|
||||
public float bl;
|
||||
public float bm;
|
||||
public float bn;
|
||||
protected int bo;
|
||||
protected double bp;
|
||||
protected double bq;
|
||||
protected double br;
|
||||
protected double bs;
|
||||
protected double bt;
|
||||
float bu;
|
||||
protected int bv;
|
||||
protected int bw;
|
||||
protected float bx;
|
||||
protected float by;
|
||||
protected float bz;
|
||||
protected boolean bA;
|
||||
protected float bB;
|
||||
protected float bC;
|
||||
private Entity b;
|
||||
private int c;
|
||||
|
||||
public EntityLiving(World world) {
|
||||
super(world);
|
||||
aF = 20;
|
||||
aI = 0.0F;
|
||||
aJ = 0.0F;
|
||||
aO = true;
|
||||
aP = "/mob/char.png";
|
||||
aQ = true;
|
||||
aR = 0.0F;
|
||||
aS = null;
|
||||
aT = 1.0F;
|
||||
aU = 0;
|
||||
aV = 0.0F;
|
||||
aW = false;
|
||||
bd = 0.0F;
|
||||
be = 0;
|
||||
bf = 0;
|
||||
bi = false;
|
||||
bj = -1;
|
||||
bk = (float) (Math.random() * 0.89999997615814209D + 0.10000000149011612D);
|
||||
bu = 0.0F;
|
||||
bv = 0;
|
||||
bw = 0;
|
||||
bA = false;
|
||||
bB = 0.0F;
|
||||
bC = 0.7F;
|
||||
c = 0;
|
||||
aZ = 10;
|
||||
i = true;
|
||||
aH = (float) (Math.random() + 1.0D) * 0.01F;
|
||||
a(p, q, r);
|
||||
aG = (float) Math.random() * 12398F;
|
||||
v = (float) (Math.random() * 3.1415927410125732D * 2D);
|
||||
S = 0.5F;
|
||||
}
|
||||
|
||||
protected void a() {}
|
||||
|
||||
public boolean i(Entity entity) {
|
||||
return l.a(Vec3D.b(p, q + (double) w(), r), Vec3D.b(entity.p, entity.q + (double) entity.w(), entity.r)) == null;
|
||||
}
|
||||
|
||||
public boolean c_() {
|
||||
return !G;
|
||||
}
|
||||
|
||||
public boolean z() {
|
||||
return !G;
|
||||
}
|
||||
|
||||
public float w() {
|
||||
return J * 0.85F;
|
||||
}
|
||||
|
||||
public int c() {
|
||||
return 80;
|
||||
}
|
||||
|
||||
public void r() {
|
||||
aX = aY;
|
||||
super.r();
|
||||
if (W.nextInt(1000) < a++) {
|
||||
a = -c();
|
||||
String s = e();
|
||||
|
||||
if (s != null) {
|
||||
this.l.a(((Entity) (this)), s, i(), (W.nextFloat() - W.nextFloat()) * 0.2F + 1.0F);
|
||||
}
|
||||
}
|
||||
if (B() && C()) {
|
||||
a(((Entity) (null)), 1);
|
||||
}
|
||||
if (ae || this.l.z) {
|
||||
Z = 0;
|
||||
}
|
||||
if (B() && a(Material.f) && !d_()) {
|
||||
ad--;
|
||||
if (ad == -20) {
|
||||
ad = 0;
|
||||
for (int k = 0; k < 8; k++) {
|
||||
float f1 = W.nextFloat() - W.nextFloat();
|
||||
float f2 = W.nextFloat() - W.nextFloat();
|
||||
float f3 = W.nextFloat() - W.nextFloat();
|
||||
|
||||
this.l.a("bubble", p + (double) f1, q + (double) f2, r + (double) f3, this.s, t, u);
|
||||
}
|
||||
|
||||
a(((Entity) (null)), 2);
|
||||
}
|
||||
Z = 0;
|
||||
} else {
|
||||
ad = aa;
|
||||
}
|
||||
bg = bh;
|
||||
if (bf > 0) {
|
||||
bf--;
|
||||
}
|
||||
if (bb > 0) {
|
||||
bb--;
|
||||
}
|
||||
if (ac > 0) {
|
||||
ac--;
|
||||
}
|
||||
if (aZ <= 0) {
|
||||
be++;
|
||||
if (be > 20) {
|
||||
T();
|
||||
q();
|
||||
for (int l = 0; l < 20; l++) {
|
||||
double d1 = W.nextGaussian() * 0.02D;
|
||||
double d2 = W.nextGaussian() * 0.02D;
|
||||
double d3 = W.nextGaussian() * 0.02D;
|
||||
|
||||
this.l.a("explode", (p + (double) (W.nextFloat() * I * 2.0F)) - (double) I, q + (double) (W.nextFloat() * J), (r + (double) (W.nextFloat() * I * 2.0F)) - (double) I, d1, d2, d3);
|
||||
}
|
||||
}
|
||||
}
|
||||
aN = aM;
|
||||
aJ = aI;
|
||||
x = v;
|
||||
y = w;
|
||||
}
|
||||
|
||||
public void R() {
|
||||
for (int k = 0; k < 20; k++) {
|
||||
double d1 = W.nextGaussian() * 0.02D;
|
||||
double d2 = W.nextGaussian() * 0.02D;
|
||||
double d3 = W.nextGaussian() * 0.02D;
|
||||
double d4 = 10D;
|
||||
|
||||
l.a("explode", (p + (double) (W.nextFloat() * I * 2.0F)) - (double) I - d1 * d4, (q + (double) (W.nextFloat() * J)) - d2 * d4, (r + (double) (W.nextFloat() * I * 2.0F)) - (double) I - d3 * d4, d1, d2, d3);
|
||||
}
|
||||
}
|
||||
|
||||
public void D() {
|
||||
super.D();
|
||||
aK = aL;
|
||||
aL = 0.0F;
|
||||
}
|
||||
|
||||
public void b_() {
|
||||
super.b_();
|
||||
o();
|
||||
double d1 = p - m;
|
||||
double d2 = r - o;
|
||||
float f1 = MathHelper.a(d1 * d1 + d2 * d2);
|
||||
float f2 = aI;
|
||||
float f3 = 0.0F;
|
||||
|
||||
aK = aL;
|
||||
float f4 = 0.0F;
|
||||
|
||||
if (f1 > 0.05F) {
|
||||
f4 = 1.0F;
|
||||
f3 = f1 * 3F;
|
||||
f2 = ((float) Math.atan2(d2, d1) * 180F) / 3.141593F - 90F;
|
||||
}
|
||||
if (aY > 0.0F) {
|
||||
f2 = v;
|
||||
}
|
||||
if (!A) {
|
||||
f4 = 0.0F;
|
||||
}
|
||||
aL = aL + (f4 - aL) * 0.3F;
|
||||
float f5;
|
||||
|
||||
for (f5 = f2 - aI; f5 < -180F; f5 += 360F) {
|
||||
;
|
||||
}
|
||||
for (; f5 >= 180F; f5 -= 360F) {
|
||||
;
|
||||
}
|
||||
aI += f5 * 0.3F;
|
||||
float f6;
|
||||
|
||||
for (f6 = v - aI; f6 < -180F; f6 += 360F) {
|
||||
;
|
||||
}
|
||||
for (; f6 >= 180F; f6 -= 360F) {
|
||||
;
|
||||
}
|
||||
boolean flag = f6 < -90F || f6 >= 90F;
|
||||
|
||||
if (f6 < -75F) {
|
||||
f6 = -75F;
|
||||
}
|
||||
if (f6 >= 75F) {
|
||||
f6 = 75F;
|
||||
}
|
||||
aI = v - f6;
|
||||
if (f6 * f6 > 2500F) {
|
||||
aI += f6 * 0.2F;
|
||||
}
|
||||
if (flag) {
|
||||
f3 *= -1F;
|
||||
}
|
||||
for (; v - x < -180F; x -= 360F) {
|
||||
;
|
||||
}
|
||||
for (; v - x >= 180F; x += 360F) {
|
||||
;
|
||||
}
|
||||
for (; aI - aJ < -180F; aJ -= 360F) {
|
||||
;
|
||||
}
|
||||
for (; aI - aJ >= 180F; aJ += 360F) {
|
||||
;
|
||||
}
|
||||
for (; w - y < -180F; y -= 360F) {
|
||||
;
|
||||
}
|
||||
for (; w - y >= 180F; y += 360F) {
|
||||
;
|
||||
}
|
||||
aM += f3;
|
||||
}
|
||||
|
||||
protected void a(float f1, float f2) {
|
||||
super.a(f1, f2);
|
||||
}
|
||||
|
||||
public void d(int k) {
|
||||
if (aZ <= 0) {
|
||||
return;
|
||||
}
|
||||
aZ += k;
|
||||
if (aZ > 20) {
|
||||
aZ = 20;
|
||||
}
|
||||
ac = aF / 2;
|
||||
}
|
||||
|
||||
public boolean a(Entity entity, int k) {
|
||||
if (l.z) {
|
||||
return false;
|
||||
}
|
||||
bw = 0;
|
||||
if (aZ <= 0) {
|
||||
return false;
|
||||
}
|
||||
bm = 1.5F;
|
||||
boolean flag = true;
|
||||
|
||||
if ((float) ac > (float) aF / 2.0F) {
|
||||
if (k <= bv) {
|
||||
return false;
|
||||
}
|
||||
e(k - bv);
|
||||
bv = k;
|
||||
flag = false;
|
||||
} else {
|
||||
bv = k;
|
||||
ba = aZ;
|
||||
ac = aF;
|
||||
e(k);
|
||||
bb = bc = 10;
|
||||
}
|
||||
bd = 0.0F;
|
||||
if (flag) {
|
||||
l.a(((Entity) (this)), (byte) 2);
|
||||
y();
|
||||
if (entity != null) {
|
||||
double d1 = entity.p - p;
|
||||
double d2;
|
||||
|
||||
for (d2 = entity.r - r; d1 * d1 + d2 * d2 < 0.0001D; d2 = (Math.random() - Math.random()) * 0.01D) {
|
||||
d1 = (Math.random() - Math.random()) * 0.01D;
|
||||
}
|
||||
|
||||
bd = (float) ((Math.atan2(d2, d1) * 180D) / 3.1415927410125732D) - v;
|
||||
a(entity, k, d1, d2);
|
||||
} else {
|
||||
bd = (int) (Math.random() * 2D) * 180;
|
||||
}
|
||||
}
|
||||
if (aZ <= 0) {
|
||||
if (flag) {
|
||||
l.a(((Entity) (this)), g(), i(), (W.nextFloat() - W.nextFloat()) * 0.2F + 1.0F);
|
||||
}
|
||||
f(entity);
|
||||
} else if (flag) {
|
||||
l.a(((Entity) (this)), f(), i(), (W.nextFloat() - W.nextFloat()) * 0.2F + 1.0F);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
protected void e(int k) {
|
||||
aZ -= k;
|
||||
}
|
||||
|
||||
protected float i() {
|
||||
return 1.0F;
|
||||
}
|
||||
|
||||
protected String e() {
|
||||
return null;
|
||||
}
|
||||
|
||||
protected String f() {
|
||||
return "random.hurt";
|
||||
}
|
||||
|
||||
protected String g() {
|
||||
return "random.hurt";
|
||||
}
|
||||
|
||||
public void a(Entity entity, int k, double d1, double d2) {
|
||||
float f1 = MathHelper.a(d1 * d1 + d2 * d2);
|
||||
float f2 = 0.4F;
|
||||
|
||||
s /= 2D;
|
||||
t /= 2D;
|
||||
u /= 2D;
|
||||
s -= (d1 / (double) f1) * (double) f2;
|
||||
t += 0.40000000596046448D;
|
||||
u -= (d2 / (double) f1) * (double) f2;
|
||||
if (t > 0.40000000596046448D) {
|
||||
t = 0.40000000596046448D;
|
||||
}
|
||||
}
|
||||
|
||||
public void f(Entity entity) {
|
||||
if (aU > 0 && entity != null) {
|
||||
entity.b(((Entity) (this)), aU);
|
||||
}
|
||||
bi = true;
|
||||
if (!l.z) {
|
||||
g_();
|
||||
}
|
||||
l.a(((Entity) (this)), (byte) 3);
|
||||
}
|
||||
|
||||
protected void g_() {
|
||||
int k = h();
|
||||
|
||||
if (k > 0) {
|
||||
int l = W.nextInt(3);
|
||||
|
||||
for (int i1 = 0; i1 < l; i1++) {
|
||||
a(k, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected int h() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
protected void a(float f1) {
|
||||
int k = (int) Math.ceil(f1 - 3F);
|
||||
|
||||
if (k > 0) {
|
||||
a(((Entity) (null)), k);
|
||||
int l = this.l.a(MathHelper.b(p), MathHelper.b(q - 0.20000000298023224D - (double) H), MathHelper.b(r));
|
||||
|
||||
if (l > 0) {
|
||||
StepSound stepsound = Block.m[l].br;
|
||||
|
||||
this.l.a(((Entity) (this)), stepsound.c(), stepsound.a() * 0.5F, stepsound.b() * 0.75F);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void c(float f1, float f2) {
|
||||
if (v()) {
|
||||
double d1 = q;
|
||||
|
||||
a(f1, f2, 0.02F);
|
||||
c(s, t, u);
|
||||
s *= 0.80000001192092896D;
|
||||
t *= 0.80000001192092896D;
|
||||
u *= 0.80000001192092896D;
|
||||
t -= 0.02D;
|
||||
if (B && b(s, ((t + 0.60000002384185791D) - q) + d1, u)) {
|
||||
t = 0.30000001192092896D;
|
||||
}
|
||||
} else if (x()) {
|
||||
double d2 = q;
|
||||
|
||||
a(f1, f2, 0.02F);
|
||||
c(s, t, u);
|
||||
s *= 0.5D;
|
||||
t *= 0.5D;
|
||||
u *= 0.5D;
|
||||
t -= 0.02D;
|
||||
if (B && b(s, ((t + 0.60000002384185791D) - q) + d2, u)) {
|
||||
t = 0.30000001192092896D;
|
||||
}
|
||||
} else {
|
||||
float f3 = 0.91F;
|
||||
|
||||
if (A) {
|
||||
f3 = 0.5460001F;
|
||||
int k = this.l.a(MathHelper.b(p), MathHelper.b(z.b) - 1, MathHelper.b(r));
|
||||
|
||||
if (k > 0) {
|
||||
f3 = Block.m[k].bu * 0.91F;
|
||||
}
|
||||
}
|
||||
float f4 = 0.1627714F / (f3 * f3 * f3);
|
||||
|
||||
a(f1, f2, A ? 0.1F * f4 : 0.02F);
|
||||
f3 = 0.91F;
|
||||
if (A) {
|
||||
f3 = 0.5460001F;
|
||||
int l = this.l.a(MathHelper.b(p), MathHelper.b(z.b) - 1, MathHelper.b(r));
|
||||
|
||||
if (l > 0) {
|
||||
f3 = Block.m[l].bu * 0.91F;
|
||||
}
|
||||
}
|
||||
if (m()) {
|
||||
N = 0.0F;
|
||||
if (t < -0.14999999999999999D) {
|
||||
t = -0.14999999999999999D;
|
||||
}
|
||||
}
|
||||
c(s, t, u);
|
||||
if (B && m()) {
|
||||
t = 0.20000000000000001D;
|
||||
}
|
||||
t -= 0.080000000000000002D;
|
||||
t *= 0.98000001907348633D;
|
||||
s *= f3;
|
||||
u *= f3;
|
||||
}
|
||||
bl = bm;
|
||||
double d3 = p - m;
|
||||
double d4 = r - o;
|
||||
float f5 = MathHelper.a(d3 * d3 + d4 * d4) * 4F;
|
||||
|
||||
if (f5 > 1.0F) {
|
||||
f5 = 1.0F;
|
||||
}
|
||||
bm += (f5 - bm) * 0.4F;
|
||||
bn += bm;
|
||||
}
|
||||
|
||||
public boolean m() {
|
||||
int k = MathHelper.b(p);
|
||||
int l = MathHelper.b(z.b);
|
||||
int i1 = MathHelper.b(r);
|
||||
|
||||
return this.l.a(k, l, i1) == Block.aF.bi || this.l.a(k, l + 1, i1) == Block.aF.bi;
|
||||
}
|
||||
|
||||
public void a(NBTTagCompound nbttagcompound) {
|
||||
nbttagcompound.a("Health", (short) aZ);
|
||||
nbttagcompound.a("HurtTime", (short) bb);
|
||||
nbttagcompound.a("DeathTime", (short) be);
|
||||
nbttagcompound.a("AttackTime", (short) bf);
|
||||
}
|
||||
|
||||
public void b(NBTTagCompound nbttagcompound) {
|
||||
aZ = ((int) (nbttagcompound.c("Health")));
|
||||
if (!nbttagcompound.a("Health")) {
|
||||
aZ = 10;
|
||||
}
|
||||
bb = ((int) (nbttagcompound.c("HurtTime")));
|
||||
be = ((int) (nbttagcompound.c("DeathTime")));
|
||||
bf = ((int) (nbttagcompound.c("AttackTime")));
|
||||
}
|
||||
|
||||
public boolean B() {
|
||||
return !G && aZ > 0;
|
||||
}
|
||||
|
||||
public boolean d_() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void o() {
|
||||
if (bo > 0) {
|
||||
double d1 = p + (bp - p) / (double) bo;
|
||||
double d2 = q + (bq - q) / (double) bo;
|
||||
double d3 = r + (br - r) / (double) bo;
|
||||
double d4;
|
||||
|
||||
for (d4 = bs - (double) v; d4 < -180D; d4 += 360D) {
|
||||
;
|
||||
}
|
||||
for (; d4 >= 180D; d4 -= 360D) {
|
||||
;
|
||||
}
|
||||
v += ((float) (d4 / (double) bo));
|
||||
w += ((float) ((bt - (double) w) / (double) bo));
|
||||
bo--;
|
||||
a(d1, d2, d3);
|
||||
b(v, w);
|
||||
}
|
||||
if (aZ <= 0) {
|
||||
bA = false;
|
||||
bx = 0.0F;
|
||||
by = 0.0F;
|
||||
bz = 0.0F;
|
||||
} else if (!aW) {
|
||||
d();
|
||||
}
|
||||
boolean flag = v();
|
||||
boolean flag1 = x();
|
||||
|
||||
if (bA) {
|
||||
if (flag) {
|
||||
t += 0.039999999105930328D;
|
||||
} else if (flag1) {
|
||||
t += 0.039999999105930328D;
|
||||
} else if (A) {
|
||||
S();
|
||||
}
|
||||
}
|
||||
bx *= 0.98F;
|
||||
by *= 0.98F;
|
||||
bz *= 0.9F;
|
||||
c(bx, by);
|
||||
List list = l.b(((Entity) (this)), z.b(0.20000000298023224D, 0.0D, 0.20000000298023224D));
|
||||
|
||||
if (list != null && list.size() > 0) {
|
||||
for (int k = 0; k < list.size(); k++) {
|
||||
Entity entity = (Entity) list.get(k);
|
||||
|
||||
if (entity.z()) {
|
||||
entity.c(((Entity) (this)));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void S() {
|
||||
t = 0.41999998688697815D;
|
||||
}
|
||||
|
||||
protected void d() {
|
||||
bw++;
|
||||
EntityPlayer entityplayer = l.a(((Entity) (this)), -1D);
|
||||
|
||||
if (entityplayer != null) {
|
||||
double d1 = ((Entity) (entityplayer)).p - p;
|
||||
double d2 = ((Entity) (entityplayer)).q - q;
|
||||
double d3 = ((Entity) (entityplayer)).r - r;
|
||||
double d4 = d1 * d1 + d2 * d2 + d3 * d3;
|
||||
|
||||
if (d4 > 16384D) {
|
||||
q();
|
||||
}
|
||||
if (bw > 600 && W.nextInt(800) == 0) {
|
||||
if (d4 < 1024D) {
|
||||
bw = 0;
|
||||
} else {
|
||||
q();
|
||||
}
|
||||
}
|
||||
}
|
||||
bx = 0.0F;
|
||||
by = 0.0F;
|
||||
float f1 = 8F;
|
||||
|
||||
if (W.nextFloat() < 0.02F) {
|
||||
EntityPlayer entityplayer1 = l.a(((Entity) (this)), f1);
|
||||
|
||||
if (entityplayer1 != null) {
|
||||
b = ((Entity) (entityplayer1));
|
||||
c = 10 + W.nextInt(20);
|
||||
} else {
|
||||
bz = (W.nextFloat() - 0.5F) * 20F;
|
||||
}
|
||||
}
|
||||
if (b != null) {
|
||||
b(b, 10F);
|
||||
if (c-- <= 0 || b.G || b.b(((Entity) (this))) > (double) (f1 * f1)) {
|
||||
b = null;
|
||||
}
|
||||
} else {
|
||||
if (W.nextFloat() < 0.05F) {
|
||||
bz = (W.nextFloat() - 0.5F) * 20F;
|
||||
}
|
||||
v += bz;
|
||||
w = bB;
|
||||
}
|
||||
boolean flag = v();
|
||||
boolean flag1 = x();
|
||||
|
||||
if (flag || flag1) {
|
||||
bA = W.nextFloat() < 0.8F;
|
||||
}
|
||||
}
|
||||
|
||||
public void b(Entity entity, float f1) {
|
||||
double d1 = entity.p - p;
|
||||
double d2 = entity.r - r;
|
||||
double d3;
|
||||
|
||||
if (entity instanceof EntityLiving) {
|
||||
EntityLiving entityliving = (EntityLiving) entity;
|
||||
|
||||
d3 = (entityliving.q + (double) entityliving.w()) - (q + (double) w());
|
||||
} else {
|
||||
d3 = (entity.z.b + entity.z.e) / 2D - (q + (double) w());
|
||||
}
|
||||
double d4 = MathHelper.a(d1 * d1 + d2 * d2);
|
||||
float f2 = (float) ((Math.atan2(d2, d1) * 180D) / 3.1415927410125732D) - 90F;
|
||||
float f3 = (float) ((Math.atan2(d3, d4) * 180D) / 3.1415927410125732D);
|
||||
|
||||
w = -b(w, f3, f1);
|
||||
v = b(v, f2, f1);
|
||||
}
|
||||
|
||||
private float b(float f1, float f2, float f3) {
|
||||
float f4;
|
||||
|
||||
for (f4 = f2 - f1; f4 < -180F; f4 += 360F) {
|
||||
;
|
||||
}
|
||||
for (; f4 >= 180F; f4 -= 360F) {
|
||||
;
|
||||
}
|
||||
if (f4 > f3) {
|
||||
f4 = f3;
|
||||
}
|
||||
if (f4 < -f3) {
|
||||
f4 = -f3;
|
||||
}
|
||||
return f1 + f4;
|
||||
}
|
||||
|
||||
public void T() {}
|
||||
|
||||
public boolean b() {
|
||||
return l.a(z) && l.a(((Entity) (this)), z).size() == 0 && !l.b(z);
|
||||
}
|
||||
|
||||
protected void t() {
|
||||
a(((Entity) (null)), 4);
|
||||
}
|
||||
|
||||
public Vec3D G() {
|
||||
return c(1.0F);
|
||||
}
|
||||
|
||||
public Vec3D c(float f1) {
|
||||
if (f1 == 1.0F) {
|
||||
float f2 = MathHelper.b(-v * 0.01745329F - 3.141593F);
|
||||
float f4 = MathHelper.a(-v * 0.01745329F - 3.141593F);
|
||||
float f6 = -MathHelper.b(-w * 0.01745329F);
|
||||
float f8 = MathHelper.a(-w * 0.01745329F);
|
||||
|
||||
return Vec3D.b(f4 * f6, f8, f2 * f6);
|
||||
} else {
|
||||
float f3 = y + (w - y) * f1;
|
||||
float f5 = x + (v - x) * f1;
|
||||
float f7 = MathHelper.b(-f5 * 0.01745329F - 3.141593F);
|
||||
float f9 = MathHelper.a(-f5 * 0.01745329F - 3.141593F);
|
||||
float f10 = -MathHelper.b(-f3 * 0.01745329F);
|
||||
float f11 = MathHelper.a(-f3 * 0.01745329F);
|
||||
|
||||
return Vec3D.b(f9 * f10, f11, f7 * f10);
|
||||
}
|
||||
}
|
||||
|
||||
public int j() {
|
||||
return 4;
|
||||
}
|
||||
}
|
209
src/main/java/net/minecraft/server/EntityPainting.java
Normale Datei
209
src/main/java/net/minecraft/server/EntityPainting.java
Normale Datei
@ -0,0 +1,209 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class EntityPainting extends Entity {
|
||||
|
||||
private int f;
|
||||
public int a;
|
||||
public int b;
|
||||
public int c;
|
||||
public int d;
|
||||
public EnumArt e;
|
||||
|
||||
public EntityPainting(World world) {
|
||||
super(world);
|
||||
f = 0;
|
||||
a = 0;
|
||||
H = 0.0F;
|
||||
a(0.5F, 0.5F);
|
||||
}
|
||||
|
||||
public EntityPainting(World world, int i, int j, int k, int l) {
|
||||
this(world);
|
||||
b = i;
|
||||
c = j;
|
||||
d = k;
|
||||
ArrayList arraylist = new ArrayList();
|
||||
EnumArt aenumart[] = EnumArt.values();
|
||||
int i1 = aenumart.length;
|
||||
|
||||
for (int j1 = 0; j1 < i1; j1++) {
|
||||
EnumArt enumart = aenumart[j1];
|
||||
|
||||
e = enumart;
|
||||
a(l);
|
||||
if (d()) {
|
||||
((List) (arraylist)).add(((enumart)));
|
||||
}
|
||||
}
|
||||
|
||||
if (((List) (arraylist)).size() > 0) {
|
||||
e = (EnumArt) ((List) (arraylist)).get(W.nextInt(((List) (arraylist)).size()));
|
||||
}
|
||||
a(l);
|
||||
}
|
||||
|
||||
protected void a() {}
|
||||
|
||||
public void a(int i) {
|
||||
a = i;
|
||||
x = v = i * 90;
|
||||
float f1 = e.A;
|
||||
float f2 = e.B;
|
||||
float f3 = e.A;
|
||||
|
||||
if (i == 0 || i == 2) {
|
||||
f3 = 0.5F;
|
||||
} else {
|
||||
f1 = 0.5F;
|
||||
}
|
||||
f1 /= 32F;
|
||||
f2 /= 32F;
|
||||
f3 /= 32F;
|
||||
float f4 = (float) b + 0.5F;
|
||||
float f5 = (float) c + 0.5F;
|
||||
float f6 = (float) d + 0.5F;
|
||||
float f7 = 0.5625F;
|
||||
|
||||
if (i == 0) {
|
||||
f6 -= f7;
|
||||
}
|
||||
if (i == 1) {
|
||||
f4 -= f7;
|
||||
}
|
||||
if (i == 2) {
|
||||
f6 += f7;
|
||||
}
|
||||
if (i == 3) {
|
||||
f4 += f7;
|
||||
}
|
||||
if (i == 0) {
|
||||
f4 -= d(e.A);
|
||||
}
|
||||
if (i == 1) {
|
||||
f6 += d(e.A);
|
||||
}
|
||||
if (i == 2) {
|
||||
f4 += d(e.A);
|
||||
}
|
||||
if (i == 3) {
|
||||
f6 -= d(e.A);
|
||||
}
|
||||
f5 += d(e.B);
|
||||
a(f4, f5, f6);
|
||||
float f8 = -0.00625F;
|
||||
|
||||
z.c(f4 - f1 - f8, f5 - f2 - f8, f6 - f3 - f8, f4 + f1 + f8, f5 + f2 + f8, f6 + f3 + f8);
|
||||
}
|
||||
|
||||
private float d(int i) {
|
||||
if (i == 32) {
|
||||
return 0.5F;
|
||||
}
|
||||
return i != 64 ? 0.0F : 0.5F;
|
||||
}
|
||||
|
||||
public void b_() {
|
||||
if (f++ == 100 && !l.z) {
|
||||
f = 0;
|
||||
if (!d()) {
|
||||
q();
|
||||
l.a(((Entity) (new EntityItem(l, p, q, r, new ItemStack(Item.aq)))));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean d() {
|
||||
if (this.l.a(((Entity) (this)), z).size() > 0) {
|
||||
return false;
|
||||
}
|
||||
int i = e.A / 16;
|
||||
int j = e.B / 16;
|
||||
int k = b;
|
||||
int l = c;
|
||||
int i1 = d;
|
||||
|
||||
if (a == 0) {
|
||||
k = MathHelper.b(p - (double) ((float) e.A / 32F));
|
||||
}
|
||||
if (a == 1) {
|
||||
i1 = MathHelper.b(r - (double) ((float) e.A / 32F));
|
||||
}
|
||||
if (a == 2) {
|
||||
k = MathHelper.b(p - (double) ((float) e.A / 32F));
|
||||
}
|
||||
if (a == 3) {
|
||||
i1 = MathHelper.b(r - (double) ((float) e.A / 32F));
|
||||
}
|
||||
l = MathHelper.b(q - (double) ((float) e.B / 32F));
|
||||
for (int j1 = 0; j1 < i; j1++) {
|
||||
for (int k1 = 0; k1 < j; k1++) {
|
||||
Material material;
|
||||
|
||||
if (a == 0 || a == 2) {
|
||||
material = this.l.c(k + j1, l + k1, d);
|
||||
} else {
|
||||
material = this.l.c(b, l + k1, i1 + j1);
|
||||
}
|
||||
if (!material.a()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
List list = this.l.b(((Entity) (this)), z);
|
||||
|
||||
for (int l1 = 0; l1 < list.size(); l1++) {
|
||||
if (list.get(l1) instanceof EntityPainting) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean c_() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean a(Entity entity, int i) {
|
||||
if (!G && !l.z) {
|
||||
q();
|
||||
y();
|
||||
l.a(((Entity) (new EntityItem(l, p, q, r, new ItemStack(Item.aq)))));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public void a(NBTTagCompound nbttagcompound) {
|
||||
nbttagcompound.a("Dir", (byte) a);
|
||||
nbttagcompound.a("Motive", e.z);
|
||||
nbttagcompound.a("TileX", b);
|
||||
nbttagcompound.a("TileY", c);
|
||||
nbttagcompound.a("TileZ", d);
|
||||
}
|
||||
|
||||
public void b(NBTTagCompound nbttagcompound) {
|
||||
a = ((int) (nbttagcompound.b("Dir")));
|
||||
b = nbttagcompound.d("TileX");
|
||||
c = nbttagcompound.d("TileY");
|
||||
d = nbttagcompound.d("TileZ");
|
||||
String s = nbttagcompound.h("Motive");
|
||||
EnumArt aenumart[] = EnumArt.values();
|
||||
int i = aenumart.length;
|
||||
|
||||
for (int j = 0; j < i; j++) {
|
||||
EnumArt enumart = aenumart[j];
|
||||
|
||||
if (enumart.z.equals(((s)))) {
|
||||
e = enumart;
|
||||
}
|
||||
}
|
||||
|
||||
if (e == null) {
|
||||
e = EnumArt.a;
|
||||
}
|
||||
a(a);
|
||||
}
|
||||
}
|
61
src/main/java/net/minecraft/server/EntityPig.java
Normale Datei
61
src/main/java/net/minecraft/server/EntityPig.java
Normale Datei
@ -0,0 +1,61 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
public class EntityPig extends EntityAnimals {
|
||||
|
||||
public EntityPig(World world) {
|
||||
super(world);
|
||||
aP = "/mob/pig.png";
|
||||
a(0.9F, 0.9F);
|
||||
}
|
||||
|
||||
protected void a() {
|
||||
af.a(16, ((Byte.valueOf((byte) 0))));
|
||||
}
|
||||
|
||||
public void a(NBTTagCompound nbttagcompound) {
|
||||
super.a(nbttagcompound);
|
||||
nbttagcompound.a("Saddle", K());
|
||||
}
|
||||
|
||||
public void b(NBTTagCompound nbttagcompound) {
|
||||
super.b(nbttagcompound);
|
||||
a(nbttagcompound.l("Saddle"));
|
||||
}
|
||||
|
||||
protected String e() {
|
||||
return "mob.pig";
|
||||
}
|
||||
|
||||
protected String f() {
|
||||
return "mob.pig";
|
||||
}
|
||||
|
||||
protected String g() {
|
||||
return "mob.pigdeath";
|
||||
}
|
||||
|
||||
public boolean a(EntityPlayer entityplayer) {
|
||||
if (K() && !l.z && (j == null || j == entityplayer)) {
|
||||
entityplayer.e(((Entity) (this)));
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
protected int h() {
|
||||
return Item.ao.ba;
|
||||
}
|
||||
|
||||
public boolean K() {
|
||||
return (af.a(16) & 1) != 0;
|
||||
}
|
||||
|
||||
public void a(boolean flag) {
|
||||
if (flag) {
|
||||
af.b(16, ((Byte.valueOf((byte) 1))));
|
||||
} else {
|
||||
af.b(16, ((Byte.valueOf((byte) 0))));
|
||||
}
|
||||
}
|
||||
}
|
100
src/main/java/net/minecraft/server/EntityPigZombie.java
Normale Datei
100
src/main/java/net/minecraft/server/EntityPigZombie.java
Normale Datei
@ -0,0 +1,100 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
public class EntityPigZombie extends EntityZombie {
|
||||
|
||||
private int a;
|
||||
private int b;
|
||||
private static final ItemStack f;
|
||||
|
||||
public EntityPigZombie(World world) {
|
||||
super(world);
|
||||
a = 0;
|
||||
b = 0;
|
||||
aP = "/mob/pigzombie.png";
|
||||
bC = 0.5F;
|
||||
c = 5;
|
||||
ae = true;
|
||||
}
|
||||
|
||||
public void b_() {
|
||||
bC = d == null ? 0.5F : 0.95F;
|
||||
if (b > 0 && --b == 0) {
|
||||
l.a(((Entity) (this)), "mob.zombiepig.zpigangry", i() * 2.0F, ((W.nextFloat() - W.nextFloat()) * 0.2F + 1.0F) * 1.8F);
|
||||
}
|
||||
super.b_();
|
||||
}
|
||||
|
||||
public boolean b() {
|
||||
return l.k > 0 && l.a(z) && l.a(((Entity) (this)), z).size() == 0 && !l.b(z);
|
||||
}
|
||||
|
||||
public void a(NBTTagCompound nbttagcompound) {
|
||||
super.a(nbttagcompound);
|
||||
nbttagcompound.a("Anger", (short) a);
|
||||
}
|
||||
|
||||
public void b(NBTTagCompound nbttagcompound) {
|
||||
super.b(nbttagcompound);
|
||||
a = ((int) (nbttagcompound.c("Anger")));
|
||||
}
|
||||
|
||||
protected Entity l() {
|
||||
if (a == 0) {
|
||||
return null;
|
||||
} else {
|
||||
return super.l();
|
||||
}
|
||||
}
|
||||
|
||||
public void o() {
|
||||
super.o();
|
||||
}
|
||||
|
||||
public boolean a(Entity entity, int i) {
|
||||
if (entity instanceof EntityPlayer) {
|
||||
List list = l.b(((Entity) (this)), z.b(32D, 32D, 32D));
|
||||
|
||||
for (int j = 0; j < list.size(); j++) {
|
||||
Entity entity1 = (Entity) list.get(j);
|
||||
|
||||
if (entity1 instanceof EntityPigZombie) {
|
||||
EntityPigZombie entitypigzombie = (EntityPigZombie) entity1;
|
||||
|
||||
entitypigzombie.g(entity);
|
||||
}
|
||||
}
|
||||
|
||||
g(entity);
|
||||
}
|
||||
return super.a(entity, i);
|
||||
}
|
||||
|
||||
private void g(Entity entity) {
|
||||
d = entity;
|
||||
a = 400 + W.nextInt(400);
|
||||
b = W.nextInt(40);
|
||||
}
|
||||
|
||||
protected String e() {
|
||||
return "mob.zombiepig.zpig";
|
||||
}
|
||||
|
||||
protected String f() {
|
||||
return "mob.zombiepig.zpighurt";
|
||||
}
|
||||
|
||||
protected String g() {
|
||||
return "mob.zombiepig.zpigdeath";
|
||||
}
|
||||
|
||||
protected int h() {
|
||||
return Item.ap.ba;
|
||||
}
|
||||
|
||||
static {
|
||||
f = new ItemStack(Item.E, 1);
|
||||
}
|
||||
}
|
129
src/main/java/net/minecraft/server/EntitySheep.java
Normale Datei
129
src/main/java/net/minecraft/server/EntitySheep.java
Normale Datei
@ -0,0 +1,129 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class EntitySheep extends EntityAnimals {
|
||||
|
||||
public static final float a[][] = {
|
||||
{
|
||||
1.0F, 1.0F, 1.0F
|
||||
}, {
|
||||
0.95F, 0.7F, 0.2F
|
||||
}, {
|
||||
0.9F, 0.5F, 0.85F
|
||||
}, {
|
||||
0.6F, 0.7F, 0.95F
|
||||
}, {
|
||||
0.9F, 0.9F, 0.2F
|
||||
}, {
|
||||
0.5F, 0.8F, 0.1F
|
||||
}, {
|
||||
0.95F, 0.7F, 0.8F
|
||||
}, {
|
||||
0.3F, 0.3F, 0.3F
|
||||
}, {
|
||||
0.6F, 0.6F, 0.6F
|
||||
}, {
|
||||
0.3F, 0.6F, 0.7F
|
||||
}, {
|
||||
0.7F, 0.4F, 0.9F
|
||||
}, {
|
||||
0.2F, 0.4F, 0.8F
|
||||
}, {
|
||||
0.5F, 0.4F, 0.3F
|
||||
}, {
|
||||
0.4F, 0.5F, 0.2F
|
||||
}, {
|
||||
0.8F, 0.3F, 0.3F
|
||||
}, {
|
||||
0.1F, 0.1F, 0.1F
|
||||
}
|
||||
};
|
||||
|
||||
public EntitySheep(World world) {
|
||||
super(world);
|
||||
aP = "/mob/sheep.png";
|
||||
a(0.9F, 1.3F);
|
||||
}
|
||||
|
||||
protected void a() {
|
||||
super.a();
|
||||
af.a(16, ((new Byte((byte) 0))));
|
||||
}
|
||||
|
||||
public boolean a(Entity entity, int i) {
|
||||
if (!l.z && !f_() && (entity instanceof EntityLiving)) {
|
||||
a(true);
|
||||
int j = 1 + W.nextInt(3);
|
||||
|
||||
for (int k = 0; k < j; k++) {
|
||||
EntityItem entityitem = a(new ItemStack(Block.ab.bi, 1, e_()), 1.0F);
|
||||
|
||||
entityitem.t += W.nextFloat() * 0.05F;
|
||||
entityitem.s += (W.nextFloat() - W.nextFloat()) * 0.1F;
|
||||
entityitem.u += (W.nextFloat() - W.nextFloat()) * 0.1F;
|
||||
}
|
||||
}
|
||||
return super.a(entity, i);
|
||||
}
|
||||
|
||||
public void a(NBTTagCompound nbttagcompound) {
|
||||
super.a(nbttagcompound);
|
||||
nbttagcompound.a("Sheared", f_());
|
||||
nbttagcompound.a("Color", (byte) e_());
|
||||
}
|
||||
|
||||
public void b(NBTTagCompound nbttagcompound) {
|
||||
super.b(nbttagcompound);
|
||||
a(nbttagcompound.l("Sheared"));
|
||||
a(((int) (nbttagcompound.b("Color"))));
|
||||
}
|
||||
|
||||
protected String e() {
|
||||
return "mob.sheep";
|
||||
}
|
||||
|
||||
protected String f() {
|
||||
return "mob.sheep";
|
||||
}
|
||||
|
||||
protected String g() {
|
||||
return "mob.sheep";
|
||||
}
|
||||
|
||||
public int e_() {
|
||||
return af.a(16) & 0xf;
|
||||
}
|
||||
|
||||
public void a(int i) {
|
||||
byte byte0 = af.a(16);
|
||||
|
||||
af.b(16, ((Byte.valueOf((byte) (byte0 & 0xf0 | i & 0xf)))));
|
||||
}
|
||||
|
||||
public boolean f_() {
|
||||
return (af.a(16) & 0x10) != 0;
|
||||
}
|
||||
|
||||
public void a(boolean flag) {
|
||||
byte byte0 = af.a(16);
|
||||
|
||||
if (flag) {
|
||||
af.b(16, ((Byte.valueOf((byte) (byte0 | 0x10)))));
|
||||
} else {
|
||||
af.b(16, ((Byte.valueOf((byte) (byte0 & 0xffffffef)))));
|
||||
}
|
||||
}
|
||||
|
||||
public static int a(Random random) {
|
||||
int i = random.nextInt(100);
|
||||
|
||||
if (i < 5) {
|
||||
return 15;
|
||||
}
|
||||
if (i < 10) {
|
||||
return 7;
|
||||
}
|
||||
return i >= 15 ? 0 : 8;
|
||||
}
|
||||
}
|
135
src/main/java/net/minecraft/server/EntitySlime.java
Normale Datei
135
src/main/java/net/minecraft/server/EntitySlime.java
Normale Datei
@ -0,0 +1,135 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class EntitySlime extends EntityLiving implements IMobs {
|
||||
|
||||
public float a;
|
||||
public float b;
|
||||
private int d;
|
||||
public int c;
|
||||
|
||||
public EntitySlime(World world) {
|
||||
super(world);
|
||||
d = 0;
|
||||
c = 1;
|
||||
aP = "/mob/slime.png";
|
||||
c = 1 << W.nextInt(3);
|
||||
H = 0.0F;
|
||||
d = W.nextInt(20) + 10;
|
||||
a(c);
|
||||
}
|
||||
|
||||
public void a(int j) {
|
||||
c = j;
|
||||
a(0.6F * (float) j, 0.6F * (float) j);
|
||||
aZ = j * j;
|
||||
a(p, q, r);
|
||||
}
|
||||
|
||||
public void a(NBTTagCompound nbttagcompound) {
|
||||
super.a(nbttagcompound);
|
||||
nbttagcompound.a("Size", c - 1);
|
||||
}
|
||||
|
||||
public void b(NBTTagCompound nbttagcompound) {
|
||||
super.b(nbttagcompound);
|
||||
c = nbttagcompound.d("Size") + 1;
|
||||
}
|
||||
|
||||
public void b_() {
|
||||
b = a;
|
||||
boolean flag = A;
|
||||
|
||||
super.b_();
|
||||
if (A && !flag) {
|
||||
for (int j = 0; j < c * 8; j++) {
|
||||
float f1 = W.nextFloat() * 3.141593F * 2.0F;
|
||||
float f2 = W.nextFloat() * 0.5F + 0.5F;
|
||||
float f3 = MathHelper.a(f1) * (float) c * 0.5F * f2;
|
||||
float f4 = MathHelper.b(f1) * (float) c * 0.5F * f2;
|
||||
|
||||
l.a("slime", p + (double) f3, z.b, r + (double) f4, 0.0D, 0.0D, 0.0D);
|
||||
}
|
||||
|
||||
if (c > 2) {
|
||||
l.a(((Entity) (this)), "mob.slime", i(), ((W.nextFloat() - W.nextFloat()) * 0.2F + 1.0F) / 0.8F);
|
||||
}
|
||||
a = -0.5F;
|
||||
}
|
||||
a = a * 0.6F;
|
||||
}
|
||||
|
||||
protected void d() {
|
||||
EntityPlayer entityplayer = l.a(((Entity) (this)), 16D);
|
||||
|
||||
if (entityplayer != null) {
|
||||
b(((Entity) (entityplayer)), 10F);
|
||||
}
|
||||
if (A && d-- <= 0) {
|
||||
d = W.nextInt(20) + 10;
|
||||
if (entityplayer != null) {
|
||||
d /= 3;
|
||||
}
|
||||
bA = true;
|
||||
if (c > 1) {
|
||||
l.a(((Entity) (this)), "mob.slime", i(), ((W.nextFloat() - W.nextFloat()) * 0.2F + 1.0F) * 0.8F);
|
||||
}
|
||||
a = 1.0F;
|
||||
bx = 1.0F - W.nextFloat() * 2.0F;
|
||||
by = 1 * c;
|
||||
} else {
|
||||
bA = false;
|
||||
if (A) {
|
||||
bx = by = 0.0F;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void q() {
|
||||
if (c > 1 && aZ == 0) {
|
||||
for (int j = 0; j < 4; j++) {
|
||||
float f1 = (((float) (j % 2) - 0.5F) * (float) c) / 4F;
|
||||
float f2 = (((float) (j / 2) - 0.5F) * (float) c) / 4F;
|
||||
EntitySlime entityslime = new EntitySlime(l);
|
||||
|
||||
entityslime.a(c / 2);
|
||||
entityslime.c(p + (double) f1, q + 0.5D, r + (double) f2, W.nextFloat() * 360F, 0.0F);
|
||||
l.a(((Entity) (entityslime)));
|
||||
}
|
||||
}
|
||||
super.q();
|
||||
}
|
||||
|
||||
public void b(EntityPlayer entityplayer) {
|
||||
if (c > 1 && i(((Entity) (entityplayer))) && (double) a(((Entity) (entityplayer))) < 0.59999999999999998D * (double) c && entityplayer.a(((Entity) (this)), c)) {
|
||||
l.a(((Entity) (this)), "mob.slimeattack", 1.0F, (W.nextFloat() - W.nextFloat()) * 0.2F + 1.0F);
|
||||
}
|
||||
}
|
||||
|
||||
protected String f() {
|
||||
return "mob.slime";
|
||||
}
|
||||
|
||||
protected String g() {
|
||||
return "mob.slime";
|
||||
}
|
||||
|
||||
protected int h() {
|
||||
if (c == 1) {
|
||||
return Item.aK.ba;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean b() {
|
||||
Chunk chunk = l.b(MathHelper.b(p), MathHelper.b(r));
|
||||
|
||||
return (c == 1 || l.k > 0) && W.nextInt(10) == 0 && chunk.a(0x3ad8025fL).nextInt(10) == 0 && q < 16D;
|
||||
}
|
||||
|
||||
protected float i() {
|
||||
return 0.6F;
|
||||
}
|
||||
}
|
79
src/main/java/net/minecraft/server/EntitySpider.java
Normale Datei
79
src/main/java/net/minecraft/server/EntitySpider.java
Normale Datei
@ -0,0 +1,79 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class EntitySpider extends EntityMobs {
|
||||
|
||||
public EntitySpider(World world) {
|
||||
super(world);
|
||||
aP = "/mob/spider.png";
|
||||
a(1.4F, 0.9F);
|
||||
bC = 0.8F;
|
||||
}
|
||||
|
||||
public double k() {
|
||||
return (double) J * 0.75D - 0.5D;
|
||||
}
|
||||
|
||||
protected Entity l() {
|
||||
float f1 = b(1.0F);
|
||||
|
||||
if (f1 < 0.5F) {
|
||||
double d = 16D;
|
||||
|
||||
return ((Entity) (l.a(((Entity) (this)), d)));
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
protected String e() {
|
||||
return "mob.spider";
|
||||
}
|
||||
|
||||
protected String f() {
|
||||
return "mob.spider";
|
||||
}
|
||||
|
||||
protected String g() {
|
||||
return "mob.spiderdeath";
|
||||
}
|
||||
|
||||
protected void a(Entity entity, float f1) {
|
||||
float f2 = b(1.0F);
|
||||
|
||||
if (f2 > 0.5F && W.nextInt(100) == 0) {
|
||||
this.d = null;
|
||||
return;
|
||||
}
|
||||
if (f1 > 2.0F && f1 < 6F && W.nextInt(10) == 0) {
|
||||
if (A) {
|
||||
double d = entity.p - p;
|
||||
double d1 = entity.r - r;
|
||||
float f3 = MathHelper.a(d * d + d1 * d1);
|
||||
|
||||
s = (d / (double) f3) * 0.5D * 0.80000001192092896D + s * 0.20000000298023224D;
|
||||
u = (d1 / (double) f3) * 0.5D * 0.80000001192092896D + u * 0.20000000298023224D;
|
||||
t = 0.40000000596046448D;
|
||||
}
|
||||
} else {
|
||||
super.a(entity, f1);
|
||||
}
|
||||
}
|
||||
|
||||
public void a(NBTTagCompound nbttagcompound) {
|
||||
super.a(nbttagcompound);
|
||||
}
|
||||
|
||||
public void b(NBTTagCompound nbttagcompound) {
|
||||
super.b(nbttagcompound);
|
||||
}
|
||||
|
||||
protected int h() {
|
||||
return Item.I.ba;
|
||||
}
|
||||
|
||||
public boolean m() {
|
||||
return B;
|
||||
}
|
||||
}
|
159
src/main/java/net/minecraft/server/EntitySquid.java
Normale Datei
159
src/main/java/net/minecraft/server/EntitySquid.java
Normale Datei
@ -0,0 +1,159 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class EntitySquid extends EntityWaterMob {
|
||||
|
||||
public float a;
|
||||
public float b;
|
||||
public float c;
|
||||
public float f;
|
||||
public float ak;
|
||||
public float al;
|
||||
public float am;
|
||||
public float an;
|
||||
private float ao;
|
||||
private float ap;
|
||||
private float aq;
|
||||
private float ar;
|
||||
private float as;
|
||||
private float at;
|
||||
|
||||
public EntitySquid(World world) {
|
||||
super(world);
|
||||
a = 0.0F;
|
||||
b = 0.0F;
|
||||
c = 0.0F;
|
||||
f = 0.0F;
|
||||
ak = 0.0F;
|
||||
al = 0.0F;
|
||||
am = 0.0F;
|
||||
an = 0.0F;
|
||||
ao = 0.0F;
|
||||
ap = 0.0F;
|
||||
aq = 0.0F;
|
||||
ar = 0.0F;
|
||||
as = 0.0F;
|
||||
at = 0.0F;
|
||||
aP = "/mob/squid.png";
|
||||
a(0.95F, 0.95F);
|
||||
ap = (1.0F / (W.nextFloat() + 1.0F)) * 0.2F;
|
||||
}
|
||||
|
||||
public void a(NBTTagCompound nbttagcompound) {
|
||||
super.a(nbttagcompound);
|
||||
}
|
||||
|
||||
public void b(NBTTagCompound nbttagcompound) {
|
||||
super.b(nbttagcompound);
|
||||
}
|
||||
|
||||
protected String e() {
|
||||
return null;
|
||||
}
|
||||
|
||||
protected String f() {
|
||||
return null;
|
||||
}
|
||||
|
||||
protected String g() {
|
||||
return null;
|
||||
}
|
||||
|
||||
protected float i() {
|
||||
return 0.4F;
|
||||
}
|
||||
|
||||
protected int h() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
protected void g_() {
|
||||
int j = W.nextInt(3) + 1;
|
||||
|
||||
for (int k = 0; k < j; k++) {
|
||||
a(new ItemStack(Item.aU, 1, 0), 0.0F);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean a(EntityPlayer entityplayer) {
|
||||
ItemStack itemstack = entityplayer.an.e();
|
||||
|
||||
if (itemstack != null && itemstack.c == Item.au.ba) {
|
||||
entityplayer.an.a(entityplayer.an.c, new ItemStack(Item.aE));
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean v() {
|
||||
return l.a(z.b(0.0D, -0.60000002384185791D, 0.0D), Material.f, ((Entity) (this)));
|
||||
}
|
||||
|
||||
public void o() {
|
||||
super.o();
|
||||
b = a;
|
||||
f = c;
|
||||
al = ak;
|
||||
an = am;
|
||||
ak += ap;
|
||||
if (ak > 6.283185F) {
|
||||
ak -= 6.283185F;
|
||||
if (W.nextInt(10) == 0) {
|
||||
ap = (1.0F / (W.nextFloat() + 1.0F)) * 0.2F;
|
||||
}
|
||||
}
|
||||
if (v()) {
|
||||
if (ak < 3.141593F) {
|
||||
float f1 = ak / 3.141593F;
|
||||
|
||||
am = MathHelper.a(f1 * f1 * 3.141593F) * 3.141593F * 0.25F;
|
||||
if ((double) f1 > 0.75D) {
|
||||
ao = 1.0F;
|
||||
aq = 1.0F;
|
||||
} else {
|
||||
aq = aq * 0.8F;
|
||||
}
|
||||
} else {
|
||||
am = 0.0F;
|
||||
ao = ao * 0.9F;
|
||||
aq = aq * 0.99F;
|
||||
}
|
||||
if (!aW) {
|
||||
s = ar * ao;
|
||||
t = as * ao;
|
||||
u = at * ao;
|
||||
}
|
||||
float f2 = MathHelper.a(s * s + u * u);
|
||||
|
||||
aI += ((-(float) Math.atan2(s, u) * 180F) / 3.141593F - aI) * 0.1F;
|
||||
v = aI;
|
||||
c = c + 3.141593F * aq * 1.5F;
|
||||
a += ((-(float) Math.atan2(f2, t) * 180F) / 3.141593F - a) * 0.1F;
|
||||
} else {
|
||||
am = MathHelper.e(MathHelper.a(ak)) * 3.141593F * 0.25F;
|
||||
if (!aW) {
|
||||
s = 0.0D;
|
||||
t -= 0.080000000000000002D;
|
||||
t *= 0.98000001907348633D;
|
||||
u = 0.0D;
|
||||
}
|
||||
a += ((float) ((double) (-90F - a) * 0.02D));
|
||||
}
|
||||
}
|
||||
|
||||
public void c(float f1, float f2) {
|
||||
c(s, t, u);
|
||||
}
|
||||
|
||||
protected void d() {
|
||||
if (W.nextInt(50) == 0 || !ab || ar == 0.0F && as == 0.0F && at == 0.0F) {
|
||||
float f1 = W.nextFloat() * 3.141593F * 2.0F;
|
||||
|
||||
ar = MathHelper.b(f1) * 0.2F;
|
||||
as = -0.1F + W.nextFloat() * 0.2F;
|
||||
at = MathHelper.a(f1) * 0.2F;
|
||||
}
|
||||
}
|
||||
}
|
71
src/main/java/net/minecraft/server/EntityTNTPrimed.java
Normale Datei
71
src/main/java/net/minecraft/server/EntityTNTPrimed.java
Normale Datei
@ -0,0 +1,71 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
public class EntityTNTPrimed extends Entity {
|
||||
|
||||
public int a;
|
||||
|
||||
public EntityTNTPrimed(World world) {
|
||||
super(world);
|
||||
a = 0;
|
||||
i = true;
|
||||
a(0.98F, 0.98F);
|
||||
H = J / 2.0F;
|
||||
}
|
||||
|
||||
public EntityTNTPrimed(World world, double d1, double d2, double d3) {
|
||||
this(world);
|
||||
a(d1, d2, d3);
|
||||
float f = (float) (Math.random() * 3.1415927410125732D * 2D);
|
||||
|
||||
s = -MathHelper.a((f * 3.141593F) / 180F) * 0.02F;
|
||||
t = 0.20000000298023224D;
|
||||
u = -MathHelper.b((f * 3.141593F) / 180F) * 0.02F;
|
||||
M = false;
|
||||
a = 80;
|
||||
m = d1;
|
||||
n = d2;
|
||||
o = d3;
|
||||
}
|
||||
|
||||
protected void a() {}
|
||||
|
||||
public boolean c_() {
|
||||
return !G;
|
||||
}
|
||||
|
||||
public void b_() {
|
||||
m = p;
|
||||
n = q;
|
||||
o = r;
|
||||
t -= 0.039999999105930328D;
|
||||
c(s, t, u);
|
||||
s *= 0.98000001907348633D;
|
||||
t *= 0.98000001907348633D;
|
||||
u *= 0.98000001907348633D;
|
||||
if (A) {
|
||||
s *= 0.69999998807907104D;
|
||||
u *= 0.69999998807907104D;
|
||||
t *= -0.5D;
|
||||
}
|
||||
if (a-- <= 0) {
|
||||
q();
|
||||
d();
|
||||
} else {
|
||||
l.a("smoke", p, q + 0.5D, r, 0.0D, 0.0D, 0.0D);
|
||||
}
|
||||
}
|
||||
|
||||
private void d() {
|
||||
float f = 4F;
|
||||
|
||||
l.a(((Entity) (null)), p, q, r, f);
|
||||
}
|
||||
|
||||
protected void a(NBTTagCompound nbttagcompound) {
|
||||
nbttagcompound.a("Fuse", (byte) a);
|
||||
}
|
||||
|
||||
protected void b(NBTTagCompound nbttagcompound) {
|
||||
a = ((int) (nbttagcompound.b("Fuse")));
|
||||
}
|
||||
}
|
155
src/main/java/net/minecraft/server/EntityTracker.java
Normale Datei
155
src/main/java/net/minecraft/server/EntityTracker.java
Normale Datei
@ -0,0 +1,155 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class EntityTracker {
|
||||
|
||||
private Set a;
|
||||
private MCHashTable b;
|
||||
private MinecraftServer c;
|
||||
private int d;
|
||||
|
||||
public EntityTracker(MinecraftServer minecraftserver) {
|
||||
a = ((Set) (new HashSet()));
|
||||
b = new MCHashTable();
|
||||
c = minecraftserver;
|
||||
d = minecraftserver.f.a();
|
||||
}
|
||||
|
||||
public void a(Entity entity) {
|
||||
if (entity instanceof EntityPlayerMP) {
|
||||
a(entity, 512, 2);
|
||||
EntityPlayerMP entityplayermp = (EntityPlayerMP) entity;
|
||||
Iterator iterator = a.iterator();
|
||||
|
||||
do {
|
||||
if (!iterator.hasNext()) {
|
||||
break;
|
||||
}
|
||||
EntityTrackerEntry entitytrackerentry = (EntityTrackerEntry) iterator.next();
|
||||
|
||||
if (entitytrackerentry.a != entityplayermp) {
|
||||
entitytrackerentry.b(entityplayermp);
|
||||
}
|
||||
} while (true);
|
||||
} else if (entity instanceof EntityFish) {
|
||||
a(entity, 64, 5, true);
|
||||
} else if (entity instanceof EntityArrow) {
|
||||
a(entity, 64, 5, true);
|
||||
} else if (entity instanceof EntitySnowball) {
|
||||
a(entity, 64, 5, true);
|
||||
} else if (entity instanceof EntityEgg) {
|
||||
a(entity, 64, 5, true);
|
||||
} else if (entity instanceof EntityItem) {
|
||||
a(entity, 64, 20, true);
|
||||
} else if (entity instanceof EntityMinecart) {
|
||||
a(entity, 160, 5, true);
|
||||
} else if (entity instanceof EntityBoat) {
|
||||
a(entity, 160, 5, true);
|
||||
} else if (entity instanceof EntitySquid) {
|
||||
a(entity, 160, 3, true);
|
||||
} else if (entity instanceof IAnimals) {
|
||||
a(entity, 160, 3);
|
||||
} else if (entity instanceof EntityTNTPrimed) {
|
||||
a(entity, 160, 10, true);
|
||||
} else if (entity instanceof EntityFallingSand) {
|
||||
a(entity, 160, 20, true);
|
||||
} else if (entity instanceof EntityPainting) {
|
||||
a(entity, 160, 0x7fffffff, false);
|
||||
}
|
||||
}
|
||||
|
||||
public void a(Entity entity, int i, int j) {
|
||||
a(entity, i, j, false);
|
||||
}
|
||||
|
||||
public void a(Entity entity, int i, int j, boolean flag) {
|
||||
if (i > d) {
|
||||
i = d;
|
||||
}
|
||||
if (b.b(entity.g)) {
|
||||
throw new IllegalStateException("Entity is already tracked!");
|
||||
} else {
|
||||
EntityTrackerEntry entitytrackerentry = new EntityTrackerEntry(entity, i, j, flag);
|
||||
|
||||
a.add(((entitytrackerentry)));
|
||||
b.a(entity.g, ((entitytrackerentry)));
|
||||
entitytrackerentry.b(c.e.d);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
public void b(Entity entity) {
|
||||
if (entity instanceof EntityPlayerMP) {
|
||||
EntityPlayerMP entityplayermp = (EntityPlayerMP) entity;
|
||||
EntityTrackerEntry entitytrackerentry1;
|
||||
|
||||
for (Iterator iterator = a.iterator(); iterator.hasNext(); entitytrackerentry1.a(entityplayermp)) {
|
||||
entitytrackerentry1 = (EntityTrackerEntry) iterator.next();
|
||||
}
|
||||
}
|
||||
EntityTrackerEntry entitytrackerentry = (EntityTrackerEntry) b.d(entity.g);
|
||||
|
||||
if (entitytrackerentry != null) {
|
||||
a.remove(((entitytrackerentry)));
|
||||
entitytrackerentry.a();
|
||||
}
|
||||
}
|
||||
|
||||
public void a() {
|
||||
ArrayList arraylist = new ArrayList();
|
||||
Iterator iterator = a.iterator();
|
||||
|
||||
do {
|
||||
if (!iterator.hasNext()) {
|
||||
break;
|
||||
}
|
||||
EntityTrackerEntry entitytrackerentry = (EntityTrackerEntry) iterator.next();
|
||||
|
||||
entitytrackerentry.a(c.e.d);
|
||||
if (entitytrackerentry.m && (entitytrackerentry.a instanceof EntityPlayerMP)) {
|
||||
((List) (arraylist)).add((((EntityPlayerMP) entitytrackerentry.a)));
|
||||
}
|
||||
} while (true);
|
||||
label0:
|
||||
for (int i = 0; i < ((List) (arraylist)).size(); i++) {
|
||||
EntityPlayerMP entityplayermp = (EntityPlayerMP) ((List) (arraylist)).get(i);
|
||||
Iterator iterator1 = a.iterator();
|
||||
|
||||
do {
|
||||
if (!iterator1.hasNext()) {
|
||||
continue label0;
|
||||
}
|
||||
EntityTrackerEntry entitytrackerentry1 = (EntityTrackerEntry) iterator1.next();
|
||||
|
||||
if (entitytrackerentry1.a != entityplayermp) {
|
||||
entitytrackerentry1.b(entityplayermp);
|
||||
}
|
||||
} while (true);
|
||||
}
|
||||
}
|
||||
|
||||
public void a(Entity entity, Packet packet) {
|
||||
EntityTrackerEntry entitytrackerentry = (EntityTrackerEntry) b.a(entity.g);
|
||||
|
||||
if (entitytrackerentry != null) {
|
||||
entitytrackerentry.a(packet);
|
||||
}
|
||||
}
|
||||
|
||||
public void b(Entity entity, Packet packet) {
|
||||
EntityTrackerEntry entitytrackerentry = (EntityTrackerEntry) b.a(entity.g);
|
||||
|
||||
if (entitytrackerentry != null) {
|
||||
entitytrackerentry.b(packet);
|
||||
}
|
||||
}
|
||||
|
||||
public void a(EntityPlayerMP entityplayermp) {
|
||||
EntityTrackerEntry entitytrackerentry;
|
||||
|
||||
for (Iterator iterator = a.iterator(); iterator.hasNext(); entitytrackerentry.c(entityplayermp)) {
|
||||
entitytrackerentry = (EntityTrackerEntry) iterator.next();
|
||||
}
|
||||
}
|
||||
}
|
252
src/main/java/net/minecraft/server/EntityTrackerEntry.java
Normale Datei
252
src/main/java/net/minecraft/server/EntityTrackerEntry.java
Normale Datei
@ -0,0 +1,252 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class EntityTrackerEntry {
|
||||
|
||||
public Entity a;
|
||||
public int b;
|
||||
public int c;
|
||||
public int d;
|
||||
public int e;
|
||||
public int f;
|
||||
public int g;
|
||||
public int h;
|
||||
public double i;
|
||||
public double j;
|
||||
public double k;
|
||||
public int l;
|
||||
private double o;
|
||||
private double p;
|
||||
private double q;
|
||||
private boolean r;
|
||||
private boolean s;
|
||||
public boolean m;
|
||||
public Set n;
|
||||
|
||||
public EntityTrackerEntry(Entity entity, int i1, int j1, boolean flag) {
|
||||
l = 0;
|
||||
r = false;
|
||||
m = false;
|
||||
n = ((Set) (new HashSet()));
|
||||
a = entity;
|
||||
b = i1;
|
||||
c = j1;
|
||||
s = flag;
|
||||
d = MathHelper.b(entity.p * 32D);
|
||||
e = MathHelper.b(entity.q * 32D);
|
||||
f = MathHelper.b(entity.r * 32D);
|
||||
g = MathHelper.d((entity.v * 256F) / 360F);
|
||||
h = MathHelper.d((entity.w * 256F) / 360F);
|
||||
}
|
||||
|
||||
public boolean equals(Object obj) {
|
||||
if (obj instanceof EntityTrackerEntry) {
|
||||
return ((EntityTrackerEntry) obj).a.g == a.g;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public int hashCode() {
|
||||
return a.g;
|
||||
}
|
||||
|
||||
public void a(List list) {
|
||||
m = false;
|
||||
if (!r || a.d(o, p, q) > 16D) {
|
||||
o = a.p;
|
||||
p = a.q;
|
||||
q = a.r;
|
||||
r = true;
|
||||
m = true;
|
||||
b(list);
|
||||
}
|
||||
if (++l % c == 0) {
|
||||
int i1 = MathHelper.b(a.p * 32D);
|
||||
int j1 = MathHelper.b(a.q * 32D);
|
||||
int k1 = MathHelper.b(a.r * 32D);
|
||||
int l1 = MathHelper.d((a.v * 256F) / 360F);
|
||||
int i2 = MathHelper.d((a.w * 256F) / 360F);
|
||||
boolean flag = i1 != d || j1 != e || k1 != f;
|
||||
boolean flag1 = l1 != g || i2 != h;
|
||||
int j2 = i1 - d;
|
||||
int k2 = j1 - e;
|
||||
int l2 = k1 - f;
|
||||
Object obj = null;
|
||||
|
||||
if (j2 < -128 || j2 >= 128 || k2 < -128 || k2 >= 128 || l2 < -128 || l2 >= 128) {
|
||||
obj = ((new Packet34EntityTeleport(a.g, i1, j1, k1, (byte) l1, (byte) i2)));
|
||||
} else if (flag && flag1) {
|
||||
obj = ((new Packet33RelEntityMoveLook(a.g, (byte) j2, (byte) k2, (byte) l2, (byte) l1, (byte) i2)));
|
||||
} else if (flag) {
|
||||
obj = ((new Packet31RelEntityMove(a.g, (byte) j2, (byte) k2, (byte) l2)));
|
||||
} else if (flag1) {
|
||||
obj = ((new Packet32EntityLook(a.g, (byte) l1, (byte) i2)));
|
||||
} else {
|
||||
obj = ((new Packet30Entity(a.g)));
|
||||
}
|
||||
if (s) {
|
||||
double d1 = a.s - i;
|
||||
double d2 = a.t - j;
|
||||
double d3 = a.u - k;
|
||||
double d4 = 0.02D;
|
||||
double d5 = d1 * d1 + d2 * d2 + d3 * d3;
|
||||
|
||||
if (d5 > d4 * d4 || d5 > 0.0D && a.s == 0.0D && a.t == 0.0D && a.u == 0.0D) {
|
||||
i = a.s;
|
||||
j = a.t;
|
||||
k = a.u;
|
||||
a(((Packet) (new Packet28(a.g, i, j, k))));
|
||||
}
|
||||
}
|
||||
if (obj != null) {
|
||||
a(((Packet) (obj)));
|
||||
}
|
||||
DataWatcher datawatcher = a.p();
|
||||
|
||||
if (datawatcher.a()) {
|
||||
b(((Packet) (new Packet40(a.g, datawatcher))));
|
||||
}
|
||||
d = i1;
|
||||
e = j1;
|
||||
f = k1;
|
||||
g = l1;
|
||||
h = i2;
|
||||
}
|
||||
if (a.E) {
|
||||
b(((Packet) (new Packet28(a))));
|
||||
a.E = false;
|
||||
}
|
||||
}
|
||||
|
||||
public void a(Packet packet) {
|
||||
EntityPlayerMP entityplayermp;
|
||||
|
||||
for (Iterator iterator = n.iterator(); iterator.hasNext(); entityplayermp.a.b(packet)) {
|
||||
entityplayermp = (EntityPlayerMP) iterator.next();
|
||||
}
|
||||
}
|
||||
|
||||
public void b(Packet packet) {
|
||||
a(packet);
|
||||
if (a instanceof EntityPlayerMP) {
|
||||
((EntityPlayerMP) a).a.b(packet);
|
||||
}
|
||||
}
|
||||
|
||||
public void a() {
|
||||
a(((Packet) (new Packet29DestroyEntity(a.g))));
|
||||
}
|
||||
|
||||
public void a(EntityPlayerMP entityplayermp) {
|
||||
if (n.contains(((entityplayermp)))) {
|
||||
n.remove(((entityplayermp)));
|
||||
}
|
||||
}
|
||||
|
||||
public void b(EntityPlayerMP entityplayermp) {
|
||||
if (entityplayermp == a) {
|
||||
return;
|
||||
}
|
||||
double d1 = entityplayermp.p - (double) (d / 32);
|
||||
double d2 = entityplayermp.r - (double) (f / 32);
|
||||
|
||||
if (d1 >= (double) (-b) && d1 <= (double) b && d2 >= (double) (-b) && d2 <= (double) b) {
|
||||
if (!n.contains(((entityplayermp)))) {
|
||||
n.add(((entityplayermp)));
|
||||
entityplayermp.a.b(b());
|
||||
if (s) {
|
||||
entityplayermp.a.b(((Packet) (new Packet28(a.g, a.s, a.t, a.u))));
|
||||
}
|
||||
ItemStack aitemstack[] = a.I();
|
||||
|
||||
if (aitemstack != null) {
|
||||
for (int i1 = 0; i1 < aitemstack.length; i1++) {
|
||||
entityplayermp.a.b(((Packet) (new Packet5PlayerInventory(a.g, i1, aitemstack[i1]))));
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (n.contains(((entityplayermp)))) {
|
||||
n.remove(((entityplayermp)));
|
||||
entityplayermp.a.b(((Packet) (new Packet29DestroyEntity(a.g))));
|
||||
}
|
||||
}
|
||||
|
||||
public void b(List list) {
|
||||
for (int i1 = 0; i1 < list.size(); i1++) {
|
||||
b((EntityPlayerMP) list.get(i1));
|
||||
}
|
||||
}
|
||||
|
||||
private Packet b() {
|
||||
if (a instanceof EntityItem) {
|
||||
EntityItem entityitem = (EntityItem) a;
|
||||
Packet21PickupSpawn packet21pickupspawn = new Packet21PickupSpawn(entityitem);
|
||||
|
||||
entityitem.p = (double) packet21pickupspawn.b / 32D;
|
||||
entityitem.q = (double) packet21pickupspawn.c / 32D;
|
||||
entityitem.r = (double) packet21pickupspawn.d / 32D;
|
||||
return ((Packet) (packet21pickupspawn));
|
||||
}
|
||||
if (a instanceof EntityPlayerMP) {
|
||||
return ((Packet) (new Packet20NamedEntitySpawn((EntityPlayer) a)));
|
||||
}
|
||||
if (a instanceof EntityMinecart) {
|
||||
EntityMinecart entityminecart = (EntityMinecart) a;
|
||||
|
||||
if (entityminecart.d == 0) {
|
||||
return ((Packet) (new Packet23VehicleSpawn(a, 10)));
|
||||
}
|
||||
if (entityminecart.d == 1) {
|
||||
return ((Packet) (new Packet23VehicleSpawn(a, 11)));
|
||||
}
|
||||
if (entityminecart.d == 2) {
|
||||
return ((Packet) (new Packet23VehicleSpawn(a, 12)));
|
||||
}
|
||||
}
|
||||
if (a instanceof EntityBoat) {
|
||||
return ((Packet) (new Packet23VehicleSpawn(a, 1)));
|
||||
}
|
||||
if (a instanceof IAnimals) {
|
||||
return ((Packet) (new Packet24MobSpawn((EntityLiving) a)));
|
||||
}
|
||||
if (a instanceof EntityFish) {
|
||||
return ((Packet) (new Packet23VehicleSpawn(a, 90)));
|
||||
}
|
||||
if (a instanceof EntityArrow) {
|
||||
return ((Packet) (new Packet23VehicleSpawn(a, 60)));
|
||||
}
|
||||
if (a instanceof EntitySnowball) {
|
||||
return ((Packet) (new Packet23VehicleSpawn(a, 61)));
|
||||
}
|
||||
if (a instanceof EntityEgg) {
|
||||
return ((Packet) (new Packet23VehicleSpawn(a, 62)));
|
||||
}
|
||||
if (a instanceof EntityTNTPrimed) {
|
||||
return ((Packet) (new Packet23VehicleSpawn(a, 50)));
|
||||
}
|
||||
if (a instanceof EntityFallingSand) {
|
||||
EntityFallingSand entityfallingsand = (EntityFallingSand) a;
|
||||
|
||||
if (entityfallingsand.a == Block.E.bi) {
|
||||
return ((Packet) (new Packet23VehicleSpawn(a, 70)));
|
||||
}
|
||||
if (entityfallingsand.a == Block.F.bi) {
|
||||
return ((Packet) (new Packet23VehicleSpawn(a, 71)));
|
||||
}
|
||||
}
|
||||
if (a instanceof EntityPainting) {
|
||||
return ((Packet) (new Packet25((EntityPainting) a)));
|
||||
} else {
|
||||
throw new IllegalArgumentException((new StringBuilder()).append("Don't know how to add ").append(((((a)).getClass()))).append("!").toString());
|
||||
}
|
||||
}
|
||||
|
||||
public void c(EntityPlayerMP entityplayermp) {
|
||||
if (n.contains(((entityplayermp)))) {
|
||||
n.remove(((entityplayermp)));
|
||||
entityplayermp.a.b(((Packet) (new Packet29DestroyEntity(a.g))));
|
||||
}
|
||||
}
|
||||
}
|
28
src/main/java/net/minecraft/server/EntityWaterMob.java
Normale Datei
28
src/main/java/net/minecraft/server/EntityWaterMob.java
Normale Datei
@ -0,0 +1,28 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
public class EntityWaterMob extends EntityCreature implements IAnimals {
|
||||
|
||||
public EntityWaterMob(World world) {
|
||||
super(world);
|
||||
}
|
||||
|
||||
public boolean d_() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public void a(NBTTagCompound nbttagcompound) {
|
||||
super.a(nbttagcompound);
|
||||
}
|
||||
|
||||
public void b(NBTTagCompound nbttagcompound) {
|
||||
super.b(nbttagcompound);
|
||||
}
|
||||
|
||||
public boolean b() {
|
||||
return l.a(z);
|
||||
}
|
||||
|
||||
public int c() {
|
||||
return 120;
|
||||
}
|
||||
}
|
18
src/main/java/net/minecraft/server/EntityZombieSimple.java
Normale Datei
18
src/main/java/net/minecraft/server/EntityZombieSimple.java
Normale Datei
@ -0,0 +1,18 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
public class EntityZombieSimple extends EntityMobs {
|
||||
|
||||
public EntityZombieSimple(World world) {
|
||||
super(world);
|
||||
aP = "/mob/zombie.png";
|
||||
bC = 0.5F;
|
||||
c = 50;
|
||||
aZ *= 10;
|
||||
H *= 6F;
|
||||
a(I * 6F, J * 6F);
|
||||
}
|
||||
|
||||
protected float a(int i, int j, int k) {
|
||||
return l.l(i, j, k) - 0.5F;
|
||||
}
|
||||
}
|
In neuem Issue referenzieren
Einen Benutzer sperren