mirror of
https://github.com/PaperMC/Paper.git
synced 2025-08-14 03:35:51 -07:00
Adding all Entities into CraftBukkit.
These are needed to properly allow for determining class type, in accordance with current practice.
This commit is contained in:
committed by
Dinner Bone
parent
5f2c8108b7
commit
5209e17e1b
252
src/main/java/net/minecraft/server/EntityTrackerEntry.java
Normal file
252
src/main/java/net/minecraft/server/EntityTrackerEntry.java
Normal file
@@ -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))));
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user