summaryrefslogtreecommitdiffstats
path: root/src/main/java/net/minecraft/server
diff options
context:
space:
mode:
authorEvilSeph <evilseph@unaligned.org>2011-06-13 16:17:14 -0400
committerEvilSeph <evilseph@unaligned.org>2011-06-14 10:16:53 -0400
commit8bfa8e2d04b6128783667a8f5c0b86ffb153903b (patch)
tree7f788605c605eddc8c3ffa486a486c1546811f2d /src/main/java/net/minecraft/server
parent9adc03abab01da7a419522990d8807ef27dafb8f (diff)
downloadcraftbukkit-8bfa8e2d04b6128783667a8f5c0b86ffb153903b.tar
craftbukkit-8bfa8e2d04b6128783667a8f5c0b86ffb153903b.tar.gz
craftbukkit-8bfa8e2d04b6128783667a8f5c0b86ffb153903b.tar.lz
craftbukkit-8bfa8e2d04b6128783667a8f5c0b86ffb153903b.tar.xz
craftbukkit-8bfa8e2d04b6128783667a8f5c0b86ffb153903b.zip
Made Squids fire EntityDeath events.
Diffstat (limited to 'src/main/java/net/minecraft/server')
-rw-r--r--src/main/java/net/minecraft/server/EntitySquid.java164
1 files changed, 164 insertions, 0 deletions
diff --git a/src/main/java/net/minecraft/server/EntitySquid.java b/src/main/java/net/minecraft/server/EntitySquid.java
new file mode 100644
index 00000000..cc8fd690
--- /dev/null
+++ b/src/main/java/net/minecraft/server/EntitySquid.java
@@ -0,0 +1,164 @@
+package net.minecraft.server;
+
+// CraftBukkit start
+import java.util.ArrayList;
+import java.util.List;
+import org.bukkit.Server;
+import org.bukkit.craftbukkit.CraftServer;
+import org.bukkit.craftbukkit.CraftWorld;
+import org.bukkit.craftbukkit.entity.CraftEntity;
+import org.bukkit.event.entity.EntityDeathEvent;
+// CraftBukkit end
+
+public class EntitySquid extends EntityWaterAnimal {
+
+ public float a = 0.0F;
+ public float b = 0.0F;
+ public float c = 0.0F;
+ public float f = 0.0F;
+ public float g = 0.0F;
+ public float h = 0.0F;
+ public float i = 0.0F;
+ public float j = 0.0F;
+ private float k = 0.0F;
+ private float l = 0.0F;
+ private float m = 0.0F;
+ private float n = 0.0F;
+ private float o = 0.0F;
+ private float p = 0.0F;
+
+ public EntitySquid(World world) {
+ super(world);
+ this.texture = "/mob/squid.png";
+ this.b(0.95F, 0.95F);
+ this.l = 1.0F / (this.random.nextFloat() + 1.0F) * 0.2F;
+ }
+
+ public void b(NBTTagCompound nbttagcompound) {
+ super.b(nbttagcompound);
+ }
+
+ public void a(NBTTagCompound nbttagcompound) {
+ super.a(nbttagcompound);
+ }
+
+ protected String g() {
+ return null;
+ }
+
+ protected String h() {
+ return null;
+ }
+
+ protected String i() {
+ return null;
+ }
+
+ protected float k() {
+ return 0.4F;
+ }
+
+ protected int j() {
+ return 0;
+ }
+
+ protected void r() {
+ // CraftBukkit start - whole method
+ List<org.bukkit.inventory.ItemStack> loot = new ArrayList<org.bukkit.inventory.ItemStack>();
+
+ int count = this.random.nextInt(3) + 1;
+ if (count > 0) {
+ loot.add(new org.bukkit.inventory.ItemStack(org.bukkit.Material.INK_SACK, count));
+ }
+
+ CraftWorld cworld = ((WorldServer) world).getWorld();
+ Server server = ((WorldServer) world).getServer();
+ CraftEntity entity = (CraftEntity) getBukkitEntity();
+
+ EntityDeathEvent event = new EntityDeathEvent(entity, loot);
+ server.getPluginManager().callEvent(event);
+
+ for (org.bukkit.inventory.ItemStack stack : event.getDrops()) {
+ cworld.dropItemNaturally(entity.getLocation(), stack);
+ }
+ // CraftBukkit end
+ }
+
+ public boolean a(EntityHuman entityhuman) {
+ return false;
+ }
+
+ public boolean ac() {
+ return this.world.a(this.boundingBox.b(0.0D, -0.6000000238418579D, 0.0D), Material.WATER, this);
+ }
+
+ public void u() {
+ super.u();
+ this.b = this.a;
+ this.f = this.c;
+ this.h = this.g;
+ this.j = this.i;
+ this.g += this.l;
+ if (this.g > 6.2831855F) {
+ this.g -= 6.2831855F;
+ if (this.random.nextInt(10) == 0) {
+ this.l = 1.0F / (this.random.nextFloat() + 1.0F) * 0.2F;
+ }
+ }
+
+ if (this.ac()) {
+ float f;
+
+ if (this.g < 3.1415927F) {
+ f = this.g / 3.1415927F;
+ this.i = MathHelper.sin(f * f * 3.1415927F) * 3.1415927F * 0.25F;
+ if ((double) f > 0.75D) {
+ this.k = 1.0F;
+ this.m = 1.0F;
+ } else {
+ this.m *= 0.8F;
+ }
+ } else {
+ this.i = 0.0F;
+ this.k *= 0.9F;
+ this.m *= 0.99F;
+ }
+
+ if (!this.Y) {
+ this.motX = (double) (this.n * this.k);
+ this.motY = (double) (this.o * this.k);
+ this.motZ = (double) (this.p * this.k);
+ }
+
+ f = MathHelper.a(this.motX * this.motX + this.motZ * this.motZ);
+ this.K += (-((float) Math.atan2(this.motX, this.motZ)) * 180.0F / 3.1415927F - this.K) * 0.1F;
+ this.yaw = this.K;
+ this.c += 3.1415927F * this.m * 1.5F;
+ this.a += (-((float) Math.atan2((double) f, this.motY)) * 180.0F / 3.1415927F - this.a) * 0.1F;
+ } else {
+ this.i = MathHelper.abs(MathHelper.sin(this.g)) * 3.1415927F * 0.25F;
+ if (!this.Y) {
+ this.motX = 0.0D;
+ this.motY -= 0.08D;
+ this.motY *= 0.9800000190734863D;
+ this.motZ = 0.0D;
+ }
+
+ this.a = (float) ((double) this.a + (double) (-90.0F - this.a) * 0.02D);
+ }
+ }
+
+ public void a(float f, float f1) {
+ this.move(this.motX, this.motY, this.motZ);
+ }
+
+ protected void c_() {
+ if (this.random.nextInt(50) == 0 || !this.bA || this.n == 0.0F && this.o == 0.0F && this.p == 0.0F) {
+ float f = this.random.nextFloat() * 3.1415927F * 2.0F;
+
+ this.n = MathHelper.cos(f) * 0.2F;
+ this.o = -0.1F + this.random.nextFloat() * 0.2F;
+ this.p = MathHelper.sin(f) * 0.2F;
+ }
+ }
+}