summaryrefslogtreecommitdiffstats
path: root/src/main/java/net/minecraft/server/WorldServer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/minecraft/server/WorldServer.java')
-rw-r--r--src/main/java/net/minecraft/server/WorldServer.java227
1 files changed, 110 insertions, 117 deletions
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 06ceb23a..97316346 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -1,7 +1,9 @@
package net.minecraft.server;
import java.io.File;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
// CraftBukkit start
import org.bukkit.craftbukkit.CraftServer;
@@ -15,29 +17,69 @@ import org.bukkit.event.block.BlockPhysicsEvent;
public class WorldServer extends World {
public ChunkProviderServer A;
- public boolean B;
+ public boolean B = false;
public boolean C;
private MinecraftServer D;
- private MCHashTable E;
+ private EntityList E = new EntityList();
- public WorldServer(MinecraftServer minecraftserver, File file, String s, int i) {
- super(file, s, (new Random()).nextLong(), WorldProvider.a(i));
- B = false;
- E = new MCHashTable();
- D = minecraftserver;
- world = new CraftWorld(this); // CraftBukkit
- server = minecraftserver.server; // CraftBukkit
+ public WorldServer(MinecraftServer minecraftserver, File file1, String s, int i) {
+ super(file1, s, (new Random()).nextLong(), WorldProvider.a(i));
+ this.D = minecraftserver;
+
+ // CraftBukkit start
+ world = new CraftWorld(this);
+ server = minecraftserver.server;
+ }
+
+ private final CraftWorld world;
+ private final CraftServer server;
+
+ @Override
+ public boolean d(int i1, int j1, int k1, int l1) {
+ boolean result = super.d(i1, j1, k1, l1);
+ if ((result) && (world != null)) world.updateBlock(i1, j1, k1);
+ return result;
+ }
+
+ @Override
+ public boolean setTypeId(int i, int j, int k, int l) {
+ boolean result = super.setTypeId(i, j, k, l);
+ if ((result) && (world != null)) world.updateBlock(i, j, k);
+ return result;
+ }
+
+ @Override
+ public boolean setTypeIdAndData(int i, int j, int k, int l, int i1) {
+ boolean result = super.setTypeIdAndData(i, j, k, l, i1);
+ if ((result) && (world != null)) world.updateBlock(i, j, k);
+ return result;
}
+ @Override
+ public void setTileEntity(int i, int j, int k, TileEntity tileentity) {
+ super.setTileEntity(i, j, k, tileentity);
+ if (world != null) world.updateBlock(i, j, k);
+ }
+
+ public CraftWorld getWorld() {
+ return world;
+ }
+
+ public CraftServer getServer() {
+ return server;
+ }
+ // CraftBukkit end
+
public void f() {
super.f();
}
public void a(Entity entity, boolean flag) {
- if (!D.m && ((entity instanceof EntityAnimals) || (entity instanceof EntityWaterMob))) {
+ if (!this.D.m && (entity instanceof EntityAnimal || entity instanceof EntityWaterAnimal)) {
entity.q();
}
- if (entity.j == null || !(entity.j instanceof EntityPlayer)) {
+
+ if (entity.passenger == null || !(entity.passenger instanceof EntityHuman)) {
super.a(entity, flag);
}
}
@@ -46,173 +88,124 @@ public class WorldServer extends World {
super.a(entity, flag);
}
- protected IChunkProvider a(File file) {
- A = new ChunkProviderServer(this, q.a(file), q.c());
- return ((IChunkProvider) (A));
+ protected IChunkProvider a(File file1) {
+ this.A = new ChunkProviderServer(this, this.q.a(file1), this.q.c());
+ return this.A;
}
public List d(int i, int j, int k, int l, int i1, int j1) {
ArrayList arraylist = new ArrayList();
- for (int k1 = 0; k1 < c.size(); k1++) {
- TileEntity tileentity = (TileEntity) c.get(k1);
+ for (int k1 = 0; k1 < this.c.size(); ++k1) {
+ TileEntity tileentity = (TileEntity) this.c.get(k1);
if (tileentity.b >= i && tileentity.c >= j && tileentity.d >= k && tileentity.b < l && tileentity.c < i1 && tileentity.d < j1) {
- ((List) (arraylist)).add(((tileentity)));
+ arraylist.add(tileentity);
}
}
- return ((List) (arraylist));
+ return arraylist;
}
- public boolean a(EntityPlayer entityplayer, int i, int j, int k) {
- int l = (int) MathHelper.e(i - m);
- int i1 = (int) MathHelper.e(k - o);
+ public boolean a(EntityHuman entityhuman, int i, int j, int k) {
+ int l = (int) MathHelper.e((float) (i - this.spawnX));
+ int i1 = (int) MathHelper.e((float) (k - this.spawnZ));
if (l > i1) {
i1 = l;
}
- return i1 > 16 || D.f.g(entityplayer.aw);
+
+ return i1 > 16 || this.D.f.g(entityhuman.name);
}
protected void b(Entity entity) {
super.b(entity);
- E.a(entity.g, ((entity)));
+ this.E.a(entity.id, entity);
}
protected void c(Entity entity) {
super.c(entity);
- E.d(entity.g);
+ this.E.d(entity.id);
}
public Entity a(int i) {
- return (Entity) E.a(i);
+ return (Entity) this.E.a(i);
}
- public void a(Entity entity, byte byte0) {
- Packet38 packet38 = new Packet38(entity.g, byte0);
+ public void a(Entity entity, byte b0) {
+ Packet38EntityStatus packet38entitystatus = new Packet38EntityStatus(entity.id, b0);
- D.k.b(entity, ((Packet) (packet38)));
+ this.D.k.b(entity, packet38entitystatus);
}
- public Explosion a(Entity entity, double d1, double d2, double d3, float f1, boolean flag) {
- Explosion explosion = super.a(entity, d1, d2, d3, f1, flag);
+ 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);
- D.f.a(d1, d2, d3, 64D, ((Packet) (new Packet60(d1, d2, d3, f1, explosion.g))));
+ this.D.f.a(d0, d1, d2, 64.0D, new Packet60Explosion(d0, d1, d2, f, explosion.g));
return explosion;
}
public void c(int i, int j, int k, int l, int i1) {
super.c(i, j, k, l, i1);
- D.f.a(i, j, k, 64D, ((Packet) (new Packet54(i, j, k, l, i1))));
+ this.D.f.a((double) i, (double) j, (double) k, 64.0D, new Packet54PlayNoteBlock(i, j, k, l, i1));
}
- // CraftBukkit start
- private final CraftWorld world;
- private final CraftServer server;
-
- @Override
- public boolean d(int i1, int j1, int k1, int l1) {
- boolean result = super.d(i1, j1, k1, l1);
- if ((result) && (world != null)) world.updateBlock(i1, j1, k1);
- return result;
- }
-
- @Override
- public boolean b(int i1, int j1, int k1, int l1) {
- boolean result = super.b(i1, j1, k1, l1);
- if ((result) && (world != null)) world.updateBlock(i1, j1, k1);
- return result;
- }
-
- @Override
- public boolean a(int i1, int j1, int k1, int l1, int i2) {
- boolean result = super.a(i1, j1, k1, l1, i2);
- if ((result) && (world != null)) world.updateBlock(i1, j1, k1);
- return result;
- }
-
- @Override
- public void a(int i1, int j1, int k1, TileEntity tileentity) {
- super.a(i1, j1, k1, tileentity);
- if (world != null) world.updateBlock(i1, j1, k1);
- }
-
- public CraftWorld getWorld() {
- return world;
- }
-
- public CraftServer getServer() {
- return server;
- }
- // CraftBukkit end
-
// XXX: the following method is straight from the World.java with tweaks as noted. KEEP THEM UPDATED!
// XXX: done because it calls private k()
@Override
- public void h(int i1, int j1, int k1, int l1) {
- l(i1 - 1, j1, k1, l1);
- l(i1 + 1, j1, k1, l1);
- l(i1, j1 - 1, k1, l1);
- l(i1, j1 + 1, k1, l1);
- l(i1, j1, k1 - 1, l1);
- l(i1, j1, k1 + 1, l1);
+ public void h(int i, int j, int k, int l) {
+ this.l(i - 1, j, k, l);
+ this.l(i + 1, j, k, l);
+ this.l(i, j - 1, k, l);
+ this.l(i, j + 1, k, l);
+ this.l(i, j, k - 1, l);
+ this.l(i, j, k + 1, l);
}
// XXX: the following method is straight from the World.java with tweaks as noted. KEEP THEM UPDATED!
- private void l(int i1, int j1, int k1, int l1) {
- if (i || z) {
- return;
- }
- Block block = Block.m[a(i1, j1, k1)];
-
- if (block != null) {
- // CraftBukkit start
- if (world != null) {
- BlockPhysicsEvent event = new BlockPhysicsEvent(Event.Type.BLOCK_PHYSICS, world.getBlockAt(i1, j1, k1), l1);
- server.getPluginManager().callEvent(event);
- if (event.isCancelled()) {
- return;
+ private void l(int i, int j, int k, int l) {
+ if (!this.i && !this.isStatic) {
+ Block block = Block.byId[this.getTypeId(i, j, k)];
+
+ if (block != null) {
+ // CraftBukkit start
+ if (world != null) {
+ BlockPhysicsEvent event = new BlockPhysicsEvent(Event.Type.BLOCK_PHYSICS, world.getBlockAt(i, j, k), l);
+ server.getPluginManager().callEvent(event);
+ if (event.isCancelled()) {
+ return;
+ }
}
- }
- // CraftBukkit stop
+ // CraftBukkit stop
- block.b(this, i1, j1, k1, l1);
+ block.b(this, i, j, k, l);
+ }
}
}
// XXX: the following method is straight from the World.java with tweaks as noted. KEEP THEM UPDATED!
@Override
- public boolean a(int i1, int j1, int k1, int l1, boolean flag) {
- int i2 = a(j1, k1, l1);
- Block block = Block.m[i2];
- Block block1 = Block.m[i1];
- AxisAlignedBB axisalignedbb = block1.d(this, j1, k1, l1);
+ public boolean a(int i, int j, int k, int l, boolean flag) {
+ int i1 = this.getTypeId(j, k, l);
+ Block block = Block.byId[i1];
+ Block block1 = Block.byId[i];
+ AxisAlignedBB axisalignedbb = block1.d(this, j, k, l);
if (flag) {
axisalignedbb = null;
}
- if (axisalignedbb != null && !a(axisalignedbb)) {
- return false;
- }
+
// Craftbukkit start - We dont want to allow the user to override the bounding box check
- boolean defaultReturn;
+ boolean defaultReturn = axisalignedbb != null && !this.a(axisalignedbb) ? false : (block != Block.WATER && block != Block.STATIONARY_WATER && block != Block.LAVA && block != Block.STATIONARY_LAVA && block != Block.FIRE && block != Block.SNOW ? i > 0 && block == null && block1.a(this, j, k, l) : true);
- if (block == Block.A || block == Block.B || block == Block.C || block == Block.D || block == Block.ar || block == Block.aS) {
- defaultReturn = true;
- } else {
- defaultReturn = (i1 > 0) && (block == null) && (block1.a(this, j1, k1, l1));
+ if (!defaultReturn) {
+ return false;
}
- // Craftbukkit - If flag is true, it's natural, not user placement. Don't hook.
- if (!flag) {
- BlockCanBuildEvent event = new BlockCanBuildEvent(Type.BLOCK_CANBUILD, getWorld().getBlockAt(j1, k1, l1), i1, defaultReturn);
- server.getPluginManager().callEvent(event);
+ BlockCanBuildEvent event = new BlockCanBuildEvent(Type.BLOCK_CANBUILD, getWorld().getBlockAt(j, k, l), i1, defaultReturn);
+ server.getPluginManager().callEvent(event);
- return event.isBuildable();
- } else {
- return defaultReturn;
- }
+ return event.isBuildable();
// CraftBukkit end
}
}