Paper/src/main/java/net/minecraft/server/WorldServer.java

135 Zeilen
3.9 KiB
Java

package net.minecraft.server;
import java.io.File;
2011-01-29 22:50:29 +01:00
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
// CraftBukkit start
import org.bukkit.BlockChangeDelegate;
2010-12-30 23:07:54 +01:00
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.craftbukkit.CraftWorld;
public class WorldServer extends World implements BlockChangeDelegate {
// CraftBukkit end
2011-02-23 03:37:56 +01:00
public ChunkProviderServer u;
public boolean v = false;
public boolean w;
public final MinecraftServer x; // Craftbukkit - private -> public final
private EntityList y = new EntityList();
2011-02-06 23:53:48 +01:00
public PlayerManager manager; // Craftbukkit
2011-02-23 03:37:56 +01:00
public WorldServer(MinecraftServer minecraftserver, IDataManager idatamanager, String s, int i) {
super(idatamanager, s, (new Random()).nextLong(), WorldProvider.a(i));
this.x = minecraftserver;
2011-01-29 22:50:29 +01:00
// CraftBukkit start
2011-02-07 10:43:50 +01:00
this.server = minecraftserver.server;
2011-02-08 13:48:29 +01:00
this.world = new CraftWorld(this);
2011-02-07 10:43:50 +01:00
this.manager = new PlayerManager(minecraftserver, this);
2011-01-29 22:50:29 +01:00
}
private final CraftWorld world;
private final CraftServer server;
public CraftWorld getWorld() {
return world;
}
public CraftServer getServer() {
return server;
}
// CraftBukkit end
public void a(Entity entity, boolean flag) {
2011-02-23 03:37:56 +01:00
// CraftBukkit start -- We prevent spawning in general, so this butchering is not needed
//if (!this.x.m && (entity instanceof EntityAnimal || entity instanceof EntityWaterAnimal)) {
// entity.C();
//}
// CraftBukkit end
2011-01-29 22:50:29 +01:00
if (entity.passenger == null || !(entity.passenger instanceof EntityHuman)) {
super.a(entity, flag);
}
}
public void b(Entity entity, boolean flag) {
super.a(entity, flag);
}
2011-02-23 03:37:56 +01:00
protected IChunkProvider b() {
IChunkLoader ichunkloader = this.p.a(this.m);
this.u = new ChunkProviderServer(this, ichunkloader, this.m.c());
return this.u;
}
public List d(int i, int j, int k, int l, int i1, int j1) {
ArrayList arraylist = new ArrayList();
2011-01-29 22:50:29 +01:00
for (int k1 = 0; k1 < this.c.size(); ++k1) {
TileEntity tileentity = (TileEntity) this.c.get(k1);
2011-02-23 03:37:56 +01:00
if (tileentity.e >= i && tileentity.f >= j && tileentity.g >= k && tileentity.e < l && tileentity.f < i1 && tileentity.g < j1) {
2011-01-29 22:50:29 +01:00
arraylist.add(tileentity);
}
}
2011-01-29 22:50:29 +01:00
return arraylist;
}
2011-01-29 22:50:29 +01:00
public boolean a(EntityHuman entityhuman, int i, int j, int k) {
2011-02-23 03:37:56 +01:00
int l = (int) MathHelper.e((float) (i - this.q.c()));
int i1 = (int) MathHelper.e((float) (k - this.q.e()));
if (l > i1) {
i1 = l;
}
2011-01-29 22:50:29 +01:00
2011-02-23 03:37:56 +01:00
return i1 > this.x.spawnProtection || this.x.f.h(entityhuman.name); // CraftBukkit Configurable spawn protection start
}
protected void b(Entity entity) {
super.b(entity);
2011-02-23 03:37:56 +01:00
this.y.a(entity.id, entity);
}
protected void c(Entity entity) {
super.c(entity);
2011-02-23 03:37:56 +01:00
this.y.d(entity.id);
}
public Entity a(int i) {
2011-02-23 03:37:56 +01:00
return (Entity) this.y.a(i);
}
2011-01-29 22:50:29 +01:00
public void a(Entity entity, byte b0) {
Packet38EntityStatus packet38entitystatus = new Packet38EntityStatus(entity.id, b0);
2011-02-23 03:37:56 +01:00
this.x.k.b(entity, packet38entitystatus);
}
2011-01-29 22:50:29 +01:00
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);
// Craftbukkit start
if(explosion.wasCanceled) {
return explosion;
}
// Craftbukkit end
2011-02-23 03:37:56 +01:00
this.x.f.a(d0, d1, d2, 64.0D, new Packet60Explosion(d0, d1, d2, f, explosion.g));
return explosion;
}
2011-02-23 03:37:56 +01:00
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));
}
public void r() {
this.p.e();
}
}