diff options
Diffstat (limited to 'src/main/java/net/minecraft/server/EntityMinecart.java')
-rw-r--r-- | src/main/java/net/minecraft/server/EntityMinecart.java | 145 |
1 files changed, 67 insertions, 78 deletions
diff --git a/src/main/java/net/minecraft/server/EntityMinecart.java b/src/main/java/net/minecraft/server/EntityMinecart.java index cb54f5fe..d61296f7 100644 --- a/src/main/java/net/minecraft/server/EntityMinecart.java +++ b/src/main/java/net/minecraft/server/EntityMinecart.java @@ -1,7 +1,9 @@ package net.minecraft.server; import java.util.List; +import java.util.Random; +// CraftBukkit start import org.bukkit.Location; import org.bukkit.Vector; import org.bukkit.craftbukkit.CraftEntity; @@ -10,12 +12,10 @@ import org.bukkit.craftbukkit.CraftMinecart; import org.bukkit.craftbukkit.CraftServer; import org.bukkit.event.Event.Type; import org.bukkit.event.vehicle.*; +// CraftBukkit end -public class EntityMinecart extends Entity - implements IInventory, CraftMappable { +public class EntityMinecart extends Entity implements IInventory, CraftMappable { // CraftBukkit - private CraftMinecart minecart; - private ItemStack ak[]; public int a; public int b; @@ -94,7 +94,10 @@ public class EntityMinecart extends Entity private double aq; private double ar; private double as; - + + // CraftBukkit start + private CraftMinecart minecart; + private boolean slowWhenEmpty = true; private double derailedX = 0.5; private double derailedY = 0.5; @@ -107,6 +110,11 @@ public class EntityMinecart extends Entity return minecart; } + public ItemStack[] getContents() { + return this.ak; + } + // CraftBukkit end + public EntityMinecart(World world) { super(world); ak = new ItemStack[36]; @@ -118,17 +126,9 @@ public class EntityMinecart extends Entity a(0.98F, 0.7F); H = J / 2.0F; M = false; - - // CraftBukkit start - handleCreation(world); - // CraftBukkit end - } - // CraftBukkit start - public ItemStack[] getContents() { - return this.ak; + handleCreation(world); // CraftBukkit } - // CraftBukkit end public AxisAlignedBB d(Entity entity) { return entity.z; @@ -142,8 +142,7 @@ public class EntityMinecart extends Entity return true; } - public EntityMinecart(World world, double d1, double d2, double d3, - int i) { + public EntityMinecart(World world, double d1, double d2, double d3, int i) { this(world); a(d1, d2 + (double) H, d3); s = 0.0D; @@ -153,18 +152,15 @@ public class EntityMinecart extends Entity n = d2; o = d3; d = i; - - // CraftBukkit start - handleCreation(world); - // CraftBukkit end + + handleCreation(world); // CraftBukkit } // CraftBukkit start private void handleCreation(World world) { CraftServer server = ((WorldServer) world).getServer(); minecart = CraftMinecart.getCraftMinecart(server, this); - VehicleCreateEvent event = new VehicleCreateEvent( - Type.VEHICLE_CREATE, minecart); + VehicleCreateEvent event = new VehicleCreateEvent( Type.VEHICLE_CREATE, minecart); server.getPluginManager().callEvent(event); } // CraftBukkit end @@ -175,18 +171,15 @@ public class EntityMinecart extends Entity public boolean a(Entity entity, int i) { // CraftBukkit start - VehicleDamageEvent event = new VehicleDamageEvent( - Type.VEHICLE_DAMAGE, minecart, - ((WorldServer)l).getWorld().toCraftEntity(entity), i); + VehicleDamageEvent event = new VehicleDamageEvent( Type.VEHICLE_DAMAGE, minecart, ((WorldServer)l).getWorld().toCraftEntity(entity), i); ((WorldServer)l).getServer().getPluginManager().callEvent(event); - + if (event.isCancelled()) { return true; } - // CraftBukkit end - i = event.getDamage(); - + // CraftBukkit end + if (l.z || G) { return true; } @@ -238,7 +231,7 @@ public class EntityMinecart extends Entity entityitem.s = (float) W.nextGaussian() * f4; entityitem.t = (float) W.nextGaussian() * f4 + 0.2F; entityitem.u = (float) W.nextGaussian() * f4; - l.a(entityitem); + l.a(((Entity) (entityitem))); } while (true); } @@ -246,12 +239,13 @@ public class EntityMinecart extends Entity } public void b_() { + // CraftBukkit start double prevX = p; double prevY = q; double prevZ = r; float prevYaw = v; float prevPitch = w; - + // CraftBukkit end if (b > 0) { b--; } @@ -271,8 +265,8 @@ public class EntityMinecart extends Entity for (; d4 >= 180D; d4 -= 360D) { ; } - v += d4 / (double) an; - w += (as - (double) w) / (double) an; + v += ((float) (d4 / (double) an)); + w += ((float) ((as - (double) w) / (double) an)); an--; a(d1, d2, d3); b(v, w); @@ -380,6 +374,7 @@ public class EntityMinecart extends Entity } else if (ai[1][1] != 0 && MathHelper.b(p) - i == ai[1][0] && MathHelper.b(r) - i1 == ai[1][2]) { a(p, q + (double) ai[1][1], r); } + // CraftBukkit if (j != null || !slowWhenEmpty) { s *= 0.99699997901916504D; t *= 0.0D; @@ -459,18 +454,21 @@ public class EntityMinecart extends Entity u = d6; } if (A) { + // CraftBukkit start s *= derailedX; t *= derailedY; u *= derailedZ; + // CraftBukkit end } c(s, t, u); if (!A) { + // CraftBukkit start s *= flyingX; t *= flyingY; u *= flyingZ; + // CraftBukkit end } } - w = 0.0F; double d28 = m - p; double d29 = o - r; @@ -498,23 +496,24 @@ public class EntityMinecart extends Entity // CraftBukkit start CraftServer server = ((WorldServer)l).getServer(); VehicleMoveEvent event = new VehicleMoveEvent( - Type.VEHICLE_MOVE, minecart, - new Location(((WorldServer)l).getWorld(), prevX, prevY, prevZ, prevYaw, prevPitch), - new Location(((WorldServer)l).getWorld(), p, q, r, v, w)); + Type.VEHICLE_MOVE, + minecart, + new Location(((WorldServer)l).getWorld(), prevX, prevY, prevZ, prevYaw, prevPitch), + new Location(((WorldServer)l).getWorld(), p, q, r, v, w) + ); server.getPluginManager().callEvent(event); // CraftBukkit end - - List list = l.b(this, z.b(0.20000000298023224D, 0.0D, 0.20000000298023224D)); + + List list = l.b(((Entity) (this)), z.b(0.20000000298023224D, 0.0D, 0.20000000298023224D)); if (list != null && list.size() > 0) { for (int i2 = 0; i2 < list.size(); i2++) { Entity entity = (Entity) list.get(i2); if (entity != j && entity.v() && (entity instanceof EntityMinecart)) { - entity.c(this); + entity.c(((Entity) (this))); } } - } if (j != null && j.G) { j = null; @@ -598,11 +597,11 @@ public class EntityMinecart extends Entity nbttagcompound1.a("Slot", (byte) i); ak[i].a(nbttagcompound1); - nbttaglist.a(nbttagcompound1); + nbttaglist.a(((NBTBase) (nbttagcompound1))); } } - nbttagcompound.a("Items", nbttaglist); + nbttagcompound.a("Items", ((NBTBase) (nbttaglist))); } } @@ -611,7 +610,7 @@ public class EntityMinecart extends Entity if (d == 2) { f = nbttagcompound.g("PushX"); aj = nbttagcompound.g("PushZ"); - e = nbttagcompound.c("Fuel"); + e = ((int) (nbttagcompound.c("Fuel"))); } else if (d == 1) { NBTTagList nbttaglist = nbttagcompound.k("Items"); @@ -624,7 +623,6 @@ public class EntityMinecart extends Entity ak[k] = new ItemStack(nbttagcompound1); } } - } } @@ -638,35 +636,31 @@ public class EntityMinecart extends Entity // CraftBukkit start CraftServer server = ((WorldServer)l).getServer(); - VehicleEntityCollisionEvent collsionEvent = new VehicleEntityCollisionEvent( - Type.VEHICLE_COLLISION_ENTITY, minecart, - ((WorldServer)l).getWorld().toCraftEntity(entity)); + VehicleEntityCollisionEvent collsionEvent = new VehicleEntityCollisionEvent( Type.VEHICLE_COLLISION_ENTITY, minecart, ((WorldServer)l).getWorld().toCraftEntity(entity)); server.getPluginManager().callEvent(collsionEvent); - + if (collsionEvent.isCancelled()) { return; } - // CraftBukkit end - - if (!collsionEvent.isPickupCancelled() - && (entity instanceof EntityLiving) && !(entity instanceof EntityPlayer) - && d == 0 && s * s + u * u > 0.01D && j == null && entity.k == null) { - // CraftBukkit start - VehicleEnterEvent enterEvent = new VehicleEnterEvent( - Type.VEHICLE_ENTER, minecart, - ((WorldServer)l).getWorld().toCraftEntity(entity)); - server.getPluginManager().callEvent(enterEvent); - // CraftBukkit end - - if (!enterEvent.isCancelled()) { - entity.e(this); + + if ((entity instanceof EntityLiving) && !(entity instanceof EntityPlayer) && d == 0 && s * s + u * u > 0.01D && j == null && entity.k == null) { + if (!collsionEvent.isPickupCancelled()) { + VehicleEnterEvent enterEvent = new VehicleEnterEvent( Type.VEHICLE_ENTER, minecart, ((WorldServer)l).getWorld().toCraftEntity(entity)); + server.getPluginManager().callEvent(enterEvent); + + if (!enterEvent.isCancelled()) { + entity.e(((Entity) (this))); + } } } + // CraftBukkit end + double d1 = entity.p - p; double d2 = entity.r - r; double d3 = d1 * d1 + d2 * d2; - if (!collsionEvent.isCollisionCancelled() && d3 >= 9.9999997473787516E-005D) { + // CraftBukkit + if (d3 >= 9.9999997473787516E-005D && !collsionEvent.isCollisionCancelled()) { d3 = MathHelper.a(d3); d1 /= d3; d2 /= d3; @@ -760,37 +754,34 @@ public class EntityMinecart extends Entity public void d() {} - public boolean a(EntityPlayer entityplayer) { + public boolean a(EntityPlayer entityplayer) { if (d == 0) { if (j != null && (j instanceof EntityPlayer) && j != entityplayer) { return true; } if (!l.z) { // CraftBukkit start - CraftServer server = ((WorldServer)l).getServer(); - VehicleEnterEvent event = new VehicleEnterEvent( - Type.VEHICLE_ENTER, - minecart, - ((WorldServer)l).getWorld().toCraftEntity(entityplayer)); + CraftServer server = ((WorldServer) l).getServer(); + VehicleEnterEvent event = new VehicleEnterEvent( Type.VEHICLE_ENTER, minecart, ((WorldServer)l).getWorld().toCraftEntity(entityplayer)); server.getPluginManager().callEvent(event); - + if (event.isCancelled()) { return true; } // CraftBukkit end - - entityplayer.e(this); + + entityplayer.e(((Entity) (this))); } } else if (d == 1) { if (!l.z) { - entityplayer.a((IInventory)this); + entityplayer.a(((IInventory) (this))); } } else if (d == 2) { ItemStack itemstack = entityplayer.an.e(); if (itemstack != null && itemstack.c == Item.k.aW) { if (--itemstack.a == 0) { - entityplayer.an.a(entityplayer.an.c, null); + entityplayer.an.a(entityplayer.an.c, ((ItemStack) (null))); } e += 1200; } @@ -804,8 +795,6 @@ public class EntityMinecart extends Entity if (G) { return false; } - return entityplayer.b(this) <= 64D; + return entityplayer.b(((Entity) (this))) <= 64D; } - } - |