Update for 1.4_00_01 -- if you bypassed Bukkit, you will most likely break.

This commit is contained in:
Erik Broes 2011-04-20 19:05:14 +02:00
parent ac9f297445
commit 483a878b8b
116 changed files with 3155 additions and 3207 deletions

34
pom.xml
View file

@ -39,7 +39,7 @@
<dependency>
<groupId>org.bukkit</groupId>
<artifactId>minecraft-server</artifactId>
<version>1.4</version>
<version>1.4_00_01</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
@ -47,36 +47,11 @@
<groupId>net.sf.jopt-simple</groupId>
<artifactId>jopt-simple</artifactId>
<version>3.2</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>jline</groupId>
<artifactId>jline</artifactId>
<version>0.9.94</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.7.2</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.14</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.avaje</groupId>
<artifactId>ebean</artifactId>
<version>2.7.3</version>
<type>jar</type>
<scope>provided</scope>
</dependency>
</dependencies>
<!-- This builds a completely 'ready to start' jar with all dependencies inside -->
@ -149,13 +124,6 @@
<goals>
<goal>shade</goal>
</goals>
<configuration>
<artifactSet>
<excludes>
<exclude>junit:junit</exclude>
</excludes>
</artifactSet>
</configuration>
</execution>
</executions>
</plugin>

View file

@ -13,8 +13,8 @@ public class BlockBloodStone extends Block {
}
// Craftbukkit start
public void a(World world, int i, int j, int k, int l) {
if (net.minecraft.server.Block.byId[l] != null && net.minecraft.server.Block.byId[l].c()) {
public void doPhysics(World world, int i, int j, int k, int l) {
if (net.minecraft.server.Block.byId[l] != null && net.minecraft.server.Block.byId[l].isPowerSource()) {
CraftWorld craftWorld = ((WorldServer) world).getWorld();
CraftServer server = ((WorldServer) world).getServer();
org.bukkit.block.Block block = craftWorld.getBlockAt(i, j, k);

View file

@ -28,11 +28,11 @@ public class BlockButton extends Block {
return false;
}
public boolean a(World world, int i, int j, int k) {
public boolean canPlace(World world, int i, int j, int k) {
return world.d(i - 1, j, k) ? true : (world.d(i + 1, j, k) ? true : (world.d(i, j, k - 1) ? true : world.d(i, j, k + 1)));
}
public void d(World world, int i, int j, int k, int l) {
public void postPlace(World world, int i, int j, int k, int l) {
int i1 = world.getData(i, j, k);
int j1 = i1 & 8;
@ -49,14 +49,14 @@ public class BlockButton extends Block {
i1 = this.g(world, i, j, k);
}
world.c(i, j, k, i1 + j1);
world.setData(i, j, k, i1 + j1);
}
private int g(World world, int i, int j, int k) {
return world.d(i - 1, j, k) ? 1 : (world.d(i + 1, j, k) ? 2 : (world.d(i, j, k - 1) ? 3 : (world.d(i, j, k + 1) ? 4 : 1)));
}
public void a(World world, int i, int j, int k, int l) {
public void doPhysics(World world, int i, int j, int k, int l) {
if (this.h(world, i, j, k)) {
int i1 = world.getData(i, j, k) & 7;
boolean flag = false;
@ -79,15 +79,15 @@ public class BlockButton extends Block {
if (flag) {
this.a_(world, i, j, k, world.getData(i, j, k));
world.e(i, j, k, 0);
world.setTypeId(i, j, k, 0);
}
}
}
private boolean h(World world, int i, int j, int k) {
if (!this.a(world, i, j, k)) {
if (!this.canPlace(world, i, j, k)) {
this.a_(world, i, j, k, world.getData(i, j, k));
world.e(i, j, k, 0);
world.setTypeId(i, j, k, 0);
return false;
} else {
return true;
@ -119,10 +119,10 @@ public class BlockButton extends Block {
}
public void b(World world, int i, int j, int k, EntityHuman entityhuman) {
this.a(world, i, j, k, entityhuman);
this.interact(world, i, j, k, entityhuman);
}
public boolean a(World world, int i, int j, int k, EntityHuman entityhuman) {
public boolean interact(World world, int i, int j, int k, EntityHuman entityhuman) {
int l = world.getData(i, j, k);
int i1 = l & 7;
int j1 = 8 - (l & 8);
@ -144,20 +144,20 @@ public class BlockButton extends Block {
}
// CraftBukkit end
world.c(i, j, k, i1 + j1);
world.setData(i, j, k, i1 + j1);
world.b(i, j, k, i, j, k);
world.a((double) i + 0.5D, (double) j + 0.5D, (double) k + 0.5D, "random.click", 0.3F, 0.6F);
world.h(i, j, k, this.id);
world.makeSound((double) i + 0.5D, (double) j + 0.5D, (double) k + 0.5D, "random.click", 0.3F, 0.6F);
world.applyPhysics(i, j, k, this.id);
if (i1 == 1) {
world.h(i - 1, j, k, this.id);
world.applyPhysics(i - 1, j, k, this.id);
} else if (i1 == 2) {
world.h(i + 1, j, k, this.id);
world.applyPhysics(i + 1, j, k, this.id);
} else if (i1 == 3) {
world.h(i, j, k - 1, this.id);
world.applyPhysics(i, j, k - 1, this.id);
} else if (i1 == 4) {
world.h(i, j, k + 1, this.id);
world.applyPhysics(i, j, k + 1, this.id);
} else {
world.h(i, j - 1, k, this.id);
world.applyPhysics(i, j - 1, k, this.id);
}
world.c(i, j, k, this.id, this.b());
@ -165,27 +165,27 @@ public class BlockButton extends Block {
}
}
public void b(World world, int i, int j, int k) {
public void remove(World world, int i, int j, int k) {
int l = world.getData(i, j, k);
if ((l & 8) > 0) {
world.h(i, j, k, this.id);
world.applyPhysics(i, j, k, this.id);
int i1 = l & 7;
if (i1 == 1) {
world.h(i - 1, j, k, this.id);
world.applyPhysics(i - 1, j, k, this.id);
} else if (i1 == 2) {
world.h(i + 1, j, k, this.id);
world.applyPhysics(i + 1, j, k, this.id);
} else if (i1 == 3) {
world.h(i, j, k - 1, this.id);
world.applyPhysics(i, j, k - 1, this.id);
} else if (i1 == 4) {
world.h(i, j, k + 1, this.id);
world.applyPhysics(i, j, k + 1, this.id);
} else {
world.h(i, j - 1, k, this.id);
world.applyPhysics(i, j - 1, k, this.id);
}
}
super.b(world, i, j, k);
super.remove(world, i, j, k);
}
public boolean b(IBlockAccess iblockaccess, int i, int j, int k, int l) {
@ -204,7 +204,7 @@ public class BlockButton extends Block {
}
}
public boolean c() {
public boolean isPowerSource() {
return true;
}
@ -217,28 +217,30 @@ public class BlockButton extends Block {
CraftWorld craftWorld = ((WorldServer) world).getWorld();
CraftServer server = ((WorldServer) world).getServer();
CraftBlock block = (CraftBlock) craftWorld.getBlockAt(i, j, k);
BlockRedstoneEvent eventRedstone = new BlockRedstoneEvent(block, 1, 0);
server.getPluginManager().callEvent(eventRedstone);
if (eventRedstone.getNewCurrent() > 0) return;
// CraftBukkit end
world.c(i, j, k, l & 7);
world.h(i, j, k, this.id);
world.setData(i, j, k, l & 7);
world.applyPhysics(i, j, k, this.id);
int i1 = l & 7;
if (i1 == 1) {
world.h(i - 1, j, k, this.id);
world.applyPhysics(i - 1, j, k, this.id);
} else if (i1 == 2) {
world.h(i + 1, j, k, this.id);
world.applyPhysics(i + 1, j, k, this.id);
} else if (i1 == 3) {
world.h(i, j, k - 1, this.id);
world.applyPhysics(i, j, k - 1, this.id);
} else if (i1 == 4) {
world.h(i, j, k + 1, this.id);
world.applyPhysics(i, j, k + 1, this.id);
} else {
world.h(i, j - 1, k, this.id);
world.applyPhysics(i, j - 1, k, this.id);
}
world.a((double) i + 0.5D, (double) j + 0.5D, (double) k + 0.5D, "random.click", 0.3F, 0.5F);
world.makeSound((double) i + 0.5D, (double) j + 0.5D, (double) k + 0.5D, "random.click", 0.3F, 0.5F);
world.b(i, j, k, i, j, k);
}
}

View file

@ -28,10 +28,10 @@ public class BlockCactus extends Block {
int i1 = world.getData(i, j, k);
if (i1 == 15) {
world.e(i, j + 1, k, this.id);
world.c(i, j, k, 0);
world.setTypeId(i, j + 1, k, this.id);
world.setData(i, j, k, 0);
} else {
world.c(i, j, k, i1 + 1);
world.setData(i, j, k, i1 + 1);
}
}
}
@ -51,14 +51,14 @@ public class BlockCactus extends Block {
return false;
}
public boolean a(World world, int i, int j, int k) {
return !super.a(world, i, j, k) ? false : this.f(world, i, j, k);
public boolean canPlace(World world, int i, int j, int k) {
return !super.canPlace(world, i, j, k) ? false : this.f(world, i, j, k);
}
public void a(World world, int i, int j, int k, int l) {
public void doPhysics(World world, int i, int j, int k, int l) {
if (!this.f(world, i, j, k)) {
this.a_(world, i, j, k, world.getData(i, j, k));
world.e(i, j, k, 0);
world.setTypeId(i, j, k, 0);
}
}
@ -91,11 +91,11 @@ public class BlockCactus extends Block {
server.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
entity.a((Entity) null, event.getDamage());
entity.damageEntity((Entity) null, event.getDamage());
}
return;
}
// CraftBukkit end
entity.a((Entity) null, 1);
entity.damageEntity((Entity) null, 1);
}
}

View file

@ -45,14 +45,14 @@ public class BlockDispenser extends BlockContainer {
b0 = 4;
}
world.c(i, j, k, b0);
world.setData(i, j, k, b0);
}
public int a(int i) {
return i == 1 ? this.textureId + 17 : (i == 0 ? this.textureId + 17 : (i == 3 ? this.textureId + 1 : this.textureId));
}
public boolean a(World world, int i, int j, int k, EntityHuman entityhuman) {
public boolean interact(World world, int i, int j, int k, EntityHuman entityhuman) {
if (world.isStatic) {
return true;
} else {
@ -64,7 +64,7 @@ public class BlockDispenser extends BlockContainer {
}
// CraftBukkit - private->public
public void b(World world, int i, int j, int k, Random random) {
public void dispense(World world, int i, int j, int k, Random random) {
int l = world.getData(i, j, k);
float f = 0.0F;
float f1 = 0.0F;
@ -86,7 +86,7 @@ public class BlockDispenser extends BlockContainer {
double d2 = (double) k + (double) f1 * 0.5D + 0.5D;
if (itemstack == null) {
world.a((double) i, (double) j, (double) k, "random.click", 1.0F, 1.2F);
world.makeSound((double) i, (double) j, (double) k, "random.click", 1.0F, 1.2F);
} else {
double d3;
@ -94,20 +94,20 @@ public class BlockDispenser extends BlockContainer {
EntityArrow entityarrow = new EntityArrow(world, d0, d1, d2);
entityarrow.a((double) f, 0.10000000149011612D, (double) f1, 1.1F, 6.0F);
world.a((Entity) entityarrow);
world.a((double) i, (double) j, (double) k, "random.bow", 1.0F, 1.2F);
world.addEntity(entityarrow);
world.makeSound((double) i, (double) j, (double) k, "random.bow", 1.0F, 1.2F);
} else if (itemstack.id == Item.EGG.id) {
EntityEgg entityegg = new EntityEgg(world, d0, d1, d2);
entityegg.a((double) f, 0.10000000149011612D, (double) f1, 1.1F, 6.0F);
world.a((Entity) entityegg);
world.a((double) i, (double) j, (double) k, "random.bow", 1.0F, 1.2F);
world.addEntity(entityegg);
world.makeSound((double) i, (double) j, (double) k, "random.bow", 1.0F, 1.2F);
} else if (itemstack.id == Item.SNOW_BALL.id) {
EntitySnowball entitysnowball = new EntitySnowball(world, d0, d1, d2);
entitysnowball.a((double) f, 0.10000000149011612D, (double) f1, 1.1F, 6.0F);
world.a((Entity) entitysnowball);
world.a((double) i, (double) j, (double) k, "random.bow", 1.0F, 1.2F);
world.addEntity(entitysnowball);
world.makeSound((double) i, (double) j, (double) k, "random.bow", 1.0F, 1.2F);
} else {
EntityItem entityitem = new EntityItem(world, d0, d1 - 0.3D, d2, itemstack);
@ -118,8 +118,8 @@ public class BlockDispenser extends BlockContainer {
entityitem.motX += random.nextGaussian() * 0.007499999832361937D * 6.0D;
entityitem.motY += random.nextGaussian() * 0.007499999832361937D * 6.0D;
entityitem.motZ += random.nextGaussian() * 0.007499999832361937D * 6.0D;
world.a((Entity) entityitem);
world.a((double) i, (double) j, (double) k, "random.click", 1.0F, 1.0F);
world.addEntity(entityitem);
world.makeSound((double) i, (double) j, (double) k, "random.click", 1.0F, 1.0F);
}
for (int i1 = 0; i1 < 10; ++i1) {
@ -136,9 +136,9 @@ public class BlockDispenser extends BlockContainer {
}
}
public void a(World world, int i, int j, int k, int l) {
if (l > 0 && Block.byId[l].c()) {
boolean flag = world.p(i, j, k) || world.p(i, j + 1, k);
public void doPhysics(World world, int i, int j, int k, int l) {
if (l > 0 && Block.byId[l].isPowerSource()) {
boolean flag = world.isBlockIndirectlyPowered(i, j, k) || world.isBlockIndirectlyPowered(i, j + 1, k);
if (flag) {
world.c(i, j, k, this.id, this.b());
@ -147,8 +147,8 @@ public class BlockDispenser extends BlockContainer {
}
public void a(World world, int i, int j, int k, Random random) {
if (world.p(i, j, k) || world.p(i, j + 1, k)) {
this.b(world, i, j, k, random);
if (world.isBlockIndirectlyPowered(i, j, k) || world.isBlockIndirectlyPowered(i, j + 1, k)) {
this.dispense(world, i, j, k, random);
}
}
@ -156,23 +156,23 @@ public class BlockDispenser extends BlockContainer {
return new TileEntityDispenser();
}
public void a(World world, int i, int j, int k, EntityLiving entityliving) {
int l = MathHelper.b((double) (entityliving.yaw * 4.0F / 360.0F) + 0.5D) & 3;
public void postPlace(World world, int i, int j, int k, EntityLiving entityliving) {
int l = MathHelper.floor((double) (entityliving.yaw * 4.0F / 360.0F) + 0.5D) & 3;
if (l == 0) {
world.c(i, j, k, 2);
world.setData(i, j, k, 2);
}
if (l == 1) {
world.c(i, j, k, 5);
world.setData(i, j, k, 5);
}
if (l == 2) {
world.c(i, j, k, 3);
world.setData(i, j, k, 3);
}
if (l == 3) {
world.c(i, j, k, 4);
world.setData(i, j, k, 4);
}
}
}

View file

@ -51,7 +51,7 @@ public class BlockDoor extends Block {
}
public AxisAlignedBB d(World world, int i, int j, int k) {
this.a((IBlockAccess) world, i, j, k);
this.a(world, i, j, k);
return super.d(world, i, j, k);
}
@ -81,10 +81,10 @@ public class BlockDoor extends Block {
}
public void b(World world, int i, int j, int k, EntityHuman entityhuman) {
this.a(world, i, j, k, entityhuman);
this.interact(world, i, j, k, entityhuman);
}
public boolean a(World world, int i, int j, int k, EntityHuman entityhuman) {
public boolean interact(World world, int i, int j, int k, EntityHuman entityhuman) {
if (this.material == Material.ORE) {
return true;
} else {
@ -92,21 +92,21 @@ public class BlockDoor extends Block {
if ((l & 8) != 0) {
if (world.getTypeId(i, j - 1, k) == this.id) {
this.a(world, i, j - 1, k, entityhuman);
this.interact(world, i, j - 1, k, entityhuman);
}
return true;
} else {
if (world.getTypeId(i, j + 1, k) == this.id) {
world.c(i, j + 1, k, (l ^ 4) + 8);
world.setData(i, j + 1, k, (l ^ 4) + 8);
}
world.c(i, j, k, l ^ 4);
world.setData(i, j, k, l ^ 4);
world.b(i, j - 1, k, i, j, k);
if (Math.random() < 0.5D) {
world.a((double) i + 0.5D, (double) j + 0.5D, (double) k + 0.5D, "random.door_open", 1.0F, world.k.nextFloat() * 0.1F + 0.9F);
world.makeSound((double) i + 0.5D, (double) j + 0.5D, (double) k + 0.5D, "random.door_open", 1.0F, world.random.nextFloat() * 0.1F + 0.9F);
} else {
world.a((double) i + 0.5D, (double) j + 0.5D, (double) k + 0.5D, "random.door_close", 1.0F, world.k.nextFloat() * 0.1F + 0.9F);
world.makeSound((double) i + 0.5D, (double) j + 0.5D, (double) k + 0.5D, "random.door_close", 1.0F, world.random.nextFloat() * 0.1F + 0.9F);
}
return true;
@ -114,56 +114,56 @@ public class BlockDoor extends Block {
}
}
public void a(World world, int i, int j, int k, boolean flag) {
public void setDoor(World world, int i, int j, int k, boolean flag) {
int l = world.getData(i, j, k);
if ((l & 8) != 0) {
if (world.getTypeId(i, j - 1, k) == this.id) {
this.a(world, i, j - 1, k, flag);
this.setDoor(world, i, j - 1, k, flag);
}
} else {
boolean flag1 = (world.getData(i, j, k) & 4) > 0;
if (flag1 != flag) {
if (world.getTypeId(i, j + 1, k) == this.id) {
world.c(i, j + 1, k, (l ^ 4) + 8);
world.setData(i, j + 1, k, (l ^ 4) + 8);
}
world.c(i, j, k, l ^ 4);
world.setData(i, j, k, l ^ 4);
world.b(i, j - 1, k, i, j, k);
if (Math.random() < 0.5D) {
world.a((double) i + 0.5D, (double) j + 0.5D, (double) k + 0.5D, "random.door_open", 1.0F, world.k.nextFloat() * 0.1F + 0.9F);
world.makeSound((double) i + 0.5D, (double) j + 0.5D, (double) k + 0.5D, "random.door_open", 1.0F, world.random.nextFloat() * 0.1F + 0.9F);
} else {
world.a((double) i + 0.5D, (double) j + 0.5D, (double) k + 0.5D, "random.door_close", 1.0F, world.k.nextFloat() * 0.1F + 0.9F);
world.makeSound((double) i + 0.5D, (double) j + 0.5D, (double) k + 0.5D, "random.door_close", 1.0F, world.random.nextFloat() * 0.1F + 0.9F);
}
}
}
}
public void a(World world, int i, int j, int k, int l) {
public void doPhysics(World world, int i, int j, int k, int l) {
int i1 = world.getData(i, j, k);
if ((i1 & 8) != 0) {
if (world.getTypeId(i, j - 1, k) != this.id) {
world.e(i, j, k, 0);
world.setTypeId(i, j, k, 0);
}
if (l > 0 && Block.byId[l].c()) {
this.a(world, i, j - 1, k, l);
if (l > 0 && Block.byId[l].isPowerSource()) {
this.doPhysics(world, i, j - 1, k, l);
}
} else {
boolean flag = false;
if (world.getTypeId(i, j + 1, k) != this.id) {
world.e(i, j, k, 0);
world.setTypeId(i, j, k, 0);
flag = true;
}
if (!world.d(i, j - 1, k)) {
world.e(i, j, k, 0);
world.setTypeId(i, j, k, 0);
flag = true;
if (world.getTypeId(i, j + 1, k) == this.id) {
world.e(i, j + 1, k, 0);
world.setTypeId(i, j + 1, k, 0);
}
}
@ -171,8 +171,8 @@ public class BlockDoor extends Block {
if (!world.isStatic) {
this.a_(world, i, j, k, i1);
}
} else if (l > 0 && Block.byId[l].c()) {
boolean flag1 = world.p(i, j, k) || world.p(i, j + 1, k);
} else if (l > 0 && Block.byId[l].isPowerSource()) {
boolean flag1 = world.isBlockIndirectlyPowered(i, j, k) || world.isBlockIndirectlyPowered(i, j + 1, k);
// Craftbukkit start
CraftWorld craftWorld = ((WorldServer) world).getWorld();
@ -185,8 +185,11 @@ public class BlockDoor extends Block {
BlockRedstoneEvent eventRedstone = new BlockRedstoneEvent(block, (world.getData(i, j, k) & 4) > 0 ? 15: 0, power);
server.getPluginManager().callEvent(eventRedstone);
this.a(world, i, j, k, eventRedstone.getNewCurrent() > 0);
flag1 = eventRedstone.getNewCurrent() > 0;
// Craftbukkit end
this.setDoor(world, i, j, k, flag1);
}
}
}
@ -196,7 +199,7 @@ public class BlockDoor extends Block {
}
public MovingObjectPosition a(World world, int i, int j, int k, Vec3D vec3d, Vec3D vec3d1) {
this.a((IBlockAccess) world, i, j, k);
this.a(world, i, j, k);
return super.a(world, i, j, k, vec3d, vec3d1);
}
@ -204,7 +207,7 @@ public class BlockDoor extends Block {
return (i & 4) == 0 ? i - 1 & 3 : i & 3;
}
public boolean a(World world, int i, int j, int k) {
return j >= 127 ? false : world.d(i, j - 1, k) && super.a(world, i, j, k) && super.a(world, i, j + 1, k);
public boolean canPlace(World world, int i, int j, int k) {
return j >= 127 ? false : world.d(i, j - 1, k) && super.canPlace(world, i, j, k) && super.canPlace(world, i, j + 1, k);
}
}

View file

@ -53,17 +53,16 @@ public class BlockFire extends Block {
int l = world.getData(i, j, k);
if (l < 15) {
world.c(i, j, k, l + 1);
world.setData(i, j, k, l + 1);
world.c(i, j, k, this.id, this.b());
}
if (!flag && !this.g(world, i, j, k)) {
if (!world.d(i, j - 1, k) || l > 3) {
world.e(i, j, k, 0);
world.setTypeId(i, j, k, 0);
}
// CraftBukkit - Cast to IBlockAccess
} else if (!flag && !this.b((IBlockAccess) world, i, j - 1, k) && l == 15 && random.nextInt(4) == 0) {
world.e(i, j, k, 0);
} else if (!flag && !this.b(world, i, j - 1, k) && l == 15 && random.nextInt(4) == 0) {
world.setTypeId(i, j, k, 0);
} else {
if (l % 2 == 0 && l > 2) {
this.a(world, i + 1, j, k, 300, random);
@ -106,7 +105,7 @@ public class BlockFire extends Block {
}
// CraftBukkit end
world.e(i1, k1, j1, this.id);
world.setTypeId(i1, k1, j1, this.id);
}
}
}
@ -142,21 +141,18 @@ public class BlockFire extends Block {
// CraftBukkit end
if (random.nextInt(2) == 0) {
world.e(i, j, k, this.id);
world.setTypeId(i, j, k, this.id);
} else {
world.e(i, j, k, 0);
world.setTypeId(i, j, k, 0);
}
if (flag) {
Block.TNT.b(world, i, j, k, 0);
Block.TNT.postBreak(world, i, j, k, 0);
}
}
}
// CraftBukkit start -- fix cast to IBlockAccess
private boolean g(World world1, int i, int j, int k) {
IBlockAccess world = (IBlockAccess) world1;
// CraftBukkit end
private boolean g(World world, int i, int j, int k) {
return this.b(world, i + 1, j, k) ? true : (this.b(world, i - 1, j, k) ? true : (this.b(world, i, j - 1, k) ? true : (this.b(world, i, j + 1, k) ? true : (this.b(world, i, j, k - 1) ? true : this.b(world, i, j, k + 1)))));
}
@ -191,20 +187,20 @@ public class BlockFire extends Block {
return i1 > l ? i1 : l;
}
public boolean a(World world, int i, int j, int k) {
public boolean canPlace(World world, int i, int j, int k) {
return world.d(i, j - 1, k) || this.g(world, i, j, k);
}
public void a(World world, int i, int j, int k, int l) {
public void doPhysics(World world, int i, int j, int k, int l) {
if (!world.d(i, j - 1, k) && !this.g(world, i, j, k)) {
world.e(i, j, k, 0);
world.setTypeId(i, j, k, 0);
}
}
public void e(World world, int i, int j, int k) {
if (world.getTypeId(i, j - 1, k) != Block.OBSIDIAN.id || !Block.PORTAL.a_(world, i, j, k)) {
if (!world.d(i, j - 1, k) && !this.g(world, i, j, k)) {
world.e(i, j, k, 0);
world.setTypeId(i, j, k, 0);
} else {
world.c(i, j, k, this.id, this.b());
}

View file

@ -23,9 +23,9 @@ public class BlockFlowing extends BlockFluids {
private void i(World world, int i, int j, int k) {
int l = world.getData(i, j, k);
world.setTypeIdAndData(i, j, k, this.id + 1, l);
world.setRawTypeIdAndData(i, j, k, this.id + 1, l);
world.b(i, j, k, i, j, k);
world.g(i, j, k);
world.notify(i, j, k);
}
public void a(World world, int i, int j, int k, Random random) {
@ -38,7 +38,7 @@ public class BlockFlowing extends BlockFluids {
int l = this.g(world, i, j, k);
byte b0 = 1;
if (this.material == Material.LAVA && !world.m.d) {
if (this.material == Material.LAVA && !world.worldProvider.d) {
b0 = 2;
}
@ -85,11 +85,11 @@ public class BlockFlowing extends BlockFluids {
if (i1 != l) {
l = i1;
if (i1 < 0) {
world.e(i, j, k, 0);
world.setTypeId(i, j, k, 0);
} else {
world.c(i, j, k, i1);
world.setData(i, j, k, i1);
world.c(i, j, k, this.id, this.b());
world.h(i, j, k, this.id);
world.applyPhysics(i, j, k, this.id);
}
} else if (flag) {
this.i(world, i, j, k);
@ -107,9 +107,9 @@ public class BlockFlowing extends BlockFluids {
if (!event.isCancelled()) {
if (l >= 8) {
world.b(i, j - 1, k, this.id, l);
world.setTypeIdAndData(i, j - 1, k, this.id, l);
} else {
world.b(i, j - 1, k, this.id, l + 8);
world.setTypeIdAndData(i, j - 1, k, this.id, l + 8);
}
}
// CraftBukkit end
@ -137,7 +137,7 @@ public class BlockFlowing extends BlockFluids {
}
if (!event.isCancelled()) {
this.f(world, i + currentFace.getModX(), j, k + currentFace.getModZ(), i1);
this.flow(world, i + currentFace.getModX(), j, k + currentFace.getModZ(), i1);
}
}
index++;
@ -146,7 +146,7 @@ public class BlockFlowing extends BlockFluids {
}
}
private void f(World world, int i, int j, int k, int l) {
private void flow(World world, int i, int j, int k, int l) {
if (this.l(world, i, j, k)) {
int i1 = world.getTypeId(i, j, k);
@ -158,7 +158,7 @@ public class BlockFlowing extends BlockFluids {
}
}
world.b(i, j, k, this.id, l);
world.setTypeIdAndData(i, j, k, this.id, l);
}
}

View file

@ -19,7 +19,7 @@ public class BlockLeaves extends BlockLeavesBase {
this.a(true);
}
public void b(World world, int i, int j, int k) {
public void remove(World world, int i, int j, int k) {
byte b0 = 1;
int l = b0 + 1;
@ -32,7 +32,7 @@ public class BlockLeaves extends BlockLeavesBase {
if (l1 == Block.LEAVES.id) {
int i2 = world.getData(i + i1, j + j1, k + k1);
world.d(i + i1, j + j1, k + k1, i2 | 4);
world.setRawData(i + i1, j + j1, k + k1, i2 | 4);
}
}
}
@ -114,7 +114,7 @@ public class BlockLeaves extends BlockLeavesBase {
l1 = this.a[k1 * j1 + k1 * b1 + k1];
if (l1 >= 0) {
world.c(i, j, k, l & -5);
world.setData(i, j, k, l & -5);
} else {
this.g(world, i, j, k);
}
@ -133,7 +133,7 @@ public class BlockLeaves extends BlockLeavesBase {
// CraftBukkit end
this.a_(world, i, j, k, world.getData(i, j, k));
world.e(i, j, k, 0);
world.setTypeId(i, j, k, 0);
}
public int a(Random random) {

View file

@ -21,17 +21,17 @@ public class BlockLever extends Block {
return false;
}
public boolean a(World world, int i, int j, int k) {
public boolean canPlace(World world, int i, int j, int k) {
return world.d(i - 1, j, k) ? true : (world.d(i + 1, j, k) ? true : (world.d(i, j, k - 1) ? true : (world.d(i, j, k + 1) ? true : world.d(i, j - 1, k))));
}
public void d(World world, int i, int j, int k, int l) {
public void postPlace(World world, int i, int j, int k, int l) {
int i1 = world.getData(i, j, k);
int j1 = i1 & 8;
i1 &= 7;
if (l == 1 && world.d(i, j - 1, k)) {
i1 = 5 + world.k.nextInt(2);
i1 = 5 + world.random.nextInt(2);
}
if (l == 2 && world.d(i, j, k + 1)) {
@ -50,10 +50,10 @@ public class BlockLever extends Block {
i1 = 1;
}
world.c(i, j, k, i1 + j1);
world.setData(i, j, k, i1 + j1);
}
public void a(World world, int i, int j, int k, int l) {
public void doPhysics(World world, int i, int j, int k, int l) {
if (this.g(world, i, j, k)) {
int i1 = world.getData(i, j, k) & 7;
boolean flag = false;
@ -80,15 +80,15 @@ public class BlockLever extends Block {
if (flag) {
this.a_(world, i, j, k, world.getData(i, j, k));
world.e(i, j, k, 0);
world.setTypeId(i, j, k, 0);
}
}
}
private boolean g(World world, int i, int j, int k) {
if (!this.a(world, i, j, k)) {
if (!this.canPlace(world, i, j, k)) {
this.a_(world, i, j, k, world.getData(i, j, k));
world.e(i, j, k, 0);
world.setTypeId(i, j, k, 0);
return false;
} else {
return true;
@ -114,10 +114,10 @@ public class BlockLever extends Block {
}
public void b(World world, int i, int j, int k, EntityHuman entityhuman) {
this.a(world, i, j, k, entityhuman);
this.interact(world, i, j, k, entityhuman);
}
public boolean a(World world, int i, int j, int k, EntityHuman entityhuman) {
public boolean interact(World world, int i, int j, int k, EntityHuman entityhuman) {
if (world.isStatic) {
return true;
} else {
@ -140,47 +140,47 @@ public class BlockLever extends Block {
}
// CraftBukkit end
world.c(i, j, k, i1 + j1);
world.setData(i, j, k, i1 + j1);
world.b(i, j, k, i, j, k);
world.a((double) i + 0.5D, (double) j + 0.5D, (double) k + 0.5D, "random.click", 0.3F, j1 > 0 ? 0.6F : 0.5F);
world.h(i, j, k, this.id);
world.makeSound((double) i + 0.5D, (double) j + 0.5D, (double) k + 0.5D, "random.click", 0.3F, j1 > 0 ? 0.6F : 0.5F);
world.applyPhysics(i, j, k, this.id);
if (i1 == 1) {
world.h(i - 1, j, k, this.id);
world.applyPhysics(i - 1, j, k, this.id);
} else if (i1 == 2) {
world.h(i + 1, j, k, this.id);
world.applyPhysics(i + 1, j, k, this.id);
} else if (i1 == 3) {
world.h(i, j, k - 1, this.id);
world.applyPhysics(i, j, k - 1, this.id);
} else if (i1 == 4) {
world.h(i, j, k + 1, this.id);
world.applyPhysics(i, j, k + 1, this.id);
} else {
world.h(i, j - 1, k, this.id);
world.applyPhysics(i, j - 1, k, this.id);
}
return true;
}
}
public void b(World world, int i, int j, int k) {
public void remove(World world, int i, int j, int k) {
int l = world.getData(i, j, k);
if ((l & 8) > 0) {
world.h(i, j, k, this.id);
world.applyPhysics(i, j, k, this.id);
int i1 = l & 7;
if (i1 == 1) {
world.h(i - 1, j, k, this.id);
world.applyPhysics(i - 1, j, k, this.id);
} else if (i1 == 2) {
world.h(i + 1, j, k, this.id);
world.applyPhysics(i + 1, j, k, this.id);
} else if (i1 == 3) {
world.h(i, j, k - 1, this.id);
world.applyPhysics(i, j, k - 1, this.id);
} else if (i1 == 4) {
world.h(i, j, k + 1, this.id);
world.applyPhysics(i, j, k + 1, this.id);
} else {
world.h(i, j - 1, k, this.id);
world.applyPhysics(i, j - 1, k, this.id);
}
}
super.b(world, i, j, k);
super.remove(world, i, j, k);
}
public boolean b(IBlockAccess iblockaccess, int i, int j, int k, int l) {
@ -199,7 +199,7 @@ public class BlockLever extends Block {
}
}
public boolean c() {
public boolean isPowerSource() {
return true;
}
}

View file

@ -40,13 +40,13 @@ public class BlockPressurePlate extends Block {
return false;
}
public boolean a(World world, int i, int j, int k) {
public boolean canPlace(World world, int i, int j, int k) {
return world.d(i, j - 1, k);
}
public void e(World world, int i, int j, int k) {}
public void a(World world, int i, int j, int k, int l) {
public void doPhysics(World world, int i, int j, int k, int l) {
boolean flag = false;
if (!world.d(i, j - 1, k)) {
@ -55,7 +55,7 @@ public class BlockPressurePlate extends Block {
if (flag) {
this.a_(world, i, j, k, world.getData(i, j, k));
world.e(i, j, k, 0);
world.setTypeId(i, j, k, 0);
}
}
@ -129,19 +129,19 @@ public class BlockPressurePlate extends Block {
// CraftBukkit end
if (flag1 && !flag) {
world.c(i, j, k, 1);
world.h(i, j, k, this.id);
world.h(i, j - 1, k, this.id);
world.setData(i, j, k, 1);
world.applyPhysics(i, j, k, this.id);
world.applyPhysics(i, j - 1, k, this.id);
world.b(i, j, k, i, j, k);
world.a((double) i + 0.5D, (double) j + 0.1D, (double) k + 0.5D, "random.click", 0.3F, 0.6F);
world.makeSound((double) i + 0.5D, (double) j + 0.1D, (double) k + 0.5D, "random.click", 0.3F, 0.6F);
}
if (!flag1 && flag) {
world.c(i, j, k, 0);
world.h(i, j, k, this.id);
world.h(i, j - 1, k, this.id);
world.setData(i, j, k, 0);
world.applyPhysics(i, j, k, this.id);
world.applyPhysics(i, j - 1, k, this.id);
world.b(i, j, k, i, j, k);
world.a((double) i + 0.5D, (double) j + 0.1D, (double) k + 0.5D, "random.click", 0.3F, 0.5F);
world.makeSound((double) i + 0.5D, (double) j + 0.1D, (double) k + 0.5D, "random.click", 0.3F, 0.5F);
}
if (flag1) {
@ -149,15 +149,15 @@ public class BlockPressurePlate extends Block {
}
}
public void b(World world, int i, int j, int k) {
public void remove(World world, int i, int j, int k) {
int l = world.getData(i, j, k);
if (l > 0) {
world.h(i, j, k, this.id);
world.h(i, j - 1, k, this.id);
world.applyPhysics(i, j, k, this.id);
world.applyPhysics(i, j - 1, k, this.id);
}
super.b(world, i, j, k);
super.remove(world, i, j, k);
}
public void a(IBlockAccess iblockaccess, int i, int j, int k) {
@ -179,7 +179,7 @@ public class BlockPressurePlate extends Block {
return world.getData(i, j, k) == 0 ? false : l == 1;
}
public boolean c() {
public boolean isPowerSource() {
return true;
}
}

View file

@ -1,10 +1,8 @@
package net.minecraft.server;
// CraftBukkit start
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.craftbukkit.CraftWorld;
import org.bukkit.event.block.BlockRedstoneEvent;
// CraftBukkit end
public class BlockPumpkin extends Block {
@ -41,21 +39,21 @@ public class BlockPumpkin extends Block {
super.e(world, i, j, k);
}
public boolean a(World world, int i, int j, int k) {
public boolean canPlace(World world, int i, int j, int k) {
int l = world.getTypeId(i, j, k);
return (l == 0 || Block.byId[l].material.isLiquid()) && world.d(i, j - 1, k);
}
public void a(World world, int i, int j, int k, EntityLiving entityliving) {
int l = MathHelper.b((double) (entityliving.yaw * 4.0F / 360.0F) + 0.5D) & 3;
public void postPlace(World world, int i, int j, int k, EntityLiving entityliving) {
int l = MathHelper.floor((double) (entityliving.yaw * 4.0F / 360.0F) + 0.5D) & 3;
world.c(i, j, k, l);
world.setData(i, j, k, l);
}
// Craftbukkit start
public void a(World world, int i, int j, int k, int l) {
if (net.minecraft.server.Block.byId[l] != null && net.minecraft.server.Block.byId[l].c()) {
public void doPhysics(World world, int i, int j, int k, int l) {
if (net.minecraft.server.Block.byId[l] != null && net.minecraft.server.Block.byId[l].isPowerSource()) {
CraftWorld craftWorld = ((WorldServer) world).getWorld();
CraftServer server = ((WorldServer) world).getServer();
org.bukkit.block.Block block = craftWorld.getBlockAt(i, j, k);

View file

@ -12,7 +12,7 @@ import org.bukkit.plugin.PluginManager;
public class BlockRedstoneTorch extends BlockTorch {
private boolean a = false;
private boolean isOn = false;
private static List b = new ArrayList();
public int a(int i, int j) {
@ -21,7 +21,7 @@ public class BlockRedstoneTorch extends BlockTorch {
private boolean a(World world, int i, int j, int k, boolean flag) {
if (flag) {
b.add(new RedstoneUpdateInfo(i, j, k, world.l()));
b.add(new RedstoneUpdateInfo(i, j, k, world.getTime()));
}
int l = 0;
@ -42,7 +42,7 @@ public class BlockRedstoneTorch extends BlockTorch {
protected BlockRedstoneTorch(int i, int j, boolean flag) {
super(i, j);
this.a = flag;
this.isOn = flag;
this.a(true);
}
@ -55,29 +55,29 @@ public class BlockRedstoneTorch extends BlockTorch {
super.e(world, i, j, k);
}
if (this.a) {
world.h(i, j - 1, k, this.id);
world.h(i, j + 1, k, this.id);
world.h(i - 1, j, k, this.id);
world.h(i + 1, j, k, this.id);
world.h(i, j, k - 1, this.id);
world.h(i, j, k + 1, this.id);
if (this.isOn) {
world.applyPhysics(i, j - 1, k, this.id);
world.applyPhysics(i, j + 1, k, this.id);
world.applyPhysics(i - 1, j, k, this.id);
world.applyPhysics(i + 1, j, k, this.id);
world.applyPhysics(i, j, k - 1, this.id);
world.applyPhysics(i, j, k + 1, this.id);
}
}
public void b(World world, int i, int j, int k) {
if (this.a) {
world.h(i, j - 1, k, this.id);
world.h(i, j + 1, k, this.id);
world.h(i - 1, j, k, this.id);
world.h(i + 1, j, k, this.id);
world.h(i, j, k - 1, this.id);
world.h(i, j, k + 1, this.id);
public void remove(World world, int i, int j, int k) {
if (this.isOn) {
world.applyPhysics(i, j - 1, k, this.id);
world.applyPhysics(i, j + 1, k, this.id);
world.applyPhysics(i - 1, j, k, this.id);
world.applyPhysics(i + 1, j, k, this.id);
world.applyPhysics(i, j, k - 1, this.id);
world.applyPhysics(i, j, k + 1, this.id);
}
}
public boolean b(IBlockAccess iblockaccess, int i, int j, int k, int l) {
if (!this.a) {
if (!this.isOn) {
return false;
} else {
int i1 = iblockaccess.getData(i, j, k);
@ -89,24 +89,24 @@ public class BlockRedstoneTorch extends BlockTorch {
private boolean g(World world, int i, int j, int k) {
int l = world.getData(i, j, k);
return l == 5 && world.j(i, j - 1, k, 0) ? true : (l == 3 && world.j(i, j, k - 1, 2) ? true : (l == 4 && world.j(i, j, k + 1, 3) ? true : (l == 1 && world.j(i - 1, j, k, 4) ? true : l == 2 && world.j(i + 1, j, k, 5))));
return l == 5 && world.isBlockFaceIndirectlyPowered(i, j - 1, k, 0) ? true : (l == 3 && world.isBlockFaceIndirectlyPowered(i, j, k - 1, 2) ? true : (l == 4 && world.isBlockFaceIndirectlyPowered(i, j, k + 1, 3) ? true : (l == 1 && world.isBlockFaceIndirectlyPowered(i - 1, j, k, 4) ? true : l == 2 && world.isBlockFaceIndirectlyPowered(i + 1, j, k, 5))));
}
public void a(World world, int i, int j, int k, Random random) {
boolean flag = this.g(world, i, j, k);
while (b.size() > 0 && world.l() - ((RedstoneUpdateInfo) b.get(0)).d > 100L) {
while (b.size() > 0 && world.getTime() - ((RedstoneUpdateInfo) b.get(0)).d > 100L) {
b.remove(0);
}
// CraftBukkit start
CraftBlock block = (CraftBlock) ((WorldServer) world).getWorld().getBlockAt(i, j, k);
PluginManager man = ((WorldServer) world).getServer().getPluginManager();
int oldCurrent = this.a ? 15 : 0;
int oldCurrent = this.isOn ? 15 : 0;
BlockRedstoneEvent event = new BlockRedstoneEvent(block, oldCurrent, oldCurrent);
// CraftBukkit end
if (this.a) {
if (this.isOn) {
if (flag) {
// CraftBukkit start
if (oldCurrent != 0) {
@ -117,9 +117,9 @@ public class BlockRedstoneTorch extends BlockTorch {
}
}
// CraftBukkit end
world.b(i, j, k, Block.REDSTONE_TORCH_OFF.id, world.getData(i, j, k));
world.setTypeIdAndData(i, j, k, Block.REDSTONE_TORCH_OFF.id, world.getData(i, j, k));
if (this.a(world, i, j, k, true)) {
world.a((double) ((float) i + 0.5F), (double) ((float) j + 0.5F), (double) ((float) k + 0.5F), "random.fizz", 0.5F, 2.6F + (world.k.nextFloat() - world.k.nextFloat()) * 0.8F);
world.makeSound((double) ((float) i + 0.5F), (double) ((float) j + 0.5F), (double) ((float) k + 0.5F), "random.fizz", 0.5F, 2.6F + (world.random.nextFloat() - world.random.nextFloat()) * 0.8F);
for (int l = 0; l < 5; ++l) {
double d0 = (double) i + random.nextDouble() * 0.6D + 0.2D;
@ -140,25 +140,24 @@ public class BlockRedstoneTorch extends BlockTorch {
}
}
// CraftBukkit end
world.b(i, j, k, Block.REDSTONE_TORCH_ON.id, world.getData(i, j, k));
world.setTypeIdAndData(i, j, k, Block.REDSTONE_TORCH_ON.id, world.getData(i, j, k));
}
}
public void a(World world, int i, int j, int k, int l) {
super.a(world, i, j, k, l);
public void doPhysics(World world, int i, int j, int k, int l) {
super.doPhysics(world, i, j, k, l);
world.c(i, j, k, this.id, this.b());
}
public boolean c(World world, int i, int j, int k, int l) {
// CraftBukkit -- cast to IBlockAccess
return l == 0 ? this.b((IBlockAccess) world, i, j, k, l) : false;
return l == 0 ? this.b(world, i, j, k, l) : false;
}
public int a(int i, Random random) {
return Block.REDSTONE_TORCH_ON.id;
}
public boolean c() {
public boolean isPowerSource() {
return true;
}
}

View file

@ -32,7 +32,7 @@ public class BlockRedstoneWire extends Block {
return false;
}
public boolean a(World world, int i, int j, int k) {
public boolean canPlace(World world, int i, int j, int k) {
return world.d(i, j - 1, k);
}
@ -45,7 +45,7 @@ public class BlockRedstoneWire extends Block {
for (int l = 0; l < arraylist.size(); ++l) {
ChunkPosition chunkposition = (ChunkPosition) arraylist.get(l);
world.h(chunkposition.a, chunkposition.b, chunkposition.c, this.id);
world.applyPhysics(chunkposition.x, chunkposition.y, chunkposition.z, this.id);
}
}
@ -54,7 +54,7 @@ public class BlockRedstoneWire extends Block {
int l1 = 0;
this.a = false;
boolean flag = world.p(i, j, k);
boolean flag = world.isBlockIndirectlyPowered(i, j, k);
this.a = true;
int i2;
@ -84,15 +84,15 @@ public class BlockRedstoneWire extends Block {
}
if (j2 != l || j != i1 || k2 != j1) {
l1 = this.f(world, j2, j, k2, l1);
l1 = this.getPower(world, j2, j, k2, l1);
}
if (world.d(j2, j, k2) && !world.d(i, j + 1, k)) {
if (j2 != l || j + 1 != i1 || k2 != j1) {
l1 = this.f(world, j2, j + 1, k2, l1);
l1 = this.getPower(world, j2, j + 1, k2, l1);
}
} else if (!world.d(j2, j, k2) && (j2 != l || j - 1 != i1 || k2 != j1)) {
l1 = this.f(world, j2, j - 1, k2, l1);
l1 = this.getPower(world, j2, j - 1, k2, l1);
}
}
@ -114,7 +114,7 @@ public class BlockRedstoneWire extends Block {
if (k1 != l1) {
world.h = true;
world.c(i, j, k, l1);
world.setData(i, j, k, l1);
world.b(i, j, k, i, j, k);
world.h = false;
@ -144,7 +144,7 @@ public class BlockRedstoneWire extends Block {
}
boolean flag1 = false;
int i3 = this.f(world, j2, j, k2, -1);
int i3 = this.getPower(world, j2, j, k2, -1);
l1 = world.getData(i, j, k);
if (l1 > 0) {
@ -155,7 +155,7 @@ public class BlockRedstoneWire extends Block {
this.a(world, j2, j, k2, i, j, k);
}
i3 = this.f(world, j2, l2, k2, -1);
i3 = this.getPower(world, j2, l2, k2, -1);
l1 = world.getData(i, j, k);
if (l1 > 0) {
--l1;
@ -180,13 +180,13 @@ public class BlockRedstoneWire extends Block {
private void h(World world, int i, int j, int k) {
if (world.getTypeId(i, j, k) == this.id) {
world.h(i, j, k, this.id);
world.h(i - 1, j, k, this.id);
world.h(i + 1, j, k, this.id);
world.h(i, j, k - 1, this.id);
world.h(i, j, k + 1, this.id);
world.h(i, j - 1, k, this.id);
world.h(i, j + 1, k, this.id);
world.applyPhysics(i, j, k, this.id);
world.applyPhysics(i - 1, j, k, this.id);
world.applyPhysics(i + 1, j, k, this.id);
world.applyPhysics(i, j, k - 1, this.id);
world.applyPhysics(i, j, k + 1, this.id);
world.applyPhysics(i, j - 1, k, this.id);
world.applyPhysics(i, j + 1, k, this.id);
}
}
@ -194,8 +194,8 @@ public class BlockRedstoneWire extends Block {
super.e(world, i, j, k);
if (!world.isStatic) {
this.g(world, i, j, k);
world.h(i, j + 1, k, this.id);
world.h(i, j - 1, k, this.id);
world.applyPhysics(i, j + 1, k, this.id);
world.applyPhysics(i, j - 1, k, this.id);
this.h(world, i - 1, j, k);
this.h(world, i + 1, j, k);
this.h(world, i, j, k - 1);
@ -226,11 +226,11 @@ public class BlockRedstoneWire extends Block {
}
}
public void b(World world, int i, int j, int k) {
super.b(world, i, j, k);
public void remove(World world, int i, int j, int k) {
super.remove(world, i, j, k);
if (!world.isStatic) {
world.h(i, j + 1, k, this.id);
world.h(i, j - 1, k, this.id);
world.applyPhysics(i, j + 1, k, this.id);
world.applyPhysics(i, j - 1, k, this.id);
this.g(world, i, j, k);
this.h(world, i - 1, j, k);
this.h(world, i + 1, j, k);
@ -262,8 +262,8 @@ public class BlockRedstoneWire extends Block {
}
}
// Craftbukkit private-> public
public int f(World world, int i, int j, int k, int l) {
// Craftbukkit private->public
public int getPower(World world, int i, int j, int k, int l) {
if (world.getTypeId(i, j, k) != this.id) {
return l;
} else {
@ -273,21 +273,21 @@ public class BlockRedstoneWire extends Block {
}
}
public void a(World world, int i, int j, int k, int l) {
public void doPhysics(World world, int i, int j, int k, int l) {
if (!world.isStatic) {
int i1 = world.getData(i, j, k);
boolean flag = this.a(world, i, j, k);
boolean flag = this.canPlace(world, i, j, k);
if (!flag) {
this.a_(world, i, j, k, i1);
world.e(i, j, k, 0);
} else
// Craftbukkit
if ((Block.byId[l] != null && Block.byId[l].c()) || Block.DIODE_OFF.id == l || Block.DIODE_ON.id == l) {
world.setTypeId(i, j, k, 0);
} else {
// Craftbukkit
if ((Block.byId[l] != null && Block.byId[l].isPowerSource()) || Block.DIODE_OFF.id == l || Block.DIODE_ON.id == l)
this.g(world, i, j, k);
}
super.a(world, i, j, k, l);
super.doPhysics(world, i, j, k, l);
}
}
@ -296,8 +296,7 @@ public class BlockRedstoneWire extends Block {
}
public boolean c(World world, int i, int j, int k, int l) {
// CraftBukkit -- cast to IBlockAccess
return !this.a ? false : this.b((IBlockAccess) world, i, j, k, l);
return !this.a ? false : this.b(world, i, j, k, l);
}
public boolean b(IBlockAccess iblockaccess, int i, int j, int k, int l) {
@ -335,13 +334,13 @@ public class BlockRedstoneWire extends Block {
}
}
public boolean c() {
public boolean isPowerSource() {
return this.a;
}
public static boolean b(IBlockAccess iblockaccess, int i, int j, int k) {
int l = iblockaccess.getTypeId(i, j, k);
return l == Block.REDSTONE_WIRE.id ? true : (l == 0 ? false : Block.byId[l].c());
return l == Block.REDSTONE_WIRE.id ? true : (l == 0 ? false : Block.byId[l].isPowerSource());
}
}

View file

@ -73,7 +73,7 @@ public class BlockSign extends BlockContainer {
return Item.SIGN.id;
}
public void a(World world, int i, int j, int k, int l) {
public void doPhysics(World world, int i, int j, int k, int l) {
boolean flag = false;
if (this.b) {
@ -103,17 +103,18 @@ public class BlockSign extends BlockContainer {
if (flag) {
this.a_(world, i, j, k, world.getData(i, j, k));
world.e(i, j, k, 0);
world.setTypeId(i, j, k, 0);
}
super.a(world, i, j, k, l);
super.doPhysics(world, i, j, k, l);
// CraftBukkit start
if (net.minecraft.server.Block.byId[l] != null && net.minecraft.server.Block.byId[l].c()) {
if (net.minecraft.server.Block.byId[l] != null && net.minecraft.server.Block.byId[l].isPowerSource()) {
CraftWorld craftWorld = ((WorldServer) world).getWorld();
CraftServer server = ((WorldServer) world).getServer();
Block block = craftWorld.getBlockAt(i, j, k);
int power = block.getBlockPower();
BlockRedstoneEvent eventRedstone = new BlockRedstoneEvent(block, power, power);
server.getPluginManager().callEvent(eventRedstone);
}

View file

@ -1,10 +1,14 @@
package net.minecraft.server;
import java.util.Random;
// CraftBukkit start
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.event.CraftEventFactory;
import org.bukkit.event.Cancellable;
import org.bukkit.event.block.Action;
import org.bukkit.event.entity.EntityInteractEvent;
// CraftBukkit end
public class BlockSoil extends Block {
@ -31,34 +35,36 @@ public class BlockSoil extends Block {
public void a(World world, int i, int j, int k, Random random) {
if (random.nextInt(5) == 0) {
if (this.h(world, i, j, k)) {
world.c(i, j, k, 7);
world.setData(i, j, k, 7);
} else {
int l = world.getData(i, j, k);
if (l > 0) {
world.c(i, j, k, l - 1);
world.setData(i, j, k, l - 1);
} else if (!this.g(world, i, j, k)) {
world.e(i, j, k, Block.DIRT.id);
world.setTypeId(i, j, k, Block.DIRT.id);
}
}
}
}
public void b(World world, int i, int j, int k, Entity entity) {
// CraftBukkit start - Interact Soil
Cancellable cancellable;
if (entity instanceof EntityHuman) {
cancellable = CraftEventFactory.callPlayerInteractEvent((EntityHuman) entity, Action.PHYSICAL, i, j, k, -1, null);
}
else {
cancellable = new EntityInteractEvent(entity.getBukkitEntity(), ((WorldServer)world).getWorld().getBlockAt(i, j, k));
}
if (!cancellable.isCancelled()) {
if (world.k.nextInt(4) == 0) {
world.e(i, j, k, Block.DIRT.id);
if (world.random.nextInt(4) == 0) {
// CraftBukkit start - Interact Soil
Cancellable cancellable;
if (entity instanceof EntityHuman) {
cancellable = CraftEventFactory.callPlayerInteractEvent((EntityHuman) entity, Action.PHYSICAL, i, j, k, -1, null);
} else {
cancellable = new EntityInteractEvent(entity.getBukkitEntity(), ((WorldServer) world).getWorld().getBlockAt(i, j, k));
Bukkit.getServer().getPluginManager().callEvent((EntityInteractEvent) cancellable);
}
if (cancellable.isCancelled()) {
return;
}
// Craftbukkit end
world.setTypeId(i, j, k, Block.DIRT.id);
}
// Craftbukkit end
}
private boolean g(World world, int i, int j, int k) {
@ -89,12 +95,12 @@ public class BlockSoil extends Block {
return false;
}
public void a(World world, int i, int j, int k, int l) {
super.a(world, i, j, k, l);
public void doPhysics(World world, int i, int j, int k, int l) {
super.doPhysics(world, i, j, k, l);
Material material = world.getMaterial(i, j + 1, k);
if (material.isBuildable()) {
world.e(i, j, k, Block.DIRT.id);
world.setTypeId(i, j, k, Block.DIRT.id);
}
}

View file

@ -20,8 +20,8 @@ public class BlockStationary extends BlockFluids {
}
}
public void a(World world, int i, int j, int k, int l) {
super.a(world, i, j, k, l);
public void doPhysics(World world, int i, int j, int k, int l) {
super.doPhysics(world, i, j, k, l);
if (world.getTypeId(i, j, k) == this.id) {
this.i(world, i, j, k);
}
@ -31,7 +31,7 @@ public class BlockStationary extends BlockFluids {
int l = world.getData(i, j, k);
world.h = true;
world.setTypeIdAndData(i, j, k, this.id - 1, l);
world.setRawTypeIdAndData(i, j, k, this.id - 1, l);
world.b(i, j, k, i, j, k);
world.c(i, j, k, this.id - 1, this.b());
world.h = false;
@ -69,7 +69,7 @@ public class BlockStationary extends BlockFluids {
}
// CraftBukkit end
world.e(i, j, k, Block.FIRE.id);
world.setTypeId(i, j, k, Block.FIRE.id);
return;
}
} else if (Block.byId[j1].material.isSolid()) {

View file

@ -17,36 +17,36 @@ public class Chunk {
public static boolean a;
public byte[] b;
public boolean c;
public World d;
public World world;
public NibbleArray e;
public NibbleArray f;
public NibbleArray g;
public byte[] h;
public int i;
public final int j;
public final int k;
public Map l;
public List[] m;
public boolean n;
public final int x;
public final int z;
public Map tileEntities;
public List[] entitySlices;
public boolean done;
public boolean o;
public boolean p;
public boolean q;
public long r;
public Chunk(World world, int i, int j) {
this.l = new HashMap();
this.m = new List[8];
this.n = false;
this.tileEntities = new HashMap();
this.entitySlices = new List[8];
this.done = false;
this.o = false;
this.q = false;
this.r = 0L;
this.d = world;
this.j = i;
this.k = j;
this.world = world;
this.x = i;
this.z = j;
this.h = new byte[256];
for (int k = 0; k < this.m.length; ++k) {
this.m[k] = new ArrayList();
for (int k = 0; k < this.entitySlices.length; ++k) {
this.entitySlices[k] = new ArrayList();
}
// CraftBukkit start
@ -69,7 +69,7 @@ public class Chunk {
}
public boolean a(int i, int j) {
return i == this.j && j == this.k;
return i == this.x && j == this.z;
}
public int b(int i, int j) {
@ -99,7 +99,7 @@ public class Chunk {
i = l;
}
if (!this.d.m.e) {
if (!this.world.worldProvider.e) {
int j1 = 15;
int k1 = 127;
@ -126,12 +126,12 @@ public class Chunk {
this.o = true;
}
public void c() {}
public void loadNOP() {}
private void c(int i, int j) {
int k = this.b(i, j);
int l = this.j * 16 + i;
int i1 = this.k * 16 + j;
int l = this.x * 16 + i;
int i1 = this.z * 16 + j;
this.f(l - 1, i1, k);
this.f(l + 1, i1, k);
@ -140,13 +140,13 @@ public class Chunk {
}
private void f(int i, int j, int k) {
int l = this.d.d(i, j);
int l = this.world.getHighestBlockYAt(i, j);
if (l > k) {
this.d.a(EnumSkyBlock.SKY, i, k, j, i, l, j);
this.world.a(EnumSkyBlock.SKY, i, k, j, i, l, j);
this.o = true;
} else if (l < k) {
this.d.a(EnumSkyBlock.SKY, i, l, j, i, k, j);
this.world.a(EnumSkyBlock.SKY, i, l, j, i, k, j);
this.o = true;
}
}
@ -164,7 +164,7 @@ public class Chunk {
}
if (i1 != l) {
this.d.g(i, k, i1, l);
this.world.g(i, k, i1, l);
this.h[k << 4 | i] = (byte) i1;
int k1;
int l1;
@ -186,14 +186,14 @@ public class Chunk {
this.i = k1;
}
k1 = this.j * 16 + i;
l1 = this.k * 16 + k;
k1 = this.x * 16 + i;
l1 = this.z * 16 + k;
if (i1 < l) {
for (i2 = i1; i2 < l; ++i2) {
this.f.a(i, i2, k, 15);
}
} else {
this.d.a(EnumSkyBlock.SKY, k1, l, l1, k1, i1, l1);
this.world.a(EnumSkyBlock.SKY, k1, l, l1, k1, i1, l1);
for (i2 = l; i2 < i1; ++i2) {
this.f.a(i, i2, k, 0);
@ -206,7 +206,7 @@ public class Chunk {
for (j2 = i1; i1 > 0 && i2 > 0; this.f.a(i, i1, k, i2)) {
--i1;
int k2 = Block.q[this.a(i, i1, k)];
int k2 = Block.q[this.getTypeId(i, i1, k)];
if (k2 == 0) {
k2 = 1;
@ -218,19 +218,19 @@ public class Chunk {
}
}
while (i1 > 0 && Block.q[this.a(i, i1 - 1, k)] == 0) {
while (i1 > 0 && Block.q[this.getTypeId(i, i1 - 1, k)] == 0) {
--i1;
}
if (i1 != j2) {
this.d.a(EnumSkyBlock.SKY, k1 - 1, i1, l1 - 1, k1 + 1, j2, l1 + 1);
this.world.a(EnumSkyBlock.SKY, k1 - 1, i1, l1 - 1, k1 + 1, j2, l1 + 1);
}
this.o = true;
}
}
public int a(int i, int j, int k) {
public int getTypeId(int i, int j, int k) {
return this.b[i << 11 | k << 7 | j] & 255;
}
@ -242,16 +242,16 @@ public class Chunk {
if (k1 == l && this.e.a(i, j, k) == i1) {
return false;
} else {
int l1 = this.j * 16 + i;
int i2 = this.k * 16 + k;
int l1 = this.x * 16 + i;
int i2 = this.z * 16 + k;
this.b[i << 11 | k << 7 | j] = (byte) (b0 & 255);
if (k1 != 0 && !this.d.isStatic) {
Block.byId[k1].b(this.d, l1, j, i2);
if (k1 != 0 && !this.world.isStatic) {
Block.byId[k1].remove(this.world, l1, j, i2);
}
this.e.a(i, j, k, i1);
if (!this.d.m.e) {
if (!this.world.worldProvider.e) {
if (Block.q[b0 & 255] != 0) {
if (j >= j1) {
this.g(i, j + 1, k);
@ -260,14 +260,14 @@ public class Chunk {
this.g(i, j, k);
}
this.d.a(EnumSkyBlock.SKY, l1, j, i2, l1, j, i2);
this.world.a(EnumSkyBlock.SKY, l1, j, i2, l1, j, i2);
}
this.d.a(EnumSkyBlock.BLOCK, l1, j, i2, l1, j, i2);
this.world.a(EnumSkyBlock.BLOCK, l1, j, i2, l1, j, i2);
this.c(i, k);
this.e.a(i, j, k, i1);
if (l != 0) {
Block.byId[l].e(this.d, l1, j, i2);
Block.byId[l].e(this.world, l1, j, i2);
}
this.o = true;
@ -283,12 +283,12 @@ public class Chunk {
if (j1 == l) {
return false;
} else {
int k1 = this.j * 16 + i;
int l1 = this.k * 16 + k;
int k1 = this.x * 16 + i;
int l1 = this.z * 16 + k;
this.b[i << 11 | k << 7 | j] = (byte) (b0 & 255);
if (j1 != 0) {
Block.byId[j1].b(this.d, k1, j, l1);
Block.byId[j1].remove(this.world, k1, j, l1);
}
this.e.a(i, j, k, 0);
@ -300,11 +300,11 @@ public class Chunk {
this.g(i, j, k);
}
this.d.a(EnumSkyBlock.SKY, k1, j, l1, k1, j, l1);
this.d.a(EnumSkyBlock.BLOCK, k1, j, l1, k1, j, l1);
this.world.a(EnumSkyBlock.SKY, k1, j, l1, k1, j, l1);
this.world.a(EnumSkyBlock.BLOCK, k1, j, l1, k1, j, l1);
this.c(i, k);
if (l != 0 && !this.d.isStatic) {
Block.byId[l].e(this.d, k1, j, l1);
if (l != 0 && !this.world.isStatic) {
Block.byId[l].e(this.world, k1, j, l1);
}
this.o = true;
@ -312,7 +312,7 @@ public class Chunk {
}
}
public int b(int i, int j, int k) {
public int getData(int i, int j, int k) {
return this.e.a(i, j, k);
}
@ -357,31 +357,31 @@ public class Chunk {
public void a(Entity entity) {
this.q = true;
int i = MathHelper.b(entity.locX / 16.0D);
int j = MathHelper.b(entity.locZ / 16.0D);
int i = MathHelper.floor(entity.locX / 16.0D);
int j = MathHelper.floor(entity.locZ / 16.0D);
if (i != this.j || j != this.k) {
if (i != this.x || j != this.z) {
System.out.println("Wrong location! " + entity);
// CraftBukkit
System.out.println("" + entity.locX + "," + entity.locZ + "(" + i + "," + j + ") vs " + this.j + "," + this.k);
System.out.println("" + entity.locX + "," + entity.locZ + "(" + i + "," + j + ") vs " + this.x + "," + this.z);
Thread.dumpStack();
}
int k = MathHelper.b(entity.locY / 16.0D);
int k = MathHelper.floor(entity.locY / 16.0D);
if (k < 0) {
k = 0;
}
if (k >= this.m.length) {
k = this.m.length - 1;
if (k >= this.entitySlices.length) {
k = this.entitySlices.length - 1;
}
entity.bA = true;
entity.chunkX = this.j;
entity.chunkX = this.x;
entity.bC = k;
entity.chunkZ = this.k;
this.m[k].add(entity);
entity.chunkZ = this.z;
this.entitySlices[k].add(entity);
}
public void b(Entity entity) {
@ -393,11 +393,11 @@ public class Chunk {
i = 0;
}
if (i >= this.m.length) {
i = this.m.length - 1;
if (i >= this.entitySlices.length) {
i = this.entitySlices.length - 1;
}
this.m[i].remove(entity);
this.entitySlices[i].remove(entity);
}
public boolean c(int i, int j, int k) {
@ -406,28 +406,28 @@ public class Chunk {
public TileEntity d(int i, int j, int k) {
ChunkPosition chunkposition = new ChunkPosition(i, j, k);
TileEntity tileentity = (TileEntity) this.l.get(chunkposition);
TileEntity tileentity = (TileEntity) this.tileEntities.get(chunkposition);
if (tileentity == null) {
int l = this.a(i, j, k);
int l = this.getTypeId(i, j, k);
if (!Block.p[l]) {
if (!Block.isTileEntity[l]) {
return null;
}
BlockContainer blockcontainer = (BlockContainer) Block.byId[l];
blockcontainer.e(this.d, this.j * 16 + i, j, this.k * 16 + k);
tileentity = (TileEntity) this.l.get(chunkposition);
blockcontainer.e(this.world, this.x * 16 + i, j, this.z * 16 + k);
tileentity = (TileEntity) this.tileEntities.get(chunkposition);
}
return tileentity;
}
public void a(TileEntity tileentity) {
int i = tileentity.e - this.j * 16;
int i = tileentity.e - this.x * 16;
int j = tileentity.f;
int k = tileentity.g - this.k * 16;
int k = tileentity.g - this.z * 16;
this.a(i, j, k, tileentity);
}
@ -435,20 +435,20 @@ public class Chunk {
public void a(int i, int j, int k, TileEntity tileentity) {
ChunkPosition chunkposition = new ChunkPosition(i, j, k);
tileentity.d = this.d;
tileentity.e = this.j * 16 + i;
tileentity.world = this.world;
tileentity.e = this.x * 16 + i;
tileentity.f = j;
tileentity.g = this.k * 16 + k;
if (this.a(i, j, k) != 0 && Block.byId[this.a(i, j, k)] instanceof BlockContainer) {
tileentity.g = this.z * 16 + k;
if (this.getTypeId(i, j, k) != 0 && Block.byId[this.getTypeId(i, j, k)] instanceof BlockContainer) {
if (this.c) {
if (this.l.get(chunkposition) != null) {
this.d.c.remove(this.l.get(chunkposition));
if (this.tileEntities.get(chunkposition) != null) {
this.world.c.remove(this.tileEntities.get(chunkposition));
}
this.d.c.add(tileentity);
this.world.c.add(tileentity);
}
this.l.put(chunkposition, tileentity);
this.tileEntities.put(chunkposition, tileentity);
} else {
System.out.println("Attempted to place a tile entity where there was no entity tile!");
}
@ -458,41 +458,40 @@ public class Chunk {
ChunkPosition chunkposition = new ChunkPosition(i, j, k);
if (this.c) {
this.d.c.remove(this.l.remove(chunkposition));
this.world.c.remove(this.tileEntities.remove(chunkposition));
}
}
public void d() {
public void addEntities() {
this.c = true;
this.d.c.addAll(this.l.values());
this.world.c.addAll(this.tileEntities.values());
for (int i = 0; i < this.m.length; ++i) {
this.d.a(this.m[i]);
for (int i = 0; i < this.entitySlices.length; ++i) {
this.world.a(this.entitySlices[i]);
}
}
public void e() {
public void removeEntities() {
this.c = false;
this.d.c.removeAll(this.l.values());
for (int i = 0; i < this.m.length; ++i) {
Iterator<Object> iter = this.m[i].iterator();
this.world.c.removeAll(this.tileEntities.values());
for (int i = 0; i < this.entitySlices.length; ++i) {
// Craftbukkit start
while(iter.hasNext()) {
Entity e = (Entity)iter.next();
int cx = Location.locToBlock(e.locX) >> 4;
int cz = Location.locToBlock(e.locZ) >> 4;
Iterator<Object> iter = this.entitySlices[i].iterator();
while (iter.hasNext()) {
Entity entity = (Entity) iter.next();
int cx = Location.locToBlock(entity.locX) >> 4;
int cz = Location.locToBlock(entity.locZ) >> 4;
if ((e instanceof EntityPlayer) && ((cx != this.j) || (cz != this.k))) {
EntityPlayer player = (EntityPlayer)e;
if ((entity instanceof EntityPlayer) && ((cx != this.x) || (cz != this.z))) {
EntityPlayer player = (EntityPlayer) entity;
iter.remove(); // Do not pass along players, as doing so can get them stuck outside of time.
// (which for example disables inventory icon updates and prevents block breaking)
}
}
// Craftbukkit end
this.d.b(this.m[i]);
this.world.b(this.entitySlices[i]);
}
}
@ -501,19 +500,19 @@ public class Chunk {
}
public void a(Entity entity, AxisAlignedBB axisalignedbb, List list) {
int i = MathHelper.b((axisalignedbb.b - 2.0D) / 16.0D);
int j = MathHelper.b((axisalignedbb.e + 2.0D) / 16.0D);
int i = MathHelper.floor((axisalignedbb.b - 2.0D) / 16.0D);
int j = MathHelper.floor((axisalignedbb.e + 2.0D) / 16.0D);
if (i < 0) {
i = 0;
}
if (j >= this.m.length) {
j = this.m.length - 1;
if (j >= this.entitySlices.length) {
j = this.entitySlices.length - 1;
}
for (int k = i; k <= j; ++k) {
List list1 = this.m[k];
List list1 = this.entitySlices[k];
for (int l = 0; l < list1.size(); ++l) {
Entity entity1 = (Entity) list1.get(l);
@ -526,19 +525,19 @@ public class Chunk {
}
public void a(Class oclass, AxisAlignedBB axisalignedbb, List list) {
int i = MathHelper.b((axisalignedbb.b - 2.0D) / 16.0D);
int j = MathHelper.b((axisalignedbb.e + 2.0D) / 16.0D);
int i = MathHelper.floor((axisalignedbb.b - 2.0D) / 16.0D);
int j = MathHelper.floor((axisalignedbb.e + 2.0D) / 16.0D);
if (i < 0) {
i = 0;
}
if (j >= this.m.length) {
j = this.m.length - 1;
if (j >= this.entitySlices.length) {
j = this.entitySlices.length - 1;
}
for (int k = i; k <= j; ++k) {
List list1 = this.m[k];
List list1 = this.entitySlices[k];
for (int l = 0; l < list1.size(); ++l) {
Entity entity = (Entity) list1.get(l);
@ -555,10 +554,10 @@ public class Chunk {
return false;
} else {
if (flag) {
if (this.q && this.d.l() != this.r) {
if (this.q && this.world.getTime() != this.r) {
return true;
}
} else if (this.q && this.d.l() >= this.r + 600L) {
} else if (this.q && this.world.getTime() >= this.r + 600L) {
return true;
}
@ -612,7 +611,7 @@ public class Chunk {
}
public Random a(long i) {
return new Random(this.d.k() + (long) (this.j * this.j * 4987142) + (long) (this.j * 5947611) + (long) (this.k * this.k) * 4392871L + (long) (this.k * 389711) ^ i);
return new Random(this.world.getSeed() + (long) (this.x * this.x * 4987142) + (long) (this.x * 5947611) + (long) (this.z * this.z) * 4392871L + (long) (this.z * 389711) ^ i);
}
public boolean g() {

View file

@ -21,62 +21,62 @@ import org.bukkit.event.world.ChunkUnloadEvent;
public class ChunkProviderServer implements IChunkProvider {
// CraftBukkit start
public LongHashset a = new LongHashset();
public Chunk b;
public IChunkProvider c;
public LongHashset unloadQueue = new LongHashset();
public Chunk emptyChunk;
public IChunkProvider chunkProvider; // CraftBukkit
private IChunkLoader d;
public LongHashtable<Chunk> e = new LongHashtable<Chunk>();
public List f = new ArrayList();
public WorldServer g;
public LongHashtable<Chunk> chunks = new LongHashtable<Chunk>();
public List chunkList = new ArrayList();
public WorldServer world;
// CraftBukkit end
public ChunkProviderServer(WorldServer worldserver, IChunkLoader ichunkloader, IChunkProvider ichunkprovider) {
this.b = new EmptyChunk(worldserver, new byte['\u8000'], 0, 0);
this.g = worldserver;
this.emptyChunk = new EmptyChunk(worldserver, new byte['\u8000'], 0, 0);
this.world = worldserver;
this.d = ichunkloader;
this.c = ichunkprovider;
this.chunkProvider = ichunkprovider;
}
public boolean a(int i, int j) {
return this.e.containsKey(i, j); // CraftBukkit
public boolean isChunkLoaded(int i, int j) {
return this.chunks.containsKey(i, j); // CraftBukkit
}
public void d(int i, int j) {
ChunkCoordinates chunkcoordinates = this.g.m();
int k = i * 16 + 8 - chunkcoordinates.a;
int l = j * 16 + 8 - chunkcoordinates.c;
public void queueUnload(int i, int j) {
ChunkCoordinates chunkcoordinates = this.world.getSpawn();
int k = i * 16 + 8 - chunkcoordinates.x;
int l = j * 16 + 8 - chunkcoordinates.z;
short short1 = 128;
if (k < -short1 || k > short1 || l < -short1 || l > short1) {
this.a.add(i, j); // CraftBukkit
this.unloadQueue.add(i, j); // CraftBukkit
}
}
public Chunk c(int i, int j) {
public Chunk getChunkAt(int i, int j) {
// CraftBukkit start
this.a.remove(i, j);
Chunk chunk = (Chunk) this.e.get(i, j);
this.unloadQueue.remove(i, j);
Chunk chunk = (Chunk) this.chunks.get(i, j);
// CraftBukkit end
if (chunk == null) {
chunk = this.e(i, j);
chunk = this.loadChunk(i, j);
if (chunk == null) {
if (this.c == null) {
chunk = this.b;
if (this.chunkProvider == null) {
chunk = this.emptyChunk;
} else {
chunk = this.c.b(i, j);
chunk = this.chunkProvider.getOrCreateChunk(i, j);
}
}
this.e.put(i, j, chunk); // CraftBukkit
this.f.add(chunk);
this.chunks.put(i, j, chunk); // CraftBukkit
this.chunkList.add(chunk);
if (chunk != null) {
chunk.c();
chunk.d();
chunk.loadNOP();
chunk.addEntities();
}
// CraftBukkit start
CraftServer server = g.getServer();
CraftServer server = this.world.getServer();
if (server != null) {
/*
* If it's a new world, the first few chunks are generated inside
@ -87,53 +87,52 @@ public class ChunkProviderServer implements IChunkProvider {
}
// CraftBukkit end
if (!chunk.n && this.a(i + 1, j + 1) && this.a(i, j + 1) && this.a(i + 1, j)) {
this.a(this, i, j);
if (!chunk.done && this.isChunkLoaded(i + 1, j + 1) && this.isChunkLoaded(i, j + 1) && this.isChunkLoaded(i + 1, j)) {
this.getChunkAt(this, i, j);
}
if (this.a(i - 1, j) && !this.b(i - 1, j).n && this.a(i - 1, j + 1) && this.a(i, j + 1) && this.a(i - 1, j)) {
this.a(this, i - 1, j);
if (this.isChunkLoaded(i - 1, j) && !this.getOrCreateChunk(i - 1, j).done && this.isChunkLoaded(i - 1, j + 1) && this.isChunkLoaded(i, j + 1) && this.isChunkLoaded(i - 1, j)) {
this.getChunkAt(this, i - 1, j);
}
if (this.a(i, j - 1) && !this.b(i, j - 1).n && this.a(i + 1, j - 1) && this.a(i, j - 1) && this.a(i + 1, j)) {
this.a(this, i, j - 1);
if (this.isChunkLoaded(i, j - 1) && !this.getOrCreateChunk(i, j - 1).done && this.isChunkLoaded(i + 1, j - 1) && this.isChunkLoaded(i, j - 1) && this.isChunkLoaded(i + 1, j)) {
this.getChunkAt(this, i, j - 1);
}
if (this.a(i - 1, j - 1) && !this.b(i - 1, j - 1).n && this.a(i - 1, j - 1) && this.a(i, j - 1) && this.a(i - 1, j)) {
this.a(this, i - 1, j - 1);
if (this.isChunkLoaded(i - 1, j - 1) && !this.getOrCreateChunk(i - 1, j - 1).done && this.isChunkLoaded(i - 1, j - 1) && this.isChunkLoaded(i, j - 1) && this.isChunkLoaded(i - 1, j)) {
this.getChunkAt(this, i - 1, j - 1);
}
}
return chunk;
}
public Chunk b(int i, int j) {
public Chunk getOrCreateChunk(int i, int j) {
// CraftBukkit start
Chunk chunk = (Chunk) this.e.get(i, j);
Chunk chunk = (Chunk) this.chunks.get(i, j);
chunk = chunk == null ? (this.g.r ? this.c(i, j) : this.b) : chunk;
if (chunk == this.b) return chunk;
if (i != chunk.j || j != chunk.k) {
MinecraftServer.a.info("Chunk (" + chunk.j + ", " + chunk.k +") stored at (" + i + ", " + j + ")");
MinecraftServer.a.info(chunk.getClass().getName());
Throwable x = new Throwable();
x.fillInStackTrace();
x.printStackTrace();
chunk = chunk == null ? (this.world.isLoading ? this.getChunkAt(i, j) : this.emptyChunk) : chunk;
if (chunk == this.emptyChunk) return chunk;
if (i != chunk.x || j != chunk.z) {
MinecraftServer.log.info("Chunk (" + chunk.x + ", " + chunk.z +") stored at (" + i + ", " + j + ")");
MinecraftServer.log.info(chunk.getClass().getName());
Throwable ex = new Throwable();
ex.fillInStackTrace();
ex.printStackTrace();
}
return chunk;
// CraftBukkit end
}
// CraftBukkit - private->public
public Chunk e(int i, int j) {
public Chunk loadChunk(int i, int j) {// CraftBukkit - private->public
if (this.d == null) {
return null;
} else {
try {
Chunk chunk = this.d.a(this.g, i, j);
Chunk chunk = this.d.a(this.world, i, j);
if (chunk != null) {
chunk.r = this.g.l();
chunk.r = this.world.getTime();
}
return chunk;
@ -144,53 +143,51 @@ public class ChunkProviderServer implements IChunkProvider {
}
}
// CraftBukkit - private->public
public void a(Chunk chunk) {
public void saveChunkNOP(Chunk chunk) { // CraftBukkit - private->public
if (this.d != null) {
try {
this.d.b(this.g, chunk);
this.d.b(this.world, chunk);
} catch (Exception exception) {
exception.printStackTrace();
}
}
}
// CraftBukkit - private->public
public void b(Chunk chunk) {
public void saveChunk(Chunk chunk) { // CraftBukkit - private->public
if (this.d != null) {
try {
chunk.r = this.g.l();
this.d.a(this.g, chunk);
chunk.r = this.world.getTime();
this.d.a(this.world, chunk);
} catch (Exception ioexception) { // CraftBukkit - IOException -> Exception
ioexception.printStackTrace();
}
}
}
public void a(IChunkProvider ichunkprovider, int i, int j) {
Chunk chunk = this.b(i, j);
public void getChunkAt(IChunkProvider ichunkprovider, int i, int j) {
Chunk chunk = this.getOrCreateChunk(i, j);
if (!chunk.n) {
chunk.n = true;
if (this.c != null) {
this.c.a(ichunkprovider, i, j);
if (!chunk.done) {
chunk.done = true;
if (this.chunkProvider != null) {
this.chunkProvider.getChunkAt(ichunkprovider, i, j);
chunk.f();
}
}
}
public boolean a(boolean flag, IProgressUpdate iprogressupdate) {
public boolean saveChunks(boolean flag, IProgressUpdate iprogressupdate) {
int i = 0;
for (int j = 0; j < this.f.size(); ++j) {
Chunk chunk = (Chunk) this.f.get(j);
for (int j = 0; j < this.chunkList.size(); ++j) {
Chunk chunk = (Chunk) this.chunkList.get(j);
if (flag && !chunk.p) {
this.a(chunk);
this.saveChunkNOP(chunk);
}
if (chunk.a(flag)) {
this.b(chunk);
this.saveChunk(chunk);
chunk.o = false;
++i;
if (i == 24 && !flag) {
@ -210,25 +207,26 @@ public class ChunkProviderServer implements IChunkProvider {
return true;
}
public boolean a() {
if (!this.g.w) {
public boolean unloadChunks() {
if (!this.world.w) {
// CraftBukkit start
Server server = g.getServer();
for (int i = 0; i < 50 && !this.a.isEmpty(); i++) {
long chunkcoordinates = this.a.popFirst();
Chunk chunk = e.get(chunkcoordinates);
Server server = this.world.getServer();
for (int i = 0; i < 50 && !this.unloadQueue.isEmpty(); i++) {
long chunkcoordinates = this.unloadQueue.popFirst();
Chunk chunk = this.chunks.get(chunkcoordinates);
if (chunk == null) continue;
ChunkUnloadEvent event = new ChunkUnloadEvent(chunk.bukkitChunk);
server.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
g.getWorld().preserveChunk( (CraftChunk) chunk.bukkitChunk );
this.world.getWorld().preserveChunk( (CraftChunk) chunk.bukkitChunk );
chunk.e();
this.b(chunk);
this.a(chunk);
this.e.remove(chunkcoordinates);
this.f.remove(chunk);
chunk.removeEntities();
this.saveChunk(chunk);
this.saveChunkNOP(chunk);
//this.unloadQueue.remove(integer);
this.chunks.remove(chunkcoordinates); // CraftBukkit
this.chunkList.remove(chunk);
}
}
// CraftBukkit end
@ -238,10 +236,10 @@ public class ChunkProviderServer implements IChunkProvider {
}
}
return this.c.a();
return this.chunkProvider.unloadChunks();
}
public boolean b() {
return !this.g.w;
return !this.world.w;
}
}

View file

@ -7,39 +7,36 @@ import java.util.logging.Logger;
public class ConsoleCommandHandler {
private static Logger a = Logger.getLogger("Minecraft");
private MinecraftServer b;
private MinecraftServer server;
private ICommandListener listener; // CraftBukkit
public ConsoleCommandHandler(MinecraftServer minecraftserver) {
this.b = minecraftserver;
this.server = minecraftserver;
}
// CraftBukkit - All calls to the following below:
// this.a( String s1, String msg );
// are changed to:
// this.notify( ICommandListener icommandlistener, String msg );
public boolean a(ServerCommand servercommand) { // CraftBukkit - returns boolean
String s = servercommand.a;
public boolean handle(ServerCommand servercommand) { // CraftBukkit - returns boolean
String s = servercommand.command;
ICommandListener icommandlistener = servercommand.b;
String s1 = icommandlistener.c();
WorldServer worldserver = this.b.worlds.get(0); // CraftBukkit
ServerConfigurationManager serverconfigurationmanager = this.b.f;
String s1 = icommandlistener.getName();
WorldServer worldserver = this.server.worlds.get(0); // CraftBukkit
listener = icommandlistener; // CraftBukkit
ServerConfigurationManager serverconfigurationmanager = this.server.serverConfigurationManager;
if (!s.toLowerCase().startsWith("help") && !s.toLowerCase().startsWith("?")) {
if (s.toLowerCase().startsWith("list")) {
icommandlistener.b("Connected players: " + serverconfigurationmanager.c());
icommandlistener.sendMessage("Connected players: " + serverconfigurationmanager.c());
} else if (s.toLowerCase().startsWith("stop")) {
this.notify(icommandlistener, "Stopping the server.."); // CraftBukkit - notify command sender
this.b.a();
this.print(s1, "Stopping the server..");
this.server.a();
} else if (s.toLowerCase().startsWith("save-all")) {
this.notify(icommandlistener, "Forcing save.."); // CraftBukkit - notify command sender
this.b.f(); // CraftBukkit - We should save all worlds on save-all.
this.notify(icommandlistener, "Save complete."); // CraftBukkit - notify command sender
this.print(s1, "Forcing save..");
this.server.saveChunks(); // CraftBukkit - We should save all worlds on save-all.
this.print(s1, "Save complete.");
} else if (s.toLowerCase().startsWith("save-off")) {
this.notify(icommandlistener, "Disabling level saving.."); // CraftBukkit - notify command sender
this.print(s1, "Disabling level saving..");
worldserver.w = true;
} else if (s.toLowerCase().startsWith("save-on")) {
this.notify(icommandlistener, "Enabling level saving.."); // CraftBukkit - notify command sender
this.print(s1, "Enabling level saving..");
worldserver.w = false;
} else {
String s2;
@ -47,36 +44,36 @@ public class ConsoleCommandHandler {
if (s.toLowerCase().startsWith("op ")) {
s2 = s.substring(s.indexOf(" ")).trim();
serverconfigurationmanager.e(s2);
this.notify(icommandlistener, "Opping " + s2); // CraftBukkit - notify command sender
this.print(s1, "Opping " + s2);
serverconfigurationmanager.a(s2, "\u00A7eYou are now op!");
} else if (s.toLowerCase().startsWith("deop ")) {
s2 = s.substring(s.indexOf(" ")).trim();
serverconfigurationmanager.f(s2);
serverconfigurationmanager.a(s2, "\u00A7eYou are no longer op!");
this.notify(icommandlistener, "De-opping " + s2); // CraftBukkit - notify command sender
this.print(s1, "De-opping " + s2);
} else if (s.toLowerCase().startsWith("ban-ip ")) {
s2 = s.substring(s.indexOf(" ")).trim();
serverconfigurationmanager.c(s2);
this.notify(icommandlistener, "Banning ip " + s2); // CraftBukkit - notify command sender
this.print(s1, "Banning ip " + s2);
} else if (s.toLowerCase().startsWith("pardon-ip ")) {
s2 = s.substring(s.indexOf(" ")).trim();
serverconfigurationmanager.d(s2);
this.notify(icommandlistener, "Pardoning ip " + s2); // CraftBukkit - notify command sender
this.print(s1, "Pardoning ip " + s2);
} else {
EntityPlayer entityplayer;
if (s.toLowerCase().startsWith("ban ")) {
s2 = s.substring(s.indexOf(" ")).trim();
serverconfigurationmanager.a(s2);
this.notify(icommandlistener, "Banning " + s2); // CraftBukkit - notify command sender
this.print(s1, "Banning " + s2);
entityplayer = serverconfigurationmanager.i(s2);
if (entityplayer != null) {
entityplayer.a.a("Banned by admin");
entityplayer.netServerHandler.disconnect("Banned by admin");
}
} else if (s.toLowerCase().startsWith("pardon ")) {
s2 = s.substring(s.indexOf(" ")).trim();
serverconfigurationmanager.b(s2);
this.notify(icommandlistener, "Pardoning " + s2); // CraftBukkit - notify command sender
this.print(s1, "Pardoning " + s2);
} else {
int i;
@ -87,8 +84,8 @@ public class ConsoleCommandHandler {
// CraftBukkit end
entityplayer = null;
for (i = 0; i < serverconfigurationmanager.b.size(); ++i) {
EntityPlayer entityplayer1 = (EntityPlayer) serverconfigurationmanager.b.get(i);
for (i = 0; i < serverconfigurationmanager.players.size(); ++i) {
EntityPlayer entityplayer1 = (EntityPlayer) serverconfigurationmanager.players.get(i);
if (entityplayer1.name.equalsIgnoreCase(s2)) {
entityplayer = entityplayer1;
@ -96,10 +93,10 @@ public class ConsoleCommandHandler {
}
if (entityplayer != null) {
entityplayer.a.a("Kicked by admin");
this.notify(icommandlistener, "Kicking " + entityplayer.name); // CraftBukkit - notify command sender
entityplayer.netServerHandler.disconnect("Kicked by admin");
this.print(s1, "Kicking " + entityplayer.name);
} else {
icommandlistener.b("Can\'t find user " + s2 + ". No kick.");
icommandlistener.sendMessage("Can\'t find user " + s2 + ". No kick.");
}
} else {
String[] astring;
@ -111,15 +108,15 @@ public class ConsoleCommandHandler {
entityplayer = serverconfigurationmanager.i(astring[1]);
entityplayer2 = serverconfigurationmanager.i(astring[2]);
if (entityplayer == null) {
icommandlistener.b("Can\'t find user " + astring[1] + ". No tp.");
icommandlistener.sendMessage("Can\'t find user " + astring[1] + ". No tp.");
} else if (entityplayer2 == null) {
icommandlistener.b("Can\'t find user " + astring[2] + ". No tp.");
icommandlistener.sendMessage("Can\'t find user " + astring[2] + ". No tp.");
} else {
entityplayer.a.a(entityplayer2.locX, entityplayer2.locY, entityplayer2.locZ, entityplayer2.yaw, entityplayer2.pitch);
this.notify(icommandlistener, "Teleporting " + astring[1] + " to " + astring[2] + "."); // CraftBukkit - notify command sender
entityplayer.netServerHandler.a(entityplayer2.locX, entityplayer2.locY, entityplayer2.locZ, entityplayer2.yaw, entityplayer2.pitch);
this.print(s1, "Teleporting " + astring[1] + " to " + astring[2] + ".");
}
} else {
icommandlistener.b("Syntax error, please provice a source and a target.");
icommandlistener.sendMessage("Syntax error, please provice a source and a target.");
}
} else {
String s3;
@ -127,7 +124,7 @@ public class ConsoleCommandHandler {
if (s.toLowerCase().startsWith("give ")) {
astring = s.split(" ");
if (astring.length != 3 && astring.length != 4) {
return true;
return true; // CraftBukkit
}
s3 = astring[1];
@ -137,7 +134,7 @@ public class ConsoleCommandHandler {
int j = Integer.parseInt(astring[2]);
if (Item.byId[j] != null) {
this.notify(icommandlistener, "Giving " + entityplayer2.name + " some " + j); // CraftBukkit - notify command sender
this.print(s1, "Giving " + entityplayer2.name + " some " + j);
int k = 1;
if (astring.length > 3) {
@ -154,18 +151,18 @@ public class ConsoleCommandHandler {
entityplayer2.b(new ItemStack(j, k, 0));
} else {
icommandlistener.b("There\'s no item with id " + j);
icommandlistener.sendMessage("There\'s no item with id " + j);
}
} catch (NumberFormatException numberformatexception) {
icommandlistener.b("There\'s no item with id " + astring[2]);
icommandlistener.sendMessage("There\'s no item with id " + astring[2]);
}
} else {
icommandlistener.b("Can\'t find user " + s3);
icommandlistener.sendMessage("Can\'t find user " + s3);
}
} else if (s.toLowerCase().startsWith("time ")) {
astring = s.split(" ");
if (astring.length != 3) {
return true;
return true; // CraftBukkit
}
s3 = astring[1];
@ -173,21 +170,21 @@ public class ConsoleCommandHandler {
try {
i = Integer.parseInt(astring[2]);
if ("add".equalsIgnoreCase(s3)) {
worldserver.a(worldserver.k() + (long) i);
this.notify(icommandlistener, "Added " + i + " to time"); // CraftBukkit - notify command sender
worldserver.setTime(worldserver.getTime() + (long) i);
this.print(s1, "Added " + i + " to time");
} else if ("set".equalsIgnoreCase(s3)) {
worldserver.a((long) i);
this.notify(icommandlistener, "Set time to " + i); // CraftBukkit - notify command sender
worldserver.setTime((long) i);
this.print(s1, "Set time to " + i);
} else {
icommandlistener.b("Unknown method, use either \"add\" or \"set\"");
icommandlistener.sendMessage("Unknown method, use either \"add\" or \"set\"");
}
} catch (NumberFormatException numberformatexception1) {
icommandlistener.b("Unable to convert time value, " + astring[2]);
icommandlistener.sendMessage("Unable to convert time value, " + astring[2]);
}
} else if (s.toLowerCase().startsWith("say ")) {
s = s.substring(s.indexOf(" ")).trim();
a.info("[" + s1 + "] " + s);
serverconfigurationmanager.a((Packet) (new Packet3Chat("\u00A7d[Server] " + s)));
serverconfigurationmanager.sendAll(new Packet3Chat("\u00A7d[Server] " + s));
} else if (s.toLowerCase().startsWith("tell ")) {
astring = s.split(" ");
if (astring.length >= 3) {
@ -197,14 +194,14 @@ public class ConsoleCommandHandler {
s = "\u00A77" + s1 + " whispers " + s;
a.info(s);
if (!serverconfigurationmanager.a(astring[1], (Packet) (new Packet3Chat(s)))) {
icommandlistener.b("There\'s no player by that name online.");
icommandlistener.sendMessage("There\'s no player by that name online.");
}
}
} else if (s.toLowerCase().startsWith("whitelist ")) {
this.a(s1, s, icommandlistener);
} else {
icommandlistener.b("Unknown console command. Type \"help\" for help."); // CraftBukkit - Send to listener not log
return false;
icommandlistener.sendMessage("Unknown console command. Type \"help\" for help."); // CraftBukkit
return false; // CraftBukkit
}
}
}
@ -215,23 +212,24 @@ public class ConsoleCommandHandler {
this.a(icommandlistener);
}
return true;
return true; // CraftBukkit
}
private void a(String s, String s1, ICommandListener icommandlistener) {
String[] astring = s1.split(" ");
listener = icommandlistener; // CraftBukkit
if (astring.length >= 2) {
String s2 = astring[1].toLowerCase();
if ("on".equals(s2)) {
this.notify(icommandlistener, "Turned on white-listing"); // CraftBukkit - notify command sender
this.b.d.b("white-list", true);
this.print(s, "Turned on white-listing");
this.server.propertyManager.b("white-list", true);
} else if ("off".equals(s2)) {
this.notify(icommandlistener, "Turned off white-listing"); // CraftBukkit - notify command sender
this.b.d.b("white-list", false);
this.print(s, "Turned off white-listing");
this.server.propertyManager.b("white-list", false);
} else if ("list".equals(s2)) {
Set set = this.b.f.e();
Set set = this.server.serverConfigurationManager.e();
String s3 = "";
String s4;
@ -240,63 +238,55 @@ public class ConsoleCommandHandler {
s4 = (String) iterator.next();
}
icommandlistener.b("White-listed players: " + s3);
icommandlistener.sendMessage("White-listed players: " + s3);
} else {
String s5;
if ("add".equals(s2) && astring.length == 3) {
s5 = astring[2].toLowerCase();
this.b.f.k(s5);
this.notify(icommandlistener, "Added " + s5 + " to white-list"); // CraftBukkit - notify command sender
this.server.serverConfigurationManager.k(s5);
this.print(s, "Added " + s5 + " to white-list");
} else if ("remove".equals(s2) && astring.length == 3) {
s5 = astring[2].toLowerCase();
this.b.f.l(s5);
this.notify(icommandlistener, "Removed " + s5 + " from white-list"); // CraftBukkit - notify command sender
this.server.serverConfigurationManager.l(s5);
this.print(s, "Removed " + s5 + " from white-list");
} else if ("reload".equals(s2)) {
this.b.f.f();
this.notify(icommandlistener, "Reloaded white-list from file"); // CraftBukkit - notify command sender
this.server.serverConfigurationManager.f();
this.print(s, "Reloaded white-list from file");
}
}
}
}
private void a(ICommandListener icommandlistener) {
icommandlistener.b("To run the server without a gui, start it like this:");
icommandlistener.b(" java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui");
icommandlistener.b("Console commands:");
icommandlistener.b(" help or ? shows this message");
icommandlistener.b(" kick <player> removes a player from the server");
icommandlistener.b(" ban <player> bans a player from the server");
icommandlistener.b(" pardon <player> pardons a banned player so that they can connect again");
icommandlistener.b(" ban-ip <ip> bans an IP address from the server");
icommandlistener.b(" pardon-ip <ip> pardons a banned IP address so that they can connect again");
icommandlistener.b(" op <player> turns a player into an op");
icommandlistener.b(" deop <player> removes op status from a player");
icommandlistener.b(" tp <player1> <player2> moves one player to the same location as another player");
icommandlistener.b(" give <player> <id> [num] gives a player a resource");
icommandlistener.b(" tell <player> <message> sends a private message to a player");
icommandlistener.b(" stop gracefully stops the server");
icommandlistener.b(" save-all forces a server-wide level save");
icommandlistener.b(" save-off disables terrain saving (useful for backup scripts)");
icommandlistener.b(" save-on re-enables terrain saving");
icommandlistener.b(" list lists all currently connected players");
icommandlistener.b(" say <message> broadcasts a message to all players");
icommandlistener.b(" time <add|set> <amount> adds to or sets the world time (0-24000)");
icommandlistener.sendMessage("To run the server without a gui, start it like this:");
icommandlistener.sendMessage(" java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui");
icommandlistener.sendMessage("Console commands:");
icommandlistener.sendMessage(" help or ? shows this message");
icommandlistener.sendMessage(" kick <player> removes a player from the server");
icommandlistener.sendMessage(" ban <player> bans a player from the server");
icommandlistener.sendMessage(" pardon <player> pardons a banned player so that they can connect again");
icommandlistener.sendMessage(" ban-ip <ip> bans an IP address from the server");
icommandlistener.sendMessage(" pardon-ip <ip> pardons a banned IP address so that they can connect again");
icommandlistener.sendMessage(" op <player> turns a player into an op");
icommandlistener.sendMessage(" deop <player> removes op status from a player");
icommandlistener.sendMessage(" tp <player1> <player2> moves one player to the same location as another player");
icommandlistener.sendMessage(" give <player> <id> [num] gives a player a resource");
icommandlistener.sendMessage(" tell <player> <message> sends a private message to a player");
icommandlistener.sendMessage(" stop gracefully stops the server");
icommandlistener.sendMessage(" save-all forces a server-wide level save");
icommandlistener.sendMessage(" save-off disables terrain saving (useful for backup scripts)");
icommandlistener.sendMessage(" save-on re-enables terrain saving");
icommandlistener.sendMessage(" list lists all currently connected players");
icommandlistener.sendMessage(" say <message> broadcasts a message to all players");
icommandlistener.sendMessage(" time <add|set> <amount> adds to or sets the world time (0-24000)");
}
// CraftBukkit start
// Notify sender and ops / log
private void notify(ICommandListener commandListener, String msg ) {
commandListener.b( msg );
this.a( commandListener.c(), msg );
}
// CraftBukkit end
private void a(String s, String s1) {
private void print(String s, String s1) {
listener.sendMessage(s1); // CraftBukkit
String s2 = s + ": " + s1;
// CraftBukkit - This notifies ops and logs
this.b.f.j("\u00A77(" + s2 + ")");
this.server.serverConfigurationManager.j("\u00A77(" + s2 + ")");
a.info(s2);
}

View file

@ -20,7 +20,7 @@ public class ConsoleLogManager {
public ConsoleLogManager() {}
// Craftbukkit - change of method signature!
public static void a(MinecraftServer server) {
public static void init(MinecraftServer server) {
ConsoleLogFormatter consolelogformatter = new ConsoleLogFormatter();
a.setUseParentHandlers(false);
@ -34,6 +34,7 @@ public class ConsoleLogManager {
consolehandler.setFormatter(new ShortConsoleLogFormatter(server));
global.addHandler(consolehandler);
// CraftBukkit end
a.addHandler(consolehandler);
try {

View file

@ -42,10 +42,10 @@ public abstract class Entity {
public float lastPitch;
public final AxisAlignedBB boundingBox;
public boolean onGround;
public boolean aW;
public boolean positionChanged;
public boolean aX;
public boolean aY;
public boolean aZ;
public boolean velocityChanged;
public boolean ba;
public boolean dead;
public float height;
@ -88,7 +88,7 @@ public abstract class Entity {
this.boundingBox = AxisAlignedBB.a(0.0D, 0.0D, 0.0D, 0.0D, 0.0D, 0.0D);
this.onGround = false;
this.aY = false;
this.aZ = false;
this.velocityChanged = false;
this.ba = true;
this.dead = false;
this.height = 0.0F;
@ -116,7 +116,7 @@ public abstract class Entity {
this.datawatcher = new DataWatcher();
this.bA = false;
this.world = world;
this.a(0.0D, 0.0D, 0.0D);
this.setPosition(0.0D, 0.0D, 0.0D);
this.datawatcher.a(0, Byte.valueOf((byte) 0));
this.a();
}
@ -135,7 +135,7 @@ public abstract class Entity {
return this.id;
}
public void D() {
public void die() {
this.dead = true;
}
@ -148,16 +148,16 @@ public abstract class Entity {
// Craftbukkit start
if ((f == Float.POSITIVE_INFINITY) || (f == Float.NEGATIVE_INFINITY) || (Float.isNaN(f))) {
if (this instanceof EntityPlayer) {
System.err.println(((CraftPlayer)this.getBukkitEntity()).getName() + " was caught trying to crash the server with an invalid yaw");
((CraftPlayer)this.getBukkitEntity()).kickPlayer("Nope");
System.err.println(((CraftPlayer) this.getBukkitEntity()).getName() + " was caught trying to crash the server with an invalid yaw");
((CraftPlayer) this.getBukkitEntity()).kickPlayer("Nope");
}
f = 0;
}
if ((f1 == Float.POSITIVE_INFINITY) || (f1 == Float.NEGATIVE_INFINITY) || (Float.isNaN(f1))) {
if (this instanceof EntityPlayer) {
System.err.println(((CraftPlayer)this.getBukkitEntity()).getName() + " was caught trying to crash the server with an invalid pitch");
((CraftPlayer)this.getBukkitEntity()).kickPlayer("Nope");
System.err.println(((CraftPlayer) this.getBukkitEntity()).getName() + " was caught trying to crash the server with an invalid pitch");
((CraftPlayer) this.getBukkitEntity()).kickPlayer("Nope");
}
f1 = 0;
}
@ -167,7 +167,7 @@ public abstract class Entity {
// Craftbukkit end
}
public void a(double d0, double d1, double d2) {
public void setPosition(double d0, double d1, double d2) {
this.locX = d0;
this.locY = d1;
this.locZ = d2;
@ -201,8 +201,8 @@ public abstract class Entity {
f = 1.0F;
}
this.world.a(this, "random.splash", f, 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.4F);
float f1 = (float) MathHelper.b(this.boundingBox.b);
this.world.makeSound(this, "random.splash", f, 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.4F);
float f1 = (float) MathHelper.floor(this.boundingBox.b);
int i;
float f2;
@ -250,10 +250,10 @@ public abstract class Entity {
server.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
this.a((Entity) null, event.getDamage());
this.damageEntity((Entity) null, event.getDamage());
}
} else {
this.a((Entity) null, 1);
this.damageEntity((Entity) null, 1);
}
// CraftBukkit end
}
@ -293,7 +293,7 @@ public abstract class Entity {
server.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
this.a((Entity) null, event.getDamage());
this.damageEntity((Entity) null, event.getDamage());
}
if (this.fireTicks <= 0) {
@ -311,23 +311,23 @@ public abstract class Entity {
}
// CraftBukkit end
this.a((Entity) null, 4);
this.damageEntity((Entity) null, 4);
this.fireTicks = 600;
}
}
protected void R() {
this.D();
this.die();
}
public boolean b(double d0, double d1, double d2) {
AxisAlignedBB axisalignedbb = this.boundingBox.c(d0, d1, d2);
List list = this.world.a(this, axisalignedbb);
List list = this.world.getEntities(this, axisalignedbb);
return list.size() > 0 ? false : !this.world.b(axisalignedbb);
}
public void c(double d0, double d1, double d2) {
public void move(double d0, double d1, double d2) {
if (this.bn) {
this.boundingBox.d(d0, d1, d2);
this.locX = (this.boundingBox.a + this.boundingBox.d) / 2.0D;
@ -339,13 +339,13 @@ public abstract class Entity {
double d5 = d0;
double d6 = d1;
double d7 = d2;
AxisAlignedBB axisalignedbb = this.boundingBox.b();
boolean flag = this.onGround && this.Z();
AxisAlignedBB axisalignedbb = this.boundingBox.clone();
boolean flag = this.onGround && this.isSneaking();
if (flag) {
double d8;
for (d8 = 0.05D; d0 != 0.0D && this.world.a(this, this.boundingBox.c(d0, -1.0D, 0.0D)).size() == 0; d5 = d0) {
for (d8 = 0.05D; d0 != 0.0D && this.world.getEntities(this, this.boundingBox.c(d0, -1.0D, 0.0D)).size() == 0; d5 = d0) {
if (d0 < d8 && d0 >= -d8) {
d0 = 0.0D;
} else if (d0 > 0.0D) {
@ -355,7 +355,7 @@ public abstract class Entity {
}
}
for (; d2 != 0.0D && this.world.a(this, this.boundingBox.c(0.0D, -1.0D, d2)).size() == 0; d7 = d2) {
for (; d2 != 0.0D && this.world.getEntities(this, this.boundingBox.c(0.0D, -1.0D, d2)).size() == 0; d7 = d2) {
if (d2 < d8 && d2 >= -d8) {
d2 = 0.0D;
} else if (d2 > 0.0D) {
@ -366,7 +366,7 @@ public abstract class Entity {
}
}
List list = this.world.a(this, this.boundingBox.a(d0, d1, d2));
List list = this.world.getEntities(this, this.boundingBox.a(d0, d1, d2));
for (int i = 0; i < list.size(); ++i) {
d1 = ((AxisAlignedBB) list.get(i)).b(this.boundingBox, d1);
@ -417,10 +417,10 @@ public abstract class Entity {
d0 = d5;
d1 = (double) this.bm;
d2 = d7;
AxisAlignedBB axisalignedbb1 = this.boundingBox.b();
AxisAlignedBB axisalignedbb1 = this.boundingBox.clone();
this.boundingBox.b(axisalignedbb);
list = this.world.a(this, this.boundingBox.a(d5, d1, d7));
list = this.world.getEntities(this, this.boundingBox.a(d5, d1, d7));
for (k = 0; k < list.size(); ++k) {
d1 = ((AxisAlignedBB) list.get(k)).b(this.boundingBox, d1);
@ -468,10 +468,10 @@ public abstract class Entity {
this.locX = (this.boundingBox.a + this.boundingBox.d) / 2.0D;
this.locY = this.boundingBox.b + (double) this.height - (double) this.bl;
this.locZ = (this.boundingBox.c + this.boundingBox.f) / 2.0D;
this.aW = d5 != d0 || d7 != d2;
this.positionChanged = d5 != d0 || d7 != d2;
this.aX = d6 != d1;
this.onGround = d6 != d1 && d6 < 0.0D;
this.aY = this.aW || this.aX;
this.aY = this.positionChanged || this.aX;
this.a(d1, this.onGround);
if (d5 != d0) {
this.motX = 0.0D;
@ -492,10 +492,10 @@ public abstract class Entity {
int j1;
// CraftBukkit start
if ((this.aW) && (getBukkitEntity() instanceof Vehicle)) {
if ((this.positionChanged) && (getBukkitEntity() instanceof Vehicle)) {
Vehicle vehicle = (Vehicle) getBukkitEntity();
org.bukkit.World wrld = ((WorldServer) world).getWorld();
org.bukkit.block.Block block = wrld.getBlockAt(MathHelper.b(locX), MathHelper.b(locY - 0.20000000298023224D - (double) this.height), MathHelper.b(locZ));
org.bukkit.block.Block block = wrld.getBlockAt(MathHelper.floor(locX), MathHelper.floor(locY - 0.20000000298023224D - (double) this.height), MathHelper.floor(locZ));
if (d5 > d0) {
block = block.getFace(BlockFace.SOUTH);
@ -514,9 +514,9 @@ public abstract class Entity {
if (this.l() && !flag) {
this.bg = (float) ((double) this.bg + (double) MathHelper.a(d9 * d9 + d10 * d10) * 0.6D);
l = MathHelper.b(this.locX);
i1 = MathHelper.b(this.locY - 0.20000000298023224D - (double) this.height);
j1 = MathHelper.b(this.locZ);
l = MathHelper.floor(this.locX);
i1 = MathHelper.floor(this.locY - 0.20000000298023224D - (double) this.height);
j1 = MathHelper.floor(this.locZ);
k = this.world.getTypeId(l, i1, j1);
if (this.bg > (float) this.b && k > 0) {
++this.b;
@ -524,21 +524,21 @@ public abstract class Entity {
if (this.world.getTypeId(l, i1 + 1, j1) == Block.SNOW.id) {
stepsound = Block.SNOW.stepSound;
this.world.a(this, stepsound.c(), stepsound.a() * 0.15F, stepsound.b());
this.world.makeSound(this, stepsound.getName(), stepsound.getVolume1() * 0.15F, stepsound.getVolume2());
} else if (!Block.byId[k].material.isLiquid()) {
this.world.a(this, stepsound.c(), stepsound.a() * 0.15F, stepsound.b());
this.world.makeSound(this, stepsound.getName(), stepsound.getVolume1() * 0.15F, stepsound.getVolume2());
}
Block.byId[k].b(this.world, l, i1, j1, this);
}
}
l = MathHelper.b(this.boundingBox.a);
i1 = MathHelper.b(this.boundingBox.b);
j1 = MathHelper.b(this.boundingBox.c);
k = MathHelper.b(this.boundingBox.d);
int k1 = MathHelper.b(this.boundingBox.e);
int l1 = MathHelper.b(this.boundingBox.f);
l = MathHelper.floor(this.boundingBox.a);
i1 = MathHelper.floor(this.boundingBox.b);
j1 = MathHelper.floor(this.boundingBox.c);
k = MathHelper.floor(this.boundingBox.d);
int k1 = MathHelper.floor(this.boundingBox.e);
int l1 = MathHelper.floor(this.boundingBox.f);
if (this.world.a(l, i1, j1, k, k1, l1)) {
for (int i2 = l; i2 <= k; ++i2) {
@ -583,7 +583,7 @@ public abstract class Entity {
}
if (flag2 && this.fireTicks > 0) {
this.world.a(this, "random.fizz", 0.7F, 1.6F + (this.random.nextFloat() - this.random.nextFloat()) * 0.4F);
this.world.makeSound(this, "random.fizz", 0.7F, 1.6F + (this.random.nextFloat() - this.random.nextFloat()) * 0.4F);
this.fireTicks = -this.maxFireTicks;
}
}
@ -620,14 +620,14 @@ public abstract class Entity {
EntityDamageEvent event = new EntityDamageEvent(damagee, damageType, damageDone);
server.getPluginManager().callEvent(event);
if (event.isCancelled() || event.getDamage() == 0) {
if (event.isCancelled()) {
return;
}
i = event.getDamage();
}
// CraftBukkit end
this.a((Entity) null, i);
this.damageEntity((Entity) null, i);
}
}
@ -639,9 +639,9 @@ public abstract class Entity {
public boolean a(Material material) {
double d0 = this.locY + (double) this.q();
int i = MathHelper.b(this.locX);
int j = MathHelper.d((float) MathHelper.b(d0));
int k = MathHelper.b(this.locZ);
int i = MathHelper.floor(this.locX);
int j = MathHelper.d((float) MathHelper.floor(d0));
int k = MathHelper.floor(this.locZ);
int l = this.world.getTypeId(i, j, k);
if (l != 0 && Block.byId[l].material == material) {
@ -673,8 +673,8 @@ public abstract class Entity {
f3 = f2 / f3;
f *= f3;
f1 *= f3;
float f4 = MathHelper.a(this.yaw * 3.1415927F / 180.0F);
float f5 = MathHelper.b(this.yaw * 3.1415927F / 180.0F);
float f4 = MathHelper.sin(this.yaw * 3.1415927F / 180.0F);
float f5 = MathHelper.cos(this.yaw * 3.1415927F / 180.0F);
this.motX += (double) (f * f5 - f1 * f4);
this.motZ += (double) (f1 * f5 + f * f4);
@ -682,15 +682,15 @@ public abstract class Entity {
}
public float c(float f) {
int i = MathHelper.b(this.locX);
int i = MathHelper.floor(this.locX);
double d0 = (this.boundingBox.e - this.boundingBox.b) * 0.66D;
int j = MathHelper.b(this.locY - (double) this.height + d0);
int k = MathHelper.b(this.locZ);
int j = MathHelper.floor(this.locY - (double) this.height + d0);
int k = MathHelper.floor(this.locZ);
return this.world.a(MathHelper.b(this.boundingBox.a), MathHelper.b(this.boundingBox.b), MathHelper.b(this.boundingBox.c), MathHelper.b(this.boundingBox.d), MathHelper.b(this.boundingBox.e), MathHelper.b(this.boundingBox.f)) ? this.world.l(i, j, k) : 0.0F;
return this.world.a(MathHelper.floor(this.boundingBox.a), MathHelper.floor(this.boundingBox.b), MathHelper.floor(this.boundingBox.c), MathHelper.floor(this.boundingBox.d), MathHelper.floor(this.boundingBox.e), MathHelper.floor(this.boundingBox.f)) ? this.world.l(i, j, k) : 0.0F;
}
public void b(double d0, double d1, double d2, float f, float f1) {
public void setLocation(double d0, double d1, double d2, float f, float f1) {
this.lastX = this.locX = d0;
this.lastY = this.locY = d1;
this.lastZ = this.locZ = d2;
@ -707,17 +707,17 @@ public abstract class Entity {
this.lastYaw -= 360.0F;
}
this.a(this.locX, this.locY, this.locZ);
this.setPosition(this.locX, this.locY, this.locZ);
this.c(f, f1);
}
public void c(double d0, double d1, double d2, float f, float f1) {
public void setPositionRotation(double d0, double d1, double d2, float f, float f1) {
this.bi = this.lastX = this.locX = d0;
this.bj = this.lastY = this.locY = d1 + (double) this.height;
this.bk = this.lastZ = this.locZ = d2;
this.yaw = f;
this.pitch = f1;
this.a(this.locX, this.locY, this.locZ);
this.setPosition(this.locX, this.locY, this.locZ);
}
public float f(Entity entity) {
@ -754,7 +754,7 @@ public abstract class Entity {
public void b(EntityHuman entityhuman) {}
public void h(Entity entity) {
public void collide(Entity entity) {
if (entity.passenger != this && entity.vehicle != this) {
double d0 = entity.locX - this.locX;
double d1 = entity.locZ - this.locZ;
@ -789,10 +789,10 @@ public abstract class Entity {
}
protected void W() {
this.aZ = true;
this.velocityChanged = true;
}
public boolean a(Entity entity, int i) {
public boolean damageEntity(Entity entity, int i) {
this.W();
return false;
}
@ -811,7 +811,7 @@ public abstract class Entity {
String s = this.X();
if (!this.dead && s != null) {
nbttagcompound.a("id", s);
nbttagcompound.setString("id", s);
this.d(nbttagcompound);
return true;
} else {
@ -827,7 +827,7 @@ public abstract class Entity {
nbttagcompound.a("Fire", (short) this.fireTicks);
nbttagcompound.a("Air", (short) this.airTicks);
nbttagcompound.a("OnGround", this.onGround);
nbttagcompound.a("World", world.q.j); // CraftBukkit
nbttagcompound.setString("World", world.worldData.name); // CraftBukkit
this.a(nbttagcompound);
}
@ -836,7 +836,7 @@ public abstract class Entity {
NBTTagList nbttaglist1 = nbttagcompound.l("Motion");
NBTTagList nbttaglist2 = nbttagcompound.l("Rotation");
this.a(0.0D, 0.0D, 0.0D);
this.setPosition(0.0D, 0.0D, 0.0D);
this.motX = ((NBTTagDouble) nbttaglist1.a(0)).a;
this.motY = ((NBTTagDouble) nbttaglist1.a(1)).a;
this.motZ = ((NBTTagDouble) nbttaglist1.a(2)).a;
@ -868,16 +868,16 @@ public abstract class Entity {
this.onGround = nbttagcompound.m("OnGround");
// CraftBukkit start
if (nbttagcompound.b("World")) {
String worldName = nbttagcompound.i("World");
if (nbttagcompound.hasKey("World")) {
String worldName = nbttagcompound.getString("World");
for (WorldServer world: ((WorldServer) this.world).getServer().getServer().worlds) {
if ((world.q.j.equals(worldName)) && (world != this.world)) {
if ((world.worldData.name.equals(worldName)) && (world != this.world)) {
this.world = world;
if (this instanceof EntityHuman) {
EntityPlayer player = (EntityPlayer)this;
player.c = new ItemInWorldManager(world);
player.c.a = player;
player.itemInWorldManager = new ItemInWorldManager(world);
player.itemInWorldManager.player = player;
}
break;
}
@ -885,7 +885,7 @@ public abstract class Entity {
}
// CraftBukkit end
this.a(this.locX, this.locY, this.locZ);
this.setPosition(this.locX, this.locY, this.locZ);
this.b(nbttagcompound);
}
@ -936,8 +936,8 @@ public abstract class Entity {
public EntityItem a(ItemStack itemstack, float f) {
EntityItem entityitem = new EntityItem(this.world, this.locX, this.locY + (double) f, this.locZ, itemstack);
entityitem.c = 10;
this.world.a((Entity) entityitem);
entityitem.pickupDelay = 10;
this.world.addEntity(entityitem);
return entityitem;
}
@ -946,9 +946,9 @@ public abstract class Entity {
}
public boolean E() {
int i = MathHelper.b(this.locX);
int j = MathHelper.b(this.locY + (double) this.q());
int k = MathHelper.b(this.locZ);
int i = MathHelper.floor(this.locX);
int j = MathHelper.floor(this.locY + (double) this.q());
int k = MathHelper.floor(this.locZ);
return this.world.d(i, j, k);
}
@ -1016,7 +1016,7 @@ public abstract class Entity {
}
public void h_() {
this.passenger.a(this.locX, this.locY + this.k() + this.passenger.C(), this.locZ);
this.passenger.setPosition(this.locX, this.locY + this.k() + this.passenger.C(), this.locZ);
}
public double C() {
@ -1027,7 +1027,7 @@ public abstract class Entity {
return (double) this.width * 0.75D;
}
public void b(Entity entity) {
public void mount(Entity entity) {
// CraftBukkit start
setPassengerOf(entity);
}
@ -1060,7 +1060,7 @@ public abstract class Entity {
}
// CraftBukkit end
this.c(this.vehicle.locX, this.vehicle.boundingBox.b + (double) this.vehicle.width, this.vehicle.locZ, this.yaw, this.pitch);
this.setPositionRotation(this.vehicle.locX, this.vehicle.boundingBox.b + (double) this.vehicle.width, this.vehicle.locZ, this.yaw, this.pitch);
this.vehicle.passenger = null;
}
@ -1078,7 +1078,7 @@ public abstract class Entity {
this.vehicle.passenger = null;
this.vehicle = null;
this.c(entity.locX, entity.boundingBox.b + (double) entity.width, entity.locZ, this.yaw, this.pitch);
this.setPositionRotation(entity.locX, entity.boundingBox.b + (double) entity.width, entity.locZ, this.yaw, this.pitch);
} else {
if (this.vehicle != null) {
this.vehicle.passenger = null;
@ -1099,15 +1099,15 @@ public abstract class Entity {
public void Y() {}
public ItemStack[] k_() {
public ItemStack[] getEquipment() {
return null;
}
public boolean Z() {
public boolean isSneaking() {
return this.d(1);
}
public void e(boolean flag) {
public void setSneak(boolean flag) {
this.a(1, flag);
}

View file

@ -17,7 +17,7 @@ public class EntityArrow extends Entity {
private int f = 0;
private boolean g = false;
public int a = 0;
public EntityLiving b;
public EntityLiving shooter;
private int h;
private int i = 0;
@ -29,23 +29,23 @@ public class EntityArrow extends Entity {
public EntityArrow(World world, double d0, double d1, double d2) {
super(world);
this.b(0.5F, 0.5F);
this.a(d0, d1, d2);
this.setPosition(d0, d1, d2);
this.height = 0.0F;
}
public EntityArrow(World world, EntityLiving entityliving) {
super(world);
this.b = entityliving;
this.shooter = entityliving;
this.b(0.5F, 0.5F);
this.c(entityliving.locX, entityliving.locY + (double) entityliving.q(), entityliving.locZ, entityliving.yaw, entityliving.pitch);
this.locX -= (double) (MathHelper.b(this.yaw / 180.0F * 3.1415927F) * 0.16F);
this.setPositionRotation(entityliving.locX, entityliving.locY + (double) entityliving.q(), entityliving.locZ, entityliving.yaw, entityliving.pitch);
this.locX -= (double) (MathHelper.cos(this.yaw / 180.0F * 3.1415927F) * 0.16F);
this.locY -= 0.10000000149011612D;
this.locZ -= (double) (MathHelper.a(this.yaw / 180.0F * 3.1415927F) * 0.16F);
this.a(this.locX, this.locY, this.locZ);
this.locZ -= (double) (MathHelper.sin(this.yaw / 180.0F * 3.1415927F) * 0.16F);
this.setPosition(this.locX, this.locY, this.locZ);
this.height = 0.0F;
this.motX = (double) (-MathHelper.a(this.yaw / 180.0F * 3.1415927F) * MathHelper.b(this.pitch / 180.0F * 3.1415927F));
this.motZ = (double) (MathHelper.b(this.yaw / 180.0F * 3.1415927F) * MathHelper.b(this.pitch / 180.0F * 3.1415927F));
this.motY = (double) (-MathHelper.a(this.pitch / 180.0F * 3.1415927F));
this.motX = (double) (-MathHelper.sin(this.yaw / 180.0F * 3.1415927F) * MathHelper.cos(this.pitch / 180.0F * 3.1415927F));
this.motZ = (double) (MathHelper.cos(this.yaw / 180.0F * 3.1415927F) * MathHelper.cos(this.pitch / 180.0F * 3.1415927F));
this.motY = (double) (-MathHelper.sin(this.pitch / 180.0F * 3.1415927F));
this.a(this.motX, this.motY, this.motZ, 1.5F, 1.0F);
}
@ -92,7 +92,7 @@ public class EntityArrow extends Entity {
if (i == this.f) {
++this.h;
if (this.h == 1200) {
this.D();
this.die();
}
return;
@ -108,14 +108,14 @@ public class EntityArrow extends Entity {
++this.i;
}
Vec3D vec3d = Vec3D.b(this.locX, this.locY, this.locZ);
Vec3D vec3d1 = Vec3D.b(this.locX + this.motX, this.locY + this.motY, this.locZ + this.motZ);
Vec3D vec3d = Vec3D.create(this.locX, this.locY, this.locZ);
Vec3D vec3d1 = Vec3D.create(this.locX + this.motX, this.locY + this.motY, this.locZ + this.motZ);
MovingObjectPosition movingobjectposition = this.world.a(vec3d, vec3d1);
vec3d = Vec3D.b(this.locX, this.locY, this.locZ);
vec3d1 = Vec3D.b(this.locX + this.motX, this.locY + this.motY, this.locZ + this.motZ);
vec3d = Vec3D.create(this.locX, this.locY, this.locZ);
vec3d1 = Vec3D.create(this.locX + this.motX, this.locY + this.motY, this.locZ + this.motZ);
if (movingobjectposition != null) {
vec3d1 = Vec3D.b(movingobjectposition.f.a, movingobjectposition.f.b, movingobjectposition.f.c);
vec3d1 = Vec3D.create(movingobjectposition.f.a, movingobjectposition.f.b, movingobjectposition.f.c);
}
Entity entity = null;
@ -127,7 +127,7 @@ public class EntityArrow extends Entity {
for (int j = 0; j < list.size(); ++j) {
Entity entity1 = (Entity) list.get(j);
if (entity1.d_() && (entity1 != this.b || this.i >= 5)) {
if (entity1.d_() && (entity1 != this.shooter || this.i >= 5)) {
f1 = 0.3F;
AxisAlignedBB axisalignedbb = entity1.boundingBox.b((double) f1, (double) f1, (double) f1);
MovingObjectPosition movingobjectposition1 = axisalignedbb.a(vec3d, vec3d1);
@ -150,7 +150,7 @@ public class EntityArrow extends Entity {
float f2;
if (movingobjectposition != null) {
if (movingobjectposition.g != null) {
if (movingobjectposition.entity != null) {
// CraftBukkit start
boolean stick;
if (entity instanceof EntityLiving) {
@ -158,8 +158,8 @@ public class EntityArrow extends Entity {
// TODO decide if we should create DamageCause.ARROW, DamageCause.PROJECTILE
// or leave as DamageCause.ENTITY_ATTACK
org.bukkit.entity.Entity shooter = (this.b == null) ? null : this.b.getBukkitEntity();
org.bukkit.entity.Entity damagee = movingobjectposition.g.getBukkitEntity();
org.bukkit.entity.Entity shooter = (this.shooter == null) ? null : this.shooter.getBukkitEntity();
org.bukkit.entity.Entity damagee = movingobjectposition.entity.getBukkitEntity();
org.bukkit.entity.Entity projectile = this.getBukkitEntity();
// TODO deal with arrows being fired from a non-entity
DamageCause damageCause = EntityDamageEvent.DamageCause.ENTITY_ATTACK;
@ -169,18 +169,18 @@ public class EntityArrow extends Entity {
server.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
// this function returns if the arrow should stick in or not, i.e. !bounce
stick = movingobjectposition.g.a(this.b, event.getDamage());
stick = movingobjectposition.entity.damageEntity(this.shooter, event.getDamage());
} else {
// event was cancelled, get if the arrow should bounce or not
stick = !event.getBounce();
}
} else {
stick = movingobjectposition.g.a(this.b, 4);
stick = movingobjectposition.entity.damageEntity(this.shooter, 4);
}
if (stick) {
// CraftBukkit end
this.world.a(this, "random.drr", 1.0F, 1.2F / (this.random.nextFloat() * 0.2F + 0.9F));
this.D();
this.world.makeSound(this, "random.drr", 1.0F, 1.2F / (this.random.nextFloat() * 0.2F + 0.9F));
this.die();
} else {
this.motX *= -0.10000000149011612D;
this.motY *= -0.10000000149011612D;
@ -201,7 +201,7 @@ public class EntityArrow extends Entity {
this.locX -= this.motX / (double) f2 * 0.05000000074505806D;
this.locY -= this.motY / (double) f2 * 0.05000000074505806D;
this.locZ -= this.motZ / (double) f2 * 0.05000000074505806D;
this.world.a(this, "random.drr", 1.0F, 1.2F / (this.random.nextFloat() * 0.2F + 0.9F));
this.world.makeSound(this, "random.drr", 1.0F, 1.2F / (this.random.nextFloat() * 0.2F + 0.9F));
this.g = true;
this.a = 7;
}
@ -248,7 +248,7 @@ public class EntityArrow extends Entity {
this.motY *= (double) f3;
this.motZ *= (double) f3;
this.motY -= (double) f1;
this.a(this.locX, this.locY, this.locZ);
this.setPosition(this.locX, this.locY, this.locZ);
}
public void a(NBTTagCompound nbttagcompound) {
@ -271,10 +271,10 @@ public class EntityArrow extends Entity {
public void b(EntityHuman entityhuman) {
if (!this.world.isStatic) {
if (this.g && this.b == entityhuman && this.a <= 0 && entityhuman.inventory.a(new ItemStack(Item.ARROW, 1))) {
this.world.a(this, "random.pop", 0.2F, ((this.random.nextFloat() - this.random.nextFloat()) * 0.7F + 1.0F) * 2.0F);
entityhuman.b(this, 1);
this.D();
if (this.g && this.shooter == entityhuman && this.a <= 0 && entityhuman.inventory.canHold(new ItemStack(Item.ARROW, 1))) {
this.world.makeSound(this, "random.pop", 0.2F, ((this.random.nextFloat() - this.random.nextFloat()) * 0.7F + 1.0F) * 2.0F);
entityhuman.receive(this, 1);
this.die();
}
}
}

View file

@ -18,7 +18,7 @@ import org.bukkit.event.vehicle.VehicleUpdateEvent;
public class EntityBoat extends Entity {
public int a;
public int damage;
public int b;
public int c;
private int d;
@ -31,7 +31,8 @@ public class EntityBoat extends Entity {
// CraftBukkit start
public double maxSpeed = 0.4D;
public void h(Entity entity) {
@Override
public void collide(Entity entity) {
CraftServer server = ((WorldServer) this.world).getServer();
Vehicle vehicle = (Vehicle) this.getBukkitEntity();
org.bukkit.entity.Entity hitEntity = (entity == null) ? null : entity.getBukkitEntity();
@ -43,13 +44,13 @@ public class EntityBoat extends Entity {
return;
}
super.h(entity);
super.collide(entity);
}
// CraftBukkit end
public EntityBoat(World world) {
super(world);
this.a = 0;
this.damage = 0;
this.b = 0;
this.c = 1;
this.aD = true;
@ -77,7 +78,7 @@ public class EntityBoat extends Entity {
public EntityBoat(World world, double d0, double d1, double d2) {
this(world);
this.a(d0, d1 + (double) this.height, d2);
this.setPosition(d0, d1 + (double) this.height, d2);
this.motX = 0.0D;
this.motY = 0.0D;
this.motZ = 0.0D;
@ -97,7 +98,7 @@ public class EntityBoat extends Entity {
return (double) this.width * 0.0D - 0.30000001192092896D;
}
public boolean a(Entity entity, int i) {
public boolean damageEntity(Entity entity, int i) {
if (!this.world.isStatic && !this.dead) {
// CraftBukkit start
Vehicle vehicle = (Vehicle) this.getBukkitEntity();
@ -114,16 +115,16 @@ public class EntityBoat extends Entity {
this.c = -this.c;
this.b = 10;
this.a += i * 10;
this.damage += i * 10;
this.W();
if (this.a > 40) {
if (this.damage > 40) {
// CraftBukkit start
VehicleDestroyEvent destroyEvent = new VehicleDestroyEvent(vehicle, attacker);
((WorldServer) this.world).getServer().getPluginManager().callEvent(destroyEvent);
if (destroyEvent.isCancelled()) {
this.a = 40; // Maximize damage so this doesn't get triggered again right away
this.damage = 40; // Maximize damage so this doesn't get triggered again right away
return true;
}
// CraftBukkit end
@ -138,7 +139,7 @@ public class EntityBoat extends Entity {
this.a(Item.STICK.id, 1, 0.0F);
}
this.D();
this.die();
}
return true;
@ -165,8 +166,8 @@ public class EntityBoat extends Entity {
--this.b;
}
if (this.a > 0) {
--this.a;
if (this.damage > 0) {
--this.damage;
}
this.lastX = this.locX;
@ -207,13 +208,13 @@ public class EntityBoat extends Entity {
this.yaw = (float) ((double) this.yaw + d6 / (double) this.d);
this.pitch = (float) ((double) this.pitch + (this.i - (double) this.pitch) / (double) this.d);
--this.d;
this.a(d3, d4, d5);
this.setPosition(d3, d4, d5);
this.c(this.yaw, this.pitch);
} else {
d3 = this.locX + this.motX;
d4 = this.locY + this.motY;
d5 = this.locZ + this.motZ;
this.a(d3, d4, d5);
this.setPosition(d3, d4, d5);
if (this.onGround) {
this.motX *= 0.5D;
this.motY *= 0.5D;
@ -256,7 +257,7 @@ public class EntityBoat extends Entity {
this.motZ *= 0.5D;
}
this.c(this.motX, this.motY, this.motZ);
this.move(this.motX, this.motY, this.motZ);
d5 = Math.sqrt(this.motX * this.motX + this.motZ * this.motZ);
double d7;
@ -282,9 +283,9 @@ public class EntityBoat extends Entity {
}
}
if (this.aW && d5 > 0.15D) {
if (this.positionChanged && d5 > 0.15D) {
if (!this.world.isStatic) {
this.D();
this.die();
int k;
@ -354,7 +355,7 @@ public class EntityBoat extends Entity {
Entity entity = (Entity) list.get(l);
if (entity != this.passenger && entity.e_() && entity instanceof EntityBoat) {
entity.h(this);
entity.collide(this);
}
}
}
@ -370,7 +371,7 @@ public class EntityBoat extends Entity {
double d0 = Math.cos((double) this.yaw * 3.141592653589793D / 180.0D) * 0.4D;
double d1 = Math.sin((double) this.yaw * 3.141592653589793D / 180.0D) * 0.4D;
this.passenger.a(this.locX + d0, this.locY + this.k() + this.passenger.C(), this.locZ + d1);
this.passenger.setPosition(this.locX + d0, this.locY + this.k() + this.passenger.C(), this.locZ + d1);
}
}
@ -396,7 +397,7 @@ public class EntityBoat extends Entity {
}
// CraftBukkit end
entityhuman.b((Entity) this);
entityhuman.mount(this);
}
return true;

View file

@ -44,7 +44,7 @@ public class EntityCow extends EntityAnimal {
}
public boolean a(EntityHuman entityhuman) {
ItemStack itemstack = entityhuman.inventory.b();
ItemStack itemstack = entityhuman.inventory.getItemInHand();
if (itemstack != null && itemstack.id == Item.BUCKET.id) {
// CraftBukkit start - got milk?
@ -59,7 +59,7 @@ public class EntityCow extends EntityAnimal {
byte data = itemInHand.getData() == null ? (byte) 0 : itemInHand.getData().getData();
itemstack = new ItemStack(itemInHand.getTypeId(), itemInHand.getAmount(), data );
entityhuman.inventory.a(entityhuman.inventory.c, itemstack);
entityhuman.inventory.setItem(entityhuman.inventory.itemInHandIndex, itemstack);
// CraftBukkit end
return true;

View file

@ -9,10 +9,9 @@ import org.bukkit.event.entity.EntityTargetEvent.TargetReason;
// CraftBukkit end
public class EntityCreature extends EntityLiving {
// CraftBukkit start - both public
public PathEntity a;
public Entity d;
// CraftBukkit end
public PathEntity pathEntity; // CraftBukkit - public
public Entity target; // CraftBukkit - public
protected boolean e = false;
public EntityCreature(World world) {
@ -27,9 +26,9 @@ public class EntityCreature extends EntityLiving {
this.e = this.u();
float f = 16.0F;
if (this.d == null) {
if (this.target == null) {
// CraftBukkit start
Entity target = this.m();
Entity target = this.findTarget();
if (target != null) {
EntityTargetEvent event = new EntityTargetEvent(this.getBukkitEntity(), target.getBukkitEntity(), TargetReason.CLOSEST_PLAYER);
CraftServer server = ((WorldServer) this.world).getServer();
@ -37,17 +36,17 @@ public class EntityCreature extends EntityLiving {
if (!event.isCancelled()) {
if (event.getTarget() == null) {
this.d = null;
this.target = null;
} else {
this.d = ((CraftEntity) event.getTarget()).getHandle();
this.target = ((CraftEntity) event.getTarget()).getHandle();
}
}
}
// CraftBukkit end
if (this.d != null) {
this.a = this.world.a(this, this.d, f);
if (this.target != null) {
this.pathEntity = this.world.findPath(this, this.target, f);
}
} else if (!this.d.N()) {
} else if (!this.target.N()) {
// CraftBukkit start
EntityTargetEvent event = new EntityTargetEvent(this.getBukkitEntity(), null, TargetReason.TARGET_DIED);
CraftServer server = ((WorldServer) this.world).getServer();
@ -55,23 +54,23 @@ public class EntityCreature extends EntityLiving {
if (!event.isCancelled()) {
if (event.getTarget() == null) {
this.d = null;
this.target = null;
} else {
this.d = ((CraftEntity) event.getTarget()).getHandle();
this.target = ((CraftEntity) event.getTarget()).getHandle();
}
}
// CraftBukkit end
} else {
float f1 = this.d.f(this);
float f1 = this.target.f(this);
if (this.e(this.d)) {
this.a(this.d, f1);
if (this.e(this.target)) {
this.a(this.target, f1);
}
}
if (!this.e && this.d != null && (this.a == null || this.random.nextInt(20) == 0)) {
this.a = this.world.a(this, this.d, f);
} else if (!this.e && (this.a == null && this.random.nextInt(80) == 0 || this.random.nextInt(80) == 0)) {
if (!this.e && this.target != null && (this.pathEntity == null || this.random.nextInt(20) == 0)) {
this.pathEntity = this.world.findPath(this, this.target, f);
} else if (!this.e && (this.pathEntity == null && this.random.nextInt(80) == 0 || this.random.nextInt(80) == 0)) {
boolean flag = false;
int i = -1;
int j = -1;
@ -79,9 +78,9 @@ public class EntityCreature extends EntityLiving {
float f2 = -99999.0F;
for (int l = 0; l < 10; ++l) {
int i1 = MathHelper.b(this.locX + (double) this.random.nextInt(13) - 6.0D);
int j1 = MathHelper.b(this.locY + (double) this.random.nextInt(7) - 3.0D);
int k1 = MathHelper.b(this.locZ + (double) this.random.nextInt(13) - 6.0D);
int i1 = MathHelper.floor(this.locX + (double) this.random.nextInt(13) - 6.0D);
int j1 = MathHelper.floor(this.locY + (double) this.random.nextInt(7) - 3.0D);
int k1 = MathHelper.floor(this.locZ + (double) this.random.nextInt(13) - 6.0D);
float f3 = this.a(i1, j1, k1);
if (f3 > f2) {
@ -94,26 +93,26 @@ public class EntityCreature extends EntityLiving {
}
if (flag) {
this.a = this.world.a(this, i, j, k, 10.0F);
this.pathEntity = this.world.a(this, i, j, k, 10.0F);
}
}
int l1 = MathHelper.b(this.boundingBox.b);
int l1 = MathHelper.floor(this.boundingBox.b);
boolean flag1 = this.g_();
boolean flag2 = this.V();
this.pitch = 0.0F;
if (this.a != null && this.random.nextInt(100) != 0) {
Vec3D vec3d = this.a.a(this);
if (this.pathEntity != null && this.random.nextInt(100) != 0) {
Vec3D vec3d = this.pathEntity.a(this);
double d0 = (double) (this.length * 2.0F);
while (vec3d != null && vec3d.d(this.locX, vec3d.b, this.locZ) < d0 * d0) {
this.a.a();
if (this.a.b()) {
this.pathEntity.a();
if (this.pathEntity.b()) {
vec3d = null;
this.a = null;
this.pathEntity = null;
} else {
vec3d = this.a.a(this);
vec3d = this.pathEntity.a(this);
}
}
@ -143,15 +142,15 @@ public class EntityCreature extends EntityLiving {
}
this.yaw += f5;
if (this.e && this.d != null) {
double d4 = this.d.locX - this.locX;
double d5 = this.d.locZ - this.locZ;
if (this.e && this.target != null) {
double d4 = this.target.locX - this.locX;
double d5 = this.target.locZ - this.locZ;
float f6 = this.yaw;
this.yaw = (float) (Math.atan2(d5, d4) * 180.0D / 3.1415927410125732D) - 90.0F;
f5 = (f6 - this.yaw + 90.0F) * 3.1415927F / 180.0F;
this.au = -MathHelper.a(f5) * this.av * 1.0F;
this.av = MathHelper.b(f5) * this.av * 1.0F;
this.au = -MathHelper.sin(f5) * this.av * 1.0F;
this.av = MathHelper.cos(f5) * this.av * 1.0F;
}
if (d3 > 0.0D) {
@ -159,11 +158,11 @@ public class EntityCreature extends EntityLiving {
}
}
if (this.d != null) {
this.a(this.d, 30.0F, 30.0F);
if (this.target != null) {
this.a(this.target, 30.0F, 30.0F);
}
if (this.aW) {
if (this.positionChanged) {
this.ax = true;
}
@ -172,7 +171,7 @@ public class EntityCreature extends EntityLiving {
}
} else {
super.c_();
this.a = null;
this.pathEntity = null;
}
}
@ -182,31 +181,31 @@ public class EntityCreature extends EntityLiving {
return 0.0F;
}
protected Entity m() {
protected Entity findTarget() {
return null;
}
public boolean b() {
int i = MathHelper.b(this.locX);
int j = MathHelper.b(this.boundingBox.b);
int k = MathHelper.b(this.locZ);
int i = MathHelper.floor(this.locX);
int j = MathHelper.floor(this.boundingBox.b);
int k = MathHelper.floor(this.locZ);
return super.b() && this.a(i, j, k) >= 0.0F;
}
public boolean z() {
return this.a != null;
return this.pathEntity != null;
}
public void a(PathEntity pathentity) {
this.a = pathentity;
this.pathEntity = pathentity;
}
public Entity A() {
return this.d;
return this.target;
}
public void c(Entity entity) {
this.d = entity;
this.target = entity;
}
}

View file

@ -8,7 +8,7 @@ import org.bukkit.event.entity.ExplosionPrimeEvent;
public class EntityCreeper extends EntityMonster {
int a;
int fuseTicks;
int b;
public EntityCreeper(World world) {
@ -30,21 +30,21 @@ public class EntityCreeper extends EntityMonster {
}
public void f_() {
this.b = this.a;
this.b = this.fuseTicks;
if (this.world.isStatic) {
int i = this.v();
if (i > 0 && this.a == 0) {
this.world.a(this, "random.fuse", 1.0F, 0.5F);
if (i > 0 && this.fuseTicks == 0) {
this.world.makeSound(this, "random.fuse", 1.0F, 0.5F);
}
this.a += i;
if (this.a < 0) {
this.a = 0;
this.fuseTicks += i;
if (this.fuseTicks < 0) {
this.fuseTicks = 0;
}
if (this.a >= 30) {
this.a = 30;
if (this.fuseTicks >= 30) {
this.fuseTicks = 30;
}
}
@ -71,18 +71,18 @@ public class EntityCreeper extends EntityMonster {
if ((i > 0 || f >= 3.0F) && (i <= 0 || f >= 7.0F)) {
this.e(-1);
--this.a;
if (this.a < 0) {
this.a = 0;
--this.fuseTicks;
if (this.fuseTicks < 0) {
this.fuseTicks = 0;
}
} else {
if (this.a == 0) {
this.world.a(this, "random.fuse", 1.0F, 0.5F);
if (this.fuseTicks == 0) {
this.world.makeSound(this, "random.fuse", 1.0F, 0.5F);
}
this.e(1);
++this.a;
if (this.a >= 30) {
++this.fuseTicks;
if (this.fuseTicks >= 30) {
// CraftBukkit start
CraftServer server = ((WorldServer) this.world).getServer();
@ -90,10 +90,10 @@ public class EntityCreeper extends EntityMonster {
server.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
this.world.a(this, this.locX, this.locY, this.locZ, event.getRadius(), event.getFire());
this.D();
this.world.createExplosion(this, this.locX, this.locY, this.locZ, event.getRadius(), event.getFire());
this.die();
} else {
this.a = 0;
this.fuseTicks = 0;
}
// CraftBukkit end
}

View file

@ -21,7 +21,7 @@ public class EntityEgg extends Entity {
private int e = 0;
private boolean f = false;
public int a = 0;
private EntityLiving g;
private EntityLiving thrower;
private int h;
private int i = 0;
@ -34,19 +34,19 @@ public class EntityEgg extends Entity {
public EntityEgg(World world, EntityLiving entityliving) {
super(world);
this.g = entityliving;
this.thrower = entityliving;
this.b(0.25F, 0.25F);
this.c(entityliving.locX, entityliving.locY + (double) entityliving.q(), entityliving.locZ, entityliving.yaw, entityliving.pitch);
this.locX -= (double) (MathHelper.b(this.yaw / 180.0F * 3.1415927F) * 0.16F);
this.setPositionRotation(entityliving.locX, entityliving.locY + (double) entityliving.q(), entityliving.locZ, entityliving.yaw, entityliving.pitch);
this.locX -= (double) (MathHelper.cos(this.yaw / 180.0F * 3.1415927F) * 0.16F);
this.locY -= 0.10000000149011612D;
this.locZ -= (double) (MathHelper.a(this.yaw / 180.0F * 3.1415927F) * 0.16F);
this.a(this.locX, this.locY, this.locZ);
this.locZ -= (double) (MathHelper.sin(this.yaw / 180.0F * 3.1415927F) * 0.16F);
this.setPosition(this.locX, this.locY, this.locZ);
this.height = 0.0F;
float f = 0.4F;
this.motX = (double) (-MathHelper.a(this.yaw / 180.0F * 3.1415927F) * MathHelper.b(this.pitch / 180.0F * 3.1415927F) * f);
this.motZ = (double) (MathHelper.b(this.yaw / 180.0F * 3.1415927F) * MathHelper.b(this.pitch / 180.0F * 3.1415927F) * f);
this.motY = (double) (-MathHelper.a(this.pitch / 180.0F * 3.1415927F) * f);
this.motX = (double) (-MathHelper.sin(this.yaw / 180.0F * 3.1415927F) * MathHelper.cos(this.pitch / 180.0F * 3.1415927F) * f);
this.motZ = (double) (MathHelper.cos(this.yaw / 180.0F * 3.1415927F) * MathHelper.cos(this.pitch / 180.0F * 3.1415927F) * f);
this.motY = (double) (-MathHelper.sin(this.pitch / 180.0F * 3.1415927F) * f);
this.a(this.motX, this.motY, this.motZ, 1.5F, 1.0F);
}
@ -54,7 +54,7 @@ public class EntityEgg extends Entity {
super(world);
this.h = 0;
this.b(0.25F, 0.25F);
this.a(d0, d1, d2);
this.setPosition(d0, d1, d2);
this.height = 0.0F;
}
@ -95,7 +95,7 @@ public class EntityEgg extends Entity {
if (i == this.e) {
++this.h;
if (this.h == 1200) {
this.D();
this.die();
}
return;
@ -111,14 +111,14 @@ public class EntityEgg extends Entity {
++this.i;
}
Vec3D vec3d = Vec3D.b(this.locX, this.locY, this.locZ);
Vec3D vec3d1 = Vec3D.b(this.locX + this.motX, this.locY + this.motY, this.locZ + this.motZ);
Vec3D vec3d = Vec3D.create(this.locX, this.locY, this.locZ);
Vec3D vec3d1 = Vec3D.create(this.locX + this.motX, this.locY + this.motY, this.locZ + this.motZ);
MovingObjectPosition movingobjectposition = this.world.a(vec3d, vec3d1);
vec3d = Vec3D.b(this.locX, this.locY, this.locZ);
vec3d1 = Vec3D.b(this.locX + this.motX, this.locY + this.motY, this.locZ + this.motZ);
vec3d = Vec3D.create(this.locX, this.locY, this.locZ);
vec3d1 = Vec3D.create(this.locX + this.motX, this.locY + this.motY, this.locZ + this.motZ);
if (movingobjectposition != null) {
vec3d1 = Vec3D.b(movingobjectposition.f.a, movingobjectposition.f.b, movingobjectposition.f.c);
vec3d1 = Vec3D.create(movingobjectposition.f.a, movingobjectposition.f.b, movingobjectposition.f.c);
}
if (!this.world.isStatic) {
@ -129,7 +129,7 @@ public class EntityEgg extends Entity {
for (int j = 0; j < list.size(); ++j) {
Entity entity1 = (Entity) list.get(j);
if (entity1.d_() && (entity1 != this.g || this.i >= 5)) {
if (entity1.d_() && (entity1 != this.thrower || this.i >= 5)) {
float f = 0.3F;
AxisAlignedBB axisalignedbb = entity1.boundingBox.b((double) f, (double) f, (double) f);
MovingObjectPosition movingobjectposition1 = axisalignedbb.a(vec3d, vec3d1);
@ -152,12 +152,12 @@ public class EntityEgg extends Entity {
if (movingobjectposition != null) {
// CraftBukkit start
if (movingobjectposition.g != null) {
if (movingobjectposition.entity != null) {
boolean stick;
if (movingobjectposition.g instanceof EntityLiving) {
if (movingobjectposition.entity instanceof EntityLiving) {
CraftServer server = ((WorldServer) this.world).getServer();
org.bukkit.entity.Entity shooter = (this.g == null) ? null : this.g.getBukkitEntity();
org.bukkit.entity.Entity damagee = movingobjectposition.g.getBukkitEntity();
org.bukkit.entity.Entity shooter = (this.thrower == null) ? null : this.thrower.getBukkitEntity();
org.bukkit.entity.Entity damagee = movingobjectposition.entity.getBukkitEntity();
org.bukkit.entity.Entity projectile = this.getBukkitEntity();
DamageCause damageCause = EntityDamageEvent.DamageCause.ENTITY_ATTACK;
int damage = 0;
@ -168,13 +168,13 @@ public class EntityEgg extends Entity {
if (!event.isCancelled()) {
// this function returns if the egg should stick or not, i.e. !bounce
stick = movingobjectposition.g.a(this.g, event.getDamage());
stick = movingobjectposition.entity.damageEntity(this.thrower, event.getDamage());
} else {
// event was cancelled, get if the egg should bounce or not
stick = !event.getBounce();
}
} else {
stick = movingobjectposition.g.a(this.g, 0);
stick = movingobjectposition.entity.damageEntity(this.thrower, 0);
}
if (stick) {
@ -190,9 +190,9 @@ public class EntityEgg extends Entity {
CreatureType hatchingType = CreatureType.CHICKEN;
if (this.g instanceof EntityPlayer) {
if (this.thrower instanceof EntityPlayer) {
CraftServer server = ((WorldServer) this.world).getServer();
Player player = (this.g == null) ? null : (Player) this.g.getBukkitEntity();
Player player = (this.thrower == null) ? null : (Player) this.thrower.getBukkitEntity();
PlayerEggThrowEvent event = new PlayerEggThrowEvent(player, (Egg) this.getBukkitEntity(), hatching, (byte) numHatching, hatchingType);
server.getPluginManager().callEvent(event);
@ -258,9 +258,9 @@ public class EntityEgg extends Entity {
// The world we're spawning in accepts this creature
boolean isAnimal = entity instanceof EntityAnimal || entity instanceof EntityWaterAnimal;
if ((isAnimal && this.world.E) || (!isAnimal && this.world.D)) {
entity.c(this.locX, this.locY, this.locZ, this.yaw, 0.0F);
this.world.a(entity);
if ((isAnimal && this.world.allowAnimals) || (!isAnimal && this.world.allowMonsters)) {
entity.setPositionRotation(this.locX, this.locY, this.locZ, this.yaw, 0.0F);
this.world.addEntity(entity);
}
}
}
@ -270,7 +270,7 @@ public class EntityEgg extends Entity {
this.world.a("snowballpoof", this.locX, this.locY, this.locZ, 0.0D, 0.0D, 0.0D);
}
this.D();
this.die();
}
this.locX += this.motX;
@ -315,7 +315,7 @@ public class EntityEgg extends Entity {
this.motY *= (double) f2;
this.motZ *= (double) f2;
this.motY -= (double) f3;
this.a(this.locX, this.locY, this.locZ);
this.setPosition(this.locX, this.locY, this.locZ);
}
public void a(NBTTagCompound nbttagcompound) {
@ -337,10 +337,10 @@ public class EntityEgg extends Entity {
}
public void b(EntityHuman entityhuman) {
if (this.f && this.g == entityhuman && this.a <= 0 && entityhuman.inventory.a(new ItemStack(Item.ARROW, 1))) {
this.world.a(this, "random.pop", 0.2F, ((this.random.nextFloat() - this.random.nextFloat()) * 0.7F + 1.0F) * 2.0F);
entityhuman.b(this, 1);
this.D();
if (this.f && this.thrower == entityhuman && this.a <= 0 && entityhuman.inventory.canHold(new ItemStack(Item.ARROW, 1))) {
this.world.makeSound(this, "random.pop", 0.2F, ((this.random.nextFloat() - this.random.nextFloat()) * 0.7F + 1.0F) * 2.0F);
entityhuman.receive(this, 1);
this.die();
}
}
}

View file

@ -19,7 +19,7 @@ public class EntityFireball extends Entity {
private int h = 0;
private boolean i = false;
public int a = 0;
private EntityLiving j;
private EntityLiving shooter;
private int k;
private int l = 0;
public double b;
@ -35,10 +35,10 @@ public class EntityFireball extends Entity {
public EntityFireball(World world, EntityLiving entityliving, double d0, double d1, double d2) {
super(world);
this.j = entityliving;
this.shooter = entityliving;
this.b(1.0F, 1.0F);
this.c(entityliving.locX, entityliving.locY, entityliving.locZ, entityliving.yaw, entityliving.pitch);
this.a(this.locX, this.locY, this.locZ);
this.setPositionRotation(entityliving.locX, entityliving.locY, entityliving.locZ, entityliving.yaw, entityliving.pitch);
this.setPosition(this.locX, this.locY, this.locZ);
this.height = 0.0F;
this.motX = this.motY = this.motZ = 0.0D;
d0 += this.random.nextGaussian() * 0.4D;
@ -64,7 +64,7 @@ public class EntityFireball extends Entity {
if (i == this.h) {
++this.k;
if (this.k == 1200) {
this.D();
this.die();
}
return;
@ -80,14 +80,14 @@ public class EntityFireball extends Entity {
++this.l;
}
Vec3D vec3d = Vec3D.b(this.locX, this.locY, this.locZ);
Vec3D vec3d1 = Vec3D.b(this.locX + this.motX, this.locY + this.motY, this.locZ + this.motZ);
Vec3D vec3d = Vec3D.create(this.locX, this.locY, this.locZ);
Vec3D vec3d1 = Vec3D.create(this.locX + this.motX, this.locY + this.motY, this.locZ + this.motZ);
MovingObjectPosition movingobjectposition = this.world.a(vec3d, vec3d1);
vec3d = Vec3D.b(this.locX, this.locY, this.locZ);
vec3d1 = Vec3D.b(this.locX + this.motX, this.locY + this.motY, this.locZ + this.motZ);
vec3d = Vec3D.create(this.locX, this.locY, this.locZ);
vec3d1 = Vec3D.create(this.locX + this.motX, this.locY + this.motY, this.locZ + this.motZ);
if (movingobjectposition != null) {
vec3d1 = Vec3D.b(movingobjectposition.f.a, movingobjectposition.f.b, movingobjectposition.f.c);
vec3d1 = Vec3D.create(movingobjectposition.f.a, movingobjectposition.f.b, movingobjectposition.f.c);
}
Entity entity = null;
@ -97,7 +97,7 @@ public class EntityFireball extends Entity {
for (int j = 0; j < list.size(); ++j) {
Entity entity1 = (Entity) list.get(j);
if (entity1.d_() && (entity1 != this.j || this.l >= 25)) {
if (entity1.d_() && (entity1 != this.shooter || this.l >= 25)) {
float f = 0.3F;
AxisAlignedBB axisalignedbb = entity1.boundingBox.b((double) f, (double) f, (double) f);
MovingObjectPosition movingobjectposition1 = axisalignedbb.a(vec3d, vec3d1);
@ -119,12 +119,12 @@ public class EntityFireball extends Entity {
if (movingobjectposition != null) {
// CraftBukkit start
if (movingobjectposition.g != null) {
if (movingobjectposition.entity != null) {
boolean stick;
if (movingobjectposition.g instanceof EntityLiving) {
if (movingobjectposition.entity instanceof EntityLiving) {
CraftServer server = ((WorldServer) this.world).getServer();
org.bukkit.entity.Entity shooter = (this.j == null) ? null : this.j.getBukkitEntity();
org.bukkit.entity.Entity damagee = movingobjectposition.g.getBukkitEntity();
org.bukkit.entity.Entity shooter = (this.shooter == null) ? null : this.shooter.getBukkitEntity();
org.bukkit.entity.Entity damagee = movingobjectposition.entity.getBukkitEntity();
org.bukkit.entity.Entity projectile = this.getBukkitEntity();
DamageCause damageCause = EntityDamageEvent.DamageCause.ENTITY_ATTACK;
int damage = 0;
@ -135,13 +135,13 @@ public class EntityFireball extends Entity {
if (!event.isCancelled()) {
// this function returns if the fireball should stick or not, i.e. !bounce
stick = movingobjectposition.g.a(this.j, event.getDamage());
stick = movingobjectposition.entity.damageEntity(this.shooter, event.getDamage());
} else {
// event was cancelled, get if the fireball should bounce or not
stick = !event.getBounce();
}
} else {
stick = movingobjectposition.g.a(this.j, 0);
stick = movingobjectposition.entity.damageEntity(this.shooter, 0);
}
if (stick) {
;
@ -154,8 +154,8 @@ public class EntityFireball extends Entity {
server.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
// give 'this' instead of (Entity) null so we know what causes the damage
this.world.a(this, this.locX, this.locY, this.locZ, event.getRadius(), event.getFire());
this.D();
this.world.createExplosion(this, this.locX, this.locY, this.locZ, event.getRadius(), event.getFire());
this.die();
}
// CraftBukkit end
}
@ -204,7 +204,7 @@ public class EntityFireball extends Entity {
this.motY *= (double) f2;
this.motZ *= (double) f2;
this.world.a("smoke", this.locX, this.locY + 0.5D, this.locZ, 0.0D, 0.0D, 0.0D);
this.a(this.locX, this.locY, this.locZ);
this.setPosition(this.locX, this.locY, this.locZ);
}
public void a(NBTTagCompound nbttagcompound) {
@ -229,7 +229,7 @@ public class EntityFireball extends Entity {
return true;
}
public boolean a(Entity entity, int i) {
public boolean damageEntity(Entity entity, int i) {
this.W();
if (entity != null) {
Vec3D vec3d = entity.S();

View file

@ -17,7 +17,7 @@ public class EntityFish extends Entity {
private int g = 0;
private boolean h = false;
public int a = 0;
public EntityHuman b;
public EntityHuman owner;
private int i;
private int j = 0;
private int k = 0;
@ -38,20 +38,20 @@ public class EntityFish extends Entity {
public EntityFish(World world, EntityHuman entityhuman) {
super(world);
this.b = entityhuman;
this.b.hookedFish = this;
this.owner = entityhuman;
this.owner.hookedFish = this;
this.b(0.25F, 0.25F);
this.c(entityhuman.locX, entityhuman.locY + 1.62D - (double) entityhuman.height, entityhuman.locZ, entityhuman.yaw, entityhuman.pitch);
this.locX -= (double) (MathHelper.b(this.yaw / 180.0F * 3.1415927F) * 0.16F);
this.setPositionRotation(entityhuman.locX, entityhuman.locY + 1.62D - (double) entityhuman.height, entityhuman.locZ, entityhuman.yaw, entityhuman.pitch);
this.locX -= (double) (MathHelper.cos(this.yaw / 180.0F * 3.1415927F) * 0.16F);
this.locY -= 0.10000000149011612D;
this.locZ -= (double) (MathHelper.a(this.yaw / 180.0F * 3.1415927F) * 0.16F);
this.a(this.locX, this.locY, this.locZ);
this.locZ -= (double) (MathHelper.sin(this.yaw / 180.0F * 3.1415927F) * 0.16F);
this.setPosition(this.locX, this.locY, this.locZ);
this.height = 0.0F;
float f = 0.4F;
this.motX = (double) (-MathHelper.a(this.yaw / 180.0F * 3.1415927F) * MathHelper.b(this.pitch / 180.0F * 3.1415927F) * f);
this.motZ = (double) (MathHelper.b(this.yaw / 180.0F * 3.1415927F) * MathHelper.b(this.pitch / 180.0F * 3.1415927F) * f);
this.motY = (double) (-MathHelper.a(this.pitch / 180.0F * 3.1415927F) * f);
this.motX = (double) (-MathHelper.sin(this.yaw / 180.0F * 3.1415927F) * MathHelper.cos(this.pitch / 180.0F * 3.1415927F) * f);
this.motZ = (double) (MathHelper.cos(this.yaw / 180.0F * 3.1415927F) * MathHelper.cos(this.pitch / 180.0F * 3.1415927F) * f);
this.motY = (double) (-MathHelper.sin(this.pitch / 180.0F * 3.1415927F) * f);
this.a(this.motX, this.motY, this.motZ, 1.5F, 1.0F);
}
@ -97,15 +97,15 @@ public class EntityFish extends Entity {
this.yaw = (float) ((double) this.yaw + d3 / (double) this.l);
this.pitch = (float) ((double) this.pitch + (this.q - (double) this.pitch) / (double) this.l);
--this.l;
this.a(d0, d1, d2);
this.setPosition(d0, d1, d2);
this.c(this.yaw, this.pitch);
} else {
if (!this.world.isStatic) {
ItemStack itemstack = this.b.A();
ItemStack itemstack = this.owner.A();
if (this.b.dead || !this.b.N() || itemstack == null || itemstack.a() != Item.FISHING_ROD || this.g(this.b) > 1024.0D) {
this.D();
this.b.hookedFish = null;
if (this.owner.dead || !this.owner.N() || itemstack == null || itemstack.getItem() != Item.FISHING_ROD || this.g(this.owner) > 1024.0D) {
this.die();
this.owner.hookedFish = null;
return;
}
@ -131,7 +131,7 @@ public class EntityFish extends Entity {
if (i == this.g) {
++this.i;
if (this.i == 1200) {
this.D();
this.die();
}
return;
@ -147,14 +147,14 @@ public class EntityFish extends Entity {
++this.j;
}
Vec3D vec3d = Vec3D.b(this.locX, this.locY, this.locZ);
Vec3D vec3d1 = Vec3D.b(this.locX + this.motX, this.locY + this.motY, this.locZ + this.motZ);
Vec3D vec3d = Vec3D.create(this.locX, this.locY, this.locZ);
Vec3D vec3d1 = Vec3D.create(this.locX + this.motX, this.locY + this.motY, this.locZ + this.motZ);
MovingObjectPosition movingobjectposition = this.world.a(vec3d, vec3d1);
vec3d = Vec3D.b(this.locX, this.locY, this.locZ);
vec3d1 = Vec3D.b(this.locX + this.motX, this.locY + this.motY, this.locZ + this.motZ);
vec3d = Vec3D.create(this.locX, this.locY, this.locZ);
vec3d1 = Vec3D.create(this.locX + this.motX, this.locY + this.motY, this.locZ + this.motZ);
if (movingobjectposition != null) {
vec3d1 = Vec3D.b(movingobjectposition.f.a, movingobjectposition.f.b, movingobjectposition.f.c);
vec3d1 = Vec3D.create(movingobjectposition.f.a, movingobjectposition.f.b, movingobjectposition.f.c);
}
Entity entity = null;
@ -166,7 +166,7 @@ public class EntityFish extends Entity {
for (int j = 0; j < list.size(); ++j) {
Entity entity1 = (Entity) list.get(j);
if (entity1.d_() && (entity1 != this.b || this.j >= 5)) {
if (entity1.d_() && (entity1 != this.owner || this.j >= 5)) {
float f = 0.3F;
AxisAlignedBB axisalignedbb = entity1.boundingBox.b((double) f, (double) f, (double) f);
MovingObjectPosition movingobjectposition1 = axisalignedbb.a(vec3d, vec3d1);
@ -186,14 +186,14 @@ public class EntityFish extends Entity {
}
if (movingobjectposition != null) {
if (movingobjectposition.g != null) {
if (movingobjectposition.entity != null) {
// CraftBukkit start
// TODO add EntityDamagedByProjectileEvent : fishing hook?
boolean stick;
if (movingobjectposition.g instanceof EntityLiving) {
if (movingobjectposition.entity instanceof EntityLiving) {
CraftServer server = ((WorldServer) this.world).getServer();
org.bukkit.entity.Entity shooter = (this.b == null) ? null : this.b.getBukkitEntity();
org.bukkit.entity.Entity damagee = movingobjectposition.g.getBukkitEntity();
org.bukkit.entity.Entity shooter = (this.owner == null) ? null : this.owner.getBukkitEntity();
org.bukkit.entity.Entity damagee = movingobjectposition.entity.getBukkitEntity();
org.bukkit.entity.Entity projectile = this.getBukkitEntity();
DamageCause damageCause = EntityDamageEvent.DamageCause.ENTITY_ATTACK;
int damage = 0;
@ -204,17 +204,17 @@ public class EntityFish extends Entity {
if (!event.isCancelled()) {
// this function returns if the fish should stick or not, i.e. !bounce
stick = movingobjectposition.g.a(this.b, event.getDamage());
stick = movingobjectposition.entity.damageEntity(this.owner, event.getDamage());
} else {
// event was cancelled, get if the fish should bounce or not
stick = !event.getBounce();
}
} else {
stick = movingobjectposition.g.a(this.b, 0);
stick = movingobjectposition.entity.damageEntity(this.owner, 0);
}
if (!stick) {
// CraftBukkit end
this.c = movingobjectposition.g;
this.c = movingobjectposition.entity;
}
} else {
this.h = true;
@ -222,7 +222,7 @@ public class EntityFish extends Entity {
}
if (!this.h) {
this.c(this.motX, this.motY, this.motZ);
this.move(this.motX, this.motY, this.motZ);
float f1 = MathHelper.a(this.motX * this.motX + this.motZ * this.motZ);
this.yaw = (float) (Math.atan2(this.motX, this.motZ) * 180.0D / 3.1415927410125732D);
@ -247,7 +247,7 @@ public class EntityFish extends Entity {
this.yaw = this.lastYaw + (this.yaw - this.lastYaw) * 0.2F;
float f2 = 0.92F;
if (this.onGround || this.aW) {
if (this.onGround || this.positionChanged) {
f2 = 0.5F;
}
@ -270,8 +270,8 @@ public class EntityFish extends Entity {
} else if (this.random.nextInt(500) == 0) {
this.k = this.random.nextInt(30) + 10;
this.motY -= 0.20000000298023224D;
this.world.a(this, "random.splash", 0.25F, 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.4F);
float f3 = (float) MathHelper.b(this.boundingBox.b);
this.world.makeSound(this, "random.splash", 0.25F, 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.4F);
float f3 = (float) MathHelper.floor(this.boundingBox.b);
int l;
float f4;
@ -305,7 +305,7 @@ public class EntityFish extends Entity {
this.motX *= (double) f2;
this.motY *= (double) f2;
this.motZ *= (double) f2;
this.a(this.locX, this.locY, this.locZ);
this.setPosition(this.locX, this.locY, this.locZ);
}
}
}
@ -332,9 +332,9 @@ public class EntityFish extends Entity {
byte b0 = 0;
if (this.c != null) {
double d0 = this.b.locX - this.locX;
double d1 = this.b.locY - this.locY;
double d2 = this.b.locZ - this.locZ;
double d0 = this.owner.locX - this.locX;
double d1 = this.owner.locY - this.locY;
double d2 = this.owner.locZ - this.locZ;
double d3 = (double) MathHelper.a(d0 * d0 + d1 * d1 + d2 * d2);
double d4 = 0.1D;
@ -344,17 +344,17 @@ public class EntityFish extends Entity {
b0 = 3;
} else if (this.k > 0) {
EntityItem entityitem = new EntityItem(this.world, this.locX, this.locY, this.locZ, new ItemStack(Item.RAW_FISH));
double d5 = this.b.locX - this.locX;
double d6 = this.b.locY - this.locY;
double d7 = this.b.locZ - this.locZ;
double d5 = this.owner.locX - this.locX;
double d6 = this.owner.locY - this.locY;
double d7 = this.owner.locZ - this.locZ;
double d8 = (double) MathHelper.a(d5 * d5 + d6 * d6 + d7 * d7);
double d9 = 0.1D;
entityitem.motX = d5 * d9;
entityitem.motY = d6 * d9 + (double) MathHelper.a(d8) * 0.08D;
entityitem.motZ = d7 * d9;
this.world.a((Entity) entityitem);
this.b.a(StatisticList.x, 1);
this.world.addEntity(entityitem);
this.owner.a(StatisticList.x, 1);
b0 = 1;
}
@ -362,8 +362,8 @@ public class EntityFish extends Entity {
b0 = 2;
}
this.D();
this.b.hookedFish = null;
this.die();
this.owner.hookedFish = null;
return b0;
}
}

View file

@ -40,9 +40,7 @@ public abstract class EntityHuman extends EntityLiving {
public boolean fauxSleeping;
// CraftBukkit end
private ChunkCoordinates b;
// CraftBukkit start
public int sleepTicks;
// CraftBukkit end
public int sleepTicks; // CraftBukkit (public)
public float z;
public float A;
private ChunkCoordinates d;
@ -54,9 +52,9 @@ public abstract class EntityHuman extends EntityLiving {
this.defaultContainer = new ContainerPlayer(this.inventory, !world.isStatic);
this.activeContainer = this.defaultContainer;
this.height = 1.62F;
ChunkCoordinates chunkcoordinates = world.m();
ChunkCoordinates chunkcoordinates = world.getSpawn();
this.c((double) chunkcoordinates.a + 0.5D, (double) (chunkcoordinates.b + 1), (double) chunkcoordinates.c + 0.5D, 0.0F, 0.0F);
this.setPositionRotation((double) chunkcoordinates.x + 0.5D, (double) (chunkcoordinates.y + 1), (double) chunkcoordinates.z + 0.5D, 0.0F, 0.0F);
this.health = 20;
this.P = "humanoid";
this.O = 180.0F;
@ -70,7 +68,7 @@ public abstract class EntityHuman extends EntityLiving {
}
public void f_() {
if (this.F()) {
if (this.isSleeping()) {
++this.sleepTicks;
if (this.sleepTicks > 100) {
this.sleepTicks = 100;
@ -133,7 +131,7 @@ public abstract class EntityHuman extends EntityLiving {
}
protected boolean p_() {
return this.health <= 0 || this.F();
return this.health <= 0 || this.isSleeping();
}
protected void u() {
@ -161,7 +159,7 @@ public abstract class EntityHuman extends EntityLiving {
}
public void r() {
if (this.world.j == 0 && this.health < 20 && this.ticksLived % 20 * 12 == 0) {
if (this.world.spawnMonsters == 0 && this.health < 20 && this.ticksLived % 20 * 12 == 0) {
this.b(1);
}
@ -208,7 +206,7 @@ public abstract class EntityHuman extends EntityLiving {
public void a(Entity entity) {
super.a(entity);
this.b(0.2F, 0.2F);
this.a(this.locX, this.locY, this.locZ);
this.setPosition(this.locX, this.locY, this.locZ);
this.motY = 0.10000000149011612D;
if (this.name.equals("Notch")) {
this.a(new ItemStack(Item.APPLE, 1), true);
@ -216,8 +214,8 @@ public abstract class EntityHuman extends EntityLiving {
this.inventory.h();
if (entity != null) {
this.motX = (double) (-MathHelper.b((this.aa + this.yaw) * 3.1415927F / 180.0F) * 0.1F);
this.motZ = (double) (-MathHelper.a((this.aa + this.yaw) * 3.1415927F / 180.0F) * 0.1F);
this.motX = (double) (-MathHelper.cos((this.aa + this.yaw) * 3.1415927F / 180.0F) * 0.1F);
this.motZ = (double) (-MathHelper.sin((this.aa + this.yaw) * 3.1415927F / 180.0F) * 0.1F);
} else {
this.motX = this.motZ = 0.0D;
}
@ -236,7 +234,7 @@ public abstract class EntityHuman extends EntityLiving {
}
public void z() {
this.a(this.inventory.a(this.inventory.c, 1), false);
this.a(this.inventory.a(this.inventory.itemInHandIndex, 1), false);
}
public void b(ItemStack itemstack) {
@ -247,7 +245,7 @@ public abstract class EntityHuman extends EntityLiving {
if (itemstack != null) {
EntityItem entityitem = new EntityItem(this.world, this.locX, this.locY - 0.30000001192092896D + (double) this.q(), this.locZ, itemstack);
entityitem.c = 40;
entityitem.pickupDelay = 40;
float f = 0.1F;
float f1;
@ -255,14 +253,14 @@ public abstract class EntityHuman extends EntityLiving {
f1 = this.random.nextFloat() * 0.5F;
float f2 = this.random.nextFloat() * 3.1415927F * 2.0F;
entityitem.motX = (double) (-MathHelper.a(f2) * f1);
entityitem.motZ = (double) (MathHelper.b(f2) * f1);
entityitem.motX = (double) (-MathHelper.sin(f2) * f1);
entityitem.motZ = (double) (MathHelper.cos(f2) * f1);
entityitem.motY = 0.20000000298023224D;
} else {
f = 0.3F;
entityitem.motX = (double) (-MathHelper.a(this.yaw / 180.0F * 3.1415927F) * MathHelper.b(this.pitch / 180.0F * 3.1415927F) * f);
entityitem.motZ = (double) (MathHelper.b(this.yaw / 180.0F * 3.1415927F) * MathHelper.b(this.pitch / 180.0F * 3.1415927F) * f);
entityitem.motY = (double) (-MathHelper.a(this.pitch / 180.0F * 3.1415927F) * f + 0.1F);
entityitem.motX = (double) (-MathHelper.sin(this.yaw / 180.0F * 3.1415927F) * MathHelper.cos(this.pitch / 180.0F * 3.1415927F) * f);
entityitem.motZ = (double) (MathHelper.cos(this.yaw / 180.0F * 3.1415927F) * MathHelper.cos(this.pitch / 180.0F * 3.1415927F) * f);
entityitem.motY = (double) (-MathHelper.sin(this.pitch / 180.0F * 3.1415927F) * f + 0.1F);
f = 0.02F;
f1 = this.random.nextFloat() * 3.1415927F * 2.0F;
f *= this.random.nextFloat();
@ -294,7 +292,7 @@ public abstract class EntityHuman extends EntityLiving {
}
protected void a(EntityItem entityitem) {
this.world.a((Entity) entityitem);
this.world.addEntity(entityitem);
}
public float a(Block block) {
@ -324,11 +322,11 @@ public abstract class EntityHuman extends EntityLiving {
this.sleeping = nbttagcompound.m("Sleeping");
this.sleepTicks = nbttagcompound.d("SleepTimer");
if (this.sleeping) {
this.b = new ChunkCoordinates(MathHelper.b(this.locX), MathHelper.b(this.locY), MathHelper.b(this.locZ));
this.b = new ChunkCoordinates(MathHelper.floor(this.locX), MathHelper.floor(this.locY), MathHelper.floor(this.locZ));
this.a(true, true, false);
}
if (nbttagcompound.b("SpawnX") && nbttagcompound.b("SpawnY") && nbttagcompound.b("SpawnZ")) {
if (nbttagcompound.hasKey("SpawnX") && nbttagcompound.hasKey("SpawnY") && nbttagcompound.hasKey("SpawnZ")) {
this.d = new ChunkCoordinates(nbttagcompound.e("SpawnX"), nbttagcompound.e("SpawnY"), nbttagcompound.e("SpawnZ"));
}
}
@ -340,9 +338,9 @@ public abstract class EntityHuman extends EntityLiving {
nbttagcompound.a("Sleeping", this.sleeping);
nbttagcompound.a("SleepTimer", (short) this.sleepTicks);
if (this.d != null) {
nbttagcompound.a("SpawnX", this.d.a);
nbttagcompound.a("SpawnY", this.d.b);
nbttagcompound.a("SpawnZ", this.d.c);
nbttagcompound.a("SpawnX", this.d.x);
nbttagcompound.a("SpawnY", this.d.y);
nbttagcompound.a("SpawnZ", this.d.z);
}
}
@ -350,7 +348,7 @@ public abstract class EntityHuman extends EntityLiving {
public void b(int i, int j, int k) {}
public void b(Entity entity, int i) {}
public void receive(Entity entity, int i) {}
public float q() {
return 0.12F;
@ -360,25 +358,25 @@ public abstract class EntityHuman extends EntityLiving {
this.height = 1.62F;
}
public boolean a(Entity entity, int i) {
public boolean damageEntity(Entity entity, int i) {
this.at = 0;
if (this.health <= 0) {
return false;
} else {
if (this.F()) {
if (this.isSleeping()) {
this.a(true, true, false);
}
if (entity instanceof EntityMonster || entity instanceof EntityArrow) {
if (this.world.j == 0) {
if (this.world.spawnMonsters == 0) {
i = 0;
}
if (this.world.j == 1) {
if (this.world.spawnMonsters == 1) {
i = i / 3 + 1;
}
if (this.world.j == 3) {
if (this.world.spawnMonsters == 3) {
i = i * 3 / 2;
}
}
@ -388,8 +386,8 @@ public abstract class EntityHuman extends EntityLiving {
} else {
Object object = entity;
if (entity instanceof EntityArrow && ((EntityArrow) entity).b != null) {
object = ((EntityArrow) entity).b;
if (entity instanceof EntityArrow && ((EntityArrow) entity).shooter != null) {
object = ((EntityArrow) entity).shooter;
}
// CraftBukkit start - this is here instead of EntityMonster because EntityLiving(s) that aren't monsters
@ -413,7 +411,7 @@ public abstract class EntityHuman extends EntityLiving {
}
this.a(StatisticList.t, i);
return super.a(entity, i);
return super.damageEntity(entity, i);
}
}
}
@ -474,11 +472,11 @@ public abstract class EntityHuman extends EntityLiving {
}
public ItemStack A() {
return this.inventory.b();
return this.inventory.getItemInHand();
}
public void B() {
this.inventory.a(this.inventory.c, (ItemStack) null);
this.inventory.setItem(this.inventory.itemInHandIndex, (ItemStack) null);
}
public double C() {
@ -512,7 +510,7 @@ public abstract class EntityHuman extends EntityLiving {
}
// CraftBukkit end
entity.a(this, i);
entity.damageEntity(this, i);
ItemStack itemstack = this.A();
if (itemstack != null && entity instanceof EntityLiving) {
@ -535,8 +533,8 @@ public abstract class EntityHuman extends EntityLiving {
public void a(ItemStack itemstack) {}
public void D() {
super.D();
public void die() {
super.die();
this.defaultContainer.a(this);
if (this.activeContainer != null) {
this.activeContainer.a(this);
@ -548,8 +546,8 @@ public abstract class EntityHuman extends EntityLiving {
}
public EnumBedError a(int i, int j, int k) {
if (!this.F() && this.N()) {
if (this.world.m.c) {
if (!this.isSleeping() && this.N()) {
if (this.world.worldProvider.c) {
return EnumBedError.NOT_POSSIBLE_HERE;
} else if (this.world.d()) {
return EnumBedError.NOT_POSSIBLE_NOW;
@ -561,16 +559,16 @@ public abstract class EntityHuman extends EntityLiving {
org.bukkit.block.Block bed = ((WorldServer) world).getWorld().getBlockAt(i, j, k);
PlayerBedEnterEvent event = new PlayerBedEnterEvent(player, bed);
server.getPluginManager().callEvent(event);
if (event.isCancelled()) {
return EnumBedError.OTHER_PROBLEM;
}
}
// CraftBukkit end
this.b(0.2F, 0.2F);
this.height = 0.2F;
if (this.world.f(i, j, k)) {
if (this.world.isLoaded(i, j, k)) {
int l = this.world.getData(i, j, k);
int i1 = BlockBed.c(l);
float f = 0.5F;
@ -594,9 +592,9 @@ public abstract class EntityHuman extends EntityLiving {
}
this.e(i1);
this.a((double) ((float) i + f), (double) ((float) j + 0.9375F), (double) ((float) k + f1));
this.setPosition((double) ((float) i + f), (double) ((float) j + 0.9375F), (double) ((float) k + f1));
} else {
this.a((double) ((float) i + 0.5F), (double) ((float) j + 0.9375F), (double) ((float) k + 0.5F));
this.setPosition((double) ((float) i + 0.5F), (double) ((float) j + 0.9375F), (double) ((float) k + 0.5F));
}
this.sleeping = true;
@ -604,7 +602,7 @@ public abstract class EntityHuman extends EntityLiving {
this.b = new ChunkCoordinates(i, j, k);
this.motX = this.motZ = this.motY = 0.0D;
if (!this.world.isStatic) {
this.world.q();
this.world.everyoneSleeping();
}
return EnumBedError.OK;
@ -643,19 +641,19 @@ public abstract class EntityHuman extends EntityLiving {
ChunkCoordinates chunkcoordinates = this.b;
ChunkCoordinates chunkcoordinates1 = this.b;
if (chunkcoordinates != null && this.world.getTypeId(chunkcoordinates.a, chunkcoordinates.b, chunkcoordinates.c) == Block.BED.id) {
BlockBed.a(this.world, chunkcoordinates.a, chunkcoordinates.b, chunkcoordinates.c, false);
chunkcoordinates1 = BlockBed.f(this.world, chunkcoordinates.a, chunkcoordinates.b, chunkcoordinates.c, 0);
if (chunkcoordinates != null && this.world.getTypeId(chunkcoordinates.x, chunkcoordinates.y, chunkcoordinates.z) == Block.BED.id) {
BlockBed.a(this.world, chunkcoordinates.x, chunkcoordinates.y, chunkcoordinates.z, false);
chunkcoordinates1 = BlockBed.f(this.world, chunkcoordinates.x, chunkcoordinates.y, chunkcoordinates.z, 0);
if (chunkcoordinates1 == null) {
chunkcoordinates1 = new ChunkCoordinates(chunkcoordinates.a, chunkcoordinates.b + 1, chunkcoordinates.c);
chunkcoordinates1 = new ChunkCoordinates(chunkcoordinates.x, chunkcoordinates.y + 1, chunkcoordinates.z);
}
this.a((double) ((float) chunkcoordinates1.a + 0.5F), (double) ((float) chunkcoordinates1.b + this.height + 0.1F), (double) ((float) chunkcoordinates1.c + 0.5F));
this.setPosition((double) ((float) chunkcoordinates1.x + 0.5F), (double) ((float) chunkcoordinates1.y + this.height + 0.1F), (double) ((float) chunkcoordinates1.z + 0.5F));
}
this.sleeping = false;
if (!this.world.isStatic && flag1) {
this.world.q();
this.world.everyoneSleeping();
}
// CraftBukkit start
@ -664,7 +662,7 @@ public abstract class EntityHuman extends EntityLiving {
CraftServer server = ((WorldServer) world).getServer();
org.bukkit.block.Block bed;
if (chunkcoordinates != null) {
bed = ((WorldServer) world).getWorld().getBlockAt(chunkcoordinates.a, chunkcoordinates.b, chunkcoordinates.c);
bed = ((WorldServer) world).getWorld().getBlockAt(chunkcoordinates.x, chunkcoordinates.y, chunkcoordinates.z);
} else {
bed = ((WorldServer) world).getWorld().getBlockAt(player.getLocation());
}
@ -685,30 +683,30 @@ public abstract class EntityHuman extends EntityLiving {
}
private boolean m() {
return this.world.getTypeId(this.b.a, this.b.b, this.b.c) == Block.BED.id;
return this.world.getTypeId(this.b.x, this.b.y, this.b.z) == Block.BED.id;
}
public static ChunkCoordinates a(World world, ChunkCoordinates chunkcoordinates) {
public static ChunkCoordinates getBed(World world, ChunkCoordinates chunkcoordinates) {
IChunkProvider ichunkprovider = world.n();
ichunkprovider.c(chunkcoordinates.a - 3 >> 4, chunkcoordinates.c - 3 >> 4);
ichunkprovider.c(chunkcoordinates.a + 3 >> 4, chunkcoordinates.c - 3 >> 4);
ichunkprovider.c(chunkcoordinates.a - 3 >> 4, chunkcoordinates.c + 3 >> 4);
ichunkprovider.c(chunkcoordinates.a + 3 >> 4, chunkcoordinates.c + 3 >> 4);
if (world.getTypeId(chunkcoordinates.a, chunkcoordinates.b, chunkcoordinates.c) != Block.BED.id) {
ichunkprovider.getChunkAt(chunkcoordinates.x - 3 >> 4, chunkcoordinates.z - 3 >> 4);
ichunkprovider.getChunkAt(chunkcoordinates.x + 3 >> 4, chunkcoordinates.z - 3 >> 4);
ichunkprovider.getChunkAt(chunkcoordinates.x - 3 >> 4, chunkcoordinates.z + 3 >> 4);
ichunkprovider.getChunkAt(chunkcoordinates.x + 3 >> 4, chunkcoordinates.z + 3 >> 4);
if (world.getTypeId(chunkcoordinates.x, chunkcoordinates.y, chunkcoordinates.z) != Block.BED.id) {
return null;
} else {
ChunkCoordinates chunkcoordinates1 = BlockBed.f(world, chunkcoordinates.a, chunkcoordinates.b, chunkcoordinates.c, 0);
ChunkCoordinates chunkcoordinates1 = BlockBed.f(world, chunkcoordinates.x, chunkcoordinates.y, chunkcoordinates.z, 0);
return chunkcoordinates1;
}
}
public boolean F() {
public boolean isSleeping() {
return this.sleeping;
}
public boolean G() {
public boolean isDeeplySleeping() {
return this.sleeping && this.sleepTicks >= 100;
}

View file

@ -8,10 +8,10 @@ import org.bukkit.event.player.PlayerPickupItemEvent;
public class EntityItem extends Entity {
public ItemStack a;
public ItemStack itemStack;
private int e;
public int b = 0;
public int c;
public int pickupDelay;
private int f = 5;
public float d = (float) (Math.random() * 3.141592653589793D * 2.0D);
@ -19,8 +19,8 @@ public class EntityItem extends Entity {
super(world);
this.b(0.25F, 0.25F);
this.height = this.width / 2.0F;
this.a(d0, d1, d2);
this.a = itemstack;
this.setPosition(d0, d1, d2);
this.itemStack = itemstack;
this.yaw = (float) (Math.random() * 360.0D);
this.motX = (double) ((float) (Math.random() * 0.20000000298023224D - 0.10000000149011612D));
this.motY = 0.20000000298023224D;
@ -41,28 +41,28 @@ public class EntityItem extends Entity {
public void f_() {
super.f_();
if (this.c > 0) {
--this.c;
if (this.pickupDelay > 0) {
--this.pickupDelay;
}
this.lastX = this.locX;
this.lastY = this.locY;
this.lastZ = this.locZ;
this.motY -= 0.03999999910593033D;
if (this.world.getMaterial(MathHelper.b(this.locX), MathHelper.b(this.locY), MathHelper.b(this.locZ)) == Material.LAVA) {
if (this.world.getMaterial(MathHelper.floor(this.locX), MathHelper.floor(this.locY), MathHelper.floor(this.locZ)) == Material.LAVA) {
this.motY = 0.20000000298023224D;
this.motX = (double) ((this.random.nextFloat() - this.random.nextFloat()) * 0.2F);
this.motZ = (double) ((this.random.nextFloat() - this.random.nextFloat()) * 0.2F);
this.world.a(this, "random.fizz", 0.4F, 2.0F + this.random.nextFloat() * 0.4F);
this.world.makeSound(this, "random.fizz", 0.4F, 2.0F + this.random.nextFloat() * 0.4F);
}
this.g(this.locX, this.locY, this.locZ);
this.c(this.motX, this.motY, this.motZ);
this.move(this.motX, this.motY, this.motZ);
float f = 0.98F;
if (this.onGround) {
f = 0.58800006F;
int i = this.world.getTypeId(MathHelper.b(this.locX), MathHelper.b(this.boundingBox.b) - 1, MathHelper.b(this.locZ));
int i = this.world.getTypeId(MathHelper.floor(this.locX), MathHelper.floor(this.boundingBox.b) - 1, MathHelper.floor(this.locZ));
if (i > 0) {
f = Block.byId[i].frictionFactor * 0.98F;
@ -79,7 +79,7 @@ public class EntityItem extends Entity {
++this.e;
++this.b;
if (this.b >= 6000) {
this.D();
this.die();
}
}
@ -88,9 +88,9 @@ public class EntityItem extends Entity {
}
private boolean g(double d0, double d1, double d2) {
int i = MathHelper.b(d0);
int j = MathHelper.b(d1);
int k = MathHelper.b(d2);
int i = MathHelper.floor(d0);
int j = MathHelper.floor(d1);
int k = MathHelper.floor(d2);
double d3 = d0 - (double) i;
double d4 = d1 - (double) j;
double d5 = d2 - (double) k;
@ -166,14 +166,14 @@ public class EntityItem extends Entity {
}
protected void a(int i) {
this.a((Entity) null, i);
this.damageEntity((Entity) null, i);
}
public boolean a(Entity entity, int i) {
public boolean damageEntity(Entity entity, int i) {
this.W();
this.f -= i;
if (this.f <= 0) {
this.D();
this.die();
}
return false;
@ -182,7 +182,7 @@ public class EntityItem extends Entity {
public void a(NBTTagCompound nbttagcompound) {
nbttagcompound.a("Health", (short) ((byte) this.f));
nbttagcompound.a("Age", (short) this.b);
nbttagcompound.a("Item", this.a.a(new NBTTagCompound()));
nbttagcompound.a("Item", this.itemStack.a(new NBTTagCompound()));
}
public void b(NBTTagCompound nbttagcompound) {
@ -190,26 +190,27 @@ public class EntityItem extends Entity {
this.b = nbttagcompound.d("Age");
NBTTagCompound nbttagcompound1 = nbttagcompound.k("Item");
this.a = new ItemStack(nbttagcompound1);
this.itemStack = new ItemStack(nbttagcompound1);
}
public void b(EntityHuman entityhuman) {
if (!this.world.isStatic) {
int i = this.a.count;
int i = this.itemStack.count;
// CraftBukkit start
if (this.c == 0) {
if (this.pickupDelay == 0) {
Player player = (Player) entityhuman.getBukkitEntity();
PlayerPickupItemEvent event = new PlayerPickupItemEvent(player, (Item) this.getBukkitEntity());
((WorldServer) world).getServer().getPluginManager().callEvent(event);
if (!event.isCancelled() && entityhuman.inventory.a(this.a)) {
this.world.a(this, "random.pop", 0.2F, ((this.random.nextFloat() - this.random.nextFloat()) * 0.7F + 1.0F) * 2.0F);
entityhuman.b(this, i);
this.D();
if (event.isCancelled() || !entityhuman.inventory.canHold(this.itemStack)) {
return;
}
// CraftBukkit end
this.world.makeSound(this, "random.pop", 0.2F, ((this.random.nextFloat() - this.random.nextFloat()) * 0.7F + 1.0F) * 2.0F);
entityhuman.receive(this, i);
this.die();
}
// CraftBukkit end
}
}
}

View file

@ -75,7 +75,7 @@ public abstract class EntityLiving extends Entity {
super(world);
this.aD = true;
this.E = (float) (Math.random() + 1.0D) * 0.01F;
this.a(this.locX, this.locY, this.locZ);
this.setPosition(this.locX, this.locY, this.locZ);
this.D = (float) Math.random() * 12398.0F;
this.yaw = (float) (Math.random() * 3.1415927410125732D * 2.0D);
this.bm = 0.5F;
@ -84,7 +84,7 @@ public abstract class EntityLiving extends Entity {
protected void a() {}
public boolean e(Entity entity) {
return this.world.a(Vec3D.b(this.locX, this.locY + (double) this.q(), this.locZ), Vec3D.b(entity.locX, entity.locY + (double) entity.q(), entity.locZ)) == null;
return this.world.a(Vec3D.create(this.locX, this.locY + (double) this.q(), this.locZ), Vec3D.create(entity.locX, entity.locY + (double) entity.q(), entity.locZ)) == null;
}
public boolean d_() {
@ -107,7 +107,7 @@ public abstract class EntityLiving extends Entity {
String s = this.e();
if (s != null) {
this.world.a(this, s, this.i(), (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F);
this.world.makeSound(this, s, this.i(), (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F);
}
}
@ -129,8 +129,8 @@ public abstract class EntityLiving extends Entity {
EntityDamageEvent event = new EntityDamageEvent(victim, damageType, damage);
server.getPluginManager().callEvent(event);
if (!event.isCancelled() && event.getDamage() != 0) {
this.a((Entity) null, event.getDamage());
if (!event.isCancelled()) {
this.damageEntity((Entity) null, event.getDamage());
}
// CraftBukkit end
}
@ -163,8 +163,8 @@ public abstract class EntityLiving extends Entity {
EntityDamageEvent event = new EntityDamageEvent(damagee, damageType, damageDone);
server.getPluginManager().callEvent(event);
if (!event.isCancelled() && event.getDamage() != 0) {
this.a((Entity) null, event.getDamage());
if (!event.isCancelled()) {
this.damageEntity((Entity) null, event.getDamage());
}
// CraftBukkit end
}
@ -191,7 +191,7 @@ public abstract class EntityLiving extends Entity {
++this.deathTicks;
if (this.deathTicks > 20) {
this.Q();
this.D();
this.die();
for (i = 0; i < 20; ++i) {
double d0 = this.random.nextGaussian() * 0.02D;
@ -338,7 +338,7 @@ public abstract class EntityLiving extends Entity {
}
}
public boolean a(Entity entity, int i) {
public boolean damageEntity(Entity entity, int i) {
if (this.world.isStatic) {
return false;
} else {
@ -387,12 +387,12 @@ public abstract class EntityLiving extends Entity {
if (this.health <= 0) {
if (flag) {
this.world.a(this, this.g(), this.i(), (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F);
this.world.makeSound(this, this.g(), this.i(), (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F);
}
this.a(entity);
} else if (flag) {
this.world.a(this, this.f(), this.i(), (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F);
this.world.makeSound(this, this.f(), this.i(), (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F);
}
return true;
@ -488,16 +488,16 @@ public abstract class EntityLiving extends Entity {
server.getPluginManager().callEvent(event);
if (!event.isCancelled() && event.getDamage() != 0) {
this.a((Entity) null, event.getDamage());
this.damageEntity((Entity) null, event.getDamage());
}
// CraftBukkit end
int j = this.world.getTypeId(MathHelper.b(this.locX), MathHelper.b(this.locY - 0.20000000298023224D - (double) this.height), MathHelper.b(this.locZ));
int j = this.world.getTypeId(MathHelper.floor(this.locX), MathHelper.floor(this.locY - 0.20000000298023224D - (double) this.height), MathHelper.floor(this.locZ));
if (j > 0) {
StepSound stepsound = Block.byId[j].stepSound;
this.world.a(this, stepsound.c(), stepsound.a() * 0.5F, stepsound.b() * 0.75F);
this.world.makeSound(this, stepsound.getName(), stepsound.getVolume1() * 0.5F, stepsound.getVolume2() * 0.75F);
}
}
}
@ -508,23 +508,23 @@ public abstract class EntityLiving extends Entity {
if (this.g_()) {
d0 = this.locY;
this.a(f, f1, 0.02F);
this.c(this.motX, this.motY, this.motZ);
this.move(this.motX, this.motY, this.motZ);
this.motX *= 0.800000011920929D;
this.motY *= 0.800000011920929D;
this.motZ *= 0.800000011920929D;
this.motY -= 0.02D;
if (this.aW && this.b(this.motX, this.motY + 0.6000000238418579D - this.locY + d0, this.motZ)) {
if (this.positionChanged && this.b(this.motX, this.motY + 0.6000000238418579D - this.locY + d0, this.motZ)) {
this.motY = 0.30000001192092896D;
}
} else if (this.V()) {
d0 = this.locY;
this.a(f, f1, 0.02F);
this.c(this.motX, this.motY, this.motZ);
this.move(this.motX, this.motY, this.motZ);
this.motX *= 0.5D;
this.motY *= 0.5D;
this.motZ *= 0.5D;
this.motY -= 0.02D;
if (this.aW && this.b(this.motX, this.motY + 0.6000000238418579D - this.locY + d0, this.motZ)) {
if (this.positionChanged && this.b(this.motX, this.motY + 0.6000000238418579D - this.locY + d0, this.motZ)) {
this.motY = 0.30000001192092896D;
}
} else {
@ -532,7 +532,7 @@ public abstract class EntityLiving extends Entity {
if (this.onGround) {
f2 = 0.54600006F;
int i = this.world.getTypeId(MathHelper.b(this.locX), MathHelper.b(this.boundingBox.b) - 1, MathHelper.b(this.locZ));
int i = this.world.getTypeId(MathHelper.floor(this.locX), MathHelper.floor(this.boundingBox.b) - 1, MathHelper.floor(this.locZ));
if (i > 0) {
f2 = Block.byId[i].frictionFactor * 0.91F;
@ -545,7 +545,7 @@ public abstract class EntityLiving extends Entity {
f2 = 0.91F;
if (this.onGround) {
f2 = 0.54600006F;
int j = this.world.getTypeId(MathHelper.b(this.locX), MathHelper.b(this.boundingBox.b) - 1, MathHelper.b(this.locZ));
int j = this.world.getTypeId(MathHelper.floor(this.locX), MathHelper.floor(this.boundingBox.b) - 1, MathHelper.floor(this.locZ));
if (j > 0) {
f2 = Block.byId[j].frictionFactor * 0.91F;
@ -558,13 +558,13 @@ public abstract class EntityLiving extends Entity {
this.motY = -0.15D;
}
if (this.Z() && this.motY < 0.0D) {
if (this.isSneaking() && this.motY < 0.0D) {
this.motY = 0.0D;
}
}
this.c(this.motX, this.motY, this.motZ);
if (this.aW && this.n()) {
this.move(this.motX, this.motY, this.motZ);
if (this.positionChanged && this.n()) {
this.motY = 0.2D;
}
@ -588,9 +588,9 @@ public abstract class EntityLiving extends Entity {
}
public boolean n() {
int i = MathHelper.b(this.locX);
int j = MathHelper.b(this.boundingBox.b);
int k = MathHelper.b(this.locZ);
int i = MathHelper.floor(this.locX);
int j = MathHelper.floor(this.boundingBox.b);
int k = MathHelper.floor(this.locZ);
return this.world.getTypeId(i, j, k) == Block.LADDER.id || this.world.getTypeId(i, j + 1, k) == Block.LADDER.id;
}
@ -604,7 +604,7 @@ public abstract class EntityLiving extends Entity {
public void b(NBTTagCompound nbttagcompound) {
this.health = nbttagcompound.d("Health");
if (!nbttagcompound.b("Health")) {
if (!nbttagcompound.hasKey("Health")) {
this.health = 10;
}
@ -640,7 +640,7 @@ public abstract class EntityLiving extends Entity {
this.yaw = (float) ((double) this.yaw + d3 / (double) this.al);
this.pitch = (float) ((double) this.pitch + (this.aq - (double) this.pitch) / (double) this.al);
--this.al;
this.a(d0, d1, d2);
this.setPosition(d0, d1, d2);
this.c(this.yaw, this.pitch);
}
@ -677,7 +677,7 @@ public abstract class EntityLiving extends Entity {
Entity entity = (Entity) list.get(i);
if (entity.e_()) {
entity.h(this);
entity.collide(this);
}
}
}
@ -706,14 +706,14 @@ public abstract class EntityLiving extends Entity {
double d3 = d0 * d0 + d1 * d1 + d2 * d2;
if (d3 > 16384.0D) {
this.D();
this.die();
}
if (this.at > 600 && this.random.nextInt(800) == 0) {
if (d3 < 1024.0D) {
this.at = 0;
} else {
this.D();
this.die();
}
}
}
@ -812,7 +812,7 @@ public abstract class EntityLiving extends Entity {
public void Q() {}
public boolean b() {
return this.world.a(this.boundingBox) && this.world.a((Entity) this, this.boundingBox).size() == 0 && !this.world.b(this.boundingBox);
return this.world.containsEntity(this.boundingBox) && this.world.getEntities(this, this.boundingBox).size() == 0 && !this.world.b(this.boundingBox);
}
protected void R() {
@ -829,7 +829,7 @@ public abstract class EntityLiving extends Entity {
return;
}
damageDone = event.getDamage();
this.a((Entity) null, damageDone);
this.damageEntity((Entity) null, damageDone);
// CraftBukkit end
}
@ -844,20 +844,20 @@ public abstract class EntityLiving extends Entity {
float f4;
if (f == 1.0F) {
f1 = MathHelper.b(-this.yaw * 0.017453292F - 3.1415927F);
f2 = MathHelper.a(-this.yaw * 0.017453292F - 3.1415927F);
f3 = -MathHelper.b(-this.pitch * 0.017453292F);
f4 = MathHelper.a(-this.pitch * 0.017453292F);
return Vec3D.b((double) (f2 * f3), (double) f4, (double) (f1 * f3));
f1 = MathHelper.cos(-this.yaw * 0.017453292F - 3.1415927F);
f2 = MathHelper.sin(-this.yaw * 0.017453292F - 3.1415927F);
f3 = -MathHelper.cos(-this.pitch * 0.017453292F);
f4 = MathHelper.sin(-this.pitch * 0.017453292F);
return Vec3D.create((double) (f2 * f3), (double) f4, (double) (f1 * f3));
} else {
f1 = this.lastPitch + (this.pitch - this.lastPitch) * f;
f2 = this.lastYaw + (this.yaw - this.lastYaw) * f;
f3 = MathHelper.b(-f2 * 0.017453292F - 3.1415927F);
f4 = MathHelper.a(-f2 * 0.017453292F - 3.1415927F);
float f5 = -MathHelper.b(-f1 * 0.017453292F);
float f6 = MathHelper.a(-f1 * 0.017453292F);
f3 = MathHelper.cos(-f2 * 0.017453292F - 3.1415927F);
f4 = MathHelper.sin(-f2 * 0.017453292F - 3.1415927F);
float f5 = -MathHelper.cos(-f1 * 0.017453292F);
float f6 = MathHelper.sin(-f1 * 0.017453292F);
return Vec3D.b((double) (f4 * f5), (double) f6, (double) (f3 * f5));
return Vec3D.create((double) (f4 * f5), (double) f6, (double) (f3 * f5));
}
}
@ -865,7 +865,7 @@ public abstract class EntityLiving extends Entity {
return 4;
}
public boolean F() {
public boolean isSleeping() {
return false;
}
}

View file

@ -12,16 +12,16 @@ import org.bukkit.event.vehicle.*;
public class EntityMinecart extends Entity implements IInventory {
private ItemStack[] h;
public int a;
private ItemStack[] items;
public int damage;
public int b;
public int c;
private boolean i;
public int d;
public int type;
public int e;
public double f;
public double g;
private static final int[][][] j = new int[][][] { { { 0, 0, -1}, { 0, 0, 1}}, { { -1, 0, 0}, { 1, 0, 0}}, { { -1, -1, 0}, { 1, 0, 0}}, { { -1, 0, 0}, { 1, -1, 0}}, { { 0, 0, -1}, { 0, -1, 1}}, { { 0, -1, -1}, { 0, 0, 1}}, { { 0, 0, 1}, { 1, 0, 0}}, { { 0, 0, 1}, { -1, 0, 0}}, { { 0, 0, -1}, { -1, 0, 0}}, { { 0, 0, -1}, { 1, 0, 0}}};
private static final int[][][] matrix = new int[][][] { { { 0, 0, -1}, { 0, 0, 1}}, { { -1, 0, 0}, { 1, 0, 0}}, { { -1, -1, 0}, { 1, 0, 0}}, { { -1, 0, 0}, { 1, -1, 0}}, { { 0, 0, -1}, { 0, -1, 1}}, { { 0, -1, -1}, { 0, 0, 1}}, { { 0, 0, 1}, { 1, 0, 0}}, { { 0, 0, 1}, { -1, 0, 0}}, { { 0, 0, -1}, { -1, 0, 0}}, { { 0, 0, -1}, { 1, 0, 0}}};
private int k;
private double l;
private double m;
@ -40,14 +40,14 @@ public class EntityMinecart extends Entity implements IInventory {
public double maxSpeed = 0.4D;
public ItemStack[] getContents() {
return this.h;
return this.items;
}
// CraftBukkit end
public EntityMinecart(World world) {
super(world);
this.h = new ItemStack[27]; // CraftBukkit
this.a = 0;
this.items = new ItemStack[27]; // CraftBukkit
this.damage = 0;
this.b = 0;
this.c = 1;
this.i = false;
@ -76,14 +76,14 @@ public class EntityMinecart extends Entity implements IInventory {
public EntityMinecart(World world, double d0, double d1, double d2, int i) {
this(world);
this.a(d0, d1 + (double) this.height, d2);
this.setPosition(d0, d1 + (double) this.height, d2);
this.motX = 0.0D;
this.motY = 0.0D;
this.motZ = 0.0D;
this.lastX = d0;
this.lastY = d1;
this.lastZ = d2;
this.d = i;
this.type = i;
// CraftBukkit start
CraftServer server = ((WorldServer) this.world).getServer();
@ -98,7 +98,7 @@ public class EntityMinecart extends Entity implements IInventory {
return (double) this.width * 0.0D - 0.30000001192092896D;
}
public boolean a(Entity entity, int i) {
public boolean damageEntity(Entity entity, int i) {
if (!this.world.isStatic && !this.dead) {
// CraftBukkit start
Vehicle vehicle = (Vehicle) this.getBukkitEntity();
@ -118,27 +118,27 @@ public class EntityMinecart extends Entity implements IInventory {
this.c = -this.c;
this.b = 10;
this.W();
this.a += i * 10;
if (this.a > 40) {
this.damage += i * 10;
if (this.damage > 40) {
// CraftBukkit start
VehicleDestroyEvent destroyEvent = new VehicleDestroyEvent(vehicle, passenger);
((WorldServer) this.world).getServer().getPluginManager().callEvent(destroyEvent);
if (destroyEvent.isCancelled()) {
this.a = 40; // Maximize damage so this doesn't get triggered again right away
this.damage = 40; // Maximize damage so this doesn't get triggered again right away
return true;
}
// CraftBukkit end
this.a(Item.MINECART.id, 1, 0.0F);
if (this.d == 1) {
if (this.type == 1) {
this.a(Block.CHEST.id, 1, 0.0F);
} else if (this.d == 2) {
} else if (this.type == 2) {
this.a(Block.FURNACE.id, 1, 0.0F);
}
this.D();
this.die();
}
return true;
@ -151,9 +151,9 @@ public class EntityMinecart extends Entity implements IInventory {
return !this.dead;
}
public void D() {
for (int i = 0; i < this.q_(); ++i) {
ItemStack itemstack = this.c_(i);
public void die() {
for (int i = 0; i < this.getSize(); ++i) {
ItemStack itemstack = this.getItem(i);
if (itemstack != null) {
float f = this.random.nextFloat() * 0.8F + 0.1F;
@ -168,18 +168,18 @@ public class EntityMinecart extends Entity implements IInventory {
}
itemstack.count -= j;
EntityItem entityitem = new EntityItem(this.world, this.locX + (double) f, this.locY + (double) f1, this.locZ + (double) f2, new ItemStack(itemstack.id, j, itemstack.h()));
EntityItem entityitem = new EntityItem(this.world, this.locX + (double) f, this.locY + (double) f1, this.locZ + (double) f2, new ItemStack(itemstack.id, j, itemstack.getData()));
float f3 = 0.05F;
entityitem.motX = (double) ((float) this.random.nextGaussian() * f3);
entityitem.motY = (double) ((float) this.random.nextGaussian() * f3 + 0.2F);
entityitem.motZ = (double) ((float) this.random.nextGaussian() * f3);
this.world.a((Entity) entityitem);
this.world.addEntity(entityitem);
}
}
}
super.D();
super.die();
}
public void f_() {
@ -195,8 +195,8 @@ public class EntityMinecart extends Entity implements IInventory {
--this.b;
}
if (this.a > 0) {
--this.a;
if (this.damage > 0) {
--this.damage;
}
double d0;
@ -218,10 +218,10 @@ public class EntityMinecart extends Entity implements IInventory {
this.yaw = (float) ((double) this.yaw + d0 / (double) this.k);
this.pitch = (float) ((double) this.pitch + (this.p - (double) this.pitch) / (double) this.k);
--this.k;
this.a(d1, d2, d3);
this.setPosition(d1, d2, d3);
this.c(this.yaw, this.pitch);
} else {
this.a(this.locX, this.locY, this.locZ);
this.setPosition(this.locX, this.locY, this.locZ);
this.c(this.yaw, this.pitch);
}
} else {
@ -229,9 +229,9 @@ public class EntityMinecart extends Entity implements IInventory {
this.lastY = this.locY;
this.lastZ = this.locZ;
this.motY -= 0.03999999910593033D;
int i = MathHelper.b(this.locX);
int j = MathHelper.b(this.locY);
int k = MathHelper.b(this.locZ);
int i = MathHelper.floor(this.locX);
int j = MathHelper.floor(this.locY);
int k = MathHelper.floor(this.locZ);
if (this.world.getTypeId(i, j - 1, k) == Block.RAILS.id) {
--j;
@ -267,8 +267,7 @@ public class EntityMinecart extends Entity implements IInventory {
this.motZ -= d0;
}
// CraftBukkit -- be explicit.
int[][] aint = EntityMinecart.j[l];
int[][] aint = matrix[l];
double d5 = (double) (aint[1][0] - aint[0][0]);
double d6 = (double) (aint[1][2] - aint[0][2]);
double d7 = Math.sqrt(d5 * d5 + d6 * d6);
@ -310,7 +309,7 @@ public class EntityMinecart extends Entity implements IInventory {
this.locX = d11 + d5 * d10;
this.locZ = d12 + d6 * d10;
this.a(this.locX, this.locY + (double) this.height, this.locZ);
this.setPosition(this.locX, this.locY + (double) this.height, this.locZ);
d15 = this.motX;
d17 = this.motZ;
if (this.passenger != null) {
@ -334,11 +333,11 @@ public class EntityMinecart extends Entity implements IInventory {
d17 = d4;
}
this.c(d15, 0.0D, d17);
if (aint[0][1] != 0 && MathHelper.b(this.locX) - i == aint[0][0] && MathHelper.b(this.locZ) - k == aint[0][2]) {
this.a(this.locX, this.locY + (double) aint[0][1], this.locZ);
} else if (aint[1][1] != 0 && MathHelper.b(this.locX) - i == aint[1][0] && MathHelper.b(this.locZ) - k == aint[1][2]) {
this.a(this.locX, this.locY + (double) aint[1][1], this.locZ);
this.move(d15, 0.0D, d17);
if (aint[0][1] != 0 && MathHelper.floor(this.locX) - i == aint[0][0] && MathHelper.floor(this.locZ) - k == aint[0][2]) {
this.setPosition(this.locX, this.locY + (double) aint[0][1], this.locZ);
} else if (aint[1][1] != 0 && MathHelper.floor(this.locX) - i == aint[1][0] && MathHelper.floor(this.locZ) - k == aint[1][2]) {
this.setPosition(this.locX, this.locY + (double) aint[1][1], this.locZ);
}
// CraftBukkit
@ -347,7 +346,7 @@ public class EntityMinecart extends Entity implements IInventory {
this.motY *= 0.0D;
this.motZ *= 0.996999979019165D;
} else {
if (this.d == 2) {
if (this.type == 2) {
d16 = (double) MathHelper.a(this.f * this.f + this.g * this.g);
if (d16 > 0.01D) {
flag = true;
@ -383,11 +382,11 @@ public class EntityMinecart extends Entity implements IInventory {
this.motZ = this.motZ / d9 * (d9 + d19);
}
this.a(this.locX, vec3d1.b, this.locZ);
this.setPosition(this.locX, vec3d1.b, this.locZ);
}
int i1 = MathHelper.b(this.locX);
int j1 = MathHelper.b(this.locZ);
int i1 = MathHelper.floor(this.locX);
int j1 = MathHelper.floor(this.locZ);
if (i1 != i || j1 != k) {
d9 = Math.sqrt(this.motX * this.motX + this.motZ * this.motZ);
@ -395,7 +394,7 @@ public class EntityMinecart extends Entity implements IInventory {
this.motZ = d9 * (double) (j1 - k);
}
if (this.d == 2) {
if (this.type == 2) {
double d20 = (double) MathHelper.a(this.f * this.f + this.g * this.g);
if (d20 > 0.01D && this.motX * this.motX + this.motZ * this.motZ > 0.0010D) {
@ -435,7 +434,7 @@ public class EntityMinecart extends Entity implements IInventory {
// CraftBukkit start
}
this.c(this.motX, this.motY, this.motZ);
this.move(this.motX, this.motY, this.motZ);
if (!this.onGround) {
// CraftBukkit start
this.motX *= flyingX;
@ -495,7 +494,7 @@ public class EntityMinecart extends Entity implements IInventory {
Entity entity = (Entity) list.get(k1);
if (entity != this.passenger && entity.e_() && entity instanceof EntityMinecart) {
entity.h(this);
entity.collide(this);
}
}
}
@ -516,9 +515,9 @@ public class EntityMinecart extends Entity implements IInventory {
}
public Vec3D g(double d0, double d1, double d2) {
int i = MathHelper.b(d0);
int j = MathHelper.b(d1);
int k = MathHelper.b(d2);
int i = MathHelper.floor(d0);
int j = MathHelper.floor(d1);
int k = MathHelper.floor(d2);
if (this.world.getTypeId(i, j - 1, k) == Block.RAILS.id) {
--j;
@ -532,7 +531,7 @@ public class EntityMinecart extends Entity implements IInventory {
d1 = (double) (j + 1);
}
int[][] aint = EntityMinecart.j[l]; // CraftBukkit -- be explicit
int[][] aint = matrix[l];
double d3 = 0.0D;
double d4 = (double) i + 0.5D + (double) aint[0][0] * 0.5D;
double d5 = (double) j + 0.5D + (double) aint[0][1] * 0.5D;
@ -569,27 +568,27 @@ public class EntityMinecart extends Entity implements IInventory {
d1 += 0.5D;
}
return Vec3D.b(d0, d1, d2);
return Vec3D.create(d0, d1, d2);
} else {
return null;
}
}
protected void a(NBTTagCompound nbttagcompound) {
nbttagcompound.a("Type", this.d);
if (this.d == 2) {
nbttagcompound.a("Type", this.type);
if (this.type == 2) {
nbttagcompound.a("PushX", this.f);
nbttagcompound.a("PushZ", this.g);
nbttagcompound.a("Fuel", (short) this.e);
} else if (this.d == 1) {
} else if (this.type == 1) {
NBTTagList nbttaglist = new NBTTagList();
for (int i = 0; i < this.h.length; ++i) {
if (this.h[i] != null) {
for (int i = 0; i < this.items.length; ++i) {
if (this.items[i] != null) {
NBTTagCompound nbttagcompound1 = new NBTTagCompound();
nbttagcompound1.a("Slot", (byte) i);
this.h[i].a(nbttagcompound1);
this.items[i].a(nbttagcompound1);
nbttaglist.a((NBTBase) nbttagcompound1);
}
}
@ -599,28 +598,28 @@ public class EntityMinecart extends Entity implements IInventory {
}
protected void b(NBTTagCompound nbttagcompound) {
this.d = nbttagcompound.e("Type");
if (this.d == 2) {
this.type = nbttagcompound.e("Type");
if (this.type == 2) {
this.f = nbttagcompound.h("PushX");
this.g = nbttagcompound.h("PushZ");
this.e = nbttagcompound.d("Fuel");
} else if (this.d == 1) {
} else if (this.type == 1) {
NBTTagList nbttaglist = nbttagcompound.l("Items");
this.h = new ItemStack[this.q_()];
this.items = new ItemStack[this.getSize()];
for (int i = 0; i < nbttaglist.c(); ++i) {
NBTTagCompound nbttagcompound1 = (NBTTagCompound) nbttaglist.a(i);
int j = nbttagcompound1.c("Slot") & 255;
if (j >= 0 && j < this.h.length) {
this.h[j] = new ItemStack(nbttagcompound1);
if (j >= 0 && j < this.items.length) {
this.items[j] = new ItemStack(nbttagcompound1);
}
}
}
}
public void h(Entity entity) {
public void collide(Entity entity) {
if (!this.world.isStatic) {
if (entity != this.passenger) {
// CraftBukkit start
@ -635,14 +634,14 @@ public class EntityMinecart extends Entity implements IInventory {
return;
}
if (entity instanceof EntityLiving && !(entity instanceof EntityHuman) && this.d == 0 && this.motX * this.motX + this.motZ * this.motZ > 0.01D && this.passenger == null && entity.vehicle == null) {
if (entity instanceof EntityLiving && !(entity instanceof EntityHuman) && this.type == 0 && this.motX * this.motX + this.motZ * this.motZ > 0.01D && this.passenger == null && entity.vehicle == null) {
if (!collsionEvent.isPickupCancelled()) {
VehicleEnterEvent enterEvent = new VehicleEnterEvent(vehicle, hitEntity);
server.getPluginManager().callEvent(enterEvent);
if (!enterEvent.isCancelled()) {
entity.b((Entity) this);
entity.mount(this);
}
}
}
@ -675,13 +674,13 @@ public class EntityMinecart extends Entity implements IInventory {
double d4 = entity.motX + this.motX;
double d5 = entity.motZ + this.motZ;
if (((EntityMinecart) entity).d == 2 && this.d != 2) {
if (((EntityMinecart) entity).type == 2 && this.type != 2) {
this.motX *= 0.20000000298023224D;
this.motZ *= 0.20000000298023224D;
this.f(entity.motX - d0, 0.0D, entity.motZ - d1);
entity.motX *= 0.699999988079071D;
entity.motZ *= 0.699999988079071D;
} else if (((EntityMinecart) entity).d != 2 && this.d == 2) {
} else if (((EntityMinecart) entity).type != 2 && this.type == 2) {
entity.motX *= 0.20000000298023224D;
entity.motZ *= 0.20000000298023224D;
entity.f(this.motX + d0, 0.0D, this.motZ + d1);
@ -706,26 +705,26 @@ public class EntityMinecart extends Entity implements IInventory {
}
}
public int q_() {
public int getSize() {
return 27;
}
public ItemStack c_(int i) {
return this.h[i];
public ItemStack getItem(int i) {
return this.items[i];
}
public ItemStack a(int i, int j) {
if (this.h[i] != null) {
if (this.items[i] != null) {
ItemStack itemstack;
if (this.h[i].count <= j) {
itemstack = this.h[i];
this.h[i] = null;
if (this.items[i].count <= j) {
itemstack = this.items[i];
this.items[i] = null;
return itemstack;
} else {
itemstack = this.h[i].a(j);
if (this.h[i].count == 0) {
this.h[i] = null;
itemstack = this.items[i].a(j);
if (this.items[i].count == 0) {
this.items[i] = null;
}
return itemstack;
@ -735,25 +734,25 @@ public class EntityMinecart extends Entity implements IInventory {
}
}
public void a(int i, ItemStack itemstack) {
this.h[i] = itemstack;
if (itemstack != null && itemstack.count > this.r_()) {
itemstack.count = this.r_();
public void setItem(int i, ItemStack itemstack) {
this.items[i] = itemstack;
if (itemstack != null && itemstack.count > this.getMaxStackSize()) {
itemstack.count = this.getMaxStackSize();
}
}
public String c() {
public String getName() {
return "Minecart";
}
public int r_() {
public int getMaxStackSize() {
return 64;
}
public void i() {}
public void update() {}
public boolean a(EntityHuman entityhuman) {
if (this.d == 0) {
if (this.type == 0) {
if (this.passenger != null && this.passenger instanceof EntityHuman && this.passenger != entityhuman) {
return true;
}
@ -772,18 +771,18 @@ public class EntityMinecart extends Entity implements IInventory {
}
// CraftBukkit end
entityhuman.b((Entity) this);
entityhuman.mount(this);
}
} else if (this.d == 1) {
} else if (this.type == 1) {
if (!this.world.isStatic) {
entityhuman.a((IInventory) this);
}
} else if (this.d == 2) {
ItemStack itemstack = entityhuman.inventory.b();
} else if (this.type == 2) {
ItemStack itemstack = entityhuman.inventory.getItemInHand();
if (itemstack != null && itemstack.id == Item.COAL.id) {
if (--itemstack.count == 0) {
entityhuman.inventory.a(entityhuman.inventory.c, (ItemStack) null);
entityhuman.inventory.setItem(entityhuman.inventory.itemInHandIndex, (ItemStack) null);
}
this.e += 1200;

View file

@ -13,7 +13,7 @@ import org.bukkit.event.entity.EntityTargetEvent.TargetReason;
public class EntityMonster extends EntityCreature implements IMonster {
protected int c = 2;
protected int damage = 2;
public EntityMonster(World world) {
super(world);
@ -32,19 +32,19 @@ public class EntityMonster extends EntityCreature implements IMonster {
public void f_() {
super.f_();
if (this.world.j == 0) {
this.D();
if (this.world.spawnMonsters == 0) {
this.die();
}
}
protected Entity m() {
protected Entity findTarget() {
EntityHuman entityhuman = this.world.a(this, 16.0D);
return entityhuman != null && this.e(entityhuman) ? entityhuman : null;
}
public boolean a(Entity entity, int i) {
if (super.a(entity, i)) {
public boolean damageEntity(Entity entity, int i) {
if (super.damageEntity(entity, i)) {
if (this.passenger != entity && this.vehicle != entity) {
if (entity != this) {
// CraftBukkit start
@ -59,9 +59,9 @@ public class EntityMonster extends EntityCreature implements IMonster {
if (!event.isCancelled()) {
if (event.getTarget() == null) {
this.d = null;
this.target = null;
} else {
this.d = ((CraftEntity) event.getTarget()).getHandle();
this.target = ((CraftEntity) event.getTarget()).getHandle();
}
}
// CraftBukkit end
@ -88,17 +88,17 @@ public class EntityMonster extends EntityCreature implements IMonster {
org.bukkit.entity.Entity damagee = (entity == null) ? null : entity.getBukkitEntity();
DamageCause damageType = EntityDamageEvent.DamageCause.ENTITY_ATTACK;
EntityDamageByEntityEvent event = new EntityDamageByEntityEvent(damager, damagee, damageType, this.c);
EntityDamageByEntityEvent event = new EntityDamageByEntityEvent(damager, damagee, damageType, this.damage);
server.getPluginManager().callEvent(event);
if (!event.isCancelled() && event.getDamage() != 0) {
entity.a(this, event.getDamage());
if (!event.isCancelled()) {
entity.damageEntity(this, event.getDamage());
}
return;
}
// CraftBukkit end
entity.a(this, this.c);
entity.damageEntity(this, this.damage);
}
}
@ -115,14 +115,14 @@ public class EntityMonster extends EntityCreature implements IMonster {
}
public boolean b() {
int i = MathHelper.b(this.locX);
int j = MathHelper.b(this.boundingBox.b);
int k = MathHelper.b(this.locZ);
int i = MathHelper.floor(this.locX);
int j = MathHelper.floor(this.boundingBox.b);
int k = MathHelper.floor(this.locZ);
if (this.world.a(EnumSkyBlock.SKY, i, j, k) > this.random.nextInt(32)) {
return false;
} else {
int l = this.world.j(i, j, k);
int l = this.world.getLightLevel(i, j, k);
return l <= this.random.nextInt(8) && super.b();
}

View file

@ -11,50 +11,50 @@ import org.bukkit.event.entity.EntityTargetEvent.TargetReason;
public class EntityPigZombie extends EntityZombie {
private int a = 0;
private int b = 0;
private int angerLevel = 0;
private int soundDelay = 0;
private static final ItemStack f = new ItemStack(Item.GOLD_SWORD, 1);
public EntityPigZombie(World world) {
super(world);
this.texture = "/mob/pigzombie.png";
this.az = 0.5F;
this.c = 5;
this.damage = 5;
this.by = true;
}
public void f_() {
this.az = this.d != null ? 0.95F : 0.5F;
if (this.b > 0 && --this.b == 0) {
this.world.a(this, "mob.zombiepig.zpigangry", this.i() * 2.0F, ((this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F) * 1.8F);
this.az = this.target != null ? 0.95F : 0.5F;
if (this.soundDelay > 0 && --this.soundDelay == 0) {
this.world.makeSound(this, "mob.zombiepig.zpigangry", this.i() * 2.0F, ((this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F) * 1.8F);
}
super.f_();
}
public boolean b() {
return this.world.j > 0 && this.world.a(this.boundingBox) && this.world.a((Entity) this, this.boundingBox).size() == 0 && !this.world.b(this.boundingBox);
return this.world.spawnMonsters > 0 && this.world.containsEntity(this.boundingBox) && this.world.getEntities(this, this.boundingBox).size() == 0 && !this.world.b(this.boundingBox);
}
public void a(NBTTagCompound nbttagcompound) {
super.a(nbttagcompound);
nbttagcompound.a("Anger", (short) this.a);
nbttagcompound.a("Anger", (short) this.angerLevel);
}
public void b(NBTTagCompound nbttagcompound) {
super.b(nbttagcompound);
this.a = nbttagcompound.d("Anger");
this.angerLevel = nbttagcompound.d("Anger");
}
protected Entity m() {
return this.a == 0 ? null : super.m();
protected Entity findTarget() {
return this.angerLevel == 0 ? null : super.findTarget();
}
public void r() {
super.r();
}
public boolean a(Entity entity, int i) {
public boolean damageEntity(Entity entity, int i) {
if (entity instanceof EntityHuman) {
List list = this.world.b((Entity) this, this.boundingBox.b(32.0D, 32.0D, 32.0D));
@ -71,7 +71,7 @@ public class EntityPigZombie extends EntityZombie {
this.d(entity);
}
return super.a(entity, i);
return super.damageEntity(entity, i);
}
private void d(Entity entity) {
@ -85,16 +85,20 @@ public class EntityPigZombie extends EntityZombie {
EntityTargetEvent event = new EntityTargetEvent(this.getBukkitEntity(), bukkitTarget, TargetReason.PIG_ZOMBIE_TARGET);
server.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
if (event.getTarget() == null) {
this.d = null;
} else {
this.d = ((CraftEntity) event.getTarget()).getHandle();
this.a = 400 + this.random.nextInt(400);
this.b = this.random.nextInt(40);
}
if (event.isCancelled()) {
return;
}
if (event.getTarget() == null) {
this.target = null;
return;
}
entity = ((CraftEntity) event.getTarget()).getHandle();
// CraftBukkit end
this.target = entity;
this.angerLevel = 400 + this.random.nextInt(400);
this.soundDelay = this.random.nextInt(40);
}
protected String e() {

View file

@ -18,9 +18,9 @@ import org.bukkit.event.entity.EntityDeathEvent;
public class EntityPlayer extends EntityHuman implements ICrafting {
public NetServerHandler a;
public NetServerHandler netServerHandler;
public MinecraftServer b;
public ItemInWorldManager c;
public ItemInWorldManager itemInWorldManager;
public double d;
public double e;
public List f = new LinkedList();
@ -33,23 +33,23 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
public EntityPlayer(MinecraftServer minecraftserver, World world, String s, ItemInWorldManager iteminworldmanager) {
super(world);
ChunkCoordinates chunkcoordinates = world.m();
int i = chunkcoordinates.a;
int j = chunkcoordinates.c;
int k = chunkcoordinates.b;
ChunkCoordinates chunkcoordinates = world.getSpawn();
int i = chunkcoordinates.x;
int j = chunkcoordinates.z;
int k = chunkcoordinates.y;
if (!world.m.e) {
if (!world.worldProvider.e) {
i += this.random.nextInt(20) - 10;
k = world.e(i, j);
j += this.random.nextInt(20) - 10;
}
this.c((double) i + 0.5D, (double) k, (double) j + 0.5D, 0.0F, 0.0F);
this.setPositionRotation((double) i + 0.5D, (double) k, (double) j + 0.5D, 0.0F, 0.0F);
this.b = minecraftserver;
this.bm = 0.0F;
iteminworldmanager.a = this;
iteminworldmanager.player = this;
this.name = s;
this.c = iteminworldmanager;
this.itemInWorldManager = iteminworldmanager;
this.height = 0.0F;
// CraftBukkit start
@ -60,11 +60,11 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
public Location compassTarget;
// CraftBukkit end
public void m() {
public void syncInventory() {
this.activeContainer.a((ICrafting) this);
}
public ItemStack[] k_() {
public ItemStack[] getEquipment() {
return this.bG;
}
@ -77,7 +77,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
}
public void f_() {
this.c.a();
this.itemInWorldManager.a();
--this.bF;
this.activeContainer.a();
@ -85,31 +85,31 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
ItemStack itemstack = this.b_(i);
if (itemstack != this.bG[i]) {
this.b.k.a(this, new Packet5EntityEquipment(this.id, i, itemstack));
this.b.tracker.a(this, new Packet5EntityEquipment(this.id, i, itemstack));
this.bG[i] = itemstack;
}
}
}
public ItemStack b_(int i) {
return i == 0 ? this.inventory.b() : this.inventory.b[i - 1];
return i == 0 ? this.inventory.getItemInHand() : this.inventory.armor[i - 1];
}
public void a(Entity entity) {
// CraftBukkit start
List<org.bukkit.inventory.ItemStack> loot = new ArrayList<org.bukkit.inventory.ItemStack>();
for (int i = 0; i < inventory.a.length; ++i) {
if (inventory.a[i] != null) {
loot.add(new CraftItemStack(inventory.a[i]));
inventory.a[i] = null;
for (int i = 0; i < inventory.items.length; ++i) {
if (inventory.items[i] != null) {
loot.add(new CraftItemStack(inventory.items[i]));
inventory.items[i] = null;
}
}
for (int i = 0; i < inventory.b.length; ++i) {
if (inventory.b[i] != null) {
loot.add(new CraftItemStack(inventory.b[i]));
inventory.b[i] = null;
for (int i = 0; i < inventory.armor.length; ++i) {
if (inventory.armor[i] != null) {
loot.add(new CraftItemStack(inventory.armor[i]));
inventory.armor[i] = null;
}
}
@ -126,11 +126,11 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
// CraftBukkit end
}
public boolean a(Entity entity, int i) {
public boolean damageEntity(Entity entity, int i) {
if (this.bF > 0) {
return false;
} else {
if (!this.b.n) {
if (!this.b.pvpMode) {
if (entity instanceof EntityHuman) {
return false;
}
@ -138,13 +138,13 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
if (entity instanceof EntityArrow) {
EntityArrow entityarrow = (EntityArrow) entity;
if (entityarrow.b instanceof EntityHuman) {
if (entityarrow.shooter instanceof EntityHuman) {
return false;
}
}
}
return super.a(entity, i);
return super.damageEntity(entity, i);
}
}
@ -160,7 +160,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
if (chunkcoordintpair != null) {
boolean flag1 = false;
if (this.a.b() < 2) {
if (this.netServerHandler.b() < 2) {
flag1 = true;
}
@ -168,8 +168,8 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
this.f.remove(chunkcoordintpair);
// CraftBukkit start
this.a.b((Packet) (new Packet51MapChunk(chunkcoordintpair.a * 16, 0, chunkcoordintpair.b * 16, 16, 128, 16, this.world)));
List list = ((WorldServer) world).d(chunkcoordintpair.a * 16, 0, chunkcoordintpair.b * 16, chunkcoordintpair.a * 16 + 16, 128, chunkcoordintpair.b * 16 + 16);
this.netServerHandler.sendPacket(new Packet51MapChunk(chunkcoordintpair.x * 16, 0, chunkcoordintpair.z * 16, 16, 128, 16, this.world));
List list = ((WorldServer) world).getTileEntities(chunkcoordintpair.x * 16, 0, chunkcoordintpair.z * 16, chunkcoordintpair.x * 16 + 16, 128, chunkcoordintpair.z * 16 + 16);
// CraftBukkit end
for (int i = 0; i < list.size(); ++i) {
@ -180,7 +180,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
}
if (this.health != this.bE) {
this.a.b((Packet) (new Packet8UpdateHealth(this.health)));
this.netServerHandler.sendPacket(new Packet8UpdateHealth(this.health));
this.bE = this.health;
}
}
@ -190,7 +190,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
Packet packet = tileentity.e();
if (packet != null) {
this.a.b(packet);
this.netServerHandler.sendPacket(packet);
}
}
}
@ -199,18 +199,18 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
super.r();
}
public void b(Entity entity, int i) {
public void receive(Entity entity, int i) {
if (!entity.dead) {
if (entity instanceof EntityItem) {
this.b.k.a(entity, new Packet22Collect(entity.id, this.id));
this.b.tracker.a(entity, new Packet22Collect(entity.id, this.id));
}
if (entity instanceof EntityArrow) {
this.b.k.a(entity, new Packet22Collect(entity.id, this.id));
this.b.tracker.a(entity, new Packet22Collect(entity.id, this.id));
}
}
super.b(entity, i);
super.receive(entity, i);
this.activeContainer.a();
}
@ -218,7 +218,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
if (!this.p) {
this.q = -1;
this.p = true;
this.b.k.a(this, new Packet18ArmAnimation(this, 1));
this.b.tracker.a(this, new Packet18ArmAnimation(this, 1));
}
}
@ -228,34 +228,35 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
EnumBedError enumbederror = super.a(i, j, k);
if (enumbederror == EnumBedError.OK) {
this.b.k.a(this, new Packet17(this, 0, i, j, k));
this.b.tracker.a(this, new Packet17(this, 0, i, j, k));
}
return enumbederror;
}
public void a(boolean flag, boolean flag1, boolean flag2) {
if (this.F()) {
this.b.k.b(this, new Packet18ArmAnimation(this, 3));
if (this.isSleeping()) {
this.b.tracker.b(this, new Packet18ArmAnimation(this, 3));
}
super.a(flag, flag1, flag2);
this.a.a(this.locX, this.locY, this.locZ, this.yaw, this.pitch);
this.netServerHandler.a(this.locX, this.locY, this.locZ, this.yaw, this.pitch);
}
public void b(Entity entity) {
public void mount(Entity entity) {
// CraftBukkit start
setPassengerOf(entity);
}
public void setPassengerOf(Entity entity) {
// b(null) doesn't really fly for overloaded methods,
// mount(null) doesn't really fly for overloaded methods,
// so this method is needed
super.setPassengerOf(entity);
// CraftBukkit end
this.a.b((Packet) (new Packet39AttachEntity(this, this.vehicle)));
this.a.a(this.locX, this.locY, this.locZ, this.yaw, this.pitch);
this.netServerHandler.sendPacket(new Packet39AttachEntity(this, this.vehicle));
this.netServerHandler.a(this.locX, this.locY, this.locZ, this.yaw, this.pitch);
}
protected void a(double d0, boolean flag) {}
@ -270,7 +271,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
public void b(int i, int j, int k) {
this.aa();
this.a.b((Packet) (new Packet100OpenWindow(this.bH, 1, "Crafting", 9)));
this.netServerHandler.sendPacket(new Packet100OpenWindow(this.bH, 1, "Crafting", 9));
this.activeContainer = new ContainerWorkbench(this.inventory, this.world, i, j, k);
this.activeContainer.f = this.bH;
this.activeContainer.a((ICrafting) this);
@ -278,7 +279,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
public void a(IInventory iinventory) {
this.aa();
this.a.b((Packet) (new Packet100OpenWindow(this.bH, 0, iinventory.c(), iinventory.q_())));
this.netServerHandler.sendPacket(new Packet100OpenWindow(this.bH, 0, iinventory.getName(), iinventory.getSize()));
this.activeContainer = new ContainerChest(this.inventory, iinventory);
this.activeContainer.f = this.bH;
this.activeContainer.a((ICrafting) this);
@ -286,7 +287,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
public void a(TileEntityFurnace tileentityfurnace) {
this.aa();
this.a.b((Packet) (new Packet100OpenWindow(this.bH, 2, tileentityfurnace.c(), tileentityfurnace.q_())));
this.netServerHandler.sendPacket(new Packet100OpenWindow(this.bH, 2, tileentityfurnace.getName(), tileentityfurnace.getSize()));
this.activeContainer = new ContainerFurnace(this.inventory, tileentityfurnace);
this.activeContainer.f = this.bH;
this.activeContainer.a((ICrafting) this);
@ -294,7 +295,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
public void a(TileEntityDispenser tileentitydispenser) {
this.aa();
this.a.b((Packet) (new Packet100OpenWindow(this.bH, 3, tileentitydispenser.c(), tileentitydispenser.q_())));
this.netServerHandler.sendPacket(new Packet100OpenWindow(this.bH, 3, tileentitydispenser.getName(), tileentitydispenser.getSize()));
this.activeContainer = new ContainerDispenser(this.inventory, tileentitydispenser);
this.activeContainer.f = this.bH;
this.activeContainer.a((ICrafting) this);
@ -303,30 +304,30 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
public void a(Container container, int i, ItemStack itemstack) {
if (!(container.a(i) instanceof SlotResult)) {
if (!this.h) {
this.a.b((Packet) (new Packet103SetSlot(container.f, i, itemstack)));
this.netServerHandler.sendPacket(new Packet103SetSlot(container.f, i, itemstack));
}
}
}
public void a(Container container, List list) {
this.a.b((Packet) (new Packet104WindowItems(container.f, list)));
this.a.b((Packet) (new Packet103SetSlot(-1, -1, this.inventory.j())));
this.netServerHandler.sendPacket(new Packet104WindowItems(container.f, list));
this.netServerHandler.sendPacket(new Packet103SetSlot(-1, -1, this.inventory.j()));
}
public void a(Container container, int i, int j) {
this.a.b((Packet) (new Packet105CraftProgressBar(container.f, i, j)));
this.netServerHandler.sendPacket(new Packet105CraftProgressBar(container.f, i, j));
}
public void a(ItemStack itemstack) {}
public void u() {
this.a.b((Packet) (new Packet101CloseWindow(this.activeContainer.f)));
this.netServerHandler.sendPacket(new Packet101CloseWindow(this.activeContainer.f));
this.w();
}
public void v() {
if (!this.h) {
this.a.b((Packet) (new Packet103SetSlot(-1, -1, this.inventory.j())));
this.netServerHandler.sendPacket(new Packet103SetSlot(-1, -1, this.inventory.j()));
}
}
@ -339,7 +340,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
this.au = f;
this.av = f1;
this.ax = flag;
this.e(flag1);
this.setSneak(flag1);
this.pitch = f2;
this.yaw = f3;
}

View file

@ -36,7 +36,7 @@ public class EntitySkeleton extends EntityMonster {
if (this.world.d()) {
float f = this.c(1.0F);
if (f > 0.5F && this.world.i(MathHelper.b(this.locX), MathHelper.b(this.locY), MathHelper.b(this.locZ)) && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F) {
if (f > 0.5F && this.world.isChunkLoaded(MathHelper.floor(this.locX), MathHelper.floor(this.locY), MathHelper.floor(this.locZ)) && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F) {
// CraftBukkit start
CraftServer server = ((WorldServer) this.world).getServer();
org.bukkit.entity.Entity entity = this.getBukkitEntity();
@ -66,8 +66,8 @@ public class EntitySkeleton extends EntityMonster {
double d2 = entity.locY - 0.20000000298023224D - entityarrow.locY;
float f1 = MathHelper.a(d0 * d0 + d1 * d1) * 0.2F;
this.world.a(this, "random.bow", 1.0F, 1.0F / (this.random.nextFloat() * 0.4F + 0.8F));
this.world.a((Entity) entityarrow);
this.world.makeSound(this, "random.bow", 1.0F, 1.0F / (this.random.nextFloat() * 0.4F + 0.8F));
this.world.addEntity(entityarrow);
entityarrow.a(d0, d2 + (double) f1, d1, 0.6F, 12.0F);
this.attackTicks = 30;
}

View file

@ -17,7 +17,7 @@ public class EntitySnowball extends Entity {
private int e = 0;
private boolean f = false;
public int a = 0;
private EntityLiving g;
private EntityLiving shooter;
private int h;
private int i = 0;
@ -30,19 +30,19 @@ public class EntitySnowball extends Entity {
public EntitySnowball(World world, EntityLiving entityliving) {
super(world);
this.g = entityliving;
this.shooter = entityliving;
this.b(0.25F, 0.25F);
this.c(entityliving.locX, entityliving.locY + (double) entityliving.q(), entityliving.locZ, entityliving.yaw, entityliving.pitch);
this.locX -= (double) (MathHelper.b(this.yaw / 180.0F * 3.1415927F) * 0.16F);
this.setPositionRotation(entityliving.locX, entityliving.locY + (double) entityliving.q(), entityliving.locZ, entityliving.yaw, entityliving.pitch);
this.locX -= (double) (MathHelper.cos(this.yaw / 180.0F * 3.1415927F) * 0.16F);
this.locY -= 0.10000000149011612D;
this.locZ -= (double) (MathHelper.a(this.yaw / 180.0F * 3.1415927F) * 0.16F);
this.a(this.locX, this.locY, this.locZ);
this.locZ -= (double) (MathHelper.sin(this.yaw / 180.0F * 3.1415927F) * 0.16F);
this.setPosition(this.locX, this.locY, this.locZ);
this.height = 0.0F;
float f = 0.4F;
this.motX = (double) (-MathHelper.a(this.yaw / 180.0F * 3.1415927F) * MathHelper.b(this.pitch / 180.0F * 3.1415927F) * f);
this.motZ = (double) (MathHelper.b(this.yaw / 180.0F * 3.1415927F) * MathHelper.b(this.pitch / 180.0F * 3.1415927F) * f);
this.motY = (double) (-MathHelper.a(this.pitch / 180.0F * 3.1415927F) * f);
this.motX = (double) (-MathHelper.sin(this.yaw / 180.0F * 3.1415927F) * MathHelper.cos(this.pitch / 180.0F * 3.1415927F) * f);
this.motZ = (double) (MathHelper.cos(this.yaw / 180.0F * 3.1415927F) * MathHelper.cos(this.pitch / 180.0F * 3.1415927F) * f);
this.motY = (double) (-MathHelper.sin(this.pitch / 180.0F * 3.1415927F) * f);
this.a(this.motX, this.motY, this.motZ, 1.5F, 1.0F);
}
@ -50,7 +50,7 @@ public class EntitySnowball extends Entity {
super(world);
this.h = 0;
this.b(0.25F, 0.25F);
this.a(d0, d1, d2);
this.setPosition(d0, d1, d2);
this.height = 0.0F;
}
@ -91,7 +91,7 @@ public class EntitySnowball extends Entity {
if (i == this.e) {
++this.h;
if (this.h == 1200) {
this.D();
this.die();
}
return;
@ -107,14 +107,14 @@ public class EntitySnowball extends Entity {
++this.i;
}
Vec3D vec3d = Vec3D.b(this.locX, this.locY, this.locZ);
Vec3D vec3d1 = Vec3D.b(this.locX + this.motX, this.locY + this.motY, this.locZ + this.motZ);
Vec3D vec3d = Vec3D.create(this.locX, this.locY, this.locZ);
Vec3D vec3d1 = Vec3D.create(this.locX + this.motX, this.locY + this.motY, this.locZ + this.motZ);
MovingObjectPosition movingobjectposition = this.world.a(vec3d, vec3d1);
vec3d = Vec3D.b(this.locX, this.locY, this.locZ);
vec3d1 = Vec3D.b(this.locX + this.motX, this.locY + this.motY, this.locZ + this.motZ);
vec3d = Vec3D.create(this.locX, this.locY, this.locZ);
vec3d1 = Vec3D.create(this.locX + this.motX, this.locY + this.motY, this.locZ + this.motZ);
if (movingobjectposition != null) {
vec3d1 = Vec3D.b(movingobjectposition.f.a, movingobjectposition.f.b, movingobjectposition.f.c);
vec3d1 = Vec3D.create(movingobjectposition.f.a, movingobjectposition.f.b, movingobjectposition.f.c);
}
if (!this.world.isStatic) {
@ -125,7 +125,7 @@ public class EntitySnowball extends Entity {
for (int j = 0; j < list.size(); ++j) {
Entity entity1 = (Entity) list.get(j);
if (entity1.d_() && (entity1 != this.g || this.i >= 5)) {
if (entity1.d_() && (entity1 != this.shooter || this.i >= 5)) {
float f = 0.3F;
AxisAlignedBB axisalignedbb = entity1.boundingBox.b((double) f, (double) f, (double) f);
MovingObjectPosition movingobjectposition1 = axisalignedbb.a(vec3d, vec3d1);
@ -148,12 +148,12 @@ public class EntitySnowball extends Entity {
if (movingobjectposition != null) {
// CraftBukkit start
if (movingobjectposition.g != null) {
if (movingobjectposition.entity != null) {
boolean stick;
if (movingobjectposition.g instanceof EntityLiving) {
if (movingobjectposition.entity instanceof EntityLiving) {
CraftServer server = ((WorldServer) this.world).getServer();
org.bukkit.entity.Entity shooter = (this.g == null) ? null : this.g.getBukkitEntity();
org.bukkit.entity.Entity damagee = movingobjectposition.g.getBukkitEntity();
org.bukkit.entity.Entity shooter = (this.shooter == null) ? null : this.shooter.getBukkitEntity();
org.bukkit.entity.Entity damagee = movingobjectposition.entity.getBukkitEntity();
org.bukkit.entity.Entity projectile = this.getBukkitEntity();
DamageCause damageCause = EntityDamageEvent.DamageCause.ENTITY_ATTACK;
int damage = 0;
@ -164,13 +164,13 @@ public class EntitySnowball extends Entity {
if (!event.isCancelled()) {
// this function returns if the snowball should stick or not, i.e. !bounce
stick = movingobjectposition.g.a(this.g, event.getDamage());
stick = movingobjectposition.entity.damageEntity(this.shooter, event.getDamage());
} else {
// event was cancelled, get if the snowball should bounce or not
stick = !event.getBounce();
}
} else {
stick = movingobjectposition.g.a(this.g, 0);
stick = movingobjectposition.entity.damageEntity(this.shooter, 0);
}
if (stick) {
;
@ -182,7 +182,7 @@ public class EntitySnowball extends Entity {
this.world.a("snowballpoof", this.locX, this.locY, this.locZ, 0.0D, 0.0D, 0.0D);
}
this.D();
this.die();
}
this.locX += this.motX;
@ -227,7 +227,7 @@ public class EntitySnowball extends Entity {
this.motY *= (double) f2;
this.motZ *= (double) f2;
this.motY -= (double) f3;
this.a(this.locX, this.locY, this.locZ);
this.setPosition(this.locX, this.locY, this.locZ);
}
public void a(NBTTagCompound nbttagcompound) {
@ -249,10 +249,10 @@ public class EntitySnowball extends Entity {
}
public void b(EntityHuman entityhuman) {
if (this.f && this.g == entityhuman && this.a <= 0 && entityhuman.inventory.a(new ItemStack(Item.ARROW, 1))) {
this.world.a(this, "random.pop", 0.2F, ((this.random.nextFloat() - this.random.nextFloat()) * 0.7F + 1.0F) * 2.0F);
entityhuman.b(this, 1);
this.D();
if (this.f && this.shooter == entityhuman && this.a <= 0 && entityhuman.inventory.canHold(new ItemStack(Item.ARROW, 1))) {
this.world.makeSound(this, "random.pop", 0.2F, ((this.random.nextFloat() - this.random.nextFloat()) * 0.7F + 1.0F) * 2.0F);
entityhuman.receive(this, 1);
this.die();
}
}
}

View file

@ -5,7 +5,7 @@ import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.craftbukkit.entity.CraftEntity;
import org.bukkit.event.entity.EntityTargetEvent;
import org.bukkit.event.entity.EntityTargetEvent.TargetReason;
// CraftBukkit end
// CraftBukkit stop
public class EntitySpider extends EntityMonster {
@ -24,7 +24,7 @@ public class EntitySpider extends EntityMonster {
return false;
}
protected Entity m() {
protected Entity findTarget() {
float f = this.c(1.0F);
if (f < 0.5F) {
@ -59,9 +59,9 @@ public class EntitySpider extends EntityMonster {
if (!event.isCancelled()) {
if (event.getTarget() == null) {
this.d = null;
this.target = null;
} else {
this.d = ((CraftEntity) event.getTarget()).getHandle();
this.target = ((CraftEntity) event.getTarget()).getHandle();
}
return;
}
@ -96,6 +96,6 @@ public class EntitySpider extends EntityMonster {
}
public boolean n() {
return this.aW;
return this.positionChanged;
}
}

View file

@ -20,12 +20,12 @@ public class EntityTNTPrimed extends Entity {
public EntityTNTPrimed(World world, double d0, double d1, double d2) {
this(world);
this.a(d0, d1, d2);
this.setPosition(d0, d1, d2);
float f = (float) (Math.random() * 3.1415927410125732D * 2.0D);
this.motX = (double) (-MathHelper.a(f * 3.1415927F / 180.0F) * 0.02F);
this.motX = (double) (-MathHelper.sin(f * 3.1415927F / 180.0F) * 0.02F);
this.motY = 0.20000000298023224D;
this.motZ = (double) (-MathHelper.b(f * 3.1415927F / 180.0F) * 0.02F);
this.motZ = (double) (-MathHelper.cos(f * 3.1415927F / 180.0F) * 0.02F);
this.a = 80;
this.lastX = d0;
this.lastY = d1;
@ -47,7 +47,7 @@ public class EntityTNTPrimed extends Entity {
this.lastY = this.locY;
this.lastZ = this.locZ;
this.motY -= 0.03999999910593033D;
this.c(this.motX, this.motY, this.motZ);
this.move(this.motX, this.motY, this.motZ);
this.motX *= 0.9800000190734863D;
this.motY *= 0.9800000190734863D;
this.motZ *= 0.9800000190734863D;
@ -59,15 +59,15 @@ public class EntityTNTPrimed extends Entity {
if (this.a-- <= 0) {
// CraftBukkit start - Need to reverse the order of the explosion and the entity death so we have a location for the event.
this.h();
this.D();
this.explode();
this.die();
// CraftBukkit end
} else {
this.world.a("smoke", this.locX, this.locY + 0.5D, this.locZ, 0.0D, 0.0D, 0.0D);
}
}
private void h() {
private void explode() {
float f = 4.0F;
// CraftBukkit start
@ -78,7 +78,7 @@ public class EntityTNTPrimed extends Entity {
if (!event.isCancelled()) {
// give 'this' instead of (Entity) null so we know what causes the damage
this.world.a(this, this.locX, this.locY, this.locZ, event.getRadius(), event.getFire());
this.world.createExplosion(this, this.locX, this.locY, this.locZ, event.getRadius(), event.getFire());
}
// CraftBukkit end
}

View file

@ -14,7 +14,7 @@ public class EntityTracker {
public EntityTracker(MinecraftServer minecraftserver) {
this.c = minecraftserver;
this.d = minecraftserver.f.a();
this.d = minecraftserver.serverConfigurationManager.a();
}
// CraftBukkit -- synchronized
@ -27,7 +27,7 @@ public class EntityTracker {
while (iterator.hasNext()) {
EntityTrackerEntry entitytrackerentry = (EntityTrackerEntry) iterator.next();
if (entitytrackerentry.a != entityplayer) {
if (entitytrackerentry.tracker != entityplayer) {
entitytrackerentry.b(entityplayer);
}
}
@ -76,12 +76,12 @@ public class EntityTracker {
this.a.add(entitytrackerentry);
this.b.a(entity.id, entitytrackerentry);
// CraftBukkit
entitytrackerentry.b(entity.world.d); // CraftBukkit
entitytrackerentry.scanPlayers(entity.world.players);
}
}
// CraftBukkit -- synchronized
public synchronized void b(Entity entity) {
public synchronized void untrackEntity(Entity entity) {
if (entity instanceof EntityPlayer) {
EntityPlayer entityplayer = (EntityPlayer) entity;
Iterator iterator = this.a.iterator();
@ -110,9 +110,9 @@ public class EntityTracker {
EntityTrackerEntry entitytrackerentry = (EntityTrackerEntry) iterator.next();
// CraftBukkit
entitytrackerentry.a(entitytrackerentry.a.world.d);
if (entitytrackerentry.m && entitytrackerentry.a instanceof EntityPlayer) {
arraylist.add((EntityPlayer) entitytrackerentry.a);
entitytrackerentry.track(entitytrackerentry.tracker.world.players);
if (entitytrackerentry.m && entitytrackerentry.tracker instanceof EntityPlayer) {
arraylist.add((EntityPlayer) entitytrackerentry.tracker);
}
}
@ -123,7 +123,7 @@ public class EntityTracker {
while (iterator1.hasNext()) {
EntityTrackerEntry entitytrackerentry1 = (EntityTrackerEntry) iterator1.next();
if (entitytrackerentry1.a != entityplayer) {
if (entitytrackerentry1.tracker != entityplayer) {
entitytrackerentry1.b(entityplayer);
}
}
@ -149,7 +149,7 @@ public class EntityTracker {
}
// CraftBukkit -- synchronized
public synchronized void a(EntityPlayer entityplayer) {
public synchronized void trackPlayer(EntityPlayer entityplayer) {
Iterator iterator = this.a.iterator();
while (iterator.hasNext()) {

View file

@ -7,7 +7,7 @@ import java.util.Set;
public class EntityTrackerEntry {
public Entity a;
public Entity tracker;
public int b;
public int c;
public int d;
@ -23,47 +23,47 @@ public class EntityTrackerEntry {
private double p;
private double q;
private boolean r = false;
private boolean s;
private boolean isMoving;
public boolean m = false;
public Set n = new HashSet();
public Set trackedPlayers = new HashSet();
public EntityTrackerEntry(Entity entity, int i, int j, boolean flag) {
this.a = entity;
this.tracker = entity;
this.b = i;
this.c = j;
this.s = flag;
this.d = MathHelper.b(entity.locX * 32.0D);
this.e = MathHelper.b(entity.locY * 32.0D);
this.f = MathHelper.b(entity.locZ * 32.0D);
this.isMoving = flag;
this.d = MathHelper.floor(entity.locX * 32.0D);
this.e = MathHelper.floor(entity.locY * 32.0D);
this.f = MathHelper.floor(entity.locZ * 32.0D);
this.g = MathHelper.d(entity.yaw * 256.0F / 360.0F);
this.h = MathHelper.d(entity.pitch * 256.0F / 360.0F);
}
public boolean equals(Object object) {
return object instanceof EntityTrackerEntry ? ((EntityTrackerEntry) object).a.id == this.a.id : false;
return object instanceof EntityTrackerEntry ? ((EntityTrackerEntry) object).tracker.id == this.tracker.id : false;
}
public int hashCode() {
return this.a.id;
return this.tracker.id;
}
public void a(List list) {
public void track(List list) {
this.m = false;
if (!this.r || this.a.d(this.o, this.p, this.q) > 16.0D) {
this.o = this.a.locX;
this.p = this.a.locY;
this.q = this.a.locZ;
if (!this.r || this.tracker.d(this.o, this.p, this.q) > 16.0D) {
this.o = this.tracker.locX;
this.p = this.tracker.locY;
this.q = this.tracker.locZ;
this.r = true;
this.m = true;
this.b(list);
this.scanPlayers(list);
}
if (++this.l % this.c == 0) {
int i = MathHelper.b(this.a.locX * 32.0D);
int j = MathHelper.b(this.a.locY * 32.0D);
int k = MathHelper.b(this.a.locZ * 32.0D);
int l = MathHelper.d(this.a.yaw * 256.0F / 360.0F);
int i1 = MathHelper.d(this.a.pitch * 256.0F / 360.0F);
int i = MathHelper.floor(this.tracker.locX * 32.0D);
int j = MathHelper.floor(this.tracker.locY * 32.0D);
int k = MathHelper.floor(this.tracker.locZ * 32.0D);
int l = MathHelper.d(this.tracker.yaw * 256.0F / 360.0F);
int i1 = MathHelper.d(this.tracker.pitch * 256.0F / 360.0F);
int j1 = i - this.d;
int k1 = j - this.e;
int l1 = k - this.f;
@ -73,28 +73,28 @@ public class EntityTrackerEntry {
if (j1 >= -128 && j1 < 128 && k1 >= -128 && k1 < 128 && l1 >= -128 && l1 < 128) {
if (flag && flag1) {
object = new Packet33RelEntityMoveLook(this.a.id, (byte) j1, (byte) k1, (byte) l1, (byte) l, (byte) i1);
object = new Packet33RelEntityMoveLook(this.tracker.id, (byte) j1, (byte) k1, (byte) l1, (byte) l, (byte) i1);
} else if (flag) {
object = new Packet31RelEntityMove(this.a.id, (byte) j1, (byte) k1, (byte) l1);
object = new Packet31RelEntityMove(this.tracker.id, (byte) j1, (byte) k1, (byte) l1);
} else if (flag1) {
object = new Packet32EntityLook(this.a.id, (byte) l, (byte) i1);
object = new Packet32EntityLook(this.tracker.id, (byte) l, (byte) i1);
}
} else {
object = new Packet34EntityTeleport(this.a.id, i, j, k, (byte) l, (byte) i1);
object = new Packet34EntityTeleport(this.tracker.id, i, j, k, (byte) l, (byte) i1);
}
if (this.s) {
double d0 = this.a.motX - this.i;
double d1 = this.a.motY - this.j;
double d2 = this.a.motZ - this.k;
if (this.isMoving) {
double d0 = this.tracker.motX - this.i;
double d1 = this.tracker.motY - this.j;
double d2 = this.tracker.motZ - this.k;
double d3 = 0.02D;
double d4 = d0 * d0 + d1 * d1 + d2 * d2;
if (d4 > d3 * d3 || d4 > 0.0D && this.a.motX == 0.0D && this.a.motY == 0.0D && this.a.motZ == 0.0D) {
this.i = this.a.motX;
this.j = this.a.motY;
this.k = this.a.motZ;
this.a((Packet) (new Packet28EntityVelocity(this.a.id, this.i, this.j, this.k)));
if (d4 > d3 * d3 || d4 > 0.0D && this.tracker.motX == 0.0D && this.tracker.motY == 0.0D && this.tracker.motZ == 0.0D) {
this.i = this.tracker.motX;
this.j = this.tracker.motY;
this.k = this.tracker.motZ;
this.a((Packet) (new Packet28EntityVelocity(this.tracker.id, this.i, this.j, this.k)));
}
}
@ -102,10 +102,10 @@ public class EntityTrackerEntry {
this.a((Packet) object);
}
DataWatcher datawatcher = this.a.T();
DataWatcher datawatcher = this.tracker.T();
if (datawatcher.a()) {
this.b((Packet) (new Packet40EntityMetadata(this.a.id, datawatcher)));
this.b((Packet) (new Packet40EntityMetadata(this.tracker.id, datawatcher)));
}
if (flag) {
@ -120,142 +120,142 @@ public class EntityTrackerEntry {
}
}
if (this.a.aZ) {
this.b((Packet) (new Packet28EntityVelocity(this.a)));
this.a.aZ = false;
if (this.tracker.velocityChanged) {
this.b((Packet) (new Packet28EntityVelocity(this.tracker)));
this.tracker.velocityChanged = false;
}
}
public void a(Packet packet) {
Iterator iterator = this.n.iterator();
Iterator iterator = this.trackedPlayers.iterator();
while (iterator.hasNext()) {
EntityPlayer entityplayer = (EntityPlayer) iterator.next();
entityplayer.a.b(packet);
entityplayer.netServerHandler.sendPacket(packet);
}
}
public void b(Packet packet) {
this.a(packet);
if (this.a instanceof EntityPlayer) {
((EntityPlayer) this.a).a.b(packet);
if (this.tracker instanceof EntityPlayer) {
((EntityPlayer) this.tracker).netServerHandler.sendPacket(packet);
}
}
public void a() {
this.a((Packet) (new Packet29DestroyEntity(this.a.id)));
this.a((Packet) (new Packet29DestroyEntity(this.tracker.id)));
}
public void a(EntityPlayer entityplayer) {
if (this.n.contains(entityplayer)) {
this.n.remove(entityplayer);
if (this.trackedPlayers.contains(entityplayer)) {
this.trackedPlayers.remove(entityplayer);
}
}
public void b(EntityPlayer entityplayer) {
if (entityplayer != this.a) {
if (entityplayer != this.tracker) {
double d0 = entityplayer.locX - (double) (this.d / 32);
double d1 = entityplayer.locZ - (double) (this.f / 32);
if (d0 >= (double) (-this.b) && d0 <= (double) this.b && d1 >= (double) (-this.b) && d1 <= (double) this.b) {
// CraftBukkit
if ((!this.n.contains(entityplayer)) && (this.a.world == entityplayer.world)) {
this.n.add(entityplayer);
entityplayer.a.b(this.b());
if (this.s) {
entityplayer.a.b((Packet) (new Packet28EntityVelocity(this.a.id, this.a.motX, this.a.motY, this.a.motZ)));
if ((!this.trackedPlayers.contains(entityplayer)) && (this.tracker.world == entityplayer.world)) {
this.trackedPlayers.add(entityplayer);
entityplayer.netServerHandler.sendPacket(this.b());
if (this.isMoving) {
entityplayer.netServerHandler.sendPacket(new Packet28EntityVelocity(this.tracker.id, this.tracker.motX, this.tracker.motY, this.tracker.motZ));
}
ItemStack[] aitemstack = this.a.k_();
ItemStack[] aitemstack = this.tracker.getEquipment();
if (aitemstack != null) {
for (int i = 0; i < aitemstack.length; ++i) {
entityplayer.a.b((Packet) (new Packet5EntityEquipment(this.a.id, i, aitemstack[i])));
entityplayer.netServerHandler.sendPacket(new Packet5EntityEquipment(this.tracker.id, i, aitemstack[i]));
}
}
}
} else if (this.n.contains(entityplayer)) {
this.n.remove(entityplayer);
entityplayer.a.b((Packet) (new Packet29DestroyEntity(this.a.id)));
} else if (this.trackedPlayers.contains(entityplayer)) {
this.trackedPlayers.remove(entityplayer);
entityplayer.netServerHandler.sendPacket(new Packet29DestroyEntity(this.tracker.id));
}
}
}
public void b(List list) {
public void scanPlayers(List list) {
for (int i = 0; i < list.size(); ++i) {
this.b((EntityPlayer) list.get(i));
}
}
private Packet b() {
if (this.a instanceof EntityItem) {
EntityItem entityitem = (EntityItem) this.a;
if (this.tracker instanceof EntityItem) {
EntityItem entityitem = (EntityItem) this.tracker;
Packet21PickupSpawn packet21pickupspawn = new Packet21PickupSpawn(entityitem);
entityitem.locX = (double) packet21pickupspawn.b / 32.0D;
entityitem.locY = (double) packet21pickupspawn.c / 32.0D;
entityitem.locZ = (double) packet21pickupspawn.d / 32.0D;
return packet21pickupspawn;
} else if (this.a instanceof EntityPlayer) {
return new Packet20NamedEntitySpawn((EntityHuman) this.a);
} else if (this.tracker instanceof EntityPlayer) {
return new Packet20NamedEntitySpawn((EntityHuman) this.tracker);
} else {
if (this.a instanceof EntityMinecart) {
EntityMinecart entityminecart = (EntityMinecart) this.a;
if (this.tracker instanceof EntityMinecart) {
EntityMinecart entityminecart = (EntityMinecart) this.tracker;
if (entityminecart.d == 0) {
return new Packet23VehicleSpawn(this.a, 10);
if (entityminecart.type == 0) {
return new Packet23VehicleSpawn(this.tracker, 10);
}
if (entityminecart.d == 1) {
return new Packet23VehicleSpawn(this.a, 11);
if (entityminecart.type == 1) {
return new Packet23VehicleSpawn(this.tracker, 11);
}
if (entityminecart.d == 2) {
return new Packet23VehicleSpawn(this.a, 12);
if (entityminecart.type == 2) {
return new Packet23VehicleSpawn(this.tracker, 12);
}
}
if (this.a instanceof EntityBoat) {
return new Packet23VehicleSpawn(this.a, 1);
} else if (this.a instanceof IAnimal) {
return new Packet24MobSpawn((EntityLiving) this.a);
} else if (this.a instanceof EntityFish) {
return new Packet23VehicleSpawn(this.a, 90);
} else if (this.a instanceof EntityArrow) {
return new Packet23VehicleSpawn(this.a, 60);
} else if (this.a instanceof EntitySnowball) {
return new Packet23VehicleSpawn(this.a, 61);
} else if (this.a instanceof EntityEgg) {
return new Packet23VehicleSpawn(this.a, 62);
} else if (this.a instanceof EntityTNTPrimed) {
return new Packet23VehicleSpawn(this.a, 50);
if (this.tracker instanceof EntityBoat) {
return new Packet23VehicleSpawn(this.tracker, 1);
} else if (this.tracker instanceof IAnimal) {
return new Packet24MobSpawn((EntityLiving) this.tracker);
} else if (this.tracker instanceof EntityFish) {
return new Packet23VehicleSpawn(this.tracker, 90);
} else if (this.tracker instanceof EntityArrow) {
return new Packet23VehicleSpawn(this.tracker, 60);
} else if (this.tracker instanceof EntitySnowball) {
return new Packet23VehicleSpawn(this.tracker, 61);
} else if (this.tracker instanceof EntityEgg) {
return new Packet23VehicleSpawn(this.tracker, 62);
} else if (this.tracker instanceof EntityTNTPrimed) {
return new Packet23VehicleSpawn(this.tracker, 50);
} else {
if (this.a instanceof EntityFallingSand) {
EntityFallingSand entityfallingsand = (EntityFallingSand) this.a;
if (this.tracker instanceof EntityFallingSand) {
EntityFallingSand entityfallingsand = (EntityFallingSand) this.tracker;
if (entityfallingsand.a == Block.SAND.id) {
return new Packet23VehicleSpawn(this.a, 70);
return new Packet23VehicleSpawn(this.tracker, 70);
}
if (entityfallingsand.a == Block.GRAVEL.id) {
return new Packet23VehicleSpawn(this.a, 71);
return new Packet23VehicleSpawn(this.tracker, 71);
}
}
if (this.a instanceof EntityPainting) {
return new Packet25EntityPainting((EntityPainting) this.a);
if (this.tracker instanceof EntityPainting) {
return new Packet25EntityPainting((EntityPainting) this.tracker);
} else {
throw new IllegalArgumentException("Don\'t know how to add " + this.a.getClass() + "!");
throw new IllegalArgumentException("Don\'t know how to add " + this.tracker.getClass() + "!");
}
}
}
}
public void c(EntityPlayer entityplayer) {
if (this.n.contains(entityplayer)) {
this.n.remove(entityplayer);
entityplayer.a.b((Packet) (new Packet29DestroyEntity(this.a.id)));
if (this.trackedPlayers.contains(entityplayer)) {
this.trackedPlayers.remove(entityplayer);
entityplayer.netServerHandler.sendPacket(new Packet29DestroyEntity(this.tracker.id));
}
}
}

View file

@ -11,14 +11,14 @@ public class EntityZombie extends EntityMonster {
super(world);
this.texture = "/mob/zombie.png";
this.az = 0.5F;
this.c = 5;
this.damage = 5;
}
public void r() {
if (this.world.d()) {
float f = this.c(1.0F);
if (f > 0.5F && this.world.i(MathHelper.b(this.locX), MathHelper.b(this.locY), MathHelper.b(this.locZ)) && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F) {
if (f > 0.5F && this.world.isChunkLoaded(MathHelper.floor(this.locX), MathHelper.floor(this.locY), MathHelper.floor(this.locZ)) && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F) {
// CraftBukkit start
CraftServer server = ((WorldServer) this.world).getServer();
EntityCombustEvent event = new EntityCombustEvent(this.getBukkitEntity());

View file

@ -22,27 +22,27 @@ public class Explosion {
public boolean a = false;
private Random h = new Random();
private World i;
public double b;
public double c;
public double d;
public Entity e;
public float f;
private World world;
public double posX;
public double posY;
public double posZ;
public Entity source;
public float size;
public Set g = new HashSet();
public boolean wasCanceled = false; // CraftBukkit
public Explosion(World world, Entity entity, double d0, double d1, double d2, float f) {
this.i = world;
this.e = entity;
this.f = f;
this.b = d0;
this.c = d1;
this.d = d2;
this.world = world;
this.source = entity;
this.size = f;
this.posX = d0;
this.posY = d1;
this.posZ = d2;
}
public void a() {
float f = this.f;
float f = this.size;
byte b0 = 16;
int i;
@ -64,20 +64,20 @@ public class Explosion {
d3 /= d6;
d4 /= d6;
d5 /= d6;
float f1 = this.f * (0.7F + this.i.k.nextFloat() * 0.6F);
float f1 = this.size * (0.7F + this.world.random.nextFloat() * 0.6F);
d0 = this.b;
d1 = this.c;
d2 = this.d;
d0 = this.posX;
d1 = this.posY;
d2 = this.posZ;
for (float f2 = 0.3F; f1 > 0.0F; f1 -= f2 * 0.75F) {
int l = MathHelper.b(d0);
int i1 = MathHelper.b(d1);
int j1 = MathHelper.b(d2);
int k1 = this.i.getTypeId(l, i1, j1);
int l = MathHelper.floor(d0);
int i1 = MathHelper.floor(d1);
int j1 = MathHelper.floor(d2);
int k1 = this.world.getTypeId(l, i1, j1);
if (k1 > 0) {
f1 -= (Block.byId[k1].a(this.e) + 0.3F) * f2;
f1 -= (Block.byId[k1].a(this.source) + 0.3F) * f2;
}
if (f1 > 0.0F) {
@ -93,41 +93,41 @@ public class Explosion {
}
}
this.f *= 2.0F;
i = MathHelper.b(this.b - (double) this.f - 1.0D);
j = MathHelper.b(this.b + (double) this.f + 1.0D);
k = MathHelper.b(this.c - (double) this.f - 1.0D);
int l1 = MathHelper.b(this.c + (double) this.f + 1.0D);
int i2 = MathHelper.b(this.d - (double) this.f - 1.0D);
int j2 = MathHelper.b(this.d + (double) this.f + 1.0D);
List list = this.i.b(this.e, AxisAlignedBB.b((double) i, (double) k, (double) i2, (double) j, (double) l1, (double) j2));
Vec3D vec3d = Vec3D.b(this.b, this.c, this.d);
this.size *= 2.0F;
i = MathHelper.floor(this.posX - (double) this.size - 1.0D);
j = MathHelper.floor(this.posX + (double) this.size + 1.0D);
k = MathHelper.floor(this.posY - (double) this.size - 1.0D);
int l1 = MathHelper.floor(this.posY + (double) this.size + 1.0D);
int i2 = MathHelper.floor(this.posZ - (double) this.size - 1.0D);
int j2 = MathHelper.floor(this.posZ + (double) this.size + 1.0D);
List list = this.world.b(this.source, AxisAlignedBB.b((double) i, (double) k, (double) i2, (double) j, (double) l1, (double) j2));
Vec3D vec3d = Vec3D.create(this.posX, this.posY, this.posZ);
for (int k2 = 0; k2 < list.size(); ++k2) {
Entity entity = (Entity) list.get(k2);
double d7 = entity.e(this.b, this.c, this.d) / (double) this.f;
double d7 = entity.e(this.posX, this.posY, this.posZ) / (double) this.size;
if (d7 <= 1.0D) {
d0 = entity.locX - this.b;
d1 = entity.locY - this.c;
d2 = entity.locZ - this.d;
d0 = entity.locX - this.posX;
d1 = entity.locY - this.posY;
d2 = entity.locZ - this.posZ;
double d8 = (double) MathHelper.a(d0 * d0 + d1 * d1 + d2 * d2);
d0 /= d8;
d1 /= d8;
d2 /= d8;
double d9 = (double) this.i.a(vec3d, entity.boundingBox);
double d9 = (double) this.world.a(vec3d, entity.boundingBox);
double d10 = (1.0D - d7) * d9;
// CraftBukkit start - explosion damage hook
CraftServer server = ((WorldServer) this.i).getServer();
CraftServer server = ((WorldServer) this.world).getServer();
org.bukkit.entity.Entity damagee = (entity == null) ? null : entity.getBukkitEntity();
DamageCause damageType;
int damageDone = (int) ((d10 * d10 + d10) / 2.0D * 8.0D * (double) this.f + 1.0D);
int damageDone = (int) ((d10 * d10 + d10) / 2.0D * 8.0D * (double) this.size + 1.0D);
if (damagee == null) {
// nothing was hurt
} else if (e == null) { // Block explosion
} else if (this.source == null) { // Block explosion
// TODO: get the x/y/z of the tnt block?
// does this even get called ever? @see EntityTNTPrimed - not BlockTNT or whatever
damageType = EntityDamageEvent.DamageCause.BLOCK_EXPLOSION;
@ -136,20 +136,20 @@ public class Explosion {
server.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
entity.a(this.e, event.getDamage());
entity.damageEntity(this.source, event.getDamage());
entity.motX += d0 * d10;
entity.motY += d1 * d10;
entity.motZ += d2 * d10;
}
} else {
org.bukkit.entity.Entity damager = this.e.getBukkitEntity();
org.bukkit.entity.Entity damager = this.source.getBukkitEntity();
damageType = EntityDamageEvent.DamageCause.ENTITY_EXPLOSION;
EntityDamageByEntityEvent event = new EntityDamageByEntityEvent(damager, damagee, damageType, damageDone);
server.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
entity.a(this.e, event.getDamage());
entity.damageEntity(this.source, event.getDamage());
entity.motX += d0 * d10;
entity.motY += d1 * d10;
@ -160,42 +160,42 @@ public class Explosion {
}
}
this.f = f;
this.size = f;
ArrayList arraylist = new ArrayList();
arraylist.addAll(this.g);
if (this.a) {
for (int l2 = arraylist.size() - 1; l2 >= 0; --l2) {
ChunkPosition chunkposition = (ChunkPosition) arraylist.get(l2);
int i3 = chunkposition.a;
int j3 = chunkposition.b;
int k3 = chunkposition.c;
int l3 = this.i.getTypeId(i3, j3, k3);
int i4 = this.i.getTypeId(i3, j3 - 1, k3);
int i3 = chunkposition.x;
int j3 = chunkposition.y;
int k3 = chunkposition.z;
int l3 = this.world.getTypeId(i3, j3, k3);
int i4 = this.world.getTypeId(i3, j3 - 1, k3);
if (l3 == 0 && Block.o[i4] && this.h.nextInt(3) == 0) {
this.i.e(i3, j3, k3, Block.FIRE.id);
this.world.setTypeId(i3, j3, k3, Block.FIRE.id);
}
}
}
}
public void b() {
this.i.a(this.b, this.c, this.d, "random.explode", 4.0F, (1.0F + (this.i.k.nextFloat() - this.i.k.nextFloat()) * 0.2F) * 0.7F);
this.world.makeSound(this.posX, this.posY, this.posZ, "random.explode", 4.0F, (1.0F + (this.world.random.nextFloat() - this.world.random.nextFloat()) * 0.2F) * 0.7F);
ArrayList arraylist = new ArrayList();
arraylist.addAll(this.g);
// CraftBukkit start
Server server = ((WorldServer) this.i).getServer();
CraftWorld world = ((WorldServer) this.i).getWorld();
org.bukkit.entity.Entity explode = (this.e == null) ? null : this.e.getBukkitEntity();
Location location = new Location(world, this.b, this.c, this.d);
Server server = ((WorldServer) this.world).getServer();
CraftWorld world = ((WorldServer) this.world).getWorld();
org.bukkit.entity.Entity explode = (this.source == null) ? null : this.source.getBukkitEntity();
Location location = new Location(world, this.posX, this.posY, this.posZ);
List<org.bukkit.block.Block> blockList = new ArrayList<org.bukkit.block.Block>();
for (int j = arraylist.size() - 1; j >= 0; j--) {
ChunkPosition cpos = (ChunkPosition) arraylist.get(j);
org.bukkit.block.Block block = world.getBlockAt(cpos.a, cpos.b, cpos.c);
org.bukkit.block.Block block = world.getBlockAt(cpos.x, cpos.y, cpos.z);
if (!block.getType().equals(org.bukkit.Material.AIR)) {
blockList.add(block);
}
@ -212,38 +212,38 @@ public class Explosion {
for (int i = arraylist.size() - 1; i >= 0; --i) {
ChunkPosition chunkposition = (ChunkPosition) arraylist.get(i);
int j = chunkposition.a;
int k = chunkposition.b;
int l = chunkposition.c;
int i1 = this.i.getTypeId(j, k, l);
int j = chunkposition.x;
int k = chunkposition.y;
int l = chunkposition.z;
int i1 = this.world.getTypeId(j, k, l);
for (int j1 = 0; j1 < 1; ++j1) {
double d0 = (double) ((float) j + this.i.k.nextFloat());
double d1 = (double) ((float) k + this.i.k.nextFloat());
double d2 = (double) ((float) l + this.i.k.nextFloat());
double d3 = d0 - this.b;
double d4 = d1 - this.c;
double d5 = d2 - this.d;
double d0 = (double) ((float) j + this.world.random.nextFloat());
double d1 = (double) ((float) k + this.world.random.nextFloat());
double d2 = (double) ((float) l + this.world.random.nextFloat());
double d3 = d0 - this.posX;
double d4 = d1 - this.posY;
double d5 = d2 - this.posZ;
double d6 = (double) MathHelper.a(d3 * d3 + d4 * d4 + d5 * d5);
d3 /= d6;
d4 /= d6;
d5 /= d6;
double d7 = 0.5D / (d6 / (double) this.f + 0.1D);
double d7 = 0.5D / (d6 / (double) this.size + 0.1D);
d7 *= (double) (this.i.k.nextFloat() * this.i.k.nextFloat() + 0.3F);
d7 *= (double) (this.world.random.nextFloat() * this.world.random.nextFloat() + 0.3F);
d3 *= d7;
d4 *= d7;
d5 *= d7;
this.i.a("explode", (d0 + this.b * 1.0D) / 2.0D, (d1 + this.c * 1.0D) / 2.0D, (d2 + this.d * 1.0D) / 2.0D, d3, d4, d5);
this.i.a("smoke", d0, d1, d2, d3, d4, d5);
this.world.a("explode", (d0 + this.posX * 1.0D) / 2.0D, (d1 + this.posY * 1.0D) / 2.0D, (d2 + this.posZ * 1.0D) / 2.0D, d3, d4, d5);
this.world.a("smoke", d0, d1, d2, d3, d4, d5);
}
if (i1 > 0) {
// CraftBukkit
Block.byId[i1].a(this.i, j, k, l, this.i.getData(j, k, l), event.getYield());
this.i.e(j, k, l, 0);
Block.byId[i1].c(this.i, j, k, l);
Block.byId[i1].dropNaturally(this.world, j, k, l, this.world.getData(j, k, l), event.getYield());
this.world.setTypeId(j, k, l, 0);
Block.byId[i1].c(this.world, j, k, l);
}
}
}

View file

@ -2,19 +2,19 @@ package net.minecraft.server;
public interface IInventory {
int q_();
int getSize();
ItemStack c_(int i);
ItemStack getItem(int i);
ItemStack a(int i, int j);
void a(int i, ItemStack itemstack);
void setItem(int i, ItemStack itemstack);
String c();
String getName();
int r_();
int getMaxStackSize();
void i();
void update();
boolean a_(EntityHuman entityhuman);

View file

@ -2,48 +2,48 @@ package net.minecraft.server;
public class InventoryCraftResult implements IInventory {
private ItemStack[] a = new ItemStack[1];
private ItemStack[] items = new ItemStack[1];
// CraftBukkit start
public ItemStack[] getContents() {
return a;
return items;
}
// CraftBukkit end
public InventoryCraftResult() {}
public int q_() {
public int getSize() {
return 1;
}
public ItemStack c_(int i) {
return this.a[i];
public ItemStack getItem(int i) {
return this.items[i];
}
public String c() {
public String getName() {
return "Result";
}
public ItemStack a(int i, int j) {
if (this.a[i] != null) {
ItemStack itemstack = this.a[i];
if (this.items[i] != null) {
ItemStack itemstack = this.items[i];
this.a[i] = null;
this.items[i] = null;
return itemstack;
} else {
return null;
}
}
public void a(int i, ItemStack itemstack) {
this.a[i] = itemstack;
public void setItem(int i, ItemStack itemstack) {
this.items[i] = itemstack;
}
public int r_() {
public int getMaxStackSize() {
return 64;
}
public void i() {}
public void update() {}
public boolean a_(EntityHuman entityhuman) {
return true;

View file

@ -2,59 +2,59 @@ package net.minecraft.server;
public class InventoryCrafting implements IInventory {
private ItemStack[] a;
private ItemStack[] items;
private int b;
private Container c;
// CraftBukkit start
public ItemStack[] getContents() {
return a;
return items;
}
// CraftBukkit end
public InventoryCrafting(Container container, int i, int j) {
int k = i * j;
this.a = new ItemStack[k];
this.items = new ItemStack[k];
this.c = container;
this.b = i;
}
public int q_() {
return this.a.length;
public int getSize() {
return this.items.length;
}
public ItemStack c_(int i) {
return i >= this.q_() ? null : this.a[i];
public ItemStack getItem(int i) {
return i >= this.getSize() ? null : this.items[i];
}
public ItemStack b(int i, int j) {
if (i >= 0 && i < this.b) {
int k = i + j * this.b;
return this.c_(k);
return this.getItem(k);
} else {
return null;
}
}
public String c() {
public String getName() {
return "Crafting";
}
public ItemStack a(int i, int j) {
if (this.a[i] != null) {
if (this.items[i] != null) {
ItemStack itemstack;
if (this.a[i].count <= j) {
itemstack = this.a[i];
this.a[i] = null;
if (this.items[i].count <= j) {
itemstack = this.items[i];
this.items[i] = null;
this.c.a((IInventory) this);
return itemstack;
} else {
itemstack = this.a[i].a(j);
if (this.a[i].count == 0) {
this.a[i] = null;
itemstack = this.items[i].a(j);
if (this.items[i].count == 0) {
this.items[i] = null;
}
this.c.a((IInventory) this);
@ -65,16 +65,16 @@ public class InventoryCrafting implements IInventory {
}
}
public void a(int i, ItemStack itemstack) {
this.a[i] = itemstack;
public void setItem(int i, ItemStack itemstack) {
this.items[i] = itemstack;
this.c.a((IInventory) this);
}
public int r_() {
public int getMaxStackSize() {
return 64;
}
public void i() {}
public void update() {}
public boolean a_(EntityHuman entityhuman) {
return true;

View file

@ -8,9 +8,9 @@ public class InventoryLargeChest implements IInventory {
// CraftBukkit start
public ItemStack[] getContents() {
ItemStack[] result = new ItemStack[q_()];
ItemStack[] result = new ItemStack[getSize()];
for (int i = 0; i < result.length; i++) {
result[i] = c_(i);
result[i] = getItem(i);
}
return result;
}
@ -22,37 +22,37 @@ public class InventoryLargeChest implements IInventory {
this.c = iinventory1;
}
public int q_() {
return this.b.q_() + this.c.q_();
public int getSize() {
return this.b.getSize() + this.c.getSize();
}
public String c() {
public String getName() {
return this.a;
}
public ItemStack c_(int i) {
return i >= this.b.q_() ? this.c.c_(i - this.b.q_()) : this.b.c_(i);
public ItemStack getItem(int i) {
return i >= this.b.getSize() ? this.c.getItem(i - this.b.getSize()) : this.b.getItem(i);
}
public ItemStack a(int i, int j) {
return i >= this.b.q_() ? this.c.a(i - this.b.q_(), j) : this.b.a(i, j);
return i >= this.b.getSize() ? this.c.a(i - this.b.getSize(), j) : this.b.a(i, j);
}
public void a(int i, ItemStack itemstack) {
if (i >= this.b.q_()) {
this.c.a(i - this.b.q_(), itemstack);
public void setItem(int i, ItemStack itemstack) {
if (i >= this.b.getSize()) {
this.c.setItem(i - this.b.getSize(), itemstack);
} else {
this.b.a(i, itemstack);
this.b.setItem(i, itemstack);
}
}
public int r_() {
return this.b.r_();
public int getMaxStackSize() {
return this.b.getMaxStackSize();
}
public void i() {
this.b.i();
this.c.i();
public void update() {
this.b.update();
this.c.update();
}
public boolean a_(EntityHuman entityhuman) {

View file

@ -2,20 +2,20 @@ package net.minecraft.server;
public class InventoryPlayer implements IInventory {
public ItemStack[] a = new ItemStack[36];
public ItemStack[] b = new ItemStack[4];
public int c = 0;
public ItemStack[] items = new ItemStack[36];
public ItemStack[] armor = new ItemStack[4];
public int itemInHandIndex = 0;
public EntityHuman d; // CraftBukkit - private->public
private ItemStack f;
public boolean e = false;
// CraftBukkit start
public ItemStack[] getContents() {
return a;
return items;
}
public ItemStack[] getArmorContents() {
return b;
return armor;
}
// CraftBukkit end
@ -23,8 +23,8 @@ public class InventoryPlayer implements IInventory {
this.d = entityhuman;
}
public ItemStack b() {
return this.c < 9 && this.c >= 0 ? this.a[this.c] : null;
public ItemStack getItemInHand() {
return this.itemInHandIndex < 9 && this.itemInHandIndex >= 0 ? this.items[this.itemInHandIndex] : null;
}
public static int e() {
@ -32,8 +32,8 @@ public class InventoryPlayer implements IInventory {
}
private int d(int i) {
for (int j = 0; j < this.a.length; ++j) {
if (this.a[j] != null && this.a[j].id == i) {
for (int j = 0; j < this.items.length; ++j) {
if (this.items[j] != null && this.items[j].id == i) {
return j;
}
}
@ -42,8 +42,8 @@ public class InventoryPlayer implements IInventory {
}
private int c(ItemStack itemstack) {
for (int i = 0; i < this.a.length; ++i) {
if (this.a[i] != null && this.a[i].id == itemstack.id && this.a[i].c() && this.a[i].count < this.a[i].b() && this.a[i].count < this.r_() && (!this.a[i].e() || this.a[i].h() == itemstack.h())) {
for (int i = 0; i < this.items.length; ++i) {
if (this.items[i] != null && this.items[i].id == itemstack.id && this.items[i].c() && this.items[i].count < this.items[i].b() && this.items[i].count < this.getMaxStackSize() && (!this.items[i].e() || this.items[i].getData() == itemstack.getData())) {
return i;
}
}
@ -52,8 +52,8 @@ public class InventoryPlayer implements IInventory {
}
private int k() {
for (int i = 0; i < this.a.length; ++i) {
if (this.a[i] == null) {
for (int i = 0; i < this.items.length; ++i) {
if (this.items[i] == null) {
return i;
}
}
@ -73,35 +73,35 @@ public class InventoryPlayer implements IInventory {
if (k < 0) {
return j;
} else {
if (this.a[k] == null) {
this.a[k] = new ItemStack(i, 0, itemstack.h());
if (this.items[k] == null) {
this.items[k] = new ItemStack(i, 0, itemstack.getData());
}
int l = j;
if (j > this.a[k].b() - this.a[k].count) {
l = this.a[k].b() - this.a[k].count;
if (j > this.items[k].b() - this.items[k].count) {
l = this.items[k].b() - this.items[k].count;
}
if (l > this.r_() - this.a[k].count) {
l = this.r_() - this.a[k].count;
if (l > this.getMaxStackSize() - this.items[k].count) {
l = this.getMaxStackSize() - this.items[k].count;
}
if (l == 0) {
return j;
} else {
j -= l;
this.a[k].count += l;
this.a[k].b = 5;
this.items[k].count += l;
this.items[k].b = 5;
return j;
}
}
}
public void f() {
for (int i = 0; i < this.a.length; ++i) {
if (this.a[i] != null && this.a[i].b > 0) {
--this.a[i].b;
for (int i = 0; i < this.items.length; ++i) {
if (this.items[i] != null && this.items[i].b > 0) {
--this.items[i].b;
}
}
}
@ -112,15 +112,15 @@ public class InventoryPlayer implements IInventory {
if (j < 0) {
return false;
} else {
if (--this.a[j].count <= 0) {
this.a[j] = null;
if (--this.items[j].count <= 0) {
this.items[j] = null;
}
return true;
}
}
public boolean a(ItemStack itemstack) {
public boolean canHold(ItemStack itemstack) {
if (!itemstack.f()) {
itemstack.count = this.d(itemstack);
if (itemstack.count == 0) {
@ -131,8 +131,8 @@ public class InventoryPlayer implements IInventory {
int i = this.k();
if (i >= 0) {
this.a[i] = itemstack;
this.a[i].b = 5;
this.items[i] = itemstack;
this.items[i].b = 5;
return true;
} else {
return false;
@ -140,11 +140,11 @@ public class InventoryPlayer implements IInventory {
}
public ItemStack a(int i, int j) {
ItemStack[] aitemstack = this.a;
ItemStack[] aitemstack = this.items;
if (i >= this.a.length) {
aitemstack = this.b;
i -= this.a.length;
if (i >= this.items.length) {
aitemstack = this.armor;
i -= this.items.length;
}
if (aitemstack[i] != null) {
@ -167,12 +167,12 @@ public class InventoryPlayer implements IInventory {
}
}
public void a(int i, ItemStack itemstack) {
ItemStack[] aitemstack = this.a;
public void setItem(int i, ItemStack itemstack) {
ItemStack[] aitemstack = this.items;
if (i >= aitemstack.length) {
i -= aitemstack.length;
aitemstack = this.b;
aitemstack = this.armor;
}
aitemstack[i] = itemstack;
@ -181,8 +181,8 @@ public class InventoryPlayer implements IInventory {
public float a(Block block) {
float f = 1.0F;
if (this.a[this.c] != null) {
f *= this.a[this.c].a(block);
if (this.items[this.itemInHandIndex] != null) {
f *= this.items[this.itemInHandIndex].a(block);
}
return f;
@ -192,20 +192,20 @@ public class InventoryPlayer implements IInventory {
int i;
NBTTagCompound nbttagcompound;
for (i = 0; i < this.a.length; ++i) {
if (this.a[i] != null) {
for (i = 0; i < this.items.length; ++i) {
if (this.items[i] != null) {
nbttagcompound = new NBTTagCompound();
nbttagcompound.a("Slot", (byte) i);
this.a[i].a(nbttagcompound);
this.items[i].a(nbttagcompound);
nbttaglist.a((NBTBase) nbttagcompound);
}
}
for (i = 0; i < this.b.length; ++i) {
if (this.b[i] != null) {
for (i = 0; i < this.armor.length; ++i) {
if (this.armor[i] != null) {
nbttagcompound = new NBTTagCompound();
nbttagcompound.a("Slot", (byte) (i + 100));
this.b[i].a(nbttagcompound);
this.armor[i].a(nbttagcompound);
nbttaglist.a((NBTBase) nbttagcompound);
}
}
@ -214,51 +214,51 @@ public class InventoryPlayer implements IInventory {
}
public void b(NBTTagList nbttaglist) {
this.a = new ItemStack[36];
this.b = new ItemStack[4];
this.items = new ItemStack[36];
this.armor = new ItemStack[4];
for (int i = 0; i < nbttaglist.c(); ++i) {
NBTTagCompound nbttagcompound = (NBTTagCompound) nbttaglist.a(i);
int j = nbttagcompound.c("Slot") & 255;
ItemStack itemstack = new ItemStack(nbttagcompound);
if (itemstack.a() != null) {
if (j >= 0 && j < this.a.length) {
this.a[j] = itemstack;
if (itemstack.getItem() != null) {
if (j >= 0 && j < this.items.length) {
this.items[j] = itemstack;
}
if (j >= 100 && j < this.b.length + 100) {
this.b[j - 100] = itemstack;
if (j >= 100 && j < this.armor.length + 100) {
this.armor[j - 100] = itemstack;
}
}
}
}
public int q_() {
return this.a.length + 4;
public int getSize() {
return this.items.length + 4;
}
public ItemStack c_(int i) {
ItemStack[] aitemstack = this.a;
public ItemStack getItem(int i) {
ItemStack[] aitemstack = this.items;
if (i >= aitemstack.length) {
i -= aitemstack.length;
aitemstack = this.b;
aitemstack = this.armor;
}
return aitemstack[i];
}
public String c() {
public String getName() {
return "Inventory";
}
public int r_() {
public int getMaxStackSize() {
return 64;
}
public int a(Entity entity) {
ItemStack itemstack = this.c_(this.c);
ItemStack itemstack = this.getItem(this.itemInHandIndex);
return itemstack != null ? itemstack.a(entity) : 1;
}
@ -267,7 +267,7 @@ public class InventoryPlayer implements IInventory {
if (block.material != Material.STONE && block.material != Material.ORE && block.material != Material.SNOW_BLOCK && block.material != Material.SNOW_LAYER) {
return true;
} else {
ItemStack itemstack = this.c_(this.c);
ItemStack itemstack = this.getItem(this.itemInHandIndex);
return itemstack != null ? itemstack.b(block) : false;
}
@ -278,15 +278,15 @@ public class InventoryPlayer implements IInventory {
int j = 0;
int k = 0;
for (int l = 0; l < this.b.length; ++l) {
if (this.b[l] != null && this.b[l].a() instanceof ItemArmor) {
int i1 = this.b[l].i();
int j1 = this.b[l].g();
for (int l = 0; l < this.armor.length; ++l) {
if (this.armor[l] != null && this.armor[l].getItem() instanceof ItemArmor) {
int i1 = this.armor[l].i();
int j1 = this.armor[l].g();
int k1 = i1 - j1;
j += k1;
k += i1;
int l1 = ((ItemArmor) this.b[l].a()).bj;
int l1 = ((ItemArmor) this.armor[l].getItem()).bj;
i += l1;
}
@ -300,12 +300,12 @@ public class InventoryPlayer implements IInventory {
}
public void c(int i) {
for (int j = 0; j < this.b.length; ++j) {
if (this.b[j] != null && this.b[j].a() instanceof ItemArmor) {
this.b[j].a(i, this.d);
if (this.b[j].count == 0) {
this.b[j].a(this.d);
this.b[j] = null;
for (int j = 0; j < this.armor.length; ++j) {
if (this.armor[j] != null && this.armor[j].getItem() instanceof ItemArmor) {
this.armor[j].damage(i, this.d);
if (this.armor[j].count == 0) {
this.armor[j].a(this.d);
this.armor[j] = null;
}
}
}
@ -314,22 +314,22 @@ public class InventoryPlayer implements IInventory {
public void h() {
int i;
for (i = 0; i < this.a.length; ++i) {
if (this.a[i] != null) {
this.d.a(this.a[i], true);
this.a[i] = null;
for (i = 0; i < this.items.length; ++i) {
if (this.items[i] != null) {
this.d.a(this.items[i], true);
this.items[i] = null;
}
}
for (i = 0; i < this.b.length; ++i) {
if (this.b[i] != null) {
this.d.a(this.b[i], true);
this.b[i] = null;
for (i = 0; i < this.armor.length; ++i) {
if (this.armor[i] != null) {
this.d.a(this.armor[i], true);
this.armor[i] = null;
}
}
}
public void i() {
public void update() {
this.e = true;
}

View file

@ -21,7 +21,7 @@ public class ItemBed extends Item {
++j;
BlockBed blockbed = (BlockBed) Block.BED;
int i1 = MathHelper.b((double) (entityhuman.yaw * 4.0F / 360.0F) + 0.5D) & 3;
int i1 = MathHelper.floor((double) (entityhuman.yaw * 4.0F / 360.0F) + 0.5D) & 3;
byte b0 = 0;
byte b1 = 0;
@ -44,7 +44,7 @@ public class ItemBed extends Item {
if (world.isEmpty(i, j, k) && world.isEmpty(i + b0, j, k + b1) && world.d(i, j - 1, k) && world.d(i + b0, j - 1, k + b1)) {
BlockState blockState = CraftBlockState.getBlockState(world, i, j, k); // CraftBukkit
world.b(i, j, k, blockbed.id, i1);
world.setTypeIdAndData(i, j, k, blockbed.id, i1);
// CraftBukkit start - bed
BlockPlaceEvent event = CraftEventFactory.callBlockPlaceEvent(world, entityhuman, blockState, clickedX, clickedY, clickedZ, blockbed);
@ -55,7 +55,7 @@ public class ItemBed extends Item {
}
// CraftBukkit end
world.b(i + b0, j, k + b1, blockbed.id, i1 + 8);
world.setTypeIdAndData(i + b0, j, k + b1, blockbed.id, i1 + 8);
--itemstack.count;
return true;
} else {

View file

@ -9,11 +9,11 @@ import org.bukkit.event.block.BlockPlaceEvent;
public class ItemBlock extends Item {
private int a;
private int id;
public ItemBlock(int i) {
super(i);
this.a = i + 256;
this.id = i + 256;
this.b(Block.byId[i + 256].a(2));
}
@ -50,64 +50,64 @@ public class ItemBlock extends Item {
if (itemstack.count == 0) {
return false;
} else {
if (world.a(this.a, i, j, k, false)) {
Block block = Block.byId[this.a];
} else if (world.a(this.id, i, j, k, false)) {
Block block = Block.byId[this.id];
// CraftBukkit start - This executes the placement of the block
BlockState replacedBlockState = CraftBlockState.getBlockState(world, i, j, k);
// CraftBukkit start - This executes the placement of the block
BlockState replacedBlockState = CraftBlockState.getBlockState(world, i, j, k);
// Special case the silly stepstone :'(
if (l == 1 && world.getTypeId(i, j - 1, k) == Block.STEP.id && itemstack.id == Block.STEP.id) {
replacedBlockState = CraftBlockState.getBlockState(world, i, j - 1, k);
}
/**
* @see net.minecraft.server.World#b(int i, int j, int k, int l, int i1)
*
* This replaces world.b(IIIII), we're doing this because we need to
* hook between the 'placement' and the informing to 'world' so we can
* sanely undo this.
*
* Whenever the call to 'world.b' changes we need to figure out again what to
* replace this with.
*/
if (world.setTypeIdAndData(i, j, k, a, a(itemstack.h()))) { // <-- world.b does this to place the block
BlockPlaceEvent event = CraftEventFactory.callBlockPlaceEvent(world, entityhuman, replacedBlockState, clickedX, clickedY, clickedZ, block);
// Special case the silly stepstone :'(
if (l == 1 && world.getTypeId(i, j - 1, k) == Block.STEP.id && itemstack.id == Block.STEP.id) {
replacedBlockState = CraftBlockState.getBlockState(world, i, j - 1, k);
}
/**
* @see net.minecraft.server.World#setTypeIdAndData(int i, int j, int k, int l, int i1)
*
* This replaces world.setTypeIdAndData(IIIII), we're doing this because we need to
* hook between the 'placement' and the informing to 'world' so we can
* sanely undo this.
*
* Whenever the call to 'world.setTypeIdAndData' changes we need to figure out again what to
* replace this with.
*/
if (world.setRawTypeIdAndData(i, j, k, this.id, this.filterData(itemstack.getData()))) { // <-- world.setTypeIdAndData does this to place the block
BlockPlaceEvent event = CraftEventFactory.callBlockPlaceEvent(world, entityhuman, replacedBlockState, clickedX, clickedY, clickedZ, block);
if (event.isCancelled() || !event.canBuild()) {
// CraftBukkit Undo!
if (event.isCancelled() || !event.canBuild()) {
// CraftBukkit Undo!
if ((this.a == Block.STEP.id) && (world.getTypeId(i, j - 1, k) == Block.DOUBLE_STEP.id) && (world.getTypeId(i, j, k) == 0)) {
// Half steps automatically set the block below to a double
world.setTypeId(i, j - 1, k, 44);
} else {
if (this.a == Block.ICE.id) {
// Ice will explode if we set straight to 0
world.setTypeId(i, j, k, 20);
}
world.setTypeIdAndData(i, j, k, replacedBlockState.getTypeId(), replacedBlockState.getRawData());
}
if ((this.id == Block.STEP.id) && (world.getTypeId(i, j - 1, k) == Block.DOUBLE_STEP.id) && (world.getTypeId(i, j, k) == 0)) {
// Half steps automatically set the block below to a double
world.setTypeId(i, j - 1, k, 44);
} else {
world.f(i, j, k, a); // <-- world.b does this on success (tell the world)
Block.byId[this.a].d(world, i, j, k, l);
Block.byId[this.a].a(world, i, j, k, (EntityLiving) entityhuman);
world.a((double) ((float) i + 0.5F), (double) ((float) j + 0.5F), (double) ((float) k + 0.5F), block.stepSound.c(), (block.stepSound.a() + 1.0F) / 2.0F, block.stepSound.b() * 0.8F);
--itemstack.count;
if (this.id == Block.ICE.id) {
// Ice will explode if we set straight to 0
world.setTypeId(i, j, k, 20);
}
world.setTypeIdAndData(i, j, k, replacedBlockState.getTypeId(), replacedBlockState.getRawData());
}
// CraftBukkit end
} else {
world.update(i, j, k, this.id); // <-- world.setTypeIdAndData does this on success (tell the world)
Block.byId[this.id].postPlace(world, i, j, k, l);
Block.byId[this.id].postPlace(world, i, j, k, entityhuman);
world.makeSound((double) ((float) i + 0.5F), (double) ((float) j + 0.5F), (double) ((float) k + 0.5F), block.stepSound.getName(), (block.stepSound.getVolume1() + 1.0F) / 2.0F, block.stepSound.getVolume2() * 0.8F);
--itemstack.count;
}
// CraftBukkit end
}
return true;
} else {
return false;
}
}
public String a() {
return Block.byId[this.a].f();
return Block.byId[this.id].f();
}
}

View file

@ -20,35 +20,35 @@ public class ItemBoat extends Item {
double d0 = entityhuman.lastX + (entityhuman.locX - entityhuman.lastX) * (double) f;
double d1 = entityhuman.lastY + (entityhuman.locY - entityhuman.lastY) * (double) f + 1.62D - (double) entityhuman.height;
double d2 = entityhuman.lastZ + (entityhuman.locZ - entityhuman.lastZ) * (double) f;
Vec3D vec3d = Vec3D.b(d0, d1, d2);
float f3 = MathHelper.b(-f2 * 0.017453292F - 3.1415927F);
float f4 = MathHelper.a(-f2 * 0.017453292F - 3.1415927F);
float f5 = -MathHelper.b(-f1 * 0.017453292F);
float f6 = MathHelper.a(-f1 * 0.017453292F);
Vec3D vec3d = Vec3D.create(d0, d1, d2);
float f3 = MathHelper.cos(-f2 * 0.017453292F - 3.1415927F);
float f4 = MathHelper.sin(-f2 * 0.017453292F - 3.1415927F);
float f5 = -MathHelper.cos(-f1 * 0.017453292F);
float f6 = MathHelper.sin(-f1 * 0.017453292F);
float f7 = f4 * f5;
float f8 = f3 * f5;
double d3 = 5.0D;
Vec3D vec3d1 = vec3d.c((double) f7 * d3, (double) f6 * d3, (double) f8 * d3);
MovingObjectPosition movingobjectposition = world.a(vec3d, vec3d1, true);
Vec3D vec3d1 = vec3d.add((double) f7 * d3, (double) f6 * d3, (double) f8 * d3);
MovingObjectPosition movingobjectposition = world.rayTrace(vec3d, vec3d1, true);
if (movingobjectposition == null) {
return itemstack;
} else {
if (movingobjectposition.a == EnumMovingObjectType.TILE) {
if (movingobjectposition.type == EnumMovingObjectType.TILE) {
int i = movingobjectposition.b;
int j = movingobjectposition.c;
int k = movingobjectposition.d;
if (!world.isStatic) {
// CraftBukkit start - Boat placement
PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(entityhuman, Action.RIGHT_CLICK_BLOCK, i, j, k, movingobjectposition.e, itemstack);
PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(entityhuman, Action.RIGHT_CLICK_BLOCK, i, j, k, movingobjectposition.face, itemstack);
if (event.isCancelled()) {
return itemstack;
}
// CraftBukkit end
world.a((Entity) (new EntityBoat(world, (double) ((float) i + 0.5F), (double) ((float) j + 1.5F), (double) ((float) k + 0.5F))));
world.addEntity(new EntityBoat(world, (double) ((float) i + 0.5F), (double) ((float) j + 1.5F), (double) ((float) k + 0.5F)));
}
--itemstack.count;

View file

@ -25,21 +25,21 @@ public class ItemBucket extends Item {
double d0 = entityhuman.lastX + (entityhuman.locX - entityhuman.lastX) * (double) f;
double d1 = entityhuman.lastY + (entityhuman.locY - entityhuman.lastY) * (double) f + 1.62D - (double) entityhuman.height;
double d2 = entityhuman.lastZ + (entityhuman.locZ - entityhuman.lastZ) * (double) f;
Vec3D vec3d = Vec3D.b(d0, d1, d2);
float f3 = MathHelper.b(-f2 * 0.017453292F - 3.1415927F);
float f4 = MathHelper.a(-f2 * 0.017453292F - 3.1415927F);
float f5 = -MathHelper.b(-f1 * 0.017453292F);
float f6 = MathHelper.a(-f1 * 0.017453292F);
Vec3D vec3d = Vec3D.create(d0, d1, d2);
float f3 = MathHelper.cos(-f2 * 0.017453292F - 3.1415927F);
float f4 = MathHelper.sin(-f2 * 0.017453292F - 3.1415927F);
float f5 = -MathHelper.cos(-f1 * 0.017453292F);
float f6 = MathHelper.sin(-f1 * 0.017453292F);
float f7 = f4 * f5;
float f8 = f3 * f5;
double d3 = 5.0D;
Vec3D vec3d1 = vec3d.c((double) f7 * d3, (double) f6 * d3, (double) f8 * d3);
MovingObjectPosition movingobjectposition = world.a(vec3d, vec3d1, this.a == 0);
Vec3D vec3d1 = vec3d.add((double) f7 * d3, (double) f6 * d3, (double) f8 * d3);
MovingObjectPosition movingobjectposition = world.rayTrace(vec3d, vec3d1, this.a == 0);
if (movingobjectposition == null) {
return itemstack;
} else {
if (movingobjectposition.a == EnumMovingObjectType.TILE) {
if (movingobjectposition.type == EnumMovingObjectType.TILE) {
int i = movingobjectposition.b;
int j = movingobjectposition.c;
int k = movingobjectposition.d;
@ -61,7 +61,7 @@ public class ItemBucket extends Item {
byte data = itemInHand.getData() == null ? (byte) 0 : itemInHand.getData().getData();
// CraftBukkit end
world.e(i, j, k, 0);
world.setTypeId(i, j, k, 0);
return new ItemStack(itemInHand.getTypeId(), itemInHand.getAmount(), data); // CraftBukkit
}
@ -77,13 +77,13 @@ public class ItemBucket extends Item {
byte data = itemInHand.getData() == null ? (byte) 0 : itemInHand.getData().getData();
// CraftBukkit end
world.e(i, j, k, 0);
world.setTypeId(i, j, k, 0);
return new ItemStack(itemInHand.getTypeId(), itemInHand.getAmount(), data ); // CraftBukkit
}
} else {
if (this.a < 0) {
// CraftBukkit start
PlayerBucketEmptyEvent event = CraftEventFactory.callPlayerBucketEmptyEvent(entityhuman, i, j, k, movingobjectposition.e, itemstack);
PlayerBucketEmptyEvent event = CraftEventFactory.callPlayerBucketEmptyEvent(entityhuman, i, j, k, movingobjectposition.face, itemstack);
if (event.isCancelled()) {
return itemstack;
@ -96,47 +96,47 @@ public class ItemBucket extends Item {
}
int clickedX = i, clickedY = j, clickedZ = k; // CraftBukkit
if (movingobjectposition.e == 0) {
if (movingobjectposition.face == 0) {
--j;
}
if (movingobjectposition.e == 1) {
if (movingobjectposition.face == 1) {
++j;
}
if (movingobjectposition.e == 2) {
if (movingobjectposition.face == 2) {
--k;
}
if (movingobjectposition.e == 3) {
if (movingobjectposition.face == 3) {
++k;
}
if (movingobjectposition.e == 4) {
if (movingobjectposition.face == 4) {
--i;
}
if (movingobjectposition.e == 5) {
if (movingobjectposition.face == 5) {
++i;
}
if (world.isEmpty(i, j, k) || !world.getMaterial(i, j, k).isBuildable()) {
// CraftBukkit start
PlayerBucketEmptyEvent event = CraftEventFactory.callPlayerBucketEmptyEvent(entityhuman, clickedX, clickedY, clickedZ, movingobjectposition.e, itemstack);
PlayerBucketEmptyEvent event = CraftEventFactory.callPlayerBucketEmptyEvent(entityhuman, clickedX, clickedY, clickedZ, movingobjectposition.face, itemstack);
if (event.isCancelled()) {
return itemstack;
}
// CraftBukkit end
if (world.m.d && this.a == Block.WATER.id) {
world.a(d0 + 0.5D, d1 + 0.5D, d2 + 0.5D, "random.fizz", 0.5F, 2.6F + (world.k.nextFloat() - world.k.nextFloat()) * 0.8F);
if (world.worldProvider.d && this.a == Block.WATER.id) {
world.makeSound(d0 + 0.5D, d1 + 0.5D, d2 + 0.5D, "random.fizz", 0.5F, 2.6F + (world.random.nextFloat() - world.random.nextFloat()) * 0.8F);
for (int l = 0; l < 8; ++l) {
world.a("largesmoke", (double) i + Math.random(), (double) j + Math.random(), (double) k + Math.random(), 0.0D, 0.0D, 0.0D);
}
} else {
world.b(i, j, k, this.a, 0);
world.setTypeIdAndData(i, j, k, this.a, 0);
}
// CraftBukkit start
@ -146,9 +146,9 @@ public class ItemBucket extends Item {
// CraftBukkit end
}
}
} else if (this.a == 0 && movingobjectposition.g instanceof EntityCow) {
} else if (this.a == 0 && movingobjectposition.entity instanceof EntityCow) {
// CraftBukkit start -- This codepath seems to be *NEVER* called
Location loc = movingobjectposition.g.getBukkitEntity().getLocation();
Location loc = movingobjectposition.entity.getBukkitEntity().getLocation();
PlayerBucketFillEvent event = CraftEventFactory.callPlayerBucketFillEvent(entityhuman, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), -1, itemstack, Item.MILK_BUCKET);
if (event.isCancelled()) {

View file

@ -32,10 +32,10 @@ public class ItemDoor extends Item {
block = Block.IRON_DOOR_BLOCK;
}
if (!block.a(world, i, j, k)) {
if (!block.canPlace(world, i, j, k)) {
return false;
} else {
int i1 = MathHelper.b((double) ((entityhuman.yaw + 180.0F) * 4.0F / 360.0F) - 0.5D) & 3;
int i1 = MathHelper.floor((double) ((entityhuman.yaw + 180.0F) * 4.0F / 360.0F) - 0.5D) & 3;
byte b0 = 0;
byte b1 = 0;
@ -74,8 +74,8 @@ public class ItemDoor extends Item {
BlockState blockState = CraftBlockState.getBlockState(world, i, j, k); // CraftBukkit
world.e(i, j, k, block.id);
world.c(i, j, k, i1);
world.setTypeId(i, j, k, block.id);
world.setData(i, j, k, i1);
// CraftBukkit start - bed
BlockPlaceEvent event = CraftEventFactory.callBlockPlaceEvent(world, entityhuman, blockState, clickedX, clickedY, clickedZ, block);
@ -86,8 +86,8 @@ public class ItemDoor extends Item {
}
// CraftBukkit end
world.e(i, j + 1, k, block.id);
world.c(i, j + 1, k, i1 + 8);
world.setTypeId(i, j + 1, k, block.id);
world.setData(i, j + 1, k, i1 + 8);
--itemstack.count;
return true;
}

View file

@ -63,15 +63,15 @@ public class ItemFlintAndSteel extends Item {
boolean preventFire = eventIgnite.isCancelled();
if (preventFire) {
itemstack.a(1, entityhuman);
itemstack.damage(1, entityhuman);
return false;
}
// CraftBukkit end
BlockState blockState = CraftBlockState.getBlockState(world, i, j, k); // CraftBukkit
world.a((double) i + 0.5D, (double) j + 0.5D, (double) k + 0.5D, "fire.ignite", 1.0F, b.nextFloat() * 0.4F + 0.8F);
world.e(i, j, k, Block.FIRE.id);
world.makeSound((double) i + 0.5D, (double) j + 0.5D, (double) k + 0.5D, "fire.ignite", 1.0F, b.nextFloat() * 0.4F + 0.8F);
world.setTypeId(i, j, k, Block.FIRE.id);
// CraftBukkit start
BlockPlaceEvent placeEvent = CraftEventFactory.callBlockPlaceEvent(world, entityhuman, blockState, clickedX, clickedY, clickedZ, Block.FIRE.id);
@ -83,7 +83,7 @@ public class ItemFlintAndSteel extends Item {
// CraftBukkit end
}
itemstack.a(1, entityhuman);
itemstack.damage(1, entityhuman);
return true;
}
}

View file

@ -24,13 +24,13 @@ public class ItemHoe extends Item {
} else {
Block block = Block.SOIL;
world.a((double) ((float) i + 0.5F), (double) ((float) j + 0.5F), (double) ((float) k + 0.5F), block.stepSound.c(), (block.stepSound.a() + 1.0F) / 2.0F, block.stepSound.b() * 0.8F);
world.makeSound((double) ((float) i + 0.5F), (double) ((float) j + 0.5F), (double) ((float) k + 0.5F), block.stepSound.getName(), (block.stepSound.getVolume1() + 1.0F) / 2.0F, block.stepSound.getVolume2() * 0.8F);
if (world.isStatic) {
return true;
} else {
BlockState blockState = CraftBlockState.getBlockState(world, i, j, k); // CraftBukkit
world.e(i, j, k, block.id);
world.setTypeId(i, j, k, block.id);
// CraftBukkit start - Hoes - blockface -1 for 'SELF'
BlockPlaceEvent event = CraftEventFactory.callBlockPlaceEvent(world, entityhuman, blockState, i, j, k, block);
@ -40,19 +40,19 @@ public class ItemHoe extends Item {
}
// CraftBukkit end
itemstack.a(1, entityhuman);
if (world.k.nextInt(8) == 0 && i1 == Block.GRASS.id) {
itemstack.damage(1, entityhuman);
if (world.random.nextInt(8) == 0 && i1 == Block.GRASS.id) {
byte b0 = 1;
for (int j1 = 0; j1 < b0; ++j1) {
float f = 0.7F;
float f1 = world.k.nextFloat() * f + (1.0F - f) * 0.5F;
float f1 = world.random.nextFloat() * f + (1.0F - f) * 0.5F;
float f2 = 1.2F;
float f3 = world.k.nextFloat() * f + (1.0F - f) * 0.5F;
float f3 = world.random.nextFloat() * f + (1.0F - f) * 0.5F;
EntityItem entityitem = new EntityItem(world, (double) ((float) i + f1), (double) ((float) j + f2), (double) ((float) k + f3), new ItemStack(Item.SEEDS));
entityitem.c = 10;
world.a((Entity) entityitem);
entityitem.pickupDelay = 10;
world.addEntity(entityitem);
}
}

View file

@ -12,14 +12,14 @@ import org.bukkit.event.player.PlayerInteractEvent;
public class ItemInWorldManager {
private World b;
public EntityHuman a;
private World world;
public EntityHuman player;
private float c = 0.0F;
private int d;
private int e;
private int f;
private int g;
private int h;
private int currentTick;
private boolean i;
private int j;
private int k;
@ -27,18 +27,18 @@ public class ItemInWorldManager {
private int m;
public ItemInWorldManager(World world) {
this.b = world;
this.world = world;
}
public void a() {
this.h = (int) (System.currentTimeMillis() / 50); // CraftBukkit
this.currentTick = (int) (System.currentTimeMillis() / 50); // CraftBukkit
if (this.i) {
int i = this.h - this.m;
int j = this.b.getTypeId(this.j, this.k, this.l);
int i = this.currentTick - this.m;
int j = this.world.getTypeId(this.j, this.k, this.l);
if (j != 0) {
Block block = Block.byId[j];
float f = block.a(this.a) * (float) (i + 1);
float f = block.getDamage(this.player) * (float) (i + 1);
if (f >= 1.0F) {
this.i = false;
@ -51,9 +51,9 @@ public class ItemInWorldManager {
}
// CraftBukkit added face
public void a(int i, int j, int k, int face) {
public void dig(int i, int j, int k, int face) {
this.d = (int) (System.currentTimeMillis() / 50); // CraftBukkit
int l = this.b.getTypeId(i, j, k);
int l = this.world.getTypeId(i, j, k);
// CraftBukkit start
// Swings at air do *NOT* exist.
@ -61,30 +61,30 @@ public class ItemInWorldManager {
return;
}
PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.a, Action.LEFT_CLICK_BLOCK , i, j, k, face, this.a.inventory.b());
PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.player, Action.LEFT_CLICK_BLOCK , i, j, k, face, this.player.inventory.getItemInHand());
if (event.useInteractedBlock() == Event.Result.DENY) {
// If we denied a door from opening, we need to send a correcting update to the client, as it already opened the door.
if (l == Block.WOODEN_DOOR.id) {
// For some reason *BOTH* the bottom/top part have to be marked updated.
boolean bottom = (this.b.getData(i, j, k) & 8) == 0;
((EntityPlayer) this.a).a.b((Packet) (new Packet53BlockChange(i, j, k, this.b)));
((EntityPlayer) this.a).a.b((Packet) (new Packet53BlockChange(i, j + (bottom ? 1 : -1), k, this.b)));
boolean bottom = (this.world.getData(i, j, k) & 8) == 0;
((EntityPlayer) this.player).netServerHandler.sendPacket(new Packet53BlockChange(i, j, k, this.world));
((EntityPlayer) this.player).netServerHandler.sendPacket(new Packet53BlockChange(i, j + (bottom ? 1 : -1), k, this.world));
}
} else {
Block.byId[l].b(this.b, i, j, k, this.a);
Block.byId[l].b(this.world, i, j, k, this.player);
}
// Handle hitting a block
float toolDamage = Block.byId[l].a(this.a);
float toolDamage = Block.byId[l].getDamage(this.player);
if (event.useItemInHand() == Event.Result.DENY) {
// If we 'insta destroyed' then the client needs to be informed.
if (toolDamage > 1.0f) {
((EntityPlayer) this.a).a.b((Packet) (new Packet53BlockChange(i, j, k, this.b)));
((EntityPlayer) this.player).netServerHandler.sendPacket(new Packet53BlockChange(i, j, k, this.world));
}
return;
}
BlockDamageEvent blockEvent = CraftEventFactory.callBlockDamageEvent(this.a, i, j, k, this.a.inventory.b(), toolDamage >= 1.0f);
BlockDamageEvent blockEvent = CraftEventFactory.callBlockDamageEvent(this.player, i, j, k, this.player.inventory.getItemInHand(), toolDamage >= 1.0f);
if (blockEvent.isCancelled()) {
return;
@ -106,13 +106,13 @@ public class ItemInWorldManager {
public void b(int i, int j, int k) {
if (i == this.e && j == this.f && k == this.g) {
this.h = (int) (System.currentTimeMillis() / 50); // CraftBukkit
int l = this.h - this.d;
int i1 = this.b.getTypeId(i, j, k);
this.currentTick = (int) (System.currentTimeMillis() / 50); // CraftBukkit
int l = this.currentTick - this.d;
int i1 = this.world.getTypeId(i, j, k);
if (i1 != 0) {
Block block = Block.byId[i1];
float f = block.a(this.a) * (float) (l + 1);
float f = block.getDamage(this.player) * (float) (l + 1);
if (f >= 1.0F) {
this.d(i, j, k);
@ -126,21 +126,20 @@ public class ItemInWorldManager {
}
// CraftBukkit start -- force blockreset to client
} else {
((EntityPlayer) this.a).a.b((Packet) (new Packet53BlockChange(i, j, k, this.b)));
((EntityPlayer) this.player).netServerHandler.sendPacket(new Packet53BlockChange(i, j, k, this.world));
// CraftBukkit end
}
this.c = 0.0F;
this.e = 0;
}
public boolean c(int i, int j, int k) {
Block block = Block.byId[this.b.getTypeId(i, j, k)];
int l = this.b.getData(i, j, k);
boolean flag = this.b.e(i, j, k, 0);
Block block = Block.byId[this.world.getTypeId(i, j, k)];
int l = this.world.getData(i, j, k);
boolean flag = this.world.setTypeId(i, j, k, 0);
if (block != null && flag) {
block.b(this.b, i, j, k, l);
block.postBreak(this.world, i, j, k, l);
}
return flag;
@ -148,10 +147,10 @@ public class ItemInWorldManager {
public boolean d(int i, int j, int k) {
// CraftBukkit start
if (this.a instanceof EntityPlayer) {
CraftServer server = ((WorldServer) this.b).getServer();
org.bukkit.block.Block block = ((WorldServer) this.b).getWorld().getBlockAt(i, j, k);
org.bukkit.entity.Player player = (org.bukkit.entity.Player) this.a.getBukkitEntity();
if (this.player instanceof EntityPlayer) {
CraftServer server = ((WorldServer) this.world).getServer();
org.bukkit.block.Block block = ((WorldServer) this.world).getWorld().getBlockAt(i, j, k);
org.bukkit.entity.Player player = (org.bukkit.entity.Player) this.player.getBukkitEntity();
BlockBreakEvent event = new BlockBreakEvent(block,player);
server.getPluginManager().callEvent(event);
@ -162,44 +161,44 @@ public class ItemInWorldManager {
}
// CraftBukkit end
int l = this.b.getTypeId(i, j, k);
int i1 = this.b.getData(i, j, k);
int l = this.world.getTypeId(i, j, k);
int i1 = this.world.getData(i, j, k);
boolean flag = this.c(i, j, k);
ItemStack itemstack = this.a.A();
ItemStack itemstack = this.player.A();
if (itemstack != null) {
itemstack.a(l, i, j, k, this.a);
itemstack.a(l, i, j, k, this.player);
if (itemstack.count == 0) {
itemstack.a(this.a);
this.a.B();
itemstack.a(this.player);
this.player.B();
}
}
if (flag && this.a.b(Block.byId[l])) {
Block.byId[l].a(this.b, this.a, i, j, k, i1);
((EntityPlayer) this.a).a.b((Packet) (new Packet53BlockChange(i, j, k, this.b)));
if (flag && this.player.b(Block.byId[l])) {
Block.byId[l].a(this.world, this.player, i, j, k, i1);
((EntityPlayer) this.player).netServerHandler.sendPacket(new Packet53BlockChange(i, j, k, this.world));
}
return flag;
}
public boolean a(EntityHuman entityhuman, World world, ItemStack itemstack) {
public boolean useItem(EntityHuman entityhuman, World world, ItemStack itemstack) {
int i = itemstack.count;
ItemStack itemstack1 = itemstack.a(world, entityhuman);
if (itemstack1 == itemstack && (itemstack1 == null || itemstack1.count == i)) {
return false;
} else {
entityhuman.inventory.a[entityhuman.inventory.c] = itemstack1;
entityhuman.inventory.items[entityhuman.inventory.itemInHandIndex] = itemstack1;
if (itemstack1.count == 0) {
entityhuman.inventory.a[entityhuman.inventory.c] = null;
entityhuman.inventory.items[entityhuman.inventory.itemInHandIndex] = null;
}
return true;
}
}
public boolean a(EntityHuman entityhuman, World world, ItemStack itemstack, int i, int j, int k, int l) {
public boolean interact(EntityHuman entityhuman, World world, ItemStack itemstack, int i, int j, int k, int l) {
int i1 = world.getTypeId(i, j, k);
// CraftBukkit start - Interact
@ -210,18 +209,18 @@ public class ItemInWorldManager {
// If we denied a door from opening, we need to send a correcting update to the client, as it already opened the door.
if (i1 == Block.WOODEN_DOOR.id) {
boolean bottom = (world.getData(i, j, k) & 8) == 0;
((EntityPlayer) entityhuman).a.b((Packet) (new Packet53BlockChange(i, j + (bottom ? 1 : -1), k, world)));
((EntityPlayer) entityhuman).netServerHandler.sendPacket(new Packet53BlockChange(i, j + (bottom ? 1 : -1), k, world));
}
} else {
result = Block.byId[i1].a(world, i, j, k, entityhuman);
result = Block.byId[i1].interact(world, i, j, k, entityhuman);
if (itemstack != null && !result) {
result = itemstack.a(entityhuman, world, i, j, k, l);
result = itemstack.placeItem(entityhuman, world, i, j, k, l);
}
}
// If we have 'true' and no explicit deny *or* an explicit allow -- run the item part of the hook
if (itemstack != null && ((!result && event.useItemInHand() != Event.Result.DENY) || event.useItemInHand() == Event.Result.ALLOW)) {
this.a(entityhuman, world, itemstack);
this.useItem(entityhuman, world, itemstack);
}
}
return result;

View file

@ -29,7 +29,7 @@ public class ItemMinecart extends Item {
}
// CraftBukkit end
world.a((Entity) (new EntityMinecart(world, (double) ((float) i + 0.5F), (double) ((float) j + 0.5F), (double) ((float) k + 0.5F), this.a)));
world.addEntity(new EntityMinecart(world, (double) ((float) i + 0.5F), (double) ((float) j + 0.5F), (double) ((float) k + 0.5F), this.a));
}
--itemstack.count;

View file

@ -43,10 +43,10 @@ public class ItemRedstone extends Item {
if (!world.isEmpty(i, j, k)) {
return false;
} else {
if (Block.REDSTONE_WIRE.a(world, i, j, k)) {
if (Block.REDSTONE_WIRE.canPlace(world, i, j, k)) {
BlockState blockState = CraftBlockState.getBlockState(world, i, j, k); // CraftBukkit
world.e(i, j, k, Block.REDSTONE_WIRE.id);
world.setTypeId(i, j, k, Block.REDSTONE_WIRE.id);
// CraftBukkit start - redstone
BlockPlaceEvent event = CraftEventFactory.callBlockPlaceEvent(world, entityhuman, blockState, clickedX, clickedY, clickedZ, Block.REDSTONE_WIRE);

View file

@ -9,11 +9,11 @@ import org.bukkit.event.block.BlockPlaceEvent;
public class ItemReed extends Item {
private int a;
private int id;
public ItemReed(int i, Block block) {
super(i);
this.a = block.id;
this.id = block.id;
}
public boolean a(ItemStack itemstack, EntityHuman entityhuman, World world, int i, int j, int k, int l) {
@ -50,33 +50,33 @@ public class ItemReed extends Item {
if (itemstack.count == 0) {
return false;
} else {
if (world.a(this.a, i, j, k, false)) {
Block block = Block.byId[this.a];
if (world.a(this.id, i, j, k, false)) {
Block block = Block.byId[this.id];
// CraftBukkit start - This executes the placement of the block
BlockState replacedBlockState = CraftBlockState.getBlockState(world, i, j, k); // CraftBukkit
/**
* @see net.minecraft.server.World#e(int i, int j, int k, int l)
* @see net.minecraft.server.World#setTypeId(int i, int j, int k, int l)
*
* This replaces world.e(IIII), we're doing this because we need to
* This replaces world.setTypeId(IIII), we're doing this because we need to
* hook between the 'placement' and the informing to 'world' so we can
* sanely undo this.
*
* Whenever the call to 'world.e' changes we need to figure out again what to
* Whenever the call to 'world.setTypeId' changes we need to figure out again what to
* replace this with.
*/
if (world.setTypeId(i, j, k, this.a)) { // <-- world.e does this to place the block
if (world.setRawTypeId(i, j, k, this.id)) { // <-- world.e does this to place the block
BlockPlaceEvent event = CraftEventFactory.callBlockPlaceEvent(world, entityhuman, replacedBlockState, clickedX, clickedY, clickedZ, block);
if (event.isCancelled() || !event.canBuild()) {
// CraftBukkit Undo -- this only has reed, repeater and pie blocks
world.setTypeIdAndData(i, j, k, replacedBlockState.getTypeId(), replacedBlockState.getRawData());
} else {
world.f(i, j, k, a); // <-- world.e does this on success (tell the world)
world.update(i, j, k, this.id); // <-- world.setTypeId does this on success (tell the world)
Block.byId[this.a].d(world, i, j, k, l);
Block.byId[this.a].a(world, i, j, k, (EntityLiving) entityhuman);
world.a((double) ((float) i + 0.5F), (double) ((float) j + 0.5F), (double) ((float) k + 0.5F), block.stepSound.c(), (block.stepSound.a() + 1.0F) / 2.0F, block.stepSound.b() * 0.8F);
Block.byId[this.id].postPlace(world, i, j, k, l);
Block.byId[this.id].postPlace(world, i, j, k, entityhuman);
world.makeSound((double) ((float) i + 0.5F), (double) ((float) j + 0.5F), (double) ((float) k + 0.5F), block.stepSound.getName(), (block.stepSound.getVolume1() + 1.0F) / 2.0F, block.stepSound.getVolume2() * 0.8F);
--itemstack.count;
}
// CraftBukkit end

View file

@ -9,11 +9,11 @@ import org.bukkit.event.block.BlockPlaceEvent;
public class ItemSeeds extends Item {
private int a;
private int id;
public ItemSeeds(int i, int j) {
super(i);
this.a = j;
this.id = j;
}
public boolean a(ItemStack itemstack, EntityHuman entityhuman, World world, int i, int j, int k, int l) {
@ -23,12 +23,12 @@ public class ItemSeeds extends Item {
int i1 = world.getTypeId(i, j, k);
if (i1 == Block.SOIL.id && world.isEmpty(i, j + 1, k)) {
BlockState blockState = CraftBlockState.getBlockState( world, i, j + 1, k); // CraftBukkit
BlockState blockState = CraftBlockState.getBlockState(world, i, j + 1, k); // CraftBukkit
world.e(i, j + 1, k, this.a);
world.setTypeId(i, j + 1, k, this.id);
// CraftBukkit start - seeds
BlockPlaceEvent event = CraftEventFactory.callBlockPlaceEvent(world, entityhuman, blockState, i, j, k, this.a);
BlockPlaceEvent event = CraftEventFactory.callBlockPlaceEvent(world, entityhuman, blockState, i, j, k, this.id);
if (event.isCancelled() || !event.canBuild()) {
event.getBlockPlaced().setTypeId(0);
return false;

View file

@ -42,15 +42,15 @@ public class ItemSign extends Item {
++i;
}
if (!Block.SIGN_POST.a(world, i, j, k)) {
if (!Block.SIGN_POST.canPlace(world, i, j, k)) {
return false;
} else {
BlockState blockState = CraftBlockState.getBlockState(world, i, j, k); // CraftBukkit
if (l == 1) {
world.b(i, j, k, Block.SIGN_POST.id, MathHelper.b((double) ((entityhuman.yaw + 180.0F) * 16.0F / 360.0F) + 0.5D) & 15);
world.setTypeIdAndData(i, j, k, Block.SIGN_POST.id, MathHelper.floor((double) ((entityhuman.yaw + 180.0F) * 16.0F / 360.0F) + 0.5D) & 15);
} else {
world.b(i, j, k, Block.WALL_SIGN.id, l);
world.setTypeIdAndData(i, j, k, Block.WALL_SIGN.id, l);
}
// CraftBukkit start - sign

View file

@ -48,12 +48,12 @@ public final class ItemStack {
return new ItemStack(this.id, i, this.damage);
}
public Item a() {
public Item getItem() {
return Item.byId[this.id];
}
public boolean a(EntityHuman entityhuman, World world, int i, int j, int k, int l) {
boolean flag = this.a().a(this, entityhuman, world, i, j, k, l);
public boolean placeItem(EntityHuman entityhuman, World world, int i, int j, int k, int l) {
boolean flag = this.getItem().a(this, entityhuman, world, i, j, k, l);
if (flag) {
entityhuman.a(StatisticList.A[this.id], 1);
@ -63,11 +63,11 @@ public final class ItemStack {
}
public float a(Block block) {
return this.a().a(this, block);
return this.getItem().a(this, block);
}
public ItemStack a(World world, EntityHuman entityhuman) {
return this.a().a(this, world, entityhuman);
return this.getItem().a(this, world, entityhuman);
}
public NBTTagCompound a(NBTTagCompound nbttagcompound) {
@ -84,7 +84,7 @@ public final class ItemStack {
}
public int b() {
return this.a().b();
return this.getItem().getMaxStackSize();
}
public boolean c() {
@ -107,7 +107,7 @@ public final class ItemStack {
return this.damage;
}
public int h() {
public int getData() {
return this.damage;
}
@ -115,7 +115,7 @@ public final class ItemStack {
return Item.byId[this.id].d();
}
public void a(int i, Entity entity) {
public void damage(int i, Entity entity) {
if (this.d()) {
this.damage += i;
if (this.damage > this.i()) {
@ -167,7 +167,7 @@ public final class ItemStack {
return new ItemStack(this.id, this.count, this.damage);
}
public static boolean a(ItemStack itemstack, ItemStack itemstack1) {
public static boolean equals(ItemStack itemstack, ItemStack itemstack1) {
return itemstack == null && itemstack1 == null ? true : (itemstack != null && itemstack1 != null ? itemstack.c(itemstack1) : false);
}

View file

@ -24,28 +24,28 @@ import org.bukkit.craftbukkit.command.ColouredConsoleSender;
import org.bukkit.craftbukkit.scheduler.CraftScheduler;
import org.bukkit.craftbukkit.util.ServerShutdownThread;
import org.bukkit.event.world.WorldSaveEvent;
// CraftBukkit
public class MinecraftServer implements Runnable, ICommandListener {
public static Logger a = Logger.getLogger("Minecraft");
public static Logger log = Logger.getLogger("Minecraft");
public static HashMap b = new HashMap();
public NetworkListenThread c;
public PropertyManager d;
// public WorldServer e; // CraftBukkit - removed
public ServerConfigurationManager f;
public ConsoleCommandHandler o; // CraftBukkit - made public
private boolean p = true;
public boolean g = false;
int h = 0;
public NetworkListenThread networkListenThread;
public PropertyManager propertyManager;
// public WorldServer worldServer; // CraftBukkit - removed
public ServerConfigurationManager serverConfigurationManager;
public ConsoleCommandHandler consoleCommandHandler; // CraftBukkit - made public
private boolean isRunning = true;
public boolean isStopped = false;
int ticks = 0;
public String i;
public int j;
private List q = new ArrayList();
private List r = Collections.synchronizedList(new ArrayList());
public EntityTracker k;
public boolean l;
public boolean m;
public boolean n;
public EntityTracker tracker;
public boolean onlineMode;
public boolean spawnAnimals;
public boolean pvpMode;
// CraftBukkit start
public int spawnProtection;
@ -70,64 +70,64 @@ public class MinecraftServer implements Runnable, ICommandListener {
// CraftBukkit end
}
private boolean d() throws UnknownHostException { // CraftBukkit - added throws UnknownHostException
this.o = new ConsoleCommandHandler(this);
private boolean init() throws UnknownHostException { // CraftBukkit - added throws UnknownHostException
this.consoleCommandHandler = new ConsoleCommandHandler(this);
ThreadCommandReader threadcommandreader = new ThreadCommandReader(this);
threadcommandreader.setDaemon(true);
threadcommandreader.start();
ConsoleLogManager.a(this); // Craftbukkit
ConsoleLogManager.init(this); // Craftbukkit
// CraftBukkit start
System.setOut(new PrintStream(new LoggerOutputStream(a, Level.INFO), true));
System.setErr(new PrintStream(new LoggerOutputStream(a, Level.SEVERE), true));
System.setOut(new PrintStream(new LoggerOutputStream(log, Level.INFO), true));
System.setErr(new PrintStream(new LoggerOutputStream(log, Level.SEVERE), true));
// CraftBukkit end
a.info("Starting minecraft server version Beta 1.4");
log.info("Starting minecraft server version Beta 1.3");
if (Runtime.getRuntime().maxMemory() / 1024L / 1024L < 512L) {
a.warning("**** NOT ENOUGH RAM!");
a.warning("To start the server with more ram, launch it as \"java -Xmx1024M -Xms1024M -jar minecraft_server.jar\"");
log.warning("**** NOT ENOUGH RAM!");
log.warning("To start the server with more ram, launch it as \"java -Xmx1024M -Xms1024M -jar minecraft_server.jar\"");
}
a.info("Loading properties");
this.d = new PropertyManager(options); // CraftBukkit
String s = this.d.a("server-ip", "");
log.info("Loading properties");
this.propertyManager = new PropertyManager(new File("server.properties"));
String s = this.propertyManager.getString("server-ip", "");
this.l = this.d.a("online-mode", true);
this.m = this.d.a("spawn-animals", true);
this.n = this.d.a("pvp", true);
this.spawnProtection = this.d.a("spawn-protection", 16); // CraftBukkit Configurable spawn protection start
this.onlineMode = this.propertyManager.getBoolean("online-mode", true);
this.spawnAnimals = this.propertyManager.getBoolean("spawn-animals", true);
this.pvpMode = this.propertyManager.getBoolean("pvp", true);
this.spawnProtection = this.propertyManager.getInt("spawn-protection", 16); // CraftBukkit Configurable spawn protection start
InetAddress inetaddress = null;
if (s.length() > 0) {
inetaddress = InetAddress.getByName(s);
}
int i = this.d.a("server-port", 25565);
int i = this.propertyManager.getInt("server-port", 25565);
a.info("Starting Minecraft server on " + (s.length() == 0 ? "*" : s) + ":" + i);
log.info("Starting Minecraft server on " + (s.length() == 0 ? "*" : s) + ":" + i);
try {
this.c = new NetworkListenThread(this, inetaddress, i);
this.networkListenThread = new NetworkListenThread(this, inetaddress, i);
} catch (Throwable ioexception) { // CraftBukkit - IOException -> Throwable
a.warning("**** FAILED TO BIND TO PORT!");
a.log(Level.WARNING, "The exception was: " + ioexception.toString());
a.warning("Perhaps a server is already running on that port?");
log.warning("**** FAILED TO BIND TO PORT!");
log.log(Level.WARNING, "The exception was: " + ioexception.toString());
log.warning("Perhaps a server is already running on that port?");
return false;
}
if (!this.l) {
a.warning("**** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!");
a.warning("The server will make no attempt to authenticate usernames. Beware.");
a.warning("While this makes the game possible to play without internet access, it also opens up the ability for hackers to connect with any username they choose.");
a.warning("To change this, set \"online-mode\" to \"true\" in the server.settings file.");
if (!this.onlineMode) {
log.warning("**** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!");
log.warning("The server will make no attempt to authenticate usernames. Beware.");
log.warning("While this makes the game possible to play without internet access, it also opens up the ability for hackers to connect with any username they choose.");
log.warning("To change this, set \"online-mode\" to \"true\" in the server.settings file.");
}
this.f = new ServerConfigurationManager(this);
this.k = new EntityTracker(this);
this.serverConfigurationManager = new ServerConfigurationManager(this);
this.tracker = new EntityTracker(this);
long j = System.nanoTime();
String s1 = this.d.a("level-name", "world");
String s2 = this.d.a("level-seed", "");
String s1 = this.propertyManager.getString("level-name", "world");
String s2 = this.propertyManager.getString("level-seed", "");
long k = (new Random()).nextLong();
if (s2.length() > 0) {
@ -138,41 +138,41 @@ public class MinecraftServer implements Runnable, ICommandListener {
}
}
a.info("Preparing level \"" + s1 + "\"");
log.info("Preparing level \"" + s1 + "\"");
this.a(new WorldLoaderServer(new File(".")), s1, k);
// CraftBukkit start
long elapsed = System.nanoTime() - j;
String time = String.format( "%.3fs", elapsed / 10000000000.0D );
a.info("Done (" + time + ")! For help, type \"help\" or \"?\"");
log.info("Done (" + time + ")! For help, type \"help\" or \"?\"");
// CraftBukkit end
return true;
}
private void a(Convertable convertable, String s, long i) {
if (convertable.a(s)) {
a.info("Converting map!");
convertable.a(s, new ConvertProgressUpdater(this));
if (convertable.isConvertable(s)) {
log.info("Converting map!");
convertable.convert(s, new ConvertProgressUpdater(this));
}
a.info("Preparing start region");
log.info("Preparing start region");
// CraftBukkit start
WorldServer world = new WorldServer(this, new ServerNBTManager(new File("."), s, true), s, this.d.a("hellworld", false) ? -1 : 0, i);
world.a(new WorldManager(this, world));
world.j = this.d.a("spawn-monsters", true) ? 1 : 0;
world.a(this.d.a("spawn-monsters", true), this.m);
this.f.a(world);
WorldServer world = new WorldServer(this, new ServerNBTManager(new File("."), s, true), s, this.propertyManager.getBoolean("hellworld", false) ? -1 : 0, i);
world.addIWorldAccess(new WorldManager(this, world));
world.spawnMonsters = this.propertyManager.getBoolean("spawn-monsters", true) ? 1 : 0;
world.setSpawnFlags(this.propertyManager.getBoolean("spawn-monsters", true), this.spawnAnimals);
this.serverConfigurationManager.setPlayerFileData(world);
worlds.add(world);
// CraftBukkit end
short short1 = 196;
long j = System.currentTimeMillis();
ChunkCoordinates chunkcoordinates = worlds.get(0).m(); // CraftBukkit
ChunkCoordinates chunkcoordinates = world.getSpawn(); // CraftBukkit
for (int k = -short1; k <= short1 && this.p; k += 16) {
for (int l = -short1; l <= short1 && this.p; l += 16) {
for (int k = -short1; k <= short1 && this.isRunning; k += 16) {
for (int l = -short1; l <= short1 && this.isRunning; l += 16) {
long i1 = System.currentTimeMillis();
if (i1 < j) {
@ -189,9 +189,9 @@ public class MinecraftServer implements Runnable, ICommandListener {
// CraftBukkit start
for (WorldServer worldserver: worlds) {
world.u.c(chunkcoordinates.a + k >> 4, chunkcoordinates.c + l >> 4);
world.chunkProviderServer.getChunkAt(chunkcoordinates.x + k >> 4, chunkcoordinates.z + l >> 4);
while (world.f() && this.p) {
while (world.doLighting() && this.isRunning) {
;
}
}
@ -205,7 +205,7 @@ public class MinecraftServer implements Runnable, ICommandListener {
private void a(String s, int i) {
this.i = s;
this.j = i;
a.info(s + ": " + i + "%");
log.info(s + ": " + i + "%");
}
private void e() {
@ -215,66 +215,66 @@ public class MinecraftServer implements Runnable, ICommandListener {
server.loadPlugins(); // CraftBukkit
}
void f() { // CraftBukkit - private -> default
a.info("Saving chunks");
void saveChunks() { // CraftBukkit - private -> default
log.info("Saving chunks");
// CraftBukkit start
for (WorldServer world: worlds) {
world.a(true, (IProgressUpdate) null);
world.t();
world.save(true, (IProgressUpdate) null);
world.saveLevel();
WorldSaveEvent event = new WorldSaveEvent( world.getWorld() );
server.getPluginManager().callEvent( event );
}
this.f.d(); // CraftBukkit - player data should be saved whenever a save happens.
this.serverConfigurationManager.savePlayers(); // CraftBukkit - player data should be saved whenever a save happens.
// CraftBukkit end
}
public void g() { // Craftbukkit: private -> public
a.info("Stopping server");
public void stop() { // Craftbukkit: private -> public
log.info("Stopping server");
// CraftBukkit start
if (server != null) {
server.disablePlugins();
}
// CraftBukkit end
if (this.f != null) {
this.f.d();
if (this.serverConfigurationManager != null) {
this.serverConfigurationManager.savePlayers();
}
if (this.worlds.size() > 0) { // CraftBukkit
this.f();
this.saveChunks();
}
}
public void a() {
this.p = false;
this.isRunning = false;
}
public void run() {
try {
if (this.d()) {
if (this.init()) {
long i = System.currentTimeMillis();
for (long j = 0L; this.p; Thread.sleep(1L)) {
for (long j = 0L; this.isRunning; Thread.sleep(1L)) {
long k = System.currentTimeMillis();
long l = k - i;
if (l > 2000L) {
a.warning("Can\'t keep up! Did the system time change, or is the server overloaded?");
log.warning("Can\'t keep up! Did the system time change, or is the server overloaded?");
l = 2000L;
}
if (l < 0L) {
a.warning("Time ran backwards! Did the system time change?");
log.warning("Time ran backwards! Did the system time change?");
l = 0L;
}
j += l;
i = k;
// CraftBukkit - TODO - Replace with loop?
if (this.worlds.size() > 0 && this.worlds.get(0).s()) {
if (this.worlds.size() > 0 && this.worlds.get(0).everyoneDeeplySleeping()) {
this.h();
j = 0L;
} else {
@ -285,7 +285,7 @@ public class MinecraftServer implements Runnable, ICommandListener {
}
}
} else {
while (this.p) {
while (this.isRunning) {
this.b();
try {
@ -297,9 +297,9 @@ public class MinecraftServer implements Runnable, ICommandListener {
}
} catch (Throwable throwable) {
throwable.printStackTrace();
a.log(Level.SEVERE, "Unexpected exception", throwable);
log.log(Level.SEVERE, "Unexpected exception", throwable);
while (this.p) {
while (this.isRunning) {
this.b();
try {
@ -310,8 +310,8 @@ public class MinecraftServer implements Runnable, ICommandListener {
}
} finally {
try {
this.g();
this.g = true;
this.stop();
this.isStopped = true;
} catch (Throwable throwable1) {
throwable1.printStackTrace();
} finally {
@ -343,31 +343,31 @@ public class MinecraftServer implements Runnable, ICommandListener {
AxisAlignedBB.a();
Vec3D.a();
++this.h;
++this.ticks;
// CraftBukkit start
if (this.h % 20 == 0) {
for (int i = 0; i < this.f.b.size(); ++i) {
EntityPlayer entityplayer = (EntityPlayer) this.f.b.get(i);
entityplayer.a.b((Packet) (new Packet4UpdateTime(entityplayer.world.l())));
if (this.ticks % 20 == 0) {
for (int i = 0; i < this.serverConfigurationManager.players.size(); ++i) {
EntityPlayer entityplayer = (EntityPlayer) this.serverConfigurationManager.players.get(i);
entityplayer.netServerHandler.sendPacket(new Packet4UpdateTime(entityplayer.world.getTime()));
}
}
((CraftScheduler) server.getScheduler()).mainThreadHeartbeat(this.h);
((CraftScheduler) server.getScheduler()).mainThreadHeartbeat(this.ticks);
for (WorldServer world: worlds) {
world.h();
world.doTick();
while (world.f()) {
while (world.doLighting()) {
;
}
world.e();
world.cleanUp();
}
// CraftBukkit end
this.c.a();
this.f.b();
this.k.a();
this.networkListenThread.a();
this.serverConfigurationManager.b();
this.tracker.a();
for (j = 0; j < this.q.size(); ++j) {
((IUpdatePlayerListBox) this.q.get(j)).a();
@ -376,11 +376,11 @@ public class MinecraftServer implements Runnable, ICommandListener {
try {
this.b();
} catch (Exception exception) {
a.log(Level.WARNING, "Unexpected exception while parsing console command", exception);
log.log(Level.WARNING, "Unexpected exception while parsing console command", exception);
}
}
public void a(String s, ICommandListener icommandlistener) {
public void issueCommand(String s, ICommandListener icommandlistener) {
this.r.add(new ServerCommand(s, icommandlistener));
}
@ -388,8 +388,8 @@ public class MinecraftServer implements Runnable, ICommandListener {
while (this.r.size() > 0) {
ServerCommand servercommand = (ServerCommand) this.r.remove(0);
// this.consoleCommandHandler.a(servercommand); // CraftBukkit - Removed its now called in server.displatchCommand
server.dispatchCommand(console, servercommand); // CraftBukkit
// this.o.a(servercommand); // CraftBukkit - Removed its now called in server.displatchCommand
}
}
@ -405,7 +405,7 @@ public class MinecraftServer implements Runnable, ICommandListener {
(new ThreadServerApplication("Server thread", minecraftserver)).start();
} catch (Exception exception) {
a.log(Level.SEVERE, "Failed to start the minecraft server", exception);
log.log(Level.SEVERE, "Failed to start the minecraft server", exception);
}
}
@ -413,19 +413,19 @@ public class MinecraftServer implements Runnable, ICommandListener {
return new File(s);
}
public void b(String s) {
a.info(s);
public void sendMessage(String s) {
log.info(s);
}
public void c(String s) {
a.warning(s);
log.warning(s);
}
public String c() {
public String getName() {
return "CONSOLE";
}
public static boolean a(MinecraftServer minecraftserver) {
return minecraftserver.p;
public static boolean isRunning(MinecraftServer minecraftserver) {
return minecraftserver.isRunning;
}
}

View file

@ -8,23 +8,23 @@ public class NetLoginHandler extends NetHandler {
public static Logger a = Logger.getLogger("Minecraft");
private static Random d = new Random();
public NetworkManager b;
public NetworkManager networkManager;
public boolean c = false;
private MinecraftServer e;
private MinecraftServer server;
private int f = 0;
private String g = null;
private Packet1Login h = null;
private String i = "";
public NetLoginHandler(MinecraftServer minecraftserver, Socket socket, String s) {
this.e = minecraftserver;
this.b = new NetworkManager(socket, s, this);
this.b.d = 0;
this.server = minecraftserver;
this.networkManager = new NetworkManager(socket, s, this);
this.networkManager.d = 0;
}
// CraftBukkit start
public Socket getSocket() {
return b.f;
return networkManager.socket;
}
// CraftBukkit end
@ -35,17 +35,17 @@ public class NetLoginHandler extends NetHandler {
}
if (this.f++ == 600) {
this.a("Took too long to log in");
this.disconnect("Took too long to log in");
} else {
this.b.a();
this.networkManager.a();
}
}
public void a(String s) {
public void disconnect(String s) {
try {
a.info("Disconnecting " + this.b() + ": " + s);
this.b.a((Packet) (new Packet255KickDisconnect(s)));
this.b.c();
this.networkManager.a((Packet) (new Packet255KickDisconnect(s)));
this.networkManager.c();
this.c = true;
} catch (Exception exception) {
exception.printStackTrace();
@ -53,50 +53,47 @@ public class NetLoginHandler extends NetHandler {
}
public void a(Packet2Handshake packet2handshake) {
if (this.e.l) {
if (this.server.onlineMode) {
this.i = Long.toHexString(d.nextLong());
this.b.a((Packet) (new Packet2Handshake(this.i)));
this.networkManager.a((Packet) (new Packet2Handshake(this.i)));
} else {
this.b.a((Packet) (new Packet2Handshake("-")));
this.networkManager.a((Packet) (new Packet2Handshake("-")));
}
}
public void a(Packet1Login packet1login) {
this.g = packet1login.b;
this.g = packet1login.name;
if (packet1login.a != 10) {
if (packet1login.a > 10) {
this.a("Outdated server!");
this.disconnect("Outdated server!");
} else {
this.a("Outdated client!");
this.disconnect("Outdated client!");
}
} else {
if (!this.e.l) {
if (!this.server.onlineMode) {
this.b(packet1login);
} else {
(new ThreadLoginVerifier(this, packet1login, e.server)).start();
(new ThreadLoginVerifier(this, packet1login, this.server.server)).start();
}
}
}
public void b(Packet1Login packet1login) {
EntityPlayer entityplayer = this.e.f.a(this, packet1login.b, packet1login.c);
EntityPlayer entityplayer = this.server.serverConfigurationManager.a(this, packet1login.name, packet1login.c);
if (entityplayer != null) {
a.info(this.b() + " logged in with entity id " + entityplayer.id);
NetServerHandler netserverhandler = new NetServerHandler(this.e, this.b, entityplayer);
ChunkCoordinates chunkcoordinates = entityplayer.world.getSpawn(); // CraftBukkit
NetServerHandler netserverhandler = new NetServerHandler(this.server, this.networkManager, entityplayer);
// CraftBukkit start
ChunkCoordinates chunkcoordinates = entityplayer.world.m();
netserverhandler.b((Packet) (new Packet1Login("", "", entityplayer.id, entityplayer.world.k(), (byte) entityplayer.world.m.g)));
netserverhandler.b((Packet) (new Packet6SpawnPosition(chunkcoordinates.a, chunkcoordinates.b, chunkcoordinates.c)));
// this.e.f.a((Packet) (new Packet3Chat("\u00A7e" + entityplayer.name + " joined the game."))); // CraftBukkit - message moved to join event
this.e.f.a(entityplayer);
netserverhandler.sendPacket(new Packet1Login("", "", entityplayer.id, entityplayer.world.getSeed(), (byte) entityplayer.world.worldProvider.dimension)); // CraftBukkit
netserverhandler.sendPacket(new Packet6SpawnPosition(chunkcoordinates.x, chunkcoordinates.y, chunkcoordinates.z));
// this.server.serverConfigurationManager.sendAll(new Packet3Chat("\u00A7e" + entityplayer.name + " joined the game.")); // CraftBukkit - message moved to join event
this.server.serverConfigurationManager.a(entityplayer);
netserverhandler.a(entityplayer.locX, entityplayer.locY, entityplayer.locZ, entityplayer.yaw, entityplayer.pitch);
this.e.c.a(netserverhandler);
netserverhandler.b((Packet) (new Packet4UpdateTime(entityplayer.world.l())));
// CraftBukkit end
entityplayer.m();
this.server.networkListenThread.a(netserverhandler);
netserverhandler.sendPacket(new Packet4UpdateTime(entityplayer.world.getTime())); // CraftBukkit
entityplayer.syncInventory();
}
this.c = true;
@ -108,11 +105,11 @@ public class NetLoginHandler extends NetHandler {
}
public void a(Packet packet) {
this.a("Protocol error");
this.disconnect("Protocol error");
}
public String b() {
return this.g != null ? this.g + " [" + this.b.b().toString() + "]" : this.b.b().toString();
return this.g != null ? this.g + " [" + this.networkManager.getSocketAddress().toString() + "]" : this.networkManager.getSocketAddress().toString();
}
static String a(NetLoginHandler netloginhandler) {

View file

@ -24,25 +24,25 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
private static final int PLACE_DISTANCE_SQUARED = 6 * 6; // CraftBukkit here for now
public static Logger a = Logger.getLogger("Minecraft");
public NetworkManager b;
public boolean c = false;
private MinecraftServer d;
public EntityPlayer e; // CraftBukkit - private->public
public NetworkManager networkManager;
public boolean disconnected = false;
private MinecraftServer minecraftServer;
public EntityPlayer player; // CraftBukkit - private->public
private int f;
private int g;
private boolean h;
private double i;
private double j;
private double k;
private double x;
private double y;
private double z;
private boolean l = true;
private Map m = new HashMap();
public NetServerHandler(MinecraftServer minecraftserver, NetworkManager networkmanager, EntityPlayer entityplayer) {
this.d = minecraftserver;
this.b = networkmanager;
this.minecraftServer = minecraftserver;
this.networkManager = networkmanager;
networkmanager.a((NetHandler) this);
this.e = entityplayer;
entityplayer.a = this;
this.player = entityplayer;
entityplayer.netServerHandler = this;
// CraftBukkit start
server = minecraftserver.server;
@ -63,42 +63,42 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
private int lastMaterial;
public CraftPlayer getPlayer() {
return (e == null) ? null : (CraftPlayer) e.getBukkitEntity();
return (this.player == null) ? null : (CraftPlayer) player.getBukkitEntity();
}
// CraftBukkit end
public void a() {
this.h = false;
this.b.a();
this.networkManager.a();
if (this.f - this.g > 20) {
this.b((Packet) (new Packet0KeepAlive()));
this.sendPacket(new Packet0KeepAlive());
}
}
public void a(String s) {
public void disconnect(String s) {
// CraftBukkit start
String leaveMessage = "\u00A7e" + this.e.name + " left the game.";
PlayerKickEvent event = new PlayerKickEvent(server.getPlayer(this.e), s, leaveMessage);
String leaveMessage = "\u00A7e" + this.player.name + " left the game.";
PlayerKickEvent event = new PlayerKickEvent(server.getPlayer(this.player), s, leaveMessage);
server.getPluginManager().callEvent(event);
if (event.isCancelled()) {
// Do not kick the player
return;
}
// Send the possibly modified leave message
this.b.a((Packet) (new Packet255KickDisconnect( event.getReason() )));
this.b.c();
this.sendPacket(new Packet255KickDisconnect( event.getReason() ));
this.networkManager.c();
leaveMessage = event.getLeaveMessage();
if (leaveMessage != null) {
this.d.f.a((Packet) (new Packet3Chat(leaveMessage)));
this.minecraftServer.serverConfigurationManager.sendAll(new Packet3Chat(leaveMessage));
}
// CraftBukkit end
this.d.f.c(this.e);
this.c = true;
this.minecraftServer.serverConfigurationManager.disconnect(this.player);
this.disconnected = true;
}
public void a(Packet27 packet27) {
this.e.a(packet27.c(), packet27.e(), packet27.g(), packet27.h(), packet27.d(), packet27.f());
this.player.a(packet27.c(), packet27.e(), packet27.g(), packet27.h(), packet27.d(), packet27.f());
}
public void a(Packet10Flying packet10flying) {
@ -106,8 +106,8 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
double d0;
if (!this.l) {
d0 = packet10flying.b - this.j;
if (packet10flying.a == this.i && d0 * d0 < 0.01D && packet10flying.c == this.k) {
d0 = packet10flying.y - this.y;
if (packet10flying.x == this.x && d0 * d0 < 0.01D && packet10flying.z == this.z) {
this.l = true;
}
}
@ -118,8 +118,8 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
Location to = player.getLocation();
// Prevent 40 event-calls for less than a single pixel of movement >.>
double delta = Math.pow( this.lastPosX - this.i, 2) + Math.pow( this.lastPosY - this.j, 2) + Math.pow( this.lastPosZ - this.k, 2);
float deltaAngle = Math.abs(this.lastYaw - this.e.yaw) + Math.abs(this.lastPitch - this.e.pitch);
double delta = Math.pow( this.lastPosX - this.x, 2) + Math.pow( this.lastPosY - this.y, 2) + Math.pow( this.lastPosZ - this.z, 2);
float deltaAngle = Math.abs(this.lastYaw - this.player.yaw) + Math.abs(this.lastPitch - this.player.pitch);
if (delta > 1f/256 || deltaAngle > 10f) {
// Skip the first time we do this
@ -130,45 +130,45 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
from = event.getFrom();
to = event.isCancelled() ? from : event.getTo();
this.e.locX = to.getX();
this.e.locY = to.getY();
this.e.locZ = to.getZ();
this.e.yaw = to.getYaw();
this.e.pitch = to.getPitch();
this.player.locX = to.getX();
this.player.locY = to.getY();
this.player.locZ = to.getZ();
this.player.yaw = to.getYaw();
this.player.pitch = to.getPitch();
}
this.lastPosX = this.e.locX;
this.lastPosY = this.e.locY;
this.lastPosZ = this.e.locZ;
this.lastYaw = this.e.yaw;
this.lastPitch = this.e.pitch;
this.lastPosX = this.player.locX;
this.lastPosY = this.player.locY;
this.lastPosZ = this.player.locZ;
this.lastYaw = this.player.yaw;
this.lastPitch = this.player.pitch;
}
if (Math.abs(packet10flying.a) > 32000000 || Math.abs(packet10flying.c) > 32000000) {
if (Math.abs(packet10flying.x) > 32000000 || Math.abs(packet10flying.z) > 32000000) {
System.err.println(player.getName() + " was caught trying to crash the server with an invalid position.");
player.kickPlayer("Nope!");
return;
}
if (Double.isNaN(packet10flying.a) || packet10flying.a == Double.POSITIVE_INFINITY || packet10flying.a == Double.NEGATIVE_INFINITY) {
if (Double.isNaN(packet10flying.x) || packet10flying.x == Double.POSITIVE_INFINITY || packet10flying.x == Double.NEGATIVE_INFINITY) {
System.err.println(player.getName() + " was caught trying to set an invalid position.");
player.kickPlayer("Nope!");
return;
}
if (Double.isNaN(packet10flying.b) || packet10flying.b == Double.POSITIVE_INFINITY || packet10flying.b == Double.NEGATIVE_INFINITY) {
if (Double.isNaN(packet10flying.y) || packet10flying.y == Double.POSITIVE_INFINITY || packet10flying.y == Double.NEGATIVE_INFINITY) {
System.err.println(player.getName() + " was caught trying to set an invalid position.");
player.kickPlayer("Nope!");
return;
}
if (Double.isNaN(packet10flying.c) || packet10flying.c == Double.POSITIVE_INFINITY || packet10flying.c == Double.NEGATIVE_INFINITY) {
if (Double.isNaN(packet10flying.z) || packet10flying.z == Double.POSITIVE_INFINITY || packet10flying.z == Double.NEGATIVE_INFINITY) {
System.err.println(player.getName() + " was caught trying to set an invalid position.");
player.kickPlayer("Nope!");
return;
}
if (Double.isNaN(packet10flying.d) || packet10flying.d == Double.POSITIVE_INFINITY || packet10flying.d == Double.NEGATIVE_INFINITY) {
if (Double.isNaN(packet10flying.stance) || packet10flying.stance == Double.POSITIVE_INFINITY || packet10flying.stance == Double.NEGATIVE_INFINITY) {
System.err.println(player.getName() + " was caught trying to set an invalid position.");
player.kickPlayer("Nope!");
return;
@ -181,133 +181,133 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
double d3;
double d4;
if (this.e.vehicle != null) {
float f = this.e.yaw;
float f1 = this.e.pitch;
if (this.player.vehicle != null) {
float f = this.player.yaw;
float f1 = this.player.pitch;
this.e.vehicle.h_();
d1 = this.e.locX;
d2 = this.e.locY;
d3 = this.e.locZ;
this.player.vehicle.h_();
d1 = this.player.locX;
d2 = this.player.locY;
d3 = this.player.locZ;
double d5 = 0.0D;
d4 = 0.0D;
if (packet10flying.i) {
f = packet10flying.e;
f1 = packet10flying.f;
if (packet10flying.hasLook) {
f = packet10flying.yaw;
f1 = packet10flying.pitch;
}
if (packet10flying.h && packet10flying.b == -999.0D && packet10flying.d == -999.0D) {
d5 = packet10flying.a;
d4 = packet10flying.c;
if (packet10flying.h && packet10flying.y == -999.0D && packet10flying.stance == -999.0D) {
d5 = packet10flying.x;
d4 = packet10flying.z;
}
this.e.onGround = packet10flying.g;
this.e.a(true);
this.e.c(d5, 0.0D, d4);
this.e.b(d1, d2, d3, f, f1);
this.e.motX = d5;
this.e.motZ = d4;
if (this.e.vehicle != null) {
this.player.onGround = packet10flying.g;
this.player.a(true);
this.player.move(d5, 0.0D, d4);
this.player.setLocation(d1, d2, d3, f, f1);
this.player.motX = d5;
this.player.motZ = d4;
if (this.player.vehicle != null) {
// CraftBukkit
((WorldServer) this.e.world).b(this.e.vehicle, true);
((WorldServer) this.player.world).vehicleEnteredWorld(this.player.vehicle, true);
}
if (this.e.vehicle != null) {
this.e.vehicle.h_();
if (this.player.vehicle != null) {
this.player.vehicle.h_();
}
this.d.f.b(this.e);
this.i = this.e.locX;
this.j = this.e.locY;
this.k = this.e.locZ;
this.minecraftServer.serverConfigurationManager.b(this.player);
this.x = this.player.locX;
this.y = this.player.locY;
this.z = this.player.locZ;
// CraftBukkit
this.e.world.f(this.e);
((WorldServer) this.player.world).playerJoinedWorld(this.player);
return;
}
d0 = this.e.locY;
this.i = this.e.locX;
this.j = this.e.locY;
this.k = this.e.locZ;
d1 = this.e.locX;
d2 = this.e.locY;
d3 = this.e.locZ;
float f2 = this.e.yaw;
float f3 = this.e.pitch;
d0 = this.player.locY;
this.x = this.player.locX;
this.y = this.player.locY;
this.z = this.player.locZ;
d1 = this.player.locX;
d2 = this.player.locY;
d3 = this.player.locZ;
float f2 = this.player.yaw;
float f3 = this.player.pitch;
if (packet10flying.h && packet10flying.b == -999.0D && packet10flying.d == -999.0D) {
if (packet10flying.h && packet10flying.y == -999.0D && packet10flying.stance == -999.0D) {
packet10flying.h = false;
}
if (packet10flying.h) {
d1 = packet10flying.a;
d2 = packet10flying.b;
d3 = packet10flying.c;
d4 = packet10flying.d - packet10flying.b;
d1 = packet10flying.x;
d2 = packet10flying.y;
d3 = packet10flying.z;
d4 = packet10flying.stance - packet10flying.y;
if (d4 > 1.65D || d4 < 0.1D) {
this.a("Illegal stance");
a.warning(this.e.name + " had an illegal stance: " + d4);
this.disconnect("Illegal stance");
a.warning(this.player.name + " had an illegal stance: " + d4);
d4 = 1.62D; // CraftBukkit - reset the stance to 'the normal' height
}
}
// Craftbukkit start - better fix for invalid position issues; should be fixed in 1.5
d4 = d1 - this.e.locX;
double d6 = d2 - this.e.locY;
double d7 = d3 - this.e.locZ;
d4 = d1 - this.player.locX;
double d6 = d2 - this.player.locY;
double d7 = d3 - this.player.locZ;
float f4 = 0.0625F;
if (d6 > -0.5D || d6 < 0.5D) {
d6 = 0.0D;
}
d7 = d3 - this.e.locZ;
double d8 = d4 * d4 + d6 * d6 + d7 * d7;
boolean flag1 = false;
if (d8 > 6.25D && !this.e.F()) {
flag1 = true;
a.warning(this.e.name + " was caught moving faster than the maximum allowed speed. Possible malicious activity?");
this.a(this.i, this.j, this.k, f2, f3);
return;
}
this.e.c(d4, d6, d7);
d4 = d1 - this.e.locX;
d6 = d2 - this.e.locY;
if (d6 > -0.5D || d6 < 0.5D) {
d6 = 0.0D;
}
d7 = d3 - this.e.locZ;
d7 = d3 - this.player.locZ;
double d8 = d4 * d4 + d6 * d6 + d7 * d7;
boolean flag1 = false;
if (packet10flying.i) {
f2 = packet10flying.e;
f3 = packet10flying.f;
if (d8 > 6.25D && !this.player.isSleeping()) {
flag1 = true;
a.warning(this.player.name + " moved wrongly!");
System.out.println("Got position " + d1 + ", " + d2 + ", " + d3);
System.out.println("Expected " + this.player.locX + ", " + this.player.locY + ", " + this.player.locZ);
}
this.player.move(d4, d6, d7);
d4 = d1 - this.player.locX;
d6 = d2 - this.player.locY;
if (d6 > -0.5D || d6 < 0.5D) {
d6 = 0.0D;
}
d7 = d3 - this.player.locZ;
if (packet10flying.hasLook) {
f2 = packet10flying.yaw;
f3 = packet10flying.pitch;
}
// Craftbukkit end
this.e.a(true);
this.e.bl = 0.0F;
this.e.b(this.i, this.j, this.k, f2, f3);
this.player.a(true);
this.player.bl = 0.0F;
this.player.setLocation(this.x, this.y, this.z, f2, f3);
// CraftBukkit
boolean flag = this.e.world.a(this.e, this.e.boundingBox.b().e((double) f4, (double) f4, (double) f4)).size() == 0;
boolean flag = ((WorldServer) this.player.world).getEntities(this.player, this.player.boundingBox.clone().shrink((double) f4, (double) f4, (double) f4)).size() == 0;
this.e.b(d1, d2, d3, f2, f3);
this.player.setLocation(d1, d2, d3, f2, f3);
// CraftBukkit
boolean flag2 = this.e.world.a(this.e, this.e.boundingBox.b().e((double) f4, (double) f4, (double) f4)).size() == 0;
boolean flag2 = ((WorldServer) this.player.world).getEntities(this.player, this.player.boundingBox.clone().shrink((double) f4, (double) f4, (double) f4)).size() == 0;
if (flag && (flag1 || !flag2) && !this.e.F()) {
this.a(this.i, this.j, this.k, f2, f3);
if (flag && (flag1 || !flag2) && !this.player.isSleeping()) {
this.a(this.x, this.y, this.z, f2, f3);
return;
}
this.e.onGround = packet10flying.g;
this.d.f.b(this.e);
this.e.b(this.e.locY - d0, packet10flying.g);
this.player.onGround = packet10flying.g;
this.minecraftServer.serverConfigurationManager.b(this.player);
this.player.b(this.player.locY - d0, packet10flying.g);
}
}
@ -340,11 +340,11 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
// CraftBukkit end
this.l = false;
this.i = d0;
this.j = d1;
this.k = d2;
this.e.b(d0, d1, d2, f, f1);
this.e.a.b((Packet) (new Packet13PlayerLookMove(d0, d1 + 1.6200000047683716D, d1, d2, f, f1, false)));
this.x = d0;
this.y = d1;
this.z = d2;
this.player.setLocation(d0, d1, d2, f, f1);
this.player.netServerHandler.sendPacket(new Packet13PlayerLookMove(d0, d1 + 1.6200000047683716D, d1, d2, f, f1, false));
// CraftBukkit -- Returns TRUE if the teleport was successful
return !event.isCancelled();
@ -352,10 +352,10 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
public void a(Packet14BlockDig packet14blockdig) {
if (packet14blockdig.e == 4) {
this.e.z();
this.player.z();
} else {
// CraftBukkit
boolean flag = ((WorldServer) this.e.world).v = this.d.f.h(this.e.name);
boolean flag = ((WorldServer) this.player.world).weirdIsOpCache = this.minecraftServer.serverConfigurationManager.isOp(this.player.name);
boolean flag1 = false;
if (packet14blockdig.e == 0) {
@ -371,9 +371,9 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
int k = packet14blockdig.c;
if (flag1) {
double d0 = this.e.locX - ((double) i + 0.5D);
double d1 = this.e.locY - ((double) j + 0.5D);
double d2 = this.e.locZ - ((double) k + 0.5D);
double d0 = this.player.locX - ((double) i + 0.5D);
double d1 = this.player.locY - ((double) j + 0.5D);
double d2 = this.player.locZ - ((double) k + 0.5D);
double d3 = d0 * d0 + d1 * d1 + d2 * d2;
if (d3 > 36.0D) {
@ -382,9 +382,9 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
}
// CraftBukkit
ChunkCoordinates chunkcoordinates = this.e.world.m();
int l = (int) MathHelper.e((float) (i - chunkcoordinates.a));
int i1 = (int) MathHelper.e((float) (k - chunkcoordinates.c));
ChunkCoordinates chunkcoordinates = ((WorldServer) this.player.world).getSpawn();
int l = (int) MathHelper.abs((float) (i - chunkcoordinates.x));
int i1 = (int) MathHelper.abs((float) (k - chunkcoordinates.z));
if (l > i1) {
i1 = l;
@ -392,26 +392,26 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
if (packet14blockdig.e == 0) {
// CraftBukkit
if (i1 > this.d.spawnProtection || flag) {
if (i1 > this.minecraftServer.spawnProtection || flag) {
// CraftBukkit add face argument
this.e.c.a(i, j, k, packet14blockdig.d);
this.player.itemInWorldManager.dig(i, j, k, packet14blockdig.face);
}
} else if (packet14blockdig.e == 2) {
this.e.c.b(i, j, k);
this.player.itemInWorldManager.b(i, j, k);
} else if (packet14blockdig.e == 3) {
double d4 = this.e.locX - ((double) i + 0.5D);
double d5 = this.e.locY - ((double) j + 0.5D);
double d6 = this.e.locZ - ((double) k + 0.5D);
double d4 = this.player.locX - ((double) i + 0.5D);
double d5 = this.player.locY - ((double) j + 0.5D);
double d6 = this.player.locZ - ((double) k + 0.5D);
double d7 = d4 * d4 + d5 * d5 + d6 * d6;
if (d7 < 256.0D) {
// CraftBukkit
this.e.a.b((Packet) (new Packet53BlockChange(i, j, k, this.e.world)));
this.player.netServerHandler.sendPacket(new Packet53BlockChange(i, j, k, this.player.world));
}
}
// CraftBukkit
((WorldServer) this.e.world).v = false;
((WorldServer) this.player.world).weirdIsOpCache = false;
}
}
@ -425,14 +425,14 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
// second one. This sadly has to remain until Mojang makes their packets saner. :(
// -- Grum
if (packet15place.d == 255) {
if (packet15place.e != null && packet15place.e.id == lastMaterial && lastPacket != null && packet15place.j - lastPacket < 100) {
if (packet15place.face == 255) {
if (packet15place.itemstack != null && packet15place.itemstack.id == lastMaterial && lastPacket != null && packet15place.timestamp - lastPacket < 100) {
lastPacket = null;
return;
}
} else {
lastMaterial = packet15place.e == null ? -1 : packet15place.e.id;
lastPacket = packet15place.j;
lastMaterial = packet15place.itemstack == null ? -1 : packet15place.itemstack.id;
lastPacket = packet15place.timestamp;
}
// CraftBukkit if rightclick decremented the item, always send the update packet.
@ -442,20 +442,19 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
// CraftBukkit end
ItemStack itemstack = this.e.inventory.b();
ItemStack itemstack = this.player.inventory.getItemInHand();
// boolean flag = this.minecraftServer.worldServer.weirdIsOpCache = this.minecraftServer.serverConfigurationManager.isOp(this.player.name);
// boolean flag = this.d.e.v = this.d.f.h(this.e.name); // CraftBukkit
if (packet15place.d == 255) {
if (packet15place.face == 255) {
if (itemstack == null) {
return;
}
// CraftBukkit start
int itemstackAmount = itemstack.count;
PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.e, Action.RIGHT_CLICK_AIR, itemstack);
PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.player, Action.RIGHT_CLICK_AIR, itemstack);
if (event.useItemInHand() != Event.Result.DENY) {
this.e.c.a(this.e, this.e.world, itemstack);
this.player.itemInWorldManager.useItem(this.player, this.player.world, itemstack);
}
// CraftBukkit notch decrements the counter by 1 in the above method with food,
@ -467,12 +466,10 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
int i = packet15place.a;
int j = packet15place.b;
int k = packet15place.c;
int l = packet15place.d;
// CraftBukkit
ChunkCoordinates chunkcoordinates = this.e.world.m();
int i1 = (int) MathHelper.e((float) (i - chunkcoordinates.a));
int j1 = (int) MathHelper.e((float) (k - chunkcoordinates.c));
int l = packet15place.face;
ChunkCoordinates chunkcoordinates = ((WorldServer) this.player.world).getSpawn(); // CraftBukkit
int i1 = (int) MathHelper.abs((float) (i - chunkcoordinates.x));
int j1 = (int) MathHelper.abs((float) (k - chunkcoordinates.z));
if (i1 > j1) {
j1 = i1;
@ -485,8 +482,8 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
return;
}
this.e.c.a(this.e, this.e.world, itemstack, i, j, k, l);
this.e.a.b((Packet) (new Packet53BlockChange(i, j, k, this.e.world)));
this.player.itemInWorldManager.interact(this.player, this.player.world, itemstack, i, j, k, l);
this.player.netServerHandler.sendPacket(new Packet53BlockChange(i, j, k, this.player.world));
// CraftBukkit end
if (l == 0) {
@ -514,78 +511,75 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
}
// CraftBukkit
this.e.a.b((Packet) (new Packet53BlockChange(i, j, k, this.e.world)));
this.player.netServerHandler.sendPacket(new Packet53BlockChange(i, j, k, this.player.world));
}
if (itemstack != null && itemstack.count == 0) {
this.e.inventory.a[this.e.inventory.c] = null;
this.player.inventory.items[this.player.inventory.itemInHandIndex] = null;
}
this.e.h = true;
this.e.inventory.a[this.e.inventory.c] = ItemStack.b(this.e.inventory.a[this.e.inventory.c]);
Slot slot = this.e.activeContainer.a(this.e.inventory, this.e.inventory.c);
this.player.h = true;
this.player.inventory.items[this.player.inventory.itemInHandIndex] = ItemStack.b(this.player.inventory.items[this.player.inventory.itemInHandIndex]);
Slot slot = this.player.activeContainer.a(this.player.inventory, this.player.inventory.itemInHandIndex);
this.e.activeContainer.a();
this.e.h = false;
// CraftBukkit
if (!ItemStack.a(this.e.inventory.b(), packet15place.e) || always) {
this.b((Packet) (new Packet103SetSlot(this.e.activeContainer.f, slot.a, this.e.inventory.b())));
this.player.activeContainer.a();
this.player.h = false;
if (!ItemStack.equals(this.player.inventory.getItemInHand(), packet15place.itemstack) || always) { // CraftBukkit
this.sendPacket(new Packet103SetSlot(this.player.activeContainer.f, slot.a, this.player.inventory.getItemInHand()));
}
// CraftBukkit
((WorldServer) this.e.world).v = false;
((WorldServer) this.player.world).weirdIsOpCache = false;
}
public void a(String s, Object[] aobject) {
// CraftBukkit start -- rarely it would send a disconnect line twice
if (!this.c) {
a.info(this.e.name + " lost connection: " + s);
String quitMessage = this.d.f.c(this.e);
if (quitMessage != null) {
this.d.f.a((Packet) (new Packet3Chat(quitMessage)));
}
}
// CraftBukkit end
this.c = true;
if (this.disconnected) return; // CraftBukkit -- rarely it would send a disconnect line twice
a.info(this.player.name + " lost connection: " + s);
this.minecraftServer.serverConfigurationManager.sendAll(new Packet3Chat("\u00A7e" + this.player.name + " left the game."));
this.minecraftServer.serverConfigurationManager.disconnect(this.player);
this.disconnected = true;
}
public void a(Packet packet) {
a.warning(this.getClass() + " wasn\'t prepared to deal with a " + packet.getClass());
this.a("Protocol error, unexpected packet");
this.disconnect("Protocol error, unexpected packet");
}
public void b(Packet packet) {
public void sendPacket(Packet packet) {
// CraftBukkit
if (packet instanceof Packet6SpawnPosition) {
Packet6SpawnPosition packet6 = (Packet6SpawnPosition) packet;
this.e.compassTarget = new Location(getPlayer().getWorld(), packet6.a, packet6.b, packet6.c);
this.player.compassTarget = new Location(getPlayer().getWorld(), packet6.x, packet6.y, packet6.z);
}
// CraftBukkit
this.b.a(packet);
this.networkManager.a(packet);
this.g = this.f;
}
public void a(Packet16BlockItemSwitch packet16blockitemswitch) {
// CraftBukkit start
PlayerItemHeldEvent event = new PlayerItemHeldEvent(getPlayer(), e.inventory.c, packet16blockitemswitch.a);
server.getPluginManager().callEvent(event);
// CraftBukkit end
this.e.inventory.c = packet16blockitemswitch.a;
if (packet16blockitemswitch.itemInHandIndex >= 0 && packet16blockitemswitch.itemInHandIndex <= InventoryPlayer.e()) {
// CraftBukkit start
PlayerItemHeldEvent event = new PlayerItemHeldEvent(getPlayer(), this.player.inventory.itemInHandIndex, packet16blockitemswitch.itemInHandIndex);
server.getPluginManager().callEvent(event);
// CraftBukkit end
this.player.inventory.itemInHandIndex = packet16blockitemswitch.itemInHandIndex;
} else {
a.warning(this.player.name + " tried to set an invalid carried item");
}
}
public void a(Packet3Chat packet3chat) {
String s = packet3chat.a;
if (s.length() > 100) {
this.a("Chat message too long");
this.disconnect("Chat message too long");
} else {
s = s.trim();
for (int i = 0; i < s.length(); ++i) {
if (FontAllowedCharacters.a.indexOf(s.charAt(i)) < 0) {
this.a("Illegal characters in chat");
this.disconnect("Illegal characters in chat");
return;
}
}
@ -597,7 +591,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
public boolean chat(String msg) {
if (msg.startsWith("/")) {
this.c(msg);
this.handleCommand(msg);
return true;
} else {
// CraftBukkit start
@ -621,7 +615,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
}
// CraftBukkit end
private void c(String s) {
private void handleCommand(String s) {
// CraftBukkit start
CraftPlayer player = getPlayer();
@ -648,33 +642,33 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
// CraftBukkit stop
if (s.toLowerCase().startsWith("/me ")) {
s = "* " + this.e.name + " " + s.substring(s.indexOf(" ")).trim();
s = "* " + this.player.name + " " + s.substring(s.indexOf(" ")).trim();
a.info(s);
this.d.f.a((Packet) (new Packet3Chat(s)));
this.minecraftServer.serverConfigurationManager.sendAll(new Packet3Chat(s));
} else if (s.toLowerCase().startsWith("/kill")) {
this.e.a((Entity) null, 1000);
this.player.damageEntity((Entity) null, 1000);
} else if (s.toLowerCase().startsWith("/tell ")) {
String[] astring = s.split(" ");
if (astring.length >= 3) {
s = s.substring(s.indexOf(" ")).trim();
s = s.substring(s.indexOf(" ")).trim();
s = "\u00A77" + this.e.name + " whispers " + s;
s = "\u00A77" + this.player.name + " whispers " + s;
a.info(s + " to " + astring[1]);
if (!this.d.f.a(astring[1], (Packet) (new Packet3Chat(s)))) {
this.b((Packet) (new Packet3Chat("\u00A7cThere\'s no player by that name online.")));
if (!this.minecraftServer.serverConfigurationManager.a(astring[1], (Packet) (new Packet3Chat(s)))) {
this.sendPacket(new Packet3Chat("\u00A7cThere\'s no player by that name online."));
}
}
} else {
String s1;
if (this.d.f.h(this.e.name)) {
if (this.minecraftServer.serverConfigurationManager.isOp(this.player.name)) {
s1 = s.substring(1);
a.info(this.e.name + " issued server command: " + s1);
this.d.a(s1, this);
a.info(this.player.name + " issued server command: " + s1);
this.minecraftServer.issueCommand(s1, this);
} else {
s1 = s.substring(1);
a.info(this.e.name + " tried command: " + s1);
a.info(this.player.name + " tried command: " + s1);
}
}
}
@ -683,25 +677,25 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
if (packet18armanimation.b == 1) {
// CraftBukkit -- raytrace to look for 'rogue armswings'
float f = 1.0F;
float f1 = this.e.lastPitch + (this.e.pitch - this.e.lastPitch) * f;
float f2 = this.e.lastYaw + (this.e.yaw - this.e.lastYaw) * f;
double d0 = this.e.lastX + (this.e.locX - this.e.lastX) * (double) f;
double d1 = this.e.lastY + (this.e.locY - this.e.lastY) * (double) f + 1.62D - (double) this.e.height;
double d2 = this.e.lastZ + (this.e.locZ - this.e.lastZ) * (double) f;
Vec3D vec3d = Vec3D.b(d0, d1, d2);
float f1 = this.player.lastPitch + (this.player.pitch - this.player.lastPitch) * f;
float f2 = this.player.lastYaw + (this.player.yaw - this.player.lastYaw) * f;
double d0 = this.player.lastX + (this.player.locX - this.player.lastX) * (double) f;
double d1 = this.player.lastY + (this.player.locY - this.player.lastY) * (double) f + 1.62D - (double) this.player.height;
double d2 = this.player.lastZ + (this.player.locZ - this.player.lastZ) * (double) f;
Vec3D vec3d = Vec3D.create(d0, d1, d2);
float f3 = MathHelper.b(-f2 * 0.017453292F - 3.1415927F);
float f4 = MathHelper.a(-f2 * 0.017453292F - 3.1415927F);
float f5 = -MathHelper.b(-f1 * 0.017453292F);
float f6 = MathHelper.a(-f1 * 0.017453292F);
float f3 = MathHelper.cos(-f2 * 0.017453292F - 3.1415927F);
float f4 = MathHelper.sin(-f2 * 0.017453292F - 3.1415927F);
float f5 = -MathHelper.cos(-f1 * 0.017453292F);
float f6 = MathHelper.sin(-f1 * 0.017453292F);
float f7 = f4 * f5;
float f8 = f3 * f5;
double d3 = 5.0D;
Vec3D vec3d1 = vec3d.c((double) f7 * d3, (double) f6 * d3, (double) f8 * d3);
MovingObjectPosition movingobjectposition = this.e.world.a(vec3d, vec3d1, true);
Vec3D vec3d1 = vec3d.add((double) f7 * d3, (double) f6 * d3, (double) f8 * d3);
MovingObjectPosition movingobjectposition = this.player.world.rayTrace(vec3d, vec3d1, true);
if (movingobjectposition == null || movingobjectposition.a != EnumMovingObjectType.TILE) {
CraftEventFactory.callPlayerInteractEvent(this.e, Action.LEFT_CLICK_AIR, this.e.inventory.b());
if (movingobjectposition == null || movingobjectposition.type != EnumMovingObjectType.TILE) {
CraftEventFactory.callPlayerInteractEvent(this.player, Action.LEFT_CLICK_AIR, this.player.inventory.getItemInHand());
}
// Arm swing animation
@ -710,13 +704,13 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
server.getPluginManager().callEvent(event);
// CraftBukkit end
this.e.m_();
this.player.m_();
}
}
public void a(Packet19EntityAction packet19entityaction) {
// CraftBukkit: Toggle Sneak
if (packet19entityaction.b == 1 || packet19entityaction.b == 2) {
// CraftBukkit start
if (packet19entityaction.animation == 1 || packet19entityaction.animation == 2) {
Player player = getPlayer();
PlayerToggleSneakEvent event = new PlayerToggleSneakEvent(player);
server.getPluginManager().callEvent(event);
@ -724,107 +718,109 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
return;
}
}
// CraftBukkit: Set Sneaking
// CraftBukkit end
if (packet19entityaction.b == 1) {
this.e.e(true);
} else if (packet19entityaction.b == 2) {
this.e.e(false);
} else if (packet19entityaction.b == 3) {
this.e.a(false, true, true);
if (packet19entityaction.animation == 1) {
this.player.setSneak(true);
} else if (packet19entityaction.animation == 2) {
this.player.setSneak(false);
} else if (packet19entityaction.animation == 3) {
this.player.a(false, true, true);
this.l = false;
}
}
public void a(Packet255KickDisconnect packet255kickdisconnect) {
this.b.a("disconnect.quitting", new Object[0]);
this.networkManager.a("disconnect.quitting", new Object[0]);
}
public int b() {
return this.b.d();
return this.networkManager.d();
}
public void b(String s) {
this.b((Packet) (new Packet3Chat("\u00A77" + s)));
public void sendMessage(String s) {
this.sendPacket(new Packet3Chat("\u00A77" + s));
}
public String c() {
return this.e.name;
public String getName() {
return this.player.name;
}
public void a(Packet7UseEntity packet7useentity) {
// CraftBukkit
Entity entity = ((WorldServer) this.e.world).a(packet7useentity.b);
Entity entity = ((WorldServer) this.player.world).getEntity(packet7useentity.target);
if (entity != null && this.e.e(entity) && this.e.f(entity) < 4.0F) {
if (entity != null && this.player.e(entity) && this.player.f(entity) < 4.0F) {
if (packet7useentity.c == 0) {
this.e.c(entity);
this.player.c(entity);
} else if (packet7useentity.c == 1) {
this.e.d(entity);
this.player.d(entity);
}
}
}
public void a(Packet9Respawn packet9respawn) {
if (this.e.health <= 0) {
this.e = this.d.f.d(this.e);
if (this.player.health <= 0) {
this.player = this.minecraftServer.serverConfigurationManager.d(this.player);
// CraftBukkit start
CraftPlayer player = getPlayer();
player.setHandle(this.e);
player.setHandle(this.player);
// CraftBukkit end
}
}
public void a(Packet101CloseWindow packet101closewindow) {
this.e.w();
this.player.w();
}
public void a(Packet102WindowClick packet102windowclick) {
if (this.e.activeContainer.f == packet102windowclick.a && this.e.activeContainer.c(this.e)) {
ItemStack itemstack = this.e.activeContainer.a(packet102windowclick.b, packet102windowclick.c, this.e);
if (this.player.activeContainer.f == packet102windowclick.a && this.player.activeContainer.c(this.player)) {
ItemStack itemstack = this.player.activeContainer.a(packet102windowclick.b, packet102windowclick.c, this.player);
if (ItemStack.a(packet102windowclick.e, itemstack)) {
this.e.a.b((Packet) (new Packet106Transaction(packet102windowclick.a, packet102windowclick.d, true)));
this.e.h = true;
this.e.activeContainer.a();
this.e.v();
this.e.h = false;
if (ItemStack.equals(packet102windowclick.e, itemstack)) {
this.player.netServerHandler.sendPacket(new Packet106Transaction(packet102windowclick.a, packet102windowclick.d, true));
this.player.h = true;
this.player.activeContainer.a();
this.player.v();
this.player.h = false;
} else {
this.m.put(Integer.valueOf(this.e.activeContainer.f), Short.valueOf(packet102windowclick.d));
this.e.a.b((Packet) (new Packet106Transaction(packet102windowclick.a, packet102windowclick.d, false)));
this.e.activeContainer.a(this.e, false);
this.m.put(Integer.valueOf(this.player.activeContainer.f), Short.valueOf(packet102windowclick.d));
this.player.netServerHandler.sendPacket(new Packet106Transaction(packet102windowclick.a, packet102windowclick.d, false));
this.player.activeContainer.a(this.player, false);
ArrayList arraylist = new ArrayList();
for (int i = 0; i < this.e.activeContainer.e.size(); ++i) {
arraylist.add(((Slot) this.e.activeContainer.e.get(i)).a());
for (int i = 0; i < this.player.activeContainer.e.size(); ++i) {
arraylist.add(((Slot) this.player.activeContainer.e.get(i)).getItem());
}
this.e.a(this.e.activeContainer, arraylist);
this.player.a(this.player.activeContainer, arraylist);
}
}
}
public void a(Packet106Transaction packet106transaction) {
Short oshort = (Short) this.m.get(Integer.valueOf(this.e.activeContainer.f));
Short oshort = (Short) this.m.get(Integer.valueOf(this.player.activeContainer.f));
if (oshort != null && packet106transaction.b == oshort.shortValue() && this.e.activeContainer.f == packet106transaction.a && !this.e.activeContainer.c(this.e)) {
this.e.activeContainer.a(this.e, true);
if (oshort != null && packet106transaction.b == oshort.shortValue() && this.player.activeContainer.f == packet106transaction.a && !this.player.activeContainer.c(this.player)) {
this.player.activeContainer.a(this.player, true);
}
}
public void a(Packet130UpdateSign packet130updatesign) {
// CraftBukkit start
if (this.e.world.f(packet130updatesign.a, packet130updatesign.b, packet130updatesign.c)) {
TileEntity tileentity = this.e.world.getTileEntity(packet130updatesign.a, packet130updatesign.b, packet130updatesign.c);
if (((WorldServer) this.player.world).isLoaded(packet130updatesign.x, packet130updatesign.y, packet130updatesign.z)) {
TileEntity tileentity = ((WorldServer) this.player.world).getTileEntity(packet130updatesign.x, packet130updatesign.y, packet130updatesign.z);
// CraftBukkit end
if (tileentity instanceof TileEntitySign) {
TileEntitySign tileentitysign = (TileEntitySign)tileentity;
TileEntitySign tileentitysign = (TileEntitySign) tileentity;
if (!tileentitysign.a()) {
this.d.c("Player " + this.e.name + " just tried to change non-editable sign");
this.minecraftServer.c("Player " + this.player.name + " just tried to change non-editable sign");
return;
}
}
// CraftBukkit end
int i;
int j;
@ -832,31 +828,31 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
for (j = 0; j < 4; ++j) {
boolean flag = true;
if (packet130updatesign.d[j].length() > 15) {
if (packet130updatesign.lines[j].length() > 15) {
flag = false;
} else {
for (i = 0; i < packet130updatesign.d[j].length(); ++i) {
if (FontAllowedCharacters.a.indexOf(packet130updatesign.d[j].charAt(i)) < 0) {
for (i = 0; i < packet130updatesign.lines[j].length(); ++i) {
if (FontAllowedCharacters.a.indexOf(packet130updatesign.lines[j].charAt(i)) < 0) {
flag = false;
}
}
}
if (!flag) {
packet130updatesign.d[j] = "!?";
packet130updatesign.lines[j] = "!?";
}
}
if (tileentity instanceof TileEntitySign) {
j = packet130updatesign.a;
int k = packet130updatesign.b;
j = packet130updatesign.x;
int k = packet130updatesign.y;
i = packet130updatesign.c;
i = packet130updatesign.z;
TileEntitySign tileentitysign1 = (TileEntitySign) tileentity;
// CraftBukkit start - SIGN_CHANGE hook
Player player = server.getPlayer(this.e);
SignChangeEvent event = new SignChangeEvent((CraftBlock) player.getWorld().getBlockAt(j, k, i), server.getPlayer(this.e), packet130updatesign.d);
Player player = server.getPlayer(this.player);
SignChangeEvent event = new SignChangeEvent((CraftBlock) player.getWorld().getBlockAt(i, k, j), server.getPlayer(this.player), packet130updatesign.lines);
server.getPluginManager().callEvent(event);
if (event.isCancelled()) {
@ -869,13 +865,13 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
// CraftBukkit end
for (int l = 0; l < 4; ++l) {
tileentitysign1.a[l] = event.getLine(l);
tileentitysign1.lines[l] = event.getLine(l);
// CraftBukkit
}
tileentitysign1.i();
tileentitysign1.update();
// CraftBukkit
this.e.world.g(j, k, i);
((WorldServer) this.player.world).notify(i, k, j);
}
}
}

View file

@ -2,15 +2,13 @@ package net.minecraft.server;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.SocketAddress;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.io.IOException; // CraftBukkit
public class NetworkManager {
@ -18,10 +16,10 @@ public class NetworkManager {
public static int b;
public static int c;
private Object e = new Object();
public Socket f; // CraftBukkit private->public
public Socket socket; // CraftBukkit -- private->public
private final SocketAddress g;
private DataInputStream h;
private DataOutputStream i;
private DataInputStream input;
private DataOutputStream output;
private boolean j = true;
private List k = Collections.synchronizedList(new ArrayList());
private List l = Collections.synchronizedList(new ArrayList());
@ -39,25 +37,18 @@ public class NetworkManager {
private int w = 50;
public NetworkManager(Socket socket, String s, NetHandler nethandler) {
this.f = socket;
this.socket = socket;
this.g = socket.getRemoteSocketAddress();
this.n = nethandler;
// Craftbukkit start
try {
socket.setSoTimeout(30000);
socket.setSoTimeout(30000); // Craftbukkit start
socket.setTrafficClass(24);
} catch (SocketException socketexception) {
this.input = new DataInputStream(socket.getInputStream());
this.output = new DataOutputStream(socket.getOutputStream());
} catch (IOException socketexception) {
System.err.println(socketexception.getMessage());
}
try {
this.h = new DataInputStream(socket.getInputStream());
this.i = new DataOutputStream(socket.getOutputStream());
} catch (IOException ex) {
Logger.getLogger(NetworkManager.class.getName()).log(Level.SEVERE, null, ex);
}
// Craftbukkit end
this.q = new NetworkReaderThread(this, s + " read thread");
this.p = new NetworkWriterThread(this, s + " write thread");
@ -90,7 +81,7 @@ public class NetworkManager {
Object object;
Packet packet;
if (!this.l.isEmpty() && (this.d == 0 || System.currentTimeMillis() - ((Packet) this.l.get(0)).j >= (long) this.d)) {
if (!this.l.isEmpty() && (this.d == 0 || System.currentTimeMillis() - ((Packet) this.l.get(0)).timestamp >= (long) this.d)) {
flag = false;
object = this.e;
synchronized (this.e) {
@ -98,10 +89,10 @@ public class NetworkManager {
this.v -= packet.a() + 1;
}
Packet.a(packet, this.i);
Packet.a(packet, this.output);
}
if ((flag || this.w-- <= 0) && !this.m.isEmpty() && (this.d == 0 || System.currentTimeMillis() - ((Packet) this.m.get(0)).j >= (long) this.d)) {
if ((flag || this.w-- <= 0) && !this.m.isEmpty() && (this.d == 0 || System.currentTimeMillis() - ((Packet) this.m.get(0)).timestamp >= (long) this.d)) {
flag = false;
object = this.e;
synchronized (this.e) {
@ -109,7 +100,7 @@ public class NetworkManager {
this.v -= packet.a() + 1;
}
Packet.a(packet, this.i);
Packet.a(packet, this.output);
this.w = 50;
}
@ -127,7 +118,7 @@ public class NetworkManager {
private void f() {
try {
Packet packet = Packet.b(this.h);
Packet packet = Packet.b(this.input);
if (packet != null) {
this.k.add(packet);
@ -155,22 +146,22 @@ public class NetworkManager {
this.j = false;
try {
this.h.close();
this.h = null;
this.input.close();
this.input = null;
} catch (Throwable throwable) {
;
}
try {
this.i.close();
this.i = null;
this.output.close();
this.output = null;
} catch (Throwable throwable1) {
;
}
try {
this.f.close();
this.f = null;
this.socket.close();
this.socket = null;
} catch (Throwable throwable2) {
;
}
@ -203,7 +194,7 @@ public class NetworkManager {
}
}
public SocketAddress b() {
public SocketAddress getSocketAddress() {
return this.g;
}

View file

@ -6,6 +6,7 @@ import java.io.EOFException;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
// Craftbukkit start
import java.net.SocketException;
import java.net.SocketTimeoutException;
@ -15,7 +16,7 @@ public abstract class Packet {
private static Map a = new HashMap();
private static Map b = new HashMap();
public final long j = System.currentTimeMillis();
public final long timestamp = System.currentTimeMillis();
public boolean k = false;
private static HashMap c;
private static int d;

View file

@ -6,11 +6,11 @@ import java.util.List;
class PlayerInstance {
private List b;
private int c;
private int d;
private int chunkX;
private int chunkZ;
private ChunkCoordIntPair e;
private short[] f;
private int g;
private short[] dirtyBlocks;
private int dirtyCount;
private int h;
private int i;
private int j;
@ -18,27 +18,27 @@ class PlayerInstance {
private int l;
private int m;
final PlayerManager a;
final PlayerManager playerManager;
public PlayerInstance(PlayerManager playermanager, int i, int j) {
this.a = playermanager;
this.playerManager = playermanager;
this.b = new ArrayList();
this.f = new short[10];
this.g = 0;
this.c = i;
this.d = j;
this.dirtyBlocks = new short[10];
this.dirtyCount = 0;
this.chunkX = i;
this.chunkZ = j;
this.e = new ChunkCoordIntPair(i, j);
// CraftBukkit
playermanager.world.u.c(i, j);
playermanager.world.chunkProviderServer.getChunkAt(i, j);
}
public void a(EntityPlayer entityplayer) {
if (this.b.contains(entityplayer)) {
throw new IllegalStateException("Failed to add player. " + entityplayer + " already is in chunk " + this.c + ", " + this.d);
throw new IllegalStateException("Failed to add player. " + entityplayer + " already is in chunk " + this.chunkX + ", " + this.chunkZ);
} else {
entityplayer.g.add(this.e);
entityplayer.a.b((Packet) (new Packet50PreChunk(this.e.a, this.e.b, true)));
entityplayer.netServerHandler.sendPacket(new Packet50PreChunk(this.e.x, this.e.z, true));
this.b.add(entityplayer);
entityplayer.f.add(this.e);
}
@ -46,31 +46,31 @@ class PlayerInstance {
public void b(EntityPlayer entityplayer) {
if (!this.b.contains(entityplayer)) {
(new IllegalStateException("Failed to remove player. " + entityplayer + " isn\'t in chunk " + this.c + ", " + this.d)).printStackTrace();
(new IllegalStateException("Failed to remove player. " + entityplayer + " isn\'t in chunk " + this.chunkX + ", " + this.chunkZ)).printStackTrace();
} else {
this.b.remove(entityplayer);
if (this.b.size() == 0) {
long i = (long) this.c + 2147483647L | (long) this.d + 2147483647L << 32;
long i = (long) this.chunkX + 2147483647L | (long) this.chunkZ + 2147483647L << 32;
PlayerManager.b(this.a).b(i);
if (this.g > 0) {
PlayerManager.c(this.a).remove(this);
PlayerManager.b(this.playerManager).b(i);
if (this.dirtyCount > 0) {
PlayerManager.c(this.playerManager).remove(this);
}
// CraftBukkit
((WorldServer) entityplayer.world).u.d(this.c, this.d);
((WorldServer) entityplayer.world).chunkProviderServer.queueUnload(this.chunkX, this.chunkZ);
}
entityplayer.f.remove(this.e);
if (entityplayer.g.contains(this.e)) {
entityplayer.a.b((Packet) (new Packet50PreChunk(this.c, this.d, false)));
entityplayer.netServerHandler.sendPacket(new Packet50PreChunk(this.chunkX, this.chunkZ, false));
}
}
}
public void a(int i, int j, int k) {
if (this.g == 0) {
PlayerManager.c(this.a).add(this);
if (this.dirtyCount == 0) {
PlayerManager.c(this.playerManager).add(this);
this.h = this.i = i;
this.j = this.k = j;
this.l = this.m = k;
@ -100,95 +100,95 @@ class PlayerInstance {
this.m = k;
}
if (this.g < 10) {
if (this.dirtyCount < 10) {
short short1 = (short) (i << 12 | k << 8 | j);
for (int l = 0; l < this.g; ++l) {
if (this.f[l] == short1) {
for (int l = 0; l < this.dirtyCount; ++l) {
if (this.dirtyBlocks[l] == short1) {
return;
}
}
this.f[this.g++] = short1;
this.dirtyBlocks[this.dirtyCount++] = short1;
}
}
public void a(Packet packet) {
public void sendAll(Packet packet) {
for (int i = 0; i < this.b.size(); ++i) {
EntityPlayer entityplayer = (EntityPlayer) this.b.get(i);
if (entityplayer.g.contains(this.e)) {
entityplayer.a.b(packet);
entityplayer.netServerHandler.sendPacket(packet);
}
}
}
public void a() {
if (this.g != 0) {
if (this.dirtyCount != 0) {
int i;
int j;
int k;
if (this.g == 1) {
i = this.c * 16 + this.h;
if (this.dirtyCount == 1) {
i = this.chunkX * 16 + this.h;
j = this.j;
k = this.d * 16 + this.l;
k = this.chunkZ * 16 + this.l;
// CraftBukkit start
this.a((Packet) (new Packet53BlockChange(i, j, k, a.world)));
if (Block.p[a.world.getTypeId(i, j, k)]) {
this.a(a.world.getTileEntity(i, j, k));
this.sendAll(new Packet53BlockChange(i, j, k, this.playerManager.world));
if (Block.isTileEntity[this.playerManager.world.getTypeId(i, j, k)]) {
this.sendTileEntity(this.playerManager.world.getTileEntity(i, j, k));
}
// CraftBukkit end
} else {
int l;
if (this.g == 10) {
if (this.dirtyCount == 10) {
this.j = this.j / 2 * 2;
this.k = (this.k / 2 + 1) * 2;
i = this.h + this.c * 16;
i = this.h + this.chunkX * 16;
j = this.j;
k = this.l + this.d * 16;
k = this.l + this.chunkZ * 16;
l = this.i - this.h + 1;
int i1 = this.k - this.j + 2;
int j1 = this.m - this.l + 1;
// CraftBukkit start
this.a((Packet) (new Packet51MapChunk(i, j, k, l, i1, j1, a.world)));
List list = a.world.d(i, j, k, i + l, j + i1, k + j1);
this.sendAll(new Packet51MapChunk(i, j, k, l, i1, j1, this.playerManager.world));
List list = this.playerManager.world.getTileEntities(i, j, k, i + l, j + i1, k + j1);
// CraftBukkit end
for (int k1 = 0; k1 < list.size(); ++k1) {
this.a((TileEntity) list.get(k1));
this.sendTileEntity((TileEntity) list.get(k1));
}
} else {
// CraftBukkit
this.a((Packet) (new Packet52MultiBlockChange(this.c, this.d, this.f, this.g, a.world)));
this.sendAll(new Packet52MultiBlockChange(this.chunkX, this.chunkZ, this.dirtyBlocks, this.dirtyCount, this.playerManager.world));
for (i = 0; i < this.g; ++i) {
j = this.c * 16 + (this.g >> 12 & 15);
k = this.g & 255;
l = this.d * 16 + (this.g >> 8 & 15);
for (i = 0; i < this.dirtyCount; ++i) {
j = this.chunkX * 16 + (this.dirtyCount >> 12 & 15);
k = this.dirtyCount & 255;
l = this.chunkZ * 16 + (this.dirtyCount >> 8 & 15);
// CraftBukkit start
if (Block.p[a.world.getTypeId(j, k, l)]) {
if (Block.isTileEntity[this.playerManager.world.getTypeId(j, k, l)]) {
System.out.println("Sending!");
this.a(a.world.getTileEntity(j, k, l));
this.sendTileEntity(this.playerManager.world.getTileEntity(j, k, l));
}
// CraftBukkit end
}
}
}
this.g = 0;
this.dirtyCount = 0;
}
}
private void a(TileEntity tileentity) {
private void sendTileEntity(TileEntity tileentity) {
if (tileentity != null) {
Packet packet = tileentity.e();
if (packet != null) {
this.a(packet);
this.sendAll(packet);
}
}
}

View file

@ -8,7 +8,7 @@ public class PlayerManager {
private List a = new ArrayList();
private PlayerList b = new PlayerList();
private List c = new ArrayList();
private MinecraftServer d;
private MinecraftServer server;
private final int[][] e = new int[][] { { 1, 0}, { 0, 1}, { -1, 0}, { 0, -1}};
// CraftBukkit start
@ -16,12 +16,12 @@ public class PlayerManager {
// CraftBukkit - change of method signature
public PlayerManager(MinecraftServer minecraftserver, WorldServer world) {
this.d = minecraftserver;
this.world = world;
// CraftBukkit end
this.server = minecraftserver;
}
// CraftBukkit end
public void a() {
public void flush() {
for (int i = 0; i < this.c.size(); ++i) {
((PlayerInstance) this.c.get(i)).a();
}
@ -41,7 +41,7 @@ public class PlayerManager {
return playerinstance;
}
public void a(int i, int j, int k) {
public void flagDirty(int i, int j, int k) {
int l = i >> 4;
int i1 = k >> 4;
PlayerInstance playerinstance = this.a(l, i1, false);
@ -51,7 +51,7 @@ public class PlayerManager {
}
}
public void a(EntityPlayer entityplayer) {
public void addPlayer(EntityPlayer entityplayer) {
int i = (int) entityplayer.locX >> 4;
int j = (int) entityplayer.locZ >> 4;
@ -89,7 +89,7 @@ public class PlayerManager {
this.a.add(entityplayer);
}
public void b(EntityPlayer entityplayer) {
public void removePlayer(EntityPlayer entityplayer) {
int i = (int) entityplayer.d >> 4;
int j = (int) entityplayer.e >> 4;
@ -113,7 +113,7 @@ public class PlayerManager {
return i1 >= -10 && i1 <= 10 ? j1 >= -10 && j1 <= 10 : false;
}
public void c(EntityPlayer entityplayer) {
public void movePlayer(EntityPlayer entityplayer) {
int i = (int) entityplayer.locX >> 4;
int j = (int) entityplayer.locZ >> 4;
double d0 = entityplayer.d - entityplayer.locX;
@ -128,8 +128,8 @@ public class PlayerManager {
// Craftbukkit start
if (i1 > 10 || i1 < -10 || j1 > 10 || j1 < -10) {
b(entityplayer);
a(entityplayer);
this.removePlayer(entityplayer);
this.addPlayer(entityplayer);
return;
}
// Craftbukkit end
@ -162,7 +162,7 @@ public class PlayerManager {
}
static MinecraftServer a(PlayerManager playermanager) {
return playermanager.d;
return playermanager.server;
}
static PlayerList b(PlayerManager playermanager) {

View file

@ -12,14 +12,14 @@ import joptsimple.OptionSet; // CraftBukkit
public class PropertyManager {
public static Logger a = Logger.getLogger("Minecraft");
private Properties b = new Properties();
private Properties properties = new Properties();
private File c;
public PropertyManager(File file1) {
this.c = file1;
if (file1.exists()) {
try {
this.b.load(new FileInputStream(file1));
this.properties.load(new FileInputStream(file1));
} catch (Exception exception) {
a.log(Level.WARNING, "Failed to load " + file1, exception);
this.a();
@ -55,45 +55,46 @@ public class PropertyManager {
public void b() {
try {
this.b.store(new FileOutputStream(this.c), "Minecraft server properties");
this.properties.store(new FileOutputStream(this.c), "Minecraft server properties");
} catch (Exception exception) {
a.log(Level.WARNING, "Failed to save " + this.c, exception);
this.a();
}
}
public String a(String s, String s1) {
if (!this.b.containsKey(s)) {
this.b.setProperty(s, getOverride(s, s1)); // CraftBukkit
public String getString(String s, String s1) {
if (!this.properties.containsKey(s)) {
s1 = getOverride(s, s1); // CraftBukkit
this.properties.setProperty(s, s1);
this.b();
}
return getOverride(s, this.b.getProperty(s, s1)); // CraftBukkit
return getOverride(s, this.properties.getProperty(s, s1)); // CraftBukkit
}
public int a(String s, int i) {
public int getInt(String s, int i) {
try {
return getOverride(s, Integer.parseInt(this.a(s, "" + i))); // CraftBukkit
return getOverride(s, Integer.parseInt(this.getString(s, "" + i))); // CraftBukkit
} catch (Exception exception) {
i = getOverride(s, i); // CraftBukkit
this.b.setProperty(s, "" + i);
this.properties.setProperty(s, "" + i);
return i;
}
}
public boolean a(String s, boolean flag) {
public boolean getBoolean(String s, boolean flag) {
try {
return getOverride(s, Boolean.parseBoolean(this.a(s, "" + flag))); // CraftBukkit
return getOverride(s, Boolean.parseBoolean(this.getString(s, "" + flag))); // CraftBukkit
} catch (Exception exception) {
flag = getOverride(s, flag); // CraftBukkit
this.b.setProperty(s, "" + flag);
this.properties.setProperty(s, "" + flag);
return flag;
}
}
public void b(String s, boolean flag) {
flag = getOverride(s, flag); // CraftBukkit
this.b.setProperty(s, "" + flag);
this.properties.setProperty(s, "" + flag);
this.b();
}
}

View file

@ -27,38 +27,38 @@ import org.bukkit.event.player.PlayerRespawnEvent;
public class ServerConfigurationManager {
public static Logger a = Logger.getLogger("Minecraft");
public List b = new ArrayList();
public MinecraftServer c; // CraftBukkit - private->public
public List players = new ArrayList();
public MinecraftServer server; // CraftBukkit - private->public
// public PlayerManager d; // CraftBukkit - removed!
public int e; // CraftBukkit - private->public
private Set f = new HashSet();
private Set g = new HashSet();
public int maxPlayers; // CraftBukkit - private->public
private Set banByName = new HashSet();
private Set banByIP = new HashSet();
private Set h = new HashSet();
private Set i = new HashSet();
private File j;
private File k;
private File l;
private File m;
public PlayerFileData n; // CraftBukkit - private->public
public PlayerFileData playerFileData; // CraftBukkit private->public
private boolean o;
// CraftBukkit start
private CraftServer server;
private CraftServer cserver;
public ServerConfigurationManager(MinecraftServer minecraftserver) {
minecraftserver.server = new CraftServer(minecraftserver, this);
minecraftserver.console = new ColouredConsoleSender(minecraftserver.server);
server = minecraftserver.server;
cserver = minecraftserver.server;
// CraftBukkit end
this.c = minecraftserver;
this.server = minecraftserver;
this.j = minecraftserver.a("banned-players.txt");
this.k = minecraftserver.a("banned-ips.txt");
this.l = minecraftserver.a("ops.txt");
this.m = minecraftserver.a("white-list.txt");
// this.d = new PlayerManager(minecraftserver); // CraftBukkit - removed!
this.e = minecraftserver.d.a("max-players", 20);
this.o = minecraftserver.d.a("white-list", false);
this.maxPlayers = minecraftserver.propertyManager.getInt("max-players", 20);
this.o = minecraftserver.propertyManager.getBoolean("white-list", false);
this.g();
this.i();
this.k();
@ -69,12 +69,9 @@ public class ServerConfigurationManager {
this.n();
}
public void a(WorldServer worldserver) {
// CraftBukkit start
if (this.n == null) {
this.n = worldserver.o().d();
}
// CraftBukkit end
public void setPlayerFileData(WorldServer worldserver) {
if (this.playerFileData != null) return; // CraftBukkit
this.playerFileData = worldserver.o().d();
}
public int a() {
@ -82,46 +79,45 @@ public class ServerConfigurationManager {
}
public void a(EntityPlayer entityplayer) {
this.b.add(entityplayer);
this.n.b(entityplayer);
this.players.add(entityplayer);
this.playerFileData.b(entityplayer);
// CraftBukkit start
((WorldServer) entityplayer.world).u.c((int) entityplayer.locX >> 4, (int) entityplayer.locZ >> 4);
((WorldServer) entityplayer.world).chunkProviderServer.getChunkAt((int) entityplayer.locX >> 4, (int) entityplayer.locZ >> 4);
while (entityplayer.world.a(entityplayer, entityplayer.boundingBox).size() != 0) {
entityplayer.a(entityplayer.locX, entityplayer.locY + 1.0D, entityplayer.locZ);
while (entityplayer.world.getEntities(entityplayer, entityplayer.boundingBox).size() != 0) {
entityplayer.setPosition(entityplayer.locX, entityplayer.locY + 1.0D, entityplayer.locZ);
}
entityplayer.world.a(entityplayer);
entityplayer.world.addEntity(entityplayer);
PlayerJoinEvent playerJoinEvent = new PlayerJoinEvent(server.getPlayer(entityplayer), "\u00A7e" + entityplayer.name + " joined the game.");
server.getPluginManager().callEvent(playerJoinEvent);
PlayerJoinEvent playerJoinEvent = new PlayerJoinEvent(cserver.getPlayer(entityplayer), "\u00A7e" + entityplayer.name + " joined the game.");
cserver.getPluginManager().callEvent(playerJoinEvent);
String joinMessage = playerJoinEvent.getJoinMessage();
if (joinMessage != null) {
this.c.f.a((Packet) (new Packet3Chat(joinMessage)));
this.server.serverConfigurationManager.sendAll(new Packet3Chat(joinMessage));
}
((WorldServer) entityplayer.world).manager.a(entityplayer);
((WorldServer) entityplayer.world).manager.addPlayer(entityplayer);
// CraftBukkit end
}
public void b(EntityPlayer entityplayer) {
((WorldServer) entityplayer.world).manager.c(entityplayer); // CraftBukkit
((WorldServer) entityplayer.world).manager.movePlayer(entityplayer); // CraftBukkit
}
public String c(EntityPlayer entityplayer) { // CraftBukkit - changed return type
public String disconnect(EntityPlayer entityplayer) { // CraftBukkit - changed return type
// CraftBukkit start
// Quitting must be before we do final save of data, in case plugins need to modify it
((WorldServer) entityplayer.world).manager.b(entityplayer);
PlayerQuitEvent playerQuitEvent = new PlayerQuitEvent(server.getPlayer(entityplayer), "\u00A7e" + entityplayer.name + " left the game.");
server.getPluginManager().callEvent(playerQuitEvent);
((WorldServer) entityplayer.world).manager.removePlayer(entityplayer);
PlayerQuitEvent playerQuitEvent = new PlayerQuitEvent(cserver.getPlayer(entityplayer), "\u00A7e" + entityplayer.name + " left the game.");
cserver.getPluginManager().callEvent(playerQuitEvent);
// CraftBukkit end
this.n.a(entityplayer);
entityplayer.world.d(entityplayer); // CraftBukkit
this.b.remove(entityplayer);
this.playerFileData.a(entityplayer);
entityplayer.world.kill(entityplayer); // CraftBukkit
this.players.remove(entityplayer);
return playerQuitEvent.getQuitMessage(); // CraftBukkit
}
@ -131,84 +127,84 @@ public class ServerConfigurationManager {
// Instead of kicking then returning, we need to store the kick reason
// in the event, check with plugins to see if it's ok, and THEN kick
// depending on the outcome. Also change any reference to this.e.c to entity.world
EntityPlayer entity = new EntityPlayer(c, c.worlds.get(0), s, new ItemInWorldManager(c.worlds.get(0)));
EntityPlayer entity = new EntityPlayer(this.server, this.server.worlds.get(0), s, new ItemInWorldManager(this.server.worlds.get(0)));
Player player = (entity == null) ? null : (Player) entity.getBukkitEntity();
PlayerLoginEvent event = new PlayerLoginEvent(player);
String s2 = netloginhandler.b.b().toString();
String s2 = netloginhandler.networkManager.getSocketAddress().toString();
s2 = s2.substring(s2.indexOf("/") + 1);
s2 = s2.substring(0, s2.indexOf(":"));
if (this.f.contains(s.trim().toLowerCase())) {
if (this.banByName.contains(s.trim().toLowerCase())) {
event.disallow(PlayerLoginEvent.Result.KICK_BANNED, "You are banned from this server!");
} else if (!this.g(s)) {
} else if (!this.isWhitelisted(s)) {
event.disallow(PlayerLoginEvent.Result.KICK_WHITELIST, "You are not white-listed on this server!");
} else if (this.g.contains(s2)) {
} else if (this.banByIP.contains(s2)) {
event.disallow(PlayerLoginEvent.Result.KICK_BANNED, "Your IP address is banned from this server!");
} else if (this.b.size() >= this.e) {
} else if (this.players.size() >= this.maxPlayers) {
event.disallow(PlayerLoginEvent.Result.KICK_FULL, "The server is full!");
} else {
event.disallow(PlayerLoginEvent.Result.ALLOWED, s2);
}
server.getPluginManager().callEvent(event);
cserver.getPluginManager().callEvent(event);
if (event.getResult() != PlayerLoginEvent.Result.ALLOWED) {
netloginhandler.a(event.getKickMessage());
netloginhandler.disconnect(event.getKickMessage());
return null;
}
for (int i = 0; i < this.b.size(); ++i) {
EntityPlayer entityplayer = (EntityPlayer) this.b.get(i);
for (int i = 0; i < this.players.size(); ++i) {
EntityPlayer entityplayer = (EntityPlayer) this.players.get(i);
if (entityplayer.name.equalsIgnoreCase(s)) {
entityplayer.a.a("You logged in from another location");
entityplayer.netServerHandler.disconnect("You logged in from another location");
}
}
return new EntityPlayer(this.c, entity.world, s, new ItemInWorldManager(entity.world));
return new EntityPlayer(this.server, entity.world, s, new ItemInWorldManager(entity.world));
// CraftBukkit end
}
public EntityPlayer d(EntityPlayer entityplayer) {
// CraftBukkit start - every reference to this.c.e should be entityplayer.world
this.c.k.a(entityplayer);
this.c.k.b(entityplayer);
((WorldServer) entityplayer.world).manager.b(entityplayer);
this.b.remove(entityplayer);
entityplayer.world.e(entityplayer);
// CraftBukkit start - every reference to this.minecraftServer.worldServer should be entityplayer.world
this.server.tracker.trackPlayer(entityplayer);
this.server.tracker.untrackEntity(entityplayer);
((WorldServer) entityplayer.world).manager.removePlayer(entityplayer);
this.players.remove(entityplayer);
entityplayer.world.removeEntity(entityplayer);
ChunkCoordinates chunkcoordinates = entityplayer.H();
EntityPlayer entityplayer1 = new EntityPlayer(this.c, entityplayer.world, entityplayer.name, new ItemInWorldManager(entityplayer.world));
EntityPlayer entityplayer1 = new EntityPlayer(this.server, entityplayer.world, entityplayer.name, new ItemInWorldManager(entityplayer.world));
entityplayer1.id = entityplayer.id;
entityplayer1.a = entityplayer.a;
entityplayer1.netServerHandler = entityplayer.netServerHandler;
entityplayer1.displayName = entityplayer.displayName; // CraftBukkit
entityplayer1.compassTarget = entityplayer.compassTarget; // CraftBukkit
entityplayer1.fauxSleeping = entityplayer.fauxSleeping; // CraftBukkit
if (chunkcoordinates != null) {
ChunkCoordinates chunkcoordinates1 = EntityHuman.a(entityplayer.world, chunkcoordinates);
ChunkCoordinates chunkcoordinates1 = EntityHuman.getBed(entityplayer.world, chunkcoordinates);
if (chunkcoordinates1 != null) {
entityplayer1.c((double) ((float) chunkcoordinates1.a + 0.5F), (double) ((float) chunkcoordinates1.b + 0.1F), (double) ((float) chunkcoordinates1.c + 0.5F), 0.0F, 0.0F);
entityplayer1.setPositionRotation((double) ((float) chunkcoordinates1.x + 0.5F), (double) ((float) chunkcoordinates1.y + 0.1F), (double) ((float) chunkcoordinates1.z + 0.5F), 0.0F, 0.0F);
entityplayer1.a(chunkcoordinates);
} else {
entityplayer1.a.b((Packet) (new Packet70Bed(0)));
entityplayer1.netServerHandler.sendPacket(new Packet70Bed(0));
}
}
((WorldServer) entityplayer.world).u.c((int) entityplayer1.locX >> 4, (int) entityplayer1.locZ >> 4);
while (entityplayer.world.a(entityplayer1, entityplayer1.boundingBox).size() != 0) {
entityplayer1.a(entityplayer1.locX, entityplayer1.locY + 1.0D, entityplayer1.locZ);
((WorldServer) entityplayer.world).chunkProviderServer.getChunkAt((int) entityplayer1.locX >> 4, (int) entityplayer1.locZ >> 4);
while (entityplayer.world.getEntities(entityplayer1, entityplayer1.boundingBox).size() != 0) {
entityplayer1.setPosition(entityplayer1.locX, entityplayer1.locY + 1.0D, entityplayer1.locZ);
}
// CraftBukkit start
Player respawnPlayer = server.getPlayer(entityplayer);
Player respawnPlayer = cserver.getPlayer(entityplayer);
Location respawnLocation = new Location(respawnPlayer.getWorld(), entityplayer1.locX, entityplayer1.locY, entityplayer1.locZ, entityplayer1.yaw, entityplayer1.pitch);
PlayerRespawnEvent respawnEvent = new PlayerRespawnEvent(respawnPlayer, respawnLocation );
server.getPluginManager().callEvent(respawnEvent);
cserver.getPluginManager().callEvent(respawnEvent);
entityplayer1.world = ((CraftWorld) respawnEvent.getRespawnLocation().getWorld()).getHandle();
entityplayer1.locX = respawnEvent.getRespawnLocation().getX();
@ -216,77 +212,77 @@ public class ServerConfigurationManager {
entityplayer1.locZ = respawnEvent.getRespawnLocation().getZ();
entityplayer1.yaw = respawnEvent.getRespawnLocation().getYaw();
entityplayer1.pitch = respawnEvent.getRespawnLocation().getPitch();
entityplayer1.c = new ItemInWorldManager(((CraftWorld) respawnEvent.getRespawnLocation().getWorld()).getHandle());
entityplayer1.c.a = entityplayer1;
((WorldServer) entityplayer1.world).u.c((int) entityplayer1.locX >> 4, (int) entityplayer1.locZ >> 4);
entityplayer1.itemInWorldManager = new ItemInWorldManager(((CraftWorld) respawnEvent.getRespawnLocation().getWorld()).getHandle());
entityplayer1.itemInWorldManager.player = entityplayer1;
((WorldServer) entityplayer1.world).chunkProviderServer.getChunkAt((int) entityplayer1.locX >> 4, (int) entityplayer1.locZ >> 4);
// CraftBukkit end
entityplayer1.a.b((Packet) (new Packet9Respawn()));
entityplayer1.a.a(entityplayer1.locX, entityplayer1.locY, entityplayer1.locZ, entityplayer1.yaw, entityplayer1.pitch);
entityplayer1.netServerHandler.sendPacket(new Packet9Respawn());
entityplayer1.netServerHandler.a(entityplayer1.locX, entityplayer1.locY, entityplayer1.locZ, entityplayer1.yaw, entityplayer1.pitch);
// CraftBukkit start
entityplayer.world.a(entityplayer1);
((WorldServer) entityplayer1.world).manager.a(entityplayer1);
((WorldServer) entityplayer1.world).manager.addPlayer(entityplayer1);
entityplayer.world.addEntity(entityplayer1);
// CraftBukkit end
this.b.add(entityplayer1);
entityplayer1.m();
this.players.add(entityplayer1);
entityplayer1.syncInventory();
entityplayer1.t();
return entityplayer1;
}
public void b() {
// CraftBukkit start
for (WorldServer world: c.worlds) {
world.manager.a();
for (WorldServer world: this.server.worlds) {
world.manager.flush();
}
// CraftBukkit end
}
// CraftBukkit start - changed signature
public void a(int i, int j, int k, WorldServer world) {
world.manager.a(i, j, k);
public void flagDirty(int i, int j, int k, WorldServer world) {
world.manager.flagDirty(i, j, k);
}
// CraftBukkit end
public void a(Packet packet) {
for (int i = 0; i < this.b.size(); ++i) {
EntityPlayer entityplayer = (EntityPlayer) this.b.get(i);
public void sendAll(Packet packet) {
for (int i = 0; i < this.players.size(); ++i) {
EntityPlayer entityplayer = (EntityPlayer) this.players.get(i);
entityplayer.a.b(packet);
entityplayer.netServerHandler.sendPacket(packet);
}
}
public String c() {
String s = "";
for (int i = 0; i < this.b.size(); ++i) {
for (int i = 0; i < this.players.size(); ++i) {
if (i > 0) {
s = s + ", ";
}
s = s + ((EntityPlayer) this.b.get(i)).name;
s = s + ((EntityPlayer) this.players.get(i)).name;
}
return s;
}
public void a(String s) {
this.f.add(s.toLowerCase());
this.banByName.add(s.toLowerCase());
this.h();
}
public void b(String s) {
this.f.remove(s.toLowerCase());
this.banByName.remove(s.toLowerCase());
this.h();
}
private void g() {
try {
this.f.clear();
this.banByName.clear();
BufferedReader bufferedreader = new BufferedReader(new FileReader(this.j));
String s = "";
while ((s = bufferedreader.readLine()) != null) {
this.f.add(s.trim().toLowerCase());
this.banByName.add(s.trim().toLowerCase());
}
bufferedreader.close();
@ -298,7 +294,7 @@ public class ServerConfigurationManager {
private void h() {
try {
PrintWriter printwriter = new PrintWriter(new FileWriter(this.j, false));
Iterator iterator = this.f.iterator();
Iterator iterator = this.banByName.iterator();
while (iterator.hasNext()) {
String s = (String) iterator.next();
@ -313,23 +309,23 @@ public class ServerConfigurationManager {
}
public void c(String s) {
this.g.add(s.toLowerCase());
this.banByIP.add(s.toLowerCase());
this.j();
}
public void d(String s) {
this.g.remove(s.toLowerCase());
this.banByIP.remove(s.toLowerCase());
this.j();
}
private void i() {
try {
this.g.clear();
this.banByIP.clear();
BufferedReader bufferedreader = new BufferedReader(new FileReader(this.k));
String s = "";
while ((s = bufferedreader.readLine()) != null) {
this.g.add(s.trim().toLowerCase());
this.banByIP.add(s.trim().toLowerCase());
}
bufferedreader.close();
@ -341,7 +337,7 @@ public class ServerConfigurationManager {
private void j() {
try {
PrintWriter printwriter = new PrintWriter(new FileWriter(this.k, false));
Iterator iterator = this.g.iterator();
Iterator iterator = this.banByIP.iterator();
while (iterator.hasNext()) {
String s = (String) iterator.next();
@ -431,18 +427,18 @@ public class ServerConfigurationManager {
}
}
public boolean g(String s) {
public boolean isWhitelisted(String s) {
s = s.trim().toLowerCase();
return !this.o || this.h.contains(s) || this.i.contains(s);
}
public boolean h(String s) {
public boolean isOp(String s) {
return this.h.contains(s.trim().toLowerCase());
}
public EntityPlayer i(String s) {
for (int i = 0; i < this.b.size(); ++i) {
EntityPlayer entityplayer = (EntityPlayer) this.b.get(i);
for (int i = 0; i < this.players.size(); ++i) {
EntityPlayer entityplayer = (EntityPlayer) this.players.get(i);
if (entityplayer.name.equalsIgnoreCase(s)) {
return entityplayer;
@ -456,19 +452,19 @@ public class ServerConfigurationManager {
EntityPlayer entityplayer = this.i(s);
if (entityplayer != null) {
entityplayer.a.b((Packet) (new Packet3Chat(s1)));
entityplayer.netServerHandler.sendPacket(new Packet3Chat(s1));
}
}
public void a(double d0, double d1, double d2, double d3, Packet packet) {
for (int i = 0; i < this.b.size(); ++i) {
EntityPlayer entityplayer = (EntityPlayer) this.b.get(i);
for (int i = 0; i < this.players.size(); ++i) {
EntityPlayer entityplayer = (EntityPlayer) this.players.get(i);
double d4 = d0 - entityplayer.locX;
double d5 = d1 - entityplayer.locY;
double d6 = d2 - entityplayer.locZ;
if (d4 * d4 + d5 * d5 + d6 * d6 < d3 * d3) {
entityplayer.a.b(packet);
entityplayer.netServerHandler.sendPacket(packet);
}
}
}
@ -476,11 +472,11 @@ public class ServerConfigurationManager {
public void j(String s) {
Packet3Chat packet3chat = new Packet3Chat(s);
for (int i = 0; i < this.b.size(); ++i) {
EntityPlayer entityplayer = (EntityPlayer) this.b.get(i);
for (int i = 0; i < this.players.size(); ++i) {
EntityPlayer entityplayer = (EntityPlayer) this.players.get(i);
if (this.h(entityplayer.name)) {
entityplayer.a.b((Packet) packet3chat);
if (this.isOp(entityplayer.name)) {
entityplayer.netServerHandler.sendPacket(packet3chat);
}
}
}
@ -489,16 +485,16 @@ public class ServerConfigurationManager {
EntityPlayer entityplayer = this.i(s);
if (entityplayer != null) {
entityplayer.a.b(packet);
entityplayer.netServerHandler.sendPacket(packet);
return true;
} else {
return false;
}
}
public void d() {
for (int i = 0; i < this.b.size(); ++i) {
this.n.a((EntityHuman) this.b.get(i));
public void savePlayers() {
for (int i = 0; i < this.players.size(); ++i) {
this.playerFileData.a((EntityHuman) this.players.get(i));
}
}

View file

@ -2,15 +2,15 @@ package net.minecraft.server;
public class Slot {
public final int d; // CraftBukkit: private -> public
public final IInventory e; // CraftBukkit: private -> public
public final int index; // CraftBukkit: private -> public
public final IInventory inventory; // CraftBukkit: private -> public
public int a;
public int b;
public int c;
public Slot(IInventory iinventory, int i, int j, int k) {
this.e = iinventory;
this.d = i;
this.inventory = iinventory;
this.index = i;
this.b = j;
this.c = k;
}
@ -19,33 +19,33 @@ public class Slot {
this.b();
}
public boolean b(ItemStack itemstack) {
public boolean isAllowed(ItemStack itemstack) {
return true;
}
public ItemStack a() {
return this.e.c_(this.d);
public ItemStack getItem() {
return this.inventory.getItem(this.index);
}
public void c(ItemStack itemstack) {
this.e.a(this.d, itemstack);
this.inventory.setItem(this.index, itemstack);
this.b();
}
public void b() {
this.e.i();
this.inventory.update();
}
public int c() {
return this.e.r_();
return this.inventory.getMaxStackSize();
}
public ItemStack a(int i) {
return this.e.a(this.d, i);
return this.inventory.a(this.index, i);
}
public boolean a(IInventory iinventory, int i) {
return iinventory == this.e && i == this.d;
return iinventory == this.inventory && i == this.index;
}
public boolean d() {

View file

@ -10,23 +10,23 @@ import jline.ConsoleReader;
public class ThreadCommandReader extends Thread {
final MinecraftServer a;
final MinecraftServer server;
public ThreadCommandReader(MinecraftServer minecraftserver) {
this.a = minecraftserver;
this.server = minecraftserver;
}
public void run() {
// Craftbukkit start - whole method, nuked to oblivion! :o
try {
ConsoleReader reader = a.reader;
ConsoleReader reader = this.server.reader;
String line = null;
while ((!this.a.g) && (MinecraftServer.a(this.a)) && ((line = reader.readLine(">", null)) != null)) {
this.a.a(line, this.a);
while ((!this.server.isStopped) && (MinecraftServer.isRunning(this.server)) && ((line = reader.readLine(">", null)) != null)) {
this.server.issueCommand(line, (ICommandListener) this.server);
}
} catch (IOException ex) {
Logger.getLogger(ThreadCommandReader.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ioexception) {
Logger.getLogger(ThreadCommandReader.class.getName()).log(Level.SEVERE, null, ioexception);
}
// Craftbukkit end
}

View file

@ -1,51 +1,56 @@
package net.minecraft.server;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLEncoder;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.event.player.PlayerPreLoginEvent;
class ThreadLoginVerifier extends Thread {
final Packet1Login a;
final NetLoginHandler b;
// CraftBukkit start
CraftServer server;
ThreadLoginVerifier(NetLoginHandler netloginhandler, Packet1Login packet1login, CraftServer server) {
this.server = server;
// CraftBukkit end
this.b = netloginhandler;
this.a = packet1login;
}
public void run() {
try {
String s = NetLoginHandler.a(this.b);
URL url = new URL("http://www.minecraft.net/game/checkserver.jsp?user=" + URLEncoder.encode(this.a.b, "UTF-8") + "&serverId=" + URLEncoder.encode(s, "UTF-8"));
BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(url.openStream()));
String s1 = bufferedreader.readLine();
bufferedreader.close();
if (s1.equals("YES")) {
PlayerPreLoginEvent event = new PlayerPreLoginEvent(this.a.b, b.getSocket().getInetAddress());
server.getPluginManager().callEvent(event);
if (event.getResult() != PlayerPreLoginEvent.Result.ALLOWED) {
this.b.a(event.getKickMessage());
return;
}
NetLoginHandler.a(this.b, this.a);
} else {
this.b.a("Failed to verify username!");
}
} catch (Exception exception) {
exception.printStackTrace();
}
}
}
package net.minecraft.server;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLEncoder;
// CraftBukkit start
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.event.player.PlayerPreLoginEvent;
// CraftBukkit end
class ThreadLoginVerifier extends Thread {
final Packet1Login loginPacket;
final NetLoginHandler netLoginHandler;
// CraftBukkit start
CraftServer server;
ThreadLoginVerifier(NetLoginHandler netloginhandler, Packet1Login packet1login, CraftServer server) {
this.server = server;
// CraftBukkit end
this.netLoginHandler = netloginhandler;
this.loginPacket = packet1login;
}
public void run() {
try {
String s = NetLoginHandler.a(this.netLoginHandler);
URL url = new URL("http://www.minecraft.net/game/checkserver.jsp?user=" + URLEncoder.encode(this.loginPacket.name, "UTF-8") + "&serverId=" + URLEncoder.encode(s, "UTF-8"));
BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(url.openStream()));
String s1 = bufferedreader.readLine();
bufferedreader.close();
if (s1.equals("YES")) {
// CraftBukkit start
PlayerPreLoginEvent event = new PlayerPreLoginEvent(this.loginPacket.name, this.netLoginHandler.getSocket().getInetAddress());
server.getPluginManager().callEvent(event);
if (event.getResult() != PlayerPreLoginEvent.Result.ALLOWED) {
this.netLoginHandler.disconnect(event.getKickMessage());
return;
}
// CraftBukkit end
NetLoginHandler.a(this.netLoginHandler, this.loginPacket);
} else {
this.netLoginHandler.disconnect("Failed to verify username!");
}
} catch (Exception exception) {
exception.printStackTrace();
}
}
}

View file

@ -2,40 +2,40 @@ package net.minecraft.server;
public class TileEntityChest extends TileEntity implements IInventory {
private ItemStack[] a = new ItemStack[27]; // CraftBukkit
private ItemStack[] items = new ItemStack[27]; // CraftBukkit
// CraftBukkit start
public ItemStack[] getContents() {
return a;
return items;
}
// CraftBukkit end
public TileEntityChest() {}
public int q_() {
public int getSize() {
return 27;
}
public ItemStack c_(int i) {
return this.a[i];
public ItemStack getItem(int i) {
return this.items[i];
}
public ItemStack a(int i, int j) {
if (this.a[i] != null) {
if (this.items[i] != null) {
ItemStack itemstack;
if (this.a[i].count <= j) {
itemstack = this.a[i];
this.a[i] = null;
this.i();
if (this.items[i].count <= j) {
itemstack = this.items[i];
this.items[i] = null;
this.update();
return itemstack;
} else {
itemstack = this.a[i].a(j);
if (this.a[i].count == 0) {
this.a[i] = null;
itemstack = this.items[i].a(j);
if (this.items[i].count == 0) {
this.items[i] = null;
}
this.i();
this.update();
return itemstack;
}
} else {
@ -43,16 +43,16 @@ public class TileEntityChest extends TileEntity implements IInventory {
}
}
public void a(int i, ItemStack itemstack) {
this.a[i] = itemstack;
if (itemstack != null && itemstack.count > this.r_()) {
itemstack.count = this.r_();
public void setItem(int i, ItemStack itemstack) {
this.items[i] = itemstack;
if (itemstack != null && itemstack.count > this.getMaxStackSize()) {
itemstack.count = this.getMaxStackSize();
}
this.i();
this.update();
}
public String c() {
public String getName() {
return "Chest";
}
@ -60,14 +60,14 @@ public class TileEntityChest extends TileEntity implements IInventory {
super.a(nbttagcompound);
NBTTagList nbttaglist = nbttagcompound.l("Items");
this.a = new ItemStack[this.q_()];
this.items = new ItemStack[this.getSize()];
for (int i = 0; i < nbttaglist.c(); ++i) {
NBTTagCompound nbttagcompound1 = (NBTTagCompound) nbttaglist.a(i);
int j = nbttagcompound1.c("Slot") & 255;
if (j >= 0 && j < this.a.length) {
this.a[j] = new ItemStack(nbttagcompound1);
if (j >= 0 && j < this.items.length) {
this.items[j] = new ItemStack(nbttagcompound1);
}
}
}
@ -76,12 +76,12 @@ public class TileEntityChest extends TileEntity implements IInventory {
super.b(nbttagcompound);
NBTTagList nbttaglist = new NBTTagList();
for (int i = 0; i < this.a.length; ++i) {
if (this.a[i] != null) {
for (int i = 0; i < this.items.length; ++i) {
if (this.items[i] != null) {
NBTTagCompound nbttagcompound1 = new NBTTagCompound();
nbttagcompound1.a("Slot", (byte) i);
this.a[i].a(nbttagcompound1);
this.items[i].a(nbttagcompound1);
nbttaglist.a((NBTBase) nbttagcompound1);
}
}
@ -89,11 +89,11 @@ public class TileEntityChest extends TileEntity implements IInventory {
nbttagcompound.a("Items", (NBTBase) nbttaglist);
}
public int r_() {
public int getMaxStackSize() {
return 64;
}
public boolean a_(EntityHuman entityhuman) {
return this.d.getTileEntity(this.e, this.f, this.g) != this ? false : entityhuman.d((double) this.e + 0.5D, (double) this.f + 0.5D, (double) this.g + 0.5D) <= 64.0D;
return this.world.getTileEntity(this.e, this.f, this.g) != this ? false : entityhuman.d((double) this.e + 0.5D, (double) this.f + 0.5D, (double) this.g + 0.5D) <= 64.0D;
}
}

View file

@ -4,41 +4,41 @@ import java.util.Random;
public class TileEntityDispenser extends TileEntity implements IInventory {
private ItemStack[] a = new ItemStack[9];
private ItemStack[] items = new ItemStack[9];
private Random b = new Random();
// CraftBukkit start
public ItemStack[] getContents() {
return a;
return items;
}
// CraftBukkit end
public TileEntityDispenser() {}
public int q_() {
public int getSize() {
return 9;
}
public ItemStack c_(int i) {
return this.a[i];
public ItemStack getItem(int i) {
return this.items[i];
}
public ItemStack a(int i, int j) {
if (this.a[i] != null) {
if (this.items[i] != null) {
ItemStack itemstack;
if (this.a[i].count <= j) {
itemstack = this.a[i];
this.a[i] = null;
this.i();
if (this.items[i].count <= j) {
itemstack = this.items[i];
this.items[i] = null;
this.update();
return itemstack;
} else {
itemstack = this.a[i].a(j);
if (this.a[i].count == 0) {
this.a[i] = null;
itemstack = this.items[i].a(j);
if (this.items[i].count == 0) {
this.items[i] = null;
}
this.i();
this.update();
return itemstack;
}
} else {
@ -50,8 +50,8 @@ public class TileEntityDispenser extends TileEntity implements IInventory {
int i = -1;
int j = 1;
for (int k = 0; k < this.a.length; ++k) {
if (this.a[k] != null && this.b.nextInt(j) == 0) {
for (int k = 0; k < this.items.length; ++k) {
if (this.items[k] != null && this.b.nextInt(j) == 0) {
i = k;
++j;
}
@ -64,16 +64,16 @@ public class TileEntityDispenser extends TileEntity implements IInventory {
}
}
public void a(int i, ItemStack itemstack) {
this.a[i] = itemstack;
if (itemstack != null && itemstack.count > this.r_()) {
itemstack.count = this.r_();
public void setItem(int i, ItemStack itemstack) {
this.items[i] = itemstack;
if (itemstack != null && itemstack.count > this.getMaxStackSize()) {
itemstack.count = this.getMaxStackSize();
}
this.i();
this.update();
}
public String c() {
public String getName() {
return "Trap";
}
@ -81,14 +81,14 @@ public class TileEntityDispenser extends TileEntity implements IInventory {
super.a(nbttagcompound);
NBTTagList nbttaglist = nbttagcompound.l("Items");
this.a = new ItemStack[this.q_()];
this.items = new ItemStack[this.getSize()];
for (int i = 0; i < nbttaglist.c(); ++i) {
NBTTagCompound nbttagcompound1 = (NBTTagCompound) nbttaglist.a(i);
int j = nbttagcompound1.c("Slot") & 255;
if (j >= 0 && j < this.a.length) {
this.a[j] = new ItemStack(nbttagcompound1);
if (j >= 0 && j < this.items.length) {
this.items[j] = new ItemStack(nbttagcompound1);
}
}
}
@ -97,12 +97,12 @@ public class TileEntityDispenser extends TileEntity implements IInventory {
super.b(nbttagcompound);
NBTTagList nbttaglist = new NBTTagList();
for (int i = 0; i < this.a.length; ++i) {
if (this.a[i] != null) {
for (int i = 0; i < this.items.length; ++i) {
if (this.items[i] != null) {
NBTTagCompound nbttagcompound1 = new NBTTagCompound();
nbttagcompound1.a("Slot", (byte) i);
this.a[i].a(nbttagcompound1);
this.items[i].a(nbttagcompound1);
nbttaglist.a((NBTBase) nbttagcompound1);
}
}
@ -110,11 +110,11 @@ public class TileEntityDispenser extends TileEntity implements IInventory {
nbttagcompound.a("Items", (NBTBase) nbttaglist);
}
public int r_() {
public int getMaxStackSize() {
return 64;
}
public boolean a_(EntityHuman entityhuman) {
return this.d.getTileEntity(this.e, this.f, this.g) != this ? false : entityhuman.d((double) this.e + 0.5D, (double) this.f + 0.5D, (double) this.g + 0.5D) <= 64.0D;
return this.world.getTileEntity(this.e, this.f, this.g) != this ? false : entityhuman.d((double) this.e + 0.5D, (double) this.f + 0.5D, (double) this.g + 0.5D) <= 64.0D;
}
}

View file

@ -2,39 +2,39 @@ package net.minecraft.server;
public class TileEntityFurnace extends TileEntity implements IInventory {
private ItemStack[] h = new ItemStack[3];
public int a = 0;
private ItemStack[] items = new ItemStack[3];
public int burnTime = 0;
public int b = 0;
public int c = 0;
public int cookTime = 0;
// CraftBukkit start
public ItemStack[] getContents() {
return h;
return items;
}
// CraftBukkit end
public TileEntityFurnace() {}
public int q_() {
return this.h.length;
public int getSize() {
return this.items.length;
}
public ItemStack c_(int i) {
return this.h[i];
public ItemStack getItem(int i) {
return this.items[i];
}
public ItemStack a(int i, int j) {
if (this.h[i] != null) {
if (this.items[i] != null) {
ItemStack itemstack;
if (this.h[i].count <= j) {
itemstack = this.h[i];
this.h[i] = null;
if (this.items[i].count <= j) {
itemstack = this.items[i];
this.items[i] = null;
return itemstack;
} else {
itemstack = this.h[i].a(j);
if (this.h[i].count == 0) {
this.h[i] = null;
itemstack = this.items[i].a(j);
if (this.items[i].count == 0) {
this.items[i] = null;
}
return itemstack;
@ -44,14 +44,14 @@ public class TileEntityFurnace extends TileEntity implements IInventory {
}
}
public void a(int i, ItemStack itemstack) {
this.h[i] = itemstack;
if (itemstack != null && itemstack.count > this.r_()) {
itemstack.count = this.r_();
public void setItem(int i, ItemStack itemstack) {
this.items[i] = itemstack;
if (itemstack != null && itemstack.count > this.getMaxStackSize()) {
itemstack.count = this.getMaxStackSize();
}
}
public String c() {
public String getName() {
return "Furnace";
}
@ -59,34 +59,34 @@ public class TileEntityFurnace extends TileEntity implements IInventory {
super.a(nbttagcompound);
NBTTagList nbttaglist = nbttagcompound.l("Items");
this.h = new ItemStack[this.q_()];
this.items = new ItemStack[this.getSize()];
for (int i = 0; i < nbttaglist.c(); ++i) {
NBTTagCompound nbttagcompound1 = (NBTTagCompound) nbttaglist.a(i);
byte b0 = nbttagcompound1.c("Slot");
if (b0 >= 0 && b0 < this.h.length) {
this.h[b0] = new ItemStack(nbttagcompound1);
if (b0 >= 0 && b0 < this.items.length) {
this.items[b0] = new ItemStack(nbttagcompound1);
}
}
this.a = nbttagcompound.d("BurnTime");
this.c = nbttagcompound.d("CookTime");
this.b = this.a(this.h[1]);
this.burnTime = nbttagcompound.d("BurnTime");
this.cookTime = nbttagcompound.d("CookTime");
this.b = this.a(this.items[1]);
}
public void b(NBTTagCompound nbttagcompound) {
super.b(nbttagcompound);
nbttagcompound.a("BurnTime", (short) this.a);
nbttagcompound.a("CookTime", (short) this.c);
nbttagcompound.a("BurnTime", (short) this.burnTime);
nbttagcompound.a("CookTime", (short) this.cookTime);
NBTTagList nbttaglist = new NBTTagList();
for (int i = 0; i < this.h.length; ++i) {
if (this.h[i] != null) {
for (int i = 0; i < this.items.length; ++i) {
if (this.items[i] != null) {
NBTTagCompound nbttagcompound1 = new NBTTagCompound();
nbttagcompound1.a("Slot", (byte) i);
this.h[i].a(nbttagcompound1);
this.items[i].a(nbttagcompound1);
nbttaglist.a((NBTBase) nbttagcompound1);
}
}
@ -94,81 +94,81 @@ public class TileEntityFurnace extends TileEntity implements IInventory {
nbttagcompound.a("Items", (NBTBase) nbttaglist);
}
public int r_() {
public int getMaxStackSize() {
return 64;
}
public boolean f() {
return this.a > 0;
return this.burnTime > 0;
}
public void i_() {
boolean flag = this.a > 0;
boolean flag = this.burnTime > 0;
boolean flag1 = false;
if (this.a > 0) {
--this.a;
if (this.burnTime > 0) {
--this.burnTime;
}
if (!this.d.isStatic) {
if (this.a == 0 && this.h()) {
this.b = this.a = this.a(this.h[1]);
if (this.a > 0) {
if (!this.world.isStatic) {
if (this.burnTime == 0 && this.h()) {
this.b = this.burnTime = this.a(this.items[1]);
if (this.burnTime > 0) {
flag1 = true;
if (this.h[1] != null) {
--this.h[1].count;
if (this.h[1].count == 0) {
this.h[1] = null;
if (this.items[1] != null) {
--this.items[1].count;
if (this.items[1].count == 0) {
this.items[1] = null;
}
}
}
}
if (this.f() && this.h()) {
++this.c;
if (this.c == 200) {
this.c = 0;
++this.cookTime;
if (this.cookTime == 200) {
this.cookTime = 0;
this.g();
flag1 = true;
}
} else {
this.c = 0;
this.cookTime = 0;
}
if (flag != this.a > 0) {
if (flag != this.burnTime > 0) {
flag1 = true;
BlockFurnace.a(this.a > 0, this.d, this.e, this.f, this.g);
BlockFurnace.a(this.burnTime > 0, this.world, this.e, this.f, this.g);
}
}
if (flag1) {
this.i();
this.update();
}
}
private boolean h() {
if (this.h[0] == null) {
if (this.items[0] == null) {
return false;
} else {
ItemStack itemstack = FurnaceRecipes.a().a(this.h[0].a().id);
ItemStack itemstack = FurnaceRecipes.a().a(this.items[0].getItem().id);
return itemstack == null ? false : (this.h[2] == null ? true : (!this.h[2].a(itemstack) ? false : (this.h[2].count < this.r_() && this.h[2].count < this.h[2].b() ? true : this.h[2].count < itemstack.b())));
return itemstack == null ? false : (this.items[2] == null ? true : (!this.items[2].a(itemstack) ? false : (this.items[2].count < this.getMaxStackSize() && this.items[2].count < this.items[2].b() ? true : this.items[2].count < itemstack.b())));
}
}
public void g() {
if (this.h()) {
ItemStack itemstack = FurnaceRecipes.a().a(this.h[0].a().id);
ItemStack itemstack = FurnaceRecipes.a().a(this.items[0].getItem().id);
if (this.h[2] == null) {
this.h[2] = itemstack.j();
} else if (this.h[2].id == itemstack.id) {
++this.h[2].count;
if (this.items[2] == null) {
this.items[2] = itemstack.j();
} else if (this.items[2].id == itemstack.id) {
++this.items[2].count;
}
--this.h[0].count;
if (this.h[0].count <= 0) {
this.h[0] = null;
--this.items[0].count;
if (this.items[0].count <= 0) {
this.items[0] = null;
}
}
}
@ -177,13 +177,13 @@ public class TileEntityFurnace extends TileEntity implements IInventory {
if (itemstack == null) {
return 0;
} else {
int i = itemstack.a().id;
int i = itemstack.getItem().id;
return i < 256 && Block.byId[i].material == Material.WOOD ? 300 : (i == Item.STICK.id ? 100 : (i == Item.COAL.id ? 1600 : (i == Item.LAVA_BUCKET.id ? 20000 : 0)));
}
}
public boolean a_(EntityHuman entityhuman) {
return this.d.getTileEntity(this.e, this.f, this.g) != this ? false : entityhuman.d((double) this.e + 0.5D, (double) this.f + 0.5D, (double) this.g + 0.5D) <= 64.0D;
return this.world.getTileEntity(this.e, this.f, this.g) != this ? false : entityhuman.d((double) this.e + 0.5D, (double) this.f + 0.5D, (double) this.g + 0.5D) <= 64.0D;
}
}

View file

@ -2,48 +2,48 @@ package net.minecraft.server;
public class TileEntityMobSpawner extends TileEntity {
public int a = -1;
public String h = "Pig"; // CraftBukkit private -> public
public int spawnDelay = -1;
public String mobName = "Pig"; // CraftBukkit private -> public
public double b;
public double c = 0.0D;
public TileEntityMobSpawner() {
this.a = 20;
this.spawnDelay = 20;
}
public void a(String s) {
this.h = s;
this.mobName = s;
}
public boolean a() {
return this.d.a((double) this.e + 0.5D, (double) this.f + 0.5D, (double) this.g + 0.5D, 16.0D) != null;
return this.world.a((double) this.e + 0.5D, (double) this.f + 0.5D, (double) this.g + 0.5D, 16.0D) != null;
}
public void i_() {
this.c = this.b;
if (this.a()) {
double d0 = (double) ((float) this.e + this.d.k.nextFloat());
double d1 = (double) ((float) this.f + this.d.k.nextFloat());
double d2 = (double) ((float) this.g + this.d.k.nextFloat());
double d0 = (double) ((float) this.e + this.world.random.nextFloat());
double d1 = (double) ((float) this.f + this.world.random.nextFloat());
double d2 = (double) ((float) this.g + this.world.random.nextFloat());
this.d.a("smoke", d0, d1, d2, 0.0D, 0.0D, 0.0D);
this.d.a("flame", d0, d1, d2, 0.0D, 0.0D, 0.0D);
this.world.a("smoke", d0, d1, d2, 0.0D, 0.0D, 0.0D);
this.world.a("flame", d0, d1, d2, 0.0D, 0.0D, 0.0D);
for (this.b += (double) (1000.0F / ((float) this.a + 200.0F)); this.b > 360.0D; this.c -= 360.0D) {
for (this.b += (double) (1000.0F / ((float) this.spawnDelay + 200.0F)); this.b > 360.0D; this.c -= 360.0D) {
this.b -= 360.0D;
}
if (this.a == -1) {
if (this.spawnDelay == -1) {
this.c();
}
if (this.a > 0) {
--this.a;
if (this.spawnDelay > 0) {
--this.spawnDelay;
} else {
byte b0 = 4;
for (int i = 0; i < b0; ++i) {
EntityLiving entityliving = (EntityLiving) ((EntityLiving) EntityTypes.a(this.h, this.d));
EntityLiving entityliving = (EntityLiving) ((EntityLiving) EntityTypes.a(this.mobName, this.world));
if (entityliving == null) {
return;
@ -51,12 +51,12 @@ public class TileEntityMobSpawner extends TileEntity {
// CraftBukkit start - The world we're spawning in accepts this creature
boolean isAnimal = entityliving instanceof EntityAnimal || entityliving instanceof EntityWaterAnimal;
if ((isAnimal && !this.d.E) || (!isAnimal && !this.d.D)) {
if ((isAnimal && !this.world.allowAnimals) || (!isAnimal && !this.world.allowMonsters)) {
return;
}
// CraftBukkit end
int j = this.d.a(entityliving.getClass(), AxisAlignedBB.b((double) this.e, (double) this.f, (double) this.g, (double) (this.e + 1), (double) (this.f + 1), (double) (this.g + 1)).b(8.0D, 4.0D, 8.0D)).size();
int j = this.world.a(entityliving.getClass(), AxisAlignedBB.b((double) this.e, (double) this.f, (double) this.g, (double) (this.e + 1), (double) (this.f + 1), (double) (this.g + 1)).b(8.0D, 4.0D, 8.0D)).size();
if (j >= 6) {
this.c();
@ -64,20 +64,20 @@ public class TileEntityMobSpawner extends TileEntity {
}
if (entityliving != null) {
double d3 = (double) this.e + (this.d.k.nextDouble() - this.d.k.nextDouble()) * 4.0D;
double d4 = (double) (this.f + this.d.k.nextInt(3) - 1);
double d5 = (double) this.g + (this.d.k.nextDouble() - this.d.k.nextDouble()) * 4.0D;
double d3 = (double) this.e + (this.world.random.nextDouble() - this.world.random.nextDouble()) * 4.0D;
double d4 = (double) (this.f + this.world.random.nextInt(3) - 1);
double d5 = (double) this.g + (this.world.random.nextDouble() - this.world.random.nextDouble()) * 4.0D;
entityliving.c(d3, d4, d5, this.d.k.nextFloat() * 360.0F, 0.0F);
entityliving.setPositionRotation(d3, d4, d5, this.world.random.nextFloat() * 360.0F, 0.0F);
if (entityliving.b()) {
this.d.a((Entity) entityliving);
this.world.addEntity(entityliving);
for (int k = 0; k < 20; ++k) {
d0 = (double) this.e + 0.5D + ((double) this.d.k.nextFloat() - 0.5D) * 2.0D;
d1 = (double) this.f + 0.5D + ((double) this.d.k.nextFloat() - 0.5D) * 2.0D;
d2 = (double) this.g + 0.5D + ((double) this.d.k.nextFloat() - 0.5D) * 2.0D;
this.d.a("smoke", d0, d1, d2, 0.0D, 0.0D, 0.0D);
this.d.a("flame", d0, d1, d2, 0.0D, 0.0D, 0.0D);
d0 = (double) this.e + 0.5D + ((double) this.world.random.nextFloat() - 0.5D) * 2.0D;
d1 = (double) this.f + 0.5D + ((double) this.world.random.nextFloat() - 0.5D) * 2.0D;
d2 = (double) this.g + 0.5D + ((double) this.world.random.nextFloat() - 0.5D) * 2.0D;
this.world.a("smoke", d0, d1, d2, 0.0D, 0.0D, 0.0D);
this.world.a("flame", d0, d1, d2, 0.0D, 0.0D, 0.0D);
}
entityliving.M();
@ -92,18 +92,18 @@ public class TileEntityMobSpawner extends TileEntity {
}
private void c() {
this.a = 200 + this.d.k.nextInt(600);
this.spawnDelay = 200 + this.world.random.nextInt(600);
}
public void a(NBTTagCompound nbttagcompound) {
super.a(nbttagcompound);
this.h = nbttagcompound.i("EntityId");
this.a = nbttagcompound.d("Delay");
this.mobName = nbttagcompound.getString("EntityId");
this.spawnDelay = nbttagcompound.d("Delay");
}
public void b(NBTTagCompound nbttagcompound) {
super.b(nbttagcompound);
nbttagcompound.a("EntityId", this.h);
nbttagcompound.a("Delay", (short) this.a);
nbttagcompound.setString("EntityId", this.mobName);
nbttagcompound.a("Delay", (short) this.spawnDelay);
}
}

File diff suppressed because it is too large Load diff

View file

@ -13,7 +13,7 @@ public class WorldData {
private long g;
private NBTTagCompound h;
private int i;
public String j; // CraftBukkit private->public
public String name; // CraftBukkit private->public
private int k;
public WorldData(NBTTagCompound nbttagcompound) {
@ -24,9 +24,9 @@ public class WorldData {
this.e = nbttagcompound.f("Time");
this.f = nbttagcompound.f("LastPlayed");
this.g = nbttagcompound.f("SizeOnDisk");
this.j = nbttagcompound.i("LevelName");
this.name = nbttagcompound.getString("LevelName");
this.k = nbttagcompound.e("version");
if (nbttagcompound.b("Player")) {
if (nbttagcompound.hasKey("Player")) {
this.h = nbttagcompound.k("Player");
this.i = this.h.e("Dimension");
}
@ -34,7 +34,7 @@ public class WorldData {
public WorldData(long i, String s) {
this.a = i;
this.j = s;
this.name = s;
}
public WorldData(WorldData worlddata) {
@ -47,7 +47,7 @@ public class WorldData {
this.g = worlddata.g;
this.h = worlddata.h;
this.i = worlddata.i;
this.j = worlddata.j;
this.name = worlddata.name;
this.k = worlddata.k;
}
@ -84,7 +84,7 @@ public class WorldData {
nbttagcompound.a("Time", this.e);
nbttagcompound.a("SizeOnDisk", this.g);
nbttagcompound.a("LastPlayed", System.currentTimeMillis());
nbttagcompound.a("LevelName", this.j);
nbttagcompound.setString("LevelName", this.name);
nbttagcompound.a("version", this.k);
if (nbttagcompound1 != null) {
nbttagcompound.a("Player", nbttagcompound1);
@ -127,14 +127,14 @@ public class WorldData {
this.g = i;
}
public void a(int i, int j, int k) {
public void setSpawn(int i, int j, int k) {
this.b = i;
this.c = j;
this.d = k;
}
public void a(String s) {
this.j = s;
this.name = s;
}
public int i() {

View file

@ -121,7 +121,7 @@ public class WorldGenBigTree extends WorldGenerator {
if (l1 != 0 && l1 != 18) {
++k1;
} else {
this.c.setTypeId(aint1[0], aint1[1], aint1[2], l);
this.c.setRawTypeId(aint1[0], aint1[1], aint1[2], l);
++k1;
}
}
@ -194,10 +194,10 @@ public class WorldGenBigTree extends WorldGenerator {
int j = 0;
for (int k = aint2[b1] + b4; j != k; j += b4) {
aint3[b1] = MathHelper.b((double) (aint[b1] + j) + 0.5D);
aint3[b2] = MathHelper.b((double) aint[b2] + (double) j * d0 + 0.5D);
aint3[b3] = MathHelper.b((double) aint[b3] + (double) j * d1 + 0.5D);
this.c.setTypeId(aint3[0], aint3[1], aint3[2], i);
aint3[b1] = MathHelper.floor((double) (aint[b1] + j) + 0.5D);
aint3[b2] = MathHelper.floor((double) aint[b2] + (double) j * d0 + 0.5D);
aint3[b3] = MathHelper.floor((double) aint[b3] + (double) j * d1 + 0.5D);
this.c.setRawTypeId(aint3[0], aint3[1], aint3[2], i);
}
}
}

View file

@ -59,7 +59,7 @@ public class WorldGenForest extends WorldGenerator {
} else {
i1 = world.getTypeId(i, j - 1, k);
if ((i1 == Block.GRASS.id || i1 == Block.DIRT.id) && j < 128 - l - 1) {
world.setTypeId(i, j - 1, k, Block.DIRT.id);
world.setRawTypeId(i, j - 1, k, Block.DIRT.id);
int i2;
@ -74,7 +74,7 @@ public class WorldGenForest extends WorldGenerator {
int l2 = k2 - k;
if ((Math.abs(j2) != k1 || Math.abs(l2) != k1 || random.nextInt(2) != 0 && j1 != 0) && !Block.o[world.getTypeId(l1, i2, k2)]) {
world.setTypeIdAndData(l1, i2, k2, Block.LEAVES.id, 2);
world.setRawTypeIdAndData(l1, i2, k2, Block.LEAVES.id, 2);
}
}
}
@ -83,7 +83,7 @@ public class WorldGenForest extends WorldGenerator {
for (i2 = 0; i2 < l; ++i2) {
j1 = world.getTypeId(i, j + i2, k);
if (j1 == 0 || j1 == Block.LEAVES.id) {
world.setTypeIdAndData(i, j + i2, k, Block.LOG.id, 2);
world.setRawTypeIdAndData(i, j + i2, k, Block.LOG.id, 2);
}
}

View file

@ -61,7 +61,7 @@ public class WorldGenTaiga1 extends WorldGenerator {
} else {
l1 = world.getTypeId(i, j - 1, k);
if ((l1 == Block.GRASS.id || l1 == Block.DIRT.id) && j < 128 - l - 1) {
world.setTypeId(i, j - 1, k, Block.DIRT.id);
world.setRawTypeId(i, j - 1, k, Block.DIRT.id);
l2 = 0;
for (i2 = j + l; i2 >= j + i1; --i2) {
@ -72,7 +72,7 @@ public class WorldGenTaiga1 extends WorldGenerator {
int j3 = i3 - k;
if ((Math.abs(k2) != l2 || Math.abs(j3) != l2 || l2 <= 0) && !Block.o[world.getTypeId(j2, i2, i3)]) {
world.setTypeIdAndData(j2, i2, i3, Block.LEAVES.id, 1);
world.setRawTypeIdAndData(j2, i2, i3, Block.LEAVES.id, 1);
}
}
}
@ -87,7 +87,7 @@ public class WorldGenTaiga1 extends WorldGenerator {
for (i2 = 0; i2 < l - 1; ++i2) {
j2 = world.getTypeId(i, j + i2, k);
if (j2 == 0 || j2 == Block.LEAVES.id) {
world.setTypeIdAndData(i, j + i2, k, Block.LOG.id, 1);
world.setRawTypeIdAndData(i, j + i2, k, Block.LOG.id, 1);
}
}

View file

@ -60,7 +60,7 @@ public class WorldGenTaiga2 extends WorldGenerator {
} else {
l1 = world.getTypeId(i, j - 1, k);
if ((l1 == Block.GRASS.id || l1 == Block.DIRT.id) && j < 128 - l - 1) {
world.setTypeId(i, j - 1, k, Block.DIRT.id);
world.setRawTypeId(i, j - 1, k, Block.DIRT.id);
k2 = random.nextInt(2);
i2 = 1;
byte b0 = 0;
@ -78,7 +78,7 @@ public class WorldGenTaiga2 extends WorldGenerator {
int i4 = l3 - k;
if ((Math.abs(k3) != k2 || Math.abs(i4) != k2 || k2 <= 0) && !Block.o[world.getTypeId(i3, j3, l3)]) {
world.setTypeIdAndData(i3, j3, l3, Block.LEAVES.id, 1);
world.setRawTypeIdAndData(i3, j3, l3, Block.LEAVES.id, 1);
}
}
}
@ -100,7 +100,7 @@ public class WorldGenTaiga2 extends WorldGenerator {
for (j3 = 0; j3 < l - j2; ++j3) {
i3 = world.getTypeId(i, j + j3, k);
if (i3 == 0 || i3 == Block.LEAVES.id) {
world.setTypeIdAndData(i, j + j3, k, Block.LOG.id, 1);
world.setRawTypeIdAndData(i, j + j3, k, Block.LOG.id, 1);
}
}

View file

@ -59,7 +59,7 @@ public class WorldGenTrees extends WorldGenerator {
} else {
i1 = world.getTypeId(i, j - 1, k);
if ((i1 == Block.GRASS.id || i1 == Block.DIRT.id) && j < 128 - l - 1) {
world.setTypeId(i, j - 1, k, Block.DIRT.id);
world.setRawTypeId(i, j - 1, k, Block.DIRT.id);
int i2;
@ -74,7 +74,7 @@ public class WorldGenTrees extends WorldGenerator {
int l2 = k2 - k;
if ((Math.abs(j2) != k1 || Math.abs(l2) != k1 || random.nextInt(2) != 0 && j1 != 0) && !Block.o[world.getTypeId(l1, i2, k2)]) {
world.setTypeId(l1, i2, k2, Block.LEAVES.id);
world.setRawTypeId(l1, i2, k2, Block.LEAVES.id);
}
}
}
@ -83,7 +83,7 @@ public class WorldGenTrees extends WorldGenerator {
for (i2 = 0; i2 < l; ++i2) {
j1 = world.getTypeId(i, j + i2, k);
if (j1 == 0 || j1 == Block.LEAVES.id) {
world.setTypeId(i, j + i2, k, Block.LOG.id);
world.setRawTypeId(i, j + i2, k, Block.LOG.id);
}
}

View file

@ -2,23 +2,23 @@ package net.minecraft.server;
public class WorldManager implements IWorldAccess {
private MinecraftServer a;
private MinecraftServer server;
public WorldServer world; // CraftBukkit
// CraftBukkit - changed signature
public WorldManager(MinecraftServer minecraftserver, WorldServer world) {
this.a = minecraftserver;
this.server = minecraftserver;
this.world = world; // CraftBukkit
}
public void a(String s, double d0, double d1, double d2, double d3, double d4, double d5) {}
public void a(Entity entity) {
this.a.k.a(entity);
this.server.tracker.a(entity);
}
public void b(Entity entity) {
this.a.k.b(entity);
this.server.tracker.untrackEntity(entity);
}
public void a(String s, double d0, double d1, double d2, float f, float f1) {}
@ -28,13 +28,13 @@ public class WorldManager implements IWorldAccess {
public void a() {}
public void a(int i, int j, int k) {
// CraftBukkit
this.a.f.a(i, j, k, world);
// CraftBukkit -- add world argument
this.server.serverConfigurationManager.flagDirty(i, j, k, world);
}
public void a(String s, int i, int j, int k) {}
public void a(int i, int j, int k, TileEntity tileentity) {
this.a.f.a(i, j, k, tileentity);
this.server.serverConfigurationManager.a(i, j, k, tileentity);
}
}

View file

@ -12,59 +12,59 @@ import org.bukkit.craftbukkit.CraftWorld;
public class WorldServer extends World implements BlockChangeDelegate {
// CraftBukkit end
public ChunkProviderServer u;
public boolean v = false;
public ChunkProviderServer chunkProviderServer;
public boolean weirdIsOpCache = false;
public boolean w;
public final MinecraftServer x; // CraftBukkit - private -> public final
public final MinecraftServer server; // CraftBukkit - private -> public final
private EntityList y = new EntityList();
public PlayerManager manager; // CraftBukkit
public WorldServer(MinecraftServer minecraftserver, IDataManager idatamanager, String s, int i, long j) {
super(idatamanager, s, j, WorldProvider.a(i));
this.x = minecraftserver;
this.server = minecraftserver;
// CraftBukkit start
this.server = minecraftserver.server;
this.cserver = minecraftserver.server;
this.world = new CraftWorld(this);
this.manager = new PlayerManager(minecraftserver, this);
}
private final CraftWorld world;
private final CraftServer server;
private final CraftServer cserver;
public CraftWorld getWorld() {
return world;
}
public CraftServer getServer() {
return server;
return cserver;
}
// CraftBukkit end
public void a(Entity entity, boolean flag) {
public void entityJoinedWorld(Entity entity, boolean flag) {
// CraftBukkit start -- We prevent spawning in general, so this butchering is not needed
//if (!this.x.m && (entity instanceof EntityAnimal || entity instanceof EntityWaterAnimal)) {
// entity.D();
//if (!this.server.spawnAnimals && (entity instanceof EntityAnimal || entity instanceof EntityWaterAnimal)) {
// entity.die();
//}
// CraftBukkit end
if (entity.passenger == null || !(entity.passenger instanceof EntityHuman)) {
super.a(entity, flag);
super.entityJoinedWorld(entity, flag);
}
}
public void b(Entity entity, boolean flag) {
super.a(entity, flag);
public void vehicleEnteredWorld(Entity entity, boolean flag) {
super.entityJoinedWorld(entity, flag);
}
protected IChunkProvider b() {
IChunkLoader ichunkloader = this.p.a(this.m);
IChunkLoader ichunkloader = this.p.a(this.worldProvider);
this.u = new ChunkProviderServer(this, ichunkloader, this.m.c());
return this.u;
this.chunkProviderServer = new ChunkProviderServer(this, ichunkloader, this.worldProvider.c());
return this.chunkProviderServer;
}
public List d(int i, int j, int k, int l, int i1, int j1) {
public List getTileEntities(int i, int j, int k, int l, int i1, int j1) {
ArrayList arraylist = new ArrayList();
for (int k1 = 0; k1 < this.c.size(); ++k1) {
@ -79,15 +79,15 @@ public class WorldServer extends World implements BlockChangeDelegate {
}
public boolean a(EntityHuman entityhuman, int i, int j, int k) {
int l = (int) MathHelper.e((float) (i - this.q.c()));
int i1 = (int) MathHelper.e((float) (k - this.q.e()));
int l = (int) MathHelper.abs((float) (i - this.worldData.c()));
int i1 = (int) MathHelper.abs((float) (k - this.worldData.e()));
if (l > i1) {
i1 = l;
}
// CraftBukkit -- Configurable spawn protection
return i1 > this.x.spawnProtection || this.x.f.h(entityhuman.name);
return i1 > this.server.spawnProtection || this.server.serverConfigurationManager.isOp(entityhuman.name);
}
protected void b(Entity entity) {
@ -100,18 +100,18 @@ public class WorldServer extends World implements BlockChangeDelegate {
this.y.d(entity.id);
}
public Entity a(int i) {
public Entity getEntity(int i) {
return (Entity) this.y.a(i);
}
public void a(Entity entity, byte b0) {
Packet38EntityStatus packet38entitystatus = new Packet38EntityStatus(entity.id, b0);
this.x.k.b(entity, packet38entitystatus);
this.server.tracker.b(entity, packet38entitystatus);
}
public Explosion a(Entity entity, double d0, double d1, double d2, float f, boolean flag) {
Explosion explosion = super.a(entity, d0, d1, d2, f, flag);
public Explosion createExplosion(Entity entity, double d0, double d1, double d2, float f, boolean flag) {
Explosion explosion = super.createExplosion(entity, d0, d1, d2, f, flag);
// CraftBukkit start
if (explosion.wasCanceled) {
@ -119,16 +119,16 @@ public class WorldServer extends World implements BlockChangeDelegate {
}
// CraftBukkit end
this.x.f.a(d0, d1, d2, 64.0D, new Packet60Explosion(d0, d1, d2, f, explosion.g));
this.server.serverConfigurationManager.a(d0, d1, d2, 64.0D, new Packet60Explosion(d0, d1, d2, f, explosion.g));
return explosion;
}
public void d(int i, int j, int k, int l, int i1) {
super.d(i, j, k, l, i1);
this.x.f.a((double) i, (double) j, (double) k, 64.0D, new Packet54PlayNoteBlock(i, j, k, l, i1));
this.server.serverConfigurationManager.a((double) i, (double) j, (double) k, 64.0D, new Packet54PlayNoteBlock(i, j, k, l, i1));
}
public void t() {
public void saveLevel() {
this.p.e();
}
}

View file

@ -20,12 +20,12 @@ public class CraftChunk implements Chunk {
private WorldServer worldServer;
private int x;
private int z;
public CraftChunk(net.minecraft.server.Chunk chunk) {
this.weakChunk = new WeakReference<net.minecraft.server.Chunk>(chunk);
worldServer = (WorldServer) getHandle().d;
x = getHandle().j;
z = getHandle().k;
worldServer = (WorldServer) getHandle().world;
x = getHandle().x;
z = getHandle().z;
}
public World getWorld() {
@ -35,7 +35,7 @@ public class CraftChunk implements Chunk {
public net.minecraft.server.Chunk getHandle() {
net.minecraft.server.Chunk c = weakChunk.get();
if (c == null) {
c = worldServer.c(x,z);
c = worldServer.getChunkAt(x,z);
weakChunk = new WeakReference<net.minecraft.server.Chunk>(c);
}
return c;
@ -77,12 +77,12 @@ public class CraftChunk implements Chunk {
int count = 0, index = 0;
net.minecraft.server.Chunk chunk = getHandle();
for (int i = 0; i < 8; i++) {
count += chunk.m[i].size();
count += chunk.entitySlices[i].size();
}
Entity[] entities = new Entity[count];
for (int i = 0; i < 8; i++) {
for (Object obj: chunk.m[i].toArray()) {
for (Object obj: chunk.entitySlices[i].toArray()) {
if (!(obj instanceof net.minecraft.server.Entity)) continue;
entities[index++] = ((net.minecraft.server.Entity) obj).getBukkitEntity();
}
@ -93,11 +93,11 @@ public class CraftChunk implements Chunk {
public BlockState[] getTileEntities() {
int index = 0;
net.minecraft.server.Chunk chunk = getHandle();
BlockState[] entities = new BlockState[chunk.l.size()];
for (Object obj : chunk.l.keySet().toArray()) {
if (!(obj instanceof ChunkPosition)) continue;
BlockState[] entities = new BlockState[chunk.tileEntities.size()];
for (Object obj : chunk.tileEntities.keySet().toArray()) {
if (!(obj instanceof ChunkPosition)) continue;
ChunkPosition position = (ChunkPosition) obj;
entities[index++] = worldServer.getWorld().getBlockAt(position.a + (chunk.j << 4), position.b, position.c + (chunk.k << 4)).getState();
entities[index++] = worldServer.getWorld().getBlockAt(position.x + (chunk.x << 4), position.y, position.z + (chunk.z << 4)).getState();
}
return entities;
}

View file

@ -127,11 +127,11 @@ public final class CraftServer implements Server {
}
public Player[] getOnlinePlayers() {
List<EntityPlayer> online = server.b;
List<EntityPlayer> online = server.players;
Player[] players = new Player[online.size()];
for (int i = 0; i < players.length; i++) {
players[i] = online.get(i).a.getPlayer();
players[i] = online.get(i).netServerHandler.getPlayer();
}
return players;
@ -167,7 +167,7 @@ public final class CraftServer implements Server {
}
public Player getPlayer(final EntityPlayer entity) {
return entity.a.getPlayer();
return entity.netServerHandler.getPlayer();
}
public List<Player> matchPlayer(String partialName) {
@ -192,7 +192,7 @@ public final class CraftServer implements Server {
}
public int getMaxPlayers() {
return server.e;
return server.maxPlayers;
}
// NOTE: These are dependent on the corrisponding call in MinecraftServer
@ -215,11 +215,11 @@ public final class CraftServer implements Server {
// NOTE: Temporary calls through to server.properies until its replaced
private String getConfigString(String variable, String defaultValue) {
return this.console.d.a(variable, defaultValue);
return this.console.propertyManager.getString(variable, defaultValue);
}
private int getConfigInt(String variable, int defaultValue) {
return this.console.d.a(variable, defaultValue);
return this.console.propertyManager.getInt(variable, defaultValue);
}
// End Temporary calls
@ -243,10 +243,10 @@ public final class CraftServer implements Server {
// NOTE: Should only be called from MinecraftServer.b()
public boolean dispatchCommand(CommandSender sender, ServerCommand serverCommand) {
if ( commandMap.dispatch(sender, serverCommand.a) ) {
if ( commandMap.dispatch(sender, serverCommand.command) ) {
return true;
}
return console.o.a(serverCommand);
return console.consoleCommandHandler.handle(serverCommand);
}
public boolean dispatchCommand(CommandSender sender, String commandLine) {
@ -260,24 +260,24 @@ public final class CraftServer implements Server {
}
// See if the server can process this command
return console.o.a(new ServerCommand(commandLine, new CommandListener(sender)));
return console.consoleCommandHandler.handle(new ServerCommand(commandLine, new CommandListener(sender)));
}
public void reload() {
PropertyManager config = new PropertyManager(console.options);
console.d = config;
console.propertyManager = config;
boolean animals = config.a("spawn-monsters", console.m);
boolean monsters = config.a("spawn-monsters", console.worlds.get(0).j > 0);
boolean animals = config.getBoolean("spawn-monsters", console.spawnAnimals);
boolean monsters = config.getBoolean("spawn-monsters", console.worlds.get(0).spawnMonsters > 0);
console.l = config.a("online-mode", console.l);
console.m = config.a("spawn-animals", console.m);
console.n = config.a("pvp", console.n);
console.onlineMode = config.getBoolean("online-mode", console.onlineMode);
console.spawnAnimals = config.getBoolean("spawn-animals", console.spawnAnimals);
console.pvpMode = config.getBoolean("pvp", console.pvpMode);
for (WorldServer world : console.worlds) {
world.j = monsters ? 1 : 0;
world.a(monsters, animals);
world.spawnMonsters = monsters ? 1 : 0;
world.setSpawnFlags(monsters, animals);
}
pluginManager.clearPlugins();
@ -307,17 +307,17 @@ public final class CraftServer implements Server {
}
Convertable converter = new WorldLoaderServer(folder);
if (converter.a(name)) {
if (converter.isConvertable(name)) {
getLogger().info("Converting world '" + name + "'");
converter.a(name, new ConvertProgressUpdater(console));
converter.convert(name, new ConvertProgressUpdater(console));
}
WorldServer internal = new WorldServer(console, new ServerNBTManager(new File("."), name, true), name, environment == World.Environment.NETHER ? -1 : 0, seed);
internal.a(new WorldManager(console, internal));
internal.j = 1;
internal.a(true, true);
console.f.a(internal);
internal.addIWorldAccess(new WorldManager(console, internal));
internal.spawnMonsters = 1;
internal.setSpawnFlags(true, true);
console.serverConfigurationManager.setPlayerFileData(internal);
console.worlds.add(internal);
short short1 = 196;
@ -338,10 +338,10 @@ public final class CraftServer implements Server {
i = l;
}
ChunkCoordinates chunkcoordinates = internal.m();
internal.u.c(chunkcoordinates.a + j >> 4, chunkcoordinates.c + k >> 4);
ChunkCoordinates chunkcoordinates = internal.getSpawn();
internal.chunkProviderServer.getChunkAt(chunkcoordinates.x + j >> 4, chunkcoordinates.z + k >> 4);
while (internal.f()) {
while (internal.doLighting()) {
;
}
}
@ -363,7 +363,7 @@ public final class CraftServer implements Server {
}
public Logger getLogger() {
return MinecraftServer.a;
return MinecraftServer.log;
}
public ConsoleReader getReader() {
@ -381,7 +381,7 @@ public final class CraftServer implements Server {
}
public void savePlayers() {
server.d();
server.savePlayers();
}
public void configureDbConfig(ServerConfig config) {
@ -410,11 +410,11 @@ public final class CraftServer implements Server {
this.prefix = parts[parts.length-1];
}
public void b(String msg) {
public void sendMessage(String msg) {
this.commandSender.sendMessage(msg);
}
public String c() {
public String getName() {
return this.prefix;
}
}

View file

@ -34,9 +34,9 @@ public class CraftWorld implements World {
public CraftWorld(WorldServer world) {
this.world = world;
this.server = world.getServer();
this.provider = world.u;
this.provider = world.chunkProviderServer;
if (world.m instanceof WorldProviderHell) {
if (world.worldProvider instanceof WorldProviderHell) {
environment = Environment.NETHER;
} else {
environment = Environment.NORMAL;
@ -63,18 +63,18 @@ public class CraftWorld implements World {
}
public int getHighestBlockYAt(int x, int z) {
return world.d(x, z);
return world.getHighestBlockYAt(x, z);
}
public Location getSpawnLocation() {
ChunkCoordinates spawn = world.m();
return new Location(this, spawn.a, spawn.b, spawn.c);
ChunkCoordinates spawn = world.getSpawn();
return new Location(this, spawn.x, spawn.y, spawn.z);
}
public boolean setSpawnLocation(int x, int y, int z) {
try {
Location previousLocation = getSpawnLocation();
world.q.a(x, y, z);
world.worldData.setSpawn(x, y, z);
// Notify anyone who's listening.
SpawnChangeEvent event = new SpawnChangeEvent(this, previousLocation);
@ -85,9 +85,9 @@ public class CraftWorld implements World {
return false;
}
}
public Chunk getChunkAt(int x, int z) {
return this.provider.c(x, z).bukkitChunk;
return this.provider.getChunkAt(x,z).bukkitChunk;
}
public Chunk getChunkAt(Block block) {
@ -95,11 +95,11 @@ public class CraftWorld implements World {
}
public boolean isChunkLoaded(int x, int z) {
return provider.a( x, z );
return provider.isChunkLoaded( x, z );
}
public Chunk[] getLoadedChunks() {
Object[] chunks = provider.e.values().toArray();
Object[] chunks = provider.chunks.values().toArray();
org.bukkit.Chunk[] craftChunks = new CraftChunk[chunks.length];
for (int i = 0; i < chunks.length; i++) {
@ -131,7 +131,7 @@ public class CraftWorld implements World {
return false;
}
provider.d(x, z);
provider.queueUnload(x, z);
return true;
}
@ -140,34 +140,34 @@ public class CraftWorld implements World {
if (safe && isChunkInUse(x, z)) {
return false;
}
net.minecraft.server.Chunk chunk = provider.b(x, z);
net.minecraft.server.Chunk chunk = provider.getOrCreateChunk(x, z);
if (save) {
chunk.e();
provider.b(chunk);
provider.a(chunk);
chunk.removeEntities();
provider.saveChunk(chunk);
provider.saveChunkNOP(chunk);
}
preserveChunk((CraftChunk)chunk.bukkitChunk);
provider.a.remove(x, z);
provider.e.remove(x, z);
provider.f.remove(chunk);
preserveChunk((CraftChunk) chunk.bukkitChunk);
provider.unloadQueue.remove(x, z);
provider.chunks.remove(x, z);
provider.chunkList.remove(chunk);
return true;
}
public boolean regenerateChunk(int x, int z) {
unloadChunk(x, z, false, false);
provider.a.remove(x, z);
provider.unloadQueue.remove(x, z);
net.minecraft.server.Chunk chunk = null;
if (provider.c == null) {
chunk = provider.b;
if (provider.chunkProvider == null) {
chunk = provider.emptyChunk;
} else {
chunk = provider.c.b(x, z);
chunk = provider.chunkProvider.getOrCreateChunk(x, z);
}
chunkLoadPostProcess(chunk, x, z);
@ -191,9 +191,9 @@ public class CraftWorld implements World {
// The server will compress the chunk and send it to all clients
for(int xx = px; xx < (px + 16); xx++) {
world.g(xx, 0, pz);
world.notify(xx, 0, pz);
}
world.g(px, 127, pz+15);
world.notify(px, 127, pz+15);
return true;
}
@ -201,10 +201,10 @@ public class CraftWorld implements World {
public boolean isChunkInUse(int x, int z) {
Player[] players = server.getOnlinePlayers();
for (Player player : players) {
Location loc = player.getLocation();
if (loc.getWorld() != provider.g.getWorld()) {
if (loc.getWorld() != provider.world.getWorld()) {
continue;
}
@ -221,14 +221,14 @@ public class CraftWorld implements World {
public boolean loadChunk(int x, int z, boolean generate) {
if (generate) {
// Use the default variant of loadChunk when generate == true.
return provider.c(x, z) != null;
return provider.getChunkAt(x, z) != null;
}
provider.a.remove(x, z);
net.minecraft.server.Chunk chunk = (net.minecraft.server.Chunk) provider.e.get(x, z);
provider.unloadQueue.remove(x, z);
net.minecraft.server.Chunk chunk = (net.minecraft.server.Chunk) provider.chunks.get(x, z);
if (chunk == null) {
chunk = provider.e(x, z);
chunk = provider.loadChunk(x, z);
chunkLoadPostProcess(chunk, x, z);
}
@ -237,26 +237,26 @@ public class CraftWorld implements World {
private void chunkLoadPostProcess(net.minecraft.server.Chunk chunk, int x, int z) {
if (chunk != null) {
provider.e.put(x, z, chunk);
provider.f.add(chunk);
provider.chunks.put(x, z, chunk);
provider.chunkList.add(chunk);
chunk.c();
chunk.d();
chunk.loadNOP();
chunk.addEntities();
if (!chunk.n && provider.a(x + 1, z + 1) && provider.a(x, z + 1) && provider.a(x + 1, z)) {
provider.a(provider, x, z);
if (!chunk.done && provider.isChunkLoaded(x + 1, z + 1) && provider.isChunkLoaded(x, z + 1) && provider.isChunkLoaded(x + 1, z)) {
provider.getChunkAt(provider, x, z);
}
if (provider.a(x - 1, z) && !provider.b(x - 1, z).n && provider.a(x - 1, z + 1) && provider.a(x, z + 1) && provider.a(x - 1, z)) {
provider.a(provider, x - 1, z);
if (provider.isChunkLoaded(x - 1, z) && !provider.getOrCreateChunk(x - 1, z).done && provider.isChunkLoaded(x - 1, z + 1) && provider.isChunkLoaded(x, z + 1) && provider.isChunkLoaded(x - 1, z)) {
provider.getChunkAt(provider, x - 1, z);
}
if (provider.a(x, z - 1) && !provider.b(x, z - 1).n && provider.a(x + 1, z - 1) && provider.a(x, z - 1) && provider.a(x + 1, z)) {
provider.a(provider, x, z - 1);
if (provider.isChunkLoaded(x, z - 1) && !provider.getOrCreateChunk(x, z - 1).done && provider.isChunkLoaded(x + 1, z - 1) && provider.isChunkLoaded(x, z - 1) && provider.isChunkLoaded(x + 1, z)) {
provider.getChunkAt(provider, x, z - 1);
}
if (provider.a(x - 1, z - 1) && !provider.b(x - 1, z - 1).n && provider.a(x - 1, z - 1) && provider.a(x, z - 1) && provider.a(x - 1, z)) {
provider.a(provider, x - 1, z - 1);
if (provider.isChunkLoaded(x - 1, z - 1) && !provider.getOrCreateChunk(x - 1, z - 1).done && provider.isChunkLoaded(x - 1, z - 1) && provider.isChunkLoaded(x, z - 1) && provider.isChunkLoaded(x - 1, z)) {
provider.getChunkAt(provider, x - 1, z - 1);
}
}
}
@ -281,17 +281,17 @@ public class CraftWorld implements World {
item.getDurability()
);
EntityItem entity = new EntityItem(world, loc.getX(), loc.getY(), loc.getZ(), stack);
entity.c = 10;
world.a(entity);
entity.pickupDelay = 10;
world.addEntity(entity);
//TODO this is inconsistent with how Entity.getBukkitEntity() works.
// However, this entity is not at the moment backed by a server entity class so it may be left.
return new CraftItem(world.getServer(), entity);
}
public org.bukkit.entity.Item dropItemNaturally(Location loc, ItemStack item) {
double xs = world.k.nextFloat() * 0.7F + (1.0F - 0.7F) * 0.5D;
double ys = world.k.nextFloat() * 0.7F + (1.0F - 0.7F) * 0.5D;
double zs = world.k.nextFloat() * 0.7F + (1.0F - 0.7F) * 0.5D;
double xs = world.random.nextFloat() * 0.7F + (1.0F - 0.7F) * 0.5D;
double ys = world.random.nextFloat() * 0.7F + (1.0F - 0.7F) * 0.5D;
double zs = world.random.nextFloat() * 0.7F + (1.0F - 0.7F) * 0.5D;
loc = loc.clone();
loc.setX(loc.getX() + xs);
loc.setY(loc.getY() + ys);
@ -301,8 +301,8 @@ public class CraftWorld implements World {
public Arrow spawnArrow(Location loc, Vector velocity, float speed, float spread) {
EntityArrow arrow = new EntityArrow(world);
arrow.c(loc.getX(), loc.getY(), loc.getZ(), 0, 0);
world.a(arrow);
arrow.setPositionRotation(loc.getX(), loc.getY(), loc.getZ(), 0, 0);
world.addEntity(arrow);
arrow.a(velocity.getX(), velocity.getY(), velocity.getZ(), speed, spread);
return (Arrow) arrow.getBukkitEntity();
}
@ -315,7 +315,7 @@ public class CraftWorld implements World {
loc.getZ(),
CraftMinecart.Type.Minecart.getId()
);
world.a(minecart);
world.addEntity(minecart);
return (Minecart) minecart.getBukkitEntity();
}
@ -327,7 +327,7 @@ public class CraftWorld implements World {
loc.getZ(),
CraftMinecart.Type.StorageMinecart.getId()
);
world.a(minecart);
world.addEntity(minecart);
return (StorageMinecart) minecart.getBukkitEntity();
}
@ -339,13 +339,13 @@ public class CraftWorld implements World {
loc.getZ(),
CraftMinecart.Type.PoweredMinecart.getId()
);
world.a(minecart);
world.addEntity(minecart);
return (PoweredMinecart) minecart.getBukkitEntity();
}
public Boat spawnBoat(Location loc) {
EntityBoat boat = new EntityBoat(world, loc.getX(), loc.getY(), loc.getZ());
world.a(boat);
world.addEntity(boat);
return (Boat) boat.getBukkitEntity();
}
@ -353,9 +353,9 @@ public class CraftWorld implements World {
LivingEntity creature;
try {
EntityLiving entityCreature = (EntityLiving) EntityTypes.a(creatureType.getName(), world);
entityCreature.a(loc.getX(), loc.getY(), loc.getZ());
entityCreature.setPosition(loc.getX(), loc.getY(), loc.getZ());
creature = (LivingEntity) CraftEntity.getEntity(server, entityCreature);
world.a(entityCreature);
world.addEntity(entityCreature);
} catch (Exception e) {
// if we fail, for any reason, return null.
creature = null;
@ -388,11 +388,11 @@ public class CraftWorld implements World {
}
public String getName() {
return world.q.j;
return world.worldData.name;
}
public long getId() {
return world.q.b();
return world.worldData.b();
}
@Override
@ -413,16 +413,16 @@ public class CraftWorld implements World {
}
public long getFullTime() {
return world.l();
return world.getTime();
}
public void setFullTime(long time) {
world.a(time);
world.setTime(time);
//Forces the client to update to the new time immediately
for (Player p: getPlayers()) {
CraftPlayer cp = (CraftPlayer) p;
cp.getHandle().a.b(new Packet4UpdateTime(time));
cp.getHandle().netServerHandler.sendPacket(new Packet4UpdateTime(time));
}
}
@ -485,7 +485,7 @@ public class CraftWorld implements World {
public List<Entity> getEntities() {
List<Entity> list = new ArrayList<Entity>();
for (Object o: world.b) {
for (Object o: world.entityList) {
if (o instanceof net.minecraft.server.Entity) {
net.minecraft.server.Entity mcEnt = (net.minecraft.server.Entity)o;
Entity bukkitEntity = mcEnt.getBukkitEntity();
@ -503,7 +503,7 @@ public class CraftWorld implements World {
public List<LivingEntity> getLivingEntities() {
List<LivingEntity> list = new ArrayList<LivingEntity>();
for (Object o: world.b) {
for (Object o: world.entityList) {
if (o instanceof net.minecraft.server.Entity) {
net.minecraft.server.Entity mcEnt = (net.minecraft.server.Entity)o;
Entity bukkitEntity = mcEnt.getBukkitEntity();
@ -521,11 +521,11 @@ public class CraftWorld implements World {
public List<Player> getPlayers() {
List<Player> list = new ArrayList<Player>();
for (Object o : world.b) {
for (Object o : world.entityList) {
if (o instanceof net.minecraft.server.Entity) {
net.minecraft.server.Entity mcEnt = (net.minecraft.server.Entity)o;
Entity bukkitEntity = mcEnt.getBukkitEntity();
if ((bukkitEntity != null) && (bukkitEntity instanceof Player)) {
list.add((Player)bukkitEntity);
}
@ -537,9 +537,9 @@ public class CraftWorld implements World {
public void save() {
// Writes level.dat
world.t();
world.saveLevel();
// Saves all chunks/regions
world.o.a(true, null);
world.chunkProvider.saveChunks(true, null);
}
}

View file

@ -88,14 +88,14 @@ public class CraftBlock implements Block {
* @param data New block specific metadata
*/
public void setData(final byte data) {
chunk.getHandle().d.c(x, y, z, data);
chunk.getHandle().world.setData(x, y, z, data);
}
public void setData(final byte data, boolean applyPhysics) {
if (applyPhysics) {
chunk.getHandle().d.c(x, y, z, data);
chunk.getHandle().world.setData(x, y, z, data);
} else {
chunk.getHandle().d.d(x, y, z, data);
chunk.getHandle().world.setRawData(x, y, z, data);
}
}
@ -105,7 +105,7 @@ public class CraftBlock implements Block {
* @return block specific metadata
*/
public byte getData() {
return (byte) chunk.getHandle().b(this.x & 0xF, this.y & 0x7F, this.z & 0xF);
return (byte) chunk.getHandle().getData(this.x & 0xF, this.y & 0x7F, this.z & 0xF);
}
/**
@ -124,24 +124,24 @@ public class CraftBlock implements Block {
* @return whether the block was changed
*/
public boolean setTypeId(final int type) {
return chunk.getHandle().d.e(x, y, z, type);
return chunk.getHandle().world.setRawTypeId(x, y, z, type);
}
public boolean setTypeId(final int type, final boolean applyPhysics) {
if (applyPhysics) {
return setTypeId(type);
} else {
return chunk.getHandle().d.setTypeId(x, y, z, type);
return chunk.getHandle().world.setRawTypeId(x, y, z, type);
}
}
public boolean setTypeIdAndData(final int type, final byte data, final boolean applyPhysics) {
if (applyPhysics) {
return chunk.getHandle().d.b(x, y, z, type, data);
return chunk.getHandle().world.setTypeIdAndData(x, y, z, type, data);
} else {
boolean success = chunk.getHandle().d.setTypeIdAndData(x, y, z, type, data);
if(success) {
chunk.getHandle().d.g(x, y, z);
boolean success = chunk.getHandle().world.setRawTypeIdAndData(x, y, z, type, data);
if (success) {
chunk.getHandle().world.notify(x, y, z);
}
return success;
}
@ -162,7 +162,7 @@ public class CraftBlock implements Block {
* @return block type-id
*/
public int getTypeId() {
return chunk.getHandle().a(this.x & 0xF, this.y & 0x7F, this.z & 0xF);
return chunk.getHandle().getTypeId(this.x & 0xF, this.y & 0x7F, this.z & 0xF);
}
/**
@ -171,7 +171,7 @@ public class CraftBlock implements Block {
* @return light level
*/
public byte getLightLevel() {
return (byte) chunk.getHandle().d.j(this.x, this.y, this.z);
return (byte) chunk.getHandle().world.getLightLevel(this.x, this.y, this.z);
}
/**
@ -331,7 +331,7 @@ public class CraftBlock implements Block {
}
public Biome getBiome() {
BiomeBase base = chunk.getHandle().d.a().a(x, z);
BiomeBase base = chunk.getHandle().world.getWorldChunkManager().getBiome(x, z);
if (base == BiomeBase.RAINFOREST) {
return Biome.RAINFOREST;
@ -363,11 +363,11 @@ public class CraftBlock implements Block {
}
public boolean isBlockPowered() {
return chunk.getHandle().d.o(x, y, z);
return chunk.getHandle().world.isBlockPowered(x, y, z);
}
public boolean isBlockIndirectlyPowered() {
return chunk.getHandle().d.p(x, y, z);
return chunk.getHandle().world.isBlockIndirectlyPowered(x, y, z);
}
@Override
@ -376,26 +376,26 @@ public class CraftBlock implements Block {
}
public boolean isBlockFacePowered(BlockFace face) {
return chunk.getHandle().d.i(x, y, z, blockFaceToNotch(face));
return chunk.getHandle().world.isBlockFacePowered(x, y, z, blockFaceToNotch(face));
}
public boolean isBlockFaceIndirectlyPowered(BlockFace face) {
return chunk.getHandle().d.j(x, y, z, blockFaceToNotch(face));
return chunk.getHandle().world.isBlockFaceIndirectlyPowered(x, y, z, blockFaceToNotch(face));
}
public int getBlockPower(BlockFace face) {
int power = 0;
BlockRedstoneWire wire = (BlockRedstoneWire) net.minecraft.server.Block.REDSTONE_WIRE;
net.minecraft.server.World world = chunk.getHandle().d;
if ((face == BlockFace.DOWN || face == BlockFace.SELF) && world.i(x, y - 1, z, 0)) power = wire.f(world, x, y - 1, z, power);
if ((face == BlockFace.UP || face == BlockFace.SELF) && world.i(x, y + 1, z, 1)) power = wire.f(world, x, y + 1, z, power);
if ((face == BlockFace.EAST || face == BlockFace.SELF) && world.i(x, y, z - 1, 2)) power = wire.f(world, x, y, z - 1, power);
if ((face == BlockFace.WEST || face == BlockFace.SELF) && world.i(x, y, z + 1, 3)) power = wire.f(world, x, y, z + 1, power);
if ((face == BlockFace.NORTH || face == BlockFace.SELF) && world.i(x - 1, y, z, 4)) power = wire.f(world, x - 1, y, z, power);
if ((face == BlockFace.SOUTH || face == BlockFace.SELF) && world.i(x + 1, y, z, 5)) power = wire.f(world, x + 1, y, z, power);
net.minecraft.server.World world = chunk.getHandle().world;
if ((face == BlockFace.DOWN || face == BlockFace.SELF) && world.isBlockFacePowered(x, y - 1, z, 0)) power = wire.getPower(world, x, y - 1, z, power);
if ((face == BlockFace.UP || face == BlockFace.SELF) && world.isBlockFacePowered(x, y + 1, z, 1)) power = wire.getPower(world, x, y + 1, z, power);
if ((face == BlockFace.EAST || face == BlockFace.SELF) && world.isBlockFacePowered(x, y, z - 1, 2)) power = wire.getPower(world, x, y, z - 1, power);
if ((face == BlockFace.WEST || face == BlockFace.SELF) && world.isBlockFacePowered(x, y, z + 1, 3)) power = wire.getPower(world, x, y, z + 1, power);
if ((face == BlockFace.NORTH || face == BlockFace.SELF) && world.isBlockFacePowered(x - 1, y, z, 4)) power = wire.getPower(world, x - 1, y, z, power);
if ((face == BlockFace.SOUTH || face == BlockFace.SELF) && world.isBlockFacePowered(x + 1, y, z, 5)) power = wire.getPower(world, x + 1, y, z, power);
return power > 0 ? power : (face == BlockFace.SELF ? isBlockIndirectlyPowered() : isBlockFaceIndirectlyPowered(face)) ? 15 : 0;
}
public int getBlockPower() {
return getBlockPower(BlockFace.SELF);
}

View file

@ -32,7 +32,7 @@ public class CraftChest extends CraftBlockState implements Chest {
boolean result = super.update(force);
if (result) {
chest.i();
chest.update();
}
return result;

View file

@ -18,15 +18,15 @@ public class CraftCreatureSpawner extends CraftBlockState implements CreatureSpa
}
public CreatureType getCreatureType() {
return CreatureType.fromName(spawner.h);
return CreatureType.fromName(spawner.mobName);
}
public void setCreatureType(CreatureType creatureType) {
spawner.h = creatureType.getName();
spawner.mobName = creatureType.getName();
}
public String getCreatureTypeId() {
return spawner.h;
return spawner.mobName;
}
public void setCreatureTypeId(String creatureType) {
@ -35,15 +35,15 @@ public class CraftCreatureSpawner extends CraftBlockState implements CreatureSpa
if (type == null) {
return;
}
spawner.h = type.getName();
spawner.mobName = type.getName();
}
public int getDelay() {
return spawner.a;
return spawner.spawnDelay;
}
public void setDelay(int delay) {
spawner.a = delay;
spawner.spawnDelay = delay;
}
}

View file

@ -36,7 +36,7 @@ public class CraftDispenser extends CraftBlockState implements Dispenser {
synchronized (block) {
if (block.getType() == Material.DISPENSER) {
BlockDispenser dispense = (BlockDispenser)net.minecraft.server.Block.DISPENSER;
dispense.b(world.getHandle(), getX(), getY(), getZ(), new Random());
dispense.dispense(world.getHandle(), getX(), getY(), getZ(), new Random());
return true;
} else {
return false;
@ -49,7 +49,7 @@ public class CraftDispenser extends CraftBlockState implements Dispenser {
boolean result = super.update(force);
if (result) {
dispenser.i();
dispenser.update();
}
return result;

View file

@ -32,25 +32,25 @@ public class CraftFurnace extends CraftBlockState implements Furnace {
boolean result = super.update(force);
if (result) {
furnace.i();
furnace.update();
}
return result;
}
public short getBurnTime() {
return (short)furnace.a;
return (short)furnace.burnTime;
}
public void setBurnTime(short burnTime) {
furnace.a = burnTime;
furnace.burnTime = burnTime;
}
public short getCookTime() {
return (short)furnace.c;
return (short)furnace.cookTime;
}
public void setCookTime(short cookTime) {
furnace.c = cookTime;
furnace.cookTime = cookTime;
}
}

View file

@ -23,11 +23,11 @@ public class CraftNoteBlock extends CraftBlockState implements NoteBlock {
}
public byte getNote() {
return note.a;
return note.note;
}
public void setNote(byte n) {
note.a = n;
note.note = n;
}
public boolean play() {
@ -35,7 +35,7 @@ public class CraftNoteBlock extends CraftBlockState implements NoteBlock {
synchronized (block) {
if (block.getType() == Material.NOTE_BLOCK) {
note.a(world.getHandle(), getX(), getY(), getZ());
note.play(world.getHandle(), getX(), getY(), getZ());
return true;
} else {
return false;

View file

@ -17,15 +17,15 @@ public class CraftSign extends CraftBlockState implements Sign {
}
public String[] getLines() {
return sign.a;
return sign.lines;
}
public String getLine(int index) throws IndexOutOfBoundsException {
return sign.a[index];
return sign.lines[index];
}
public void setLine(int index, String line) throws IndexOutOfBoundsException {
sign.a[index] = line;
sign.lines[index] = line;
}
@Override
@ -33,7 +33,7 @@ public class CraftSign extends CraftBlockState implements Sign {
boolean result = super.update(force);
if (result) {
sign.i();
sign.update();
}
return result;

View file

@ -14,18 +14,18 @@ public class CraftCreature extends CraftLivingEntity implements Creature{
public void setTarget(LivingEntity target) {
EntityCreature entity = getHandle();
if (target == null) {
entity.d = null;
entity.target = null;
} else if (target instanceof CraftLivingEntity) {
EntityLiving victim = ((CraftLivingEntity) target).getHandle();
entity.d = victim;
entity.a = entity.world.a(entity, entity.d, 16.0F);
entity.target = victim;
entity.pathEntity = entity.world.findPath(entity, entity.target, 16.0F);
}
}
public CraftLivingEntity getTarget() {
if (getHandle().d == null) return null;
if (getHandle().target == null) return null;
return (CraftLivingEntity) getHandle().d.getBukkitEntity();
return (CraftLivingEntity) getHandle().target.getBukkitEntity();
}
@Override

Some files were not shown because too many files have changed in this diff Show more