diff --git a/pom.xml b/pom.xml index 62f6aad89e..84bb24fc7f 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ org.bukkit craftbukkit jar - 1.3.1-R2.1-SNAPSHOT + 1.3.2-R0.1-SNAPSHOT CraftBukkit http://www.bukkit.org @@ -51,14 +51,14 @@ org.bukkit bukkit - 1.3.1-R2.1-SNAPSHOT + 1.3.2-R0.1-SNAPSHOT jar compile org.bukkit minecraft-server - 1.3.1 + 1.3.2 jar compile diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java index fb9bf2054f..a82773b491 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -255,7 +255,7 @@ public class Chunk { } if (i1 != l) { - this.world.g(i, k, i1, l); + this.world.g(i + this.x * 16, k + this.z * 16, i1, l); this.heightMap[k << 4 | i] = i1; int j1 = this.x * 16 + i; int k1 = this.z * 16 + k; diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java index 66a517ffe9..92b4c949bc 100644 --- a/src/main/java/net/minecraft/server/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/DedicatedServer.java @@ -47,7 +47,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer System.setErr(new PrintStream(new LoggerOutputStream(log, Level.SEVERE), true)); // CraftBukkit end - log.info("Starting minecraft server version 1.3.1"); + log.info("Starting minecraft server version 1.3.2"); if (Runtime.getRuntime().maxMemory() / 1024L / 1024L < 512L) { log.warning("To start the server with more ram, launch it as \"java -Xmx1024M -Xms1024M -jar minecraft_server.jar\""); } @@ -189,7 +189,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer protected void a(CrashReport crashreport) { while (this.isRunning()) { - this.ah(); + this.ai(); try { Thread.sleep(10L); @@ -200,8 +200,9 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer } public CrashReport b(CrashReport crashreport) { + crashreport = super.b(crashreport); crashreport.a("Type", (Callable) (new CrashReportType(this))); - return super.b(crashreport); + return crashreport; } protected void o() { @@ -210,7 +211,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer public void q() { super.q(); - this.ah(); + this.ai(); } public boolean getAllowNether() { @@ -222,8 +223,8 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer } public void a(MojangStatisticsGenerator mojangstatisticsgenerator) { - mojangstatisticsgenerator.a("whitelist_enabled", Boolean.valueOf(this.ai().getHasWhitelist())); - mojangstatisticsgenerator.a("whitelist_count", Integer.valueOf(this.ai().getWhitelisted().size())); + mojangstatisticsgenerator.a("whitelist_enabled", Boolean.valueOf(this.aj().getHasWhitelist())); + mojangstatisticsgenerator.a("whitelist_count", Integer.valueOf(this.aj().getWhitelisted().size())); super.a(mojangstatisticsgenerator); } @@ -235,7 +236,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer this.l.add(new ServerCommand(s, icommandlistener)); } - public void ah() { + public void ai() { while (!this.l.isEmpty()) { ServerCommand servercommand = (ServerCommand) this.l.remove(0); @@ -254,7 +255,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer return true; } - public ServerConfigurationManager ai() { + public ServerConfigurationManager aj() { return (ServerConfigurationManager) super.getServerConfigurationManager(); } @@ -288,7 +289,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer return file1 != null ? file1.getAbsolutePath() : "No settings file"; } - public void aj() { + public void ak() { ServerGUI.a(this); this.s = true; } @@ -302,6 +303,6 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer } public ServerConfigurationManagerAbstract getServerConfigurationManager() { - return this.ai(); + return this.aj(); } } diff --git a/src/main/java/net/minecraft/server/EntityEnderman.java b/src/main/java/net/minecraft/server/EntityEnderman.java index 48e9c1bdf1..3e6c800421 100644 --- a/src/main/java/net/minecraft/server/EntityEnderman.java +++ b/src/main/java/net/minecraft/server/EntityEnderman.java @@ -132,7 +132,7 @@ public class EntityEnderman extends EntityMonster { this.world.a("portal", this.locX + (this.random.nextDouble() - 0.5D) * (double) this.width, this.locY + this.random.nextDouble() * (double) this.length - 0.25D, this.locZ + (this.random.nextDouble() - 0.5D) * (double) this.width, (this.random.nextDouble() - 0.5D) * 2.0D, -this.random.nextDouble(), (this.random.nextDouble() - 0.5D) * 2.0D); } - if (this.world.r() && !this.world.isStatic) { + if (this.world.s() && !this.world.isStatic) { float f = this.c(1.0F); if (f > 0.5F && this.world.j(MathHelper.floor(this.locX), MathHelper.floor(this.locY), MathHelper.floor(this.locZ)) && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F) { diff --git a/src/main/java/net/minecraft/server/EntityExperienceOrb.java b/src/main/java/net/minecraft/server/EntityExperienceOrb.java index c6d8ecd77f..c1e1feafcf 100644 --- a/src/main/java/net/minecraft/server/EntityExperienceOrb.java +++ b/src/main/java/net/minecraft/server/EntityExperienceOrb.java @@ -12,6 +12,8 @@ public class EntityExperienceOrb extends Entity { public int c; private int d = 5; public int value; // CraftBukkit - private -> public + private EntityHuman targetPlayer; + private int targetTime; public EntityExperienceOrb(World world, double d0, double d1, double d2, int i) { super(world); @@ -56,11 +58,18 @@ public class EntityExperienceOrb extends Entity { this.i(this.locX, (this.boundingBox.b + this.boundingBox.e) / 2.0D, this.locZ); double d0 = 8.0D; - EntityHuman entityhuman = this.world.findNearbyPlayer(this, d0); - if (entityhuman != null) { + if (this.targetTime < this.a - 20 + this.id % 100) { + if (this.targetPlayer == null || this.targetPlayer.e(this) > d0 * d0) { + this.targetPlayer = this.world.findNearbyPlayer(this, d0); + } + + this.targetTime = this.a; + } + + if (this.targetPlayer != null) { // CraftBukkit start - EntityTargetEvent event = CraftEventFactory.callEntityTargetEvent(this, entityhuman, EntityTargetEvent.TargetReason.CLOSEST_PLAYER); + EntityTargetEvent event = CraftEventFactory.callEntityTargetEvent(this, targetPlayer, EntityTargetEvent.TargetReason.CLOSEST_PLAYER); Entity target = event.getTarget() == null ? null : ((org.bukkit.craftbukkit.entity.CraftEntity) event.getTarget()).getHandle(); if (!event.isCancelled() && target != null) { diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java index 0b02f5b7f0..a269b00908 100644 --- a/src/main/java/net/minecraft/server/EntityHuman.java +++ b/src/main/java/net/minecraft/server/EntityHuman.java @@ -144,7 +144,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen if (!this.world.isStatic) { if (!this.l()) { this.a(true, true, false); - } else if (this.world.r()) { + } else if (this.world.s()) { this.a(false, true, true); } } @@ -855,7 +855,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen return EnumBedResult.NOT_POSSIBLE_HERE; } - if (this.world.r()) { + if (this.world.s()) { return EnumBedResult.NOT_POSSIBLE_NOW; } diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java index b8696b58c8..9fe2d0b963 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -721,7 +721,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { } public boolean b(String s) { - return "seed".equals(s) && !this.server.S() ? true : this.server.getServerConfigurationManager().isOp(this.name); + return "seed".equals(s) && !this.server.S() ? true : (!"tell".equals(s) && !"help".equals(s) && !"me".equals(s) ? this.server.getServerConfigurationManager().isOp(this.name) : true); } public String r() { diff --git a/src/main/java/net/minecraft/server/EntitySkeleton.java b/src/main/java/net/minecraft/server/EntitySkeleton.java index d96458af1c..6cfe0539d2 100644 --- a/src/main/java/net/minecraft/server/EntitySkeleton.java +++ b/src/main/java/net/minecraft/server/EntitySkeleton.java @@ -46,7 +46,7 @@ public class EntitySkeleton extends EntityMonster { } public void d() { - if (this.world.r() && !this.world.isStatic) { + if (this.world.s() && !this.world.isStatic) { float f = this.c(1.0F); if (f > 0.5F && this.world.j(MathHelper.floor(this.locX), MathHelper.floor(this.locY), MathHelper.floor(this.locZ)) && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F) { diff --git a/src/main/java/net/minecraft/server/EntityZombie.java b/src/main/java/net/minecraft/server/EntityZombie.java index ef5ad29da4..400f3b1c35 100644 --- a/src/main/java/net/minecraft/server/EntityZombie.java +++ b/src/main/java/net/minecraft/server/EntityZombie.java @@ -37,7 +37,7 @@ public class EntityZombie extends EntityMonster { } public void d() { - if (this.world.r() && !this.world.isStatic) { + if (this.world.s() && !this.world.isStatic) { float f = this.c(1.0F); if (f > 0.5F && this.world.j(MathHelper.floor(this.locX), MathHelper.floor(this.locY), MathHelper.floor(this.locZ)) && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java index 21545ca938..6529ff8015 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -304,7 +304,7 @@ public abstract class MinecraftServer implements Runnable, IMojangStatistics, IC if (worldserver != null) { if (!flag) { - log.info("Saving chunks for level \'" + worldserver.getWorldData().getName() + "\'/" + worldserver.worldProvider); + log.info("Saving chunks for level \'" + worldserver.getWorldData().getName() + "\'/" + worldserver.worldProvider.getName()); worldserver.save(true, (IProgressUpdate) null); // Perform a full save } else { worldserver.save(false, (IProgressUpdate) null); // Queue chunk saving @@ -561,10 +561,7 @@ public abstract class MinecraftServer implements Runnable, IMojangStatistics, IC while (true) { if (!worldserver.updateLights()) { // this.methodProfiler.b(); // CraftBukkit - not in production code - if (true || !worldserver.players.isEmpty()) { // CraftBukkit - this prevents entity cleanup, other issue on servers with no players - worldserver.tickEntities(); - } - + worldserver.tickEntities(); // this.methodProfiler.a("tracker"); // CraftBukkit - not in production code worldserver.getTracker().updatePlayers(); // this.methodProfiler.b(); // CraftBukkit - not in production code @@ -691,7 +688,7 @@ public abstract class MinecraftServer implements Runnable, IMojangStatistics, IC } if (flag) { - dedicatedserver.aj(); + dedicatedserver.ak(); } */ @@ -744,7 +741,7 @@ public abstract class MinecraftServer implements Runnable, IMojangStatistics, IC } public String getVersion() { - return "1.3.1"; + return "1.3.2"; } public int x() { diff --git a/src/main/java/net/minecraft/server/NetServerHandler.java b/src/main/java/net/minecraft/server/NetServerHandler.java index dbd1a5dede..6087692cef 100644 --- a/src/main/java/net/minecraft/server/NetServerHandler.java +++ b/src/main/java/net/minecraft/server/NetServerHandler.java @@ -126,6 +126,9 @@ public class NetServerHandler extends NetHandler { // this.minecraftServer.methodProfiler.c("playerTick"); // CraftBukkit - not in production code if (!this.h && !this.player.viewingCredits) { this.player.g(); + if (this.player.vehicle == null) { + this.player.setPositionRotation(this.y, this.z, this.q, this.player.yaw, this.player.pitch); + } } // this.minecraftServer.methodProfiler.b(); // CraftBukkit - not in production code @@ -266,13 +269,11 @@ public class NetServerHandler extends NetHandler { } if (packet10flying.hasPos && packet10flying.y == -999.0D && packet10flying.stance == -999.0D) { - // CraftBukkit start - if (Math.abs(packet10flying.x) > 1 || Math.abs(packet10flying.z) > 1) { + if (Math.abs(packet10flying.x) > 1.0D || Math.abs(packet10flying.z) > 1.0D) { System.err.println(player.getName() + " was caught trying to crash the server with an invalid position."); player.kickPlayer("Nope!"); return; } - // CraftBukkit end d5 = packet10flying.x; d4 = packet10flying.z; @@ -875,6 +876,7 @@ public class NetServerHandler extends NetHandler { } try { + logger.info(event.getPlayer().getName() + " issued server command: " + event.getMessage()); // CraftBukkit if (this.server.dispatchCommand(event.getPlayer(), event.getMessage().substring(1))) { return; } @@ -886,10 +888,7 @@ public class NetServerHandler extends NetHandler { // CraftBukkit end /* CraftBukkit start - No longer needed as we have already handled it in server.dispatchServerCommand above. - if (this.minecraftServer.getServerConfigurationManager().isOp(this.player.name) || "/seed".equals(s)) { - logger.info(this.player.name + " issued server command: " + s); - this.minecraftServer.getCommandHandler().a(this.player, s); - } + this.minecraftServer.getCommandHandler().a(this.player, s); // CraftBukkit end */ } diff --git a/src/main/java/net/minecraft/server/Packet56MapChunkBulk.java b/src/main/java/net/minecraft/server/Packet56MapChunkBulk.java index ae8a0f68de..014bdac1f5 100644 --- a/src/main/java/net/minecraft/server/Packet56MapChunkBulk.java +++ b/src/main/java/net/minecraft/server/Packet56MapChunkBulk.java @@ -142,8 +142,4 @@ public class Packet56MapChunkBulk extends Packet { public int d() { return this.c.length; } - - public boolean a_() { - return true; - } } diff --git a/src/main/java/net/minecraft/server/PlayerManager.java b/src/main/java/net/minecraft/server/PlayerManager.java index c824e67c26..51e5ac514c 100644 --- a/src/main/java/net/minecraft/server/PlayerManager.java +++ b/src/main/java/net/minecraft/server/PlayerManager.java @@ -229,7 +229,7 @@ public class PlayerManager { public boolean a(EntityPlayer entityplayer, int i, int j) { PlayerInstance playerinstance = this.a(i, j, false); - return playerinstance == null ? false : PlayerInstance.b(playerinstance).contains(entityplayer); + return playerinstance == null ? false : PlayerInstance.b(playerinstance).contains(entityplayer) && !entityplayer.chunkCoordIntPairQueue.contains(PlayerInstance.a(playerinstance)); } public static int getFurthestViewableBlock(int i) { diff --git a/src/main/java/net/minecraft/server/ServerConfigurationManagerAbstract.java b/src/main/java/net/minecraft/server/ServerConfigurationManagerAbstract.java index 0939c93eb8..7111bab41a 100644 --- a/src/main/java/net/minecraft/server/ServerConfigurationManagerAbstract.java +++ b/src/main/java/net/minecraft/server/ServerConfigurationManagerAbstract.java @@ -499,12 +499,8 @@ public abstract class ServerConfigurationManagerAbstract { } public void sendAll(Packet packet) { - Iterator iterator = this.players.iterator(); - - while (iterator.hasNext()) { - EntityPlayer entityplayer = (EntityPlayer) iterator.next(); - - entityplayer.netServerHandler.sendPacket(packet); + for (int i = 0; i < this.players.size(); ++i) { + ((EntityPlayer) this.players.get(i)).netServerHandler.sendPacket(packet); } } diff --git a/src/main/java/net/minecraft/server/VillageSiege.java b/src/main/java/net/minecraft/server/VillageSiege.java index ebe13e6806..5d137dbc4c 100644 --- a/src/main/java/net/minecraft/server/VillageSiege.java +++ b/src/main/java/net/minecraft/server/VillageSiege.java @@ -28,7 +28,7 @@ public class VillageSiege { return; } } else { - if (this.world.r()) { + if (this.world.s()) { this.c = 0; return; } diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java index e3f8ed0acd..d9874412c7 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -134,7 +134,7 @@ public abstract class World implements IBlockAccess { } this.worldProvider.a(this); - this.chunkProvider = this.h(); + this.chunkProvider = this.i(); if (!this.worldData.isInitialized()) { this.a(worldsettings); this.worldData.d(true); @@ -146,7 +146,7 @@ public abstract class World implements IBlockAccess { this.getServer().addWorld(this.world); // CraftBukkit } - protected abstract IChunkProvider h(); + protected abstract IChunkProvider i(); protected void a(WorldSettings worldsettings) { this.worldData.d(true); @@ -586,7 +586,7 @@ public abstract class World implements IBlockAccess { return this.worldProvider.f[this.getLightLevel(i, j, k)]; } - public boolean r() { + public boolean s() { return this.k < 4; } @@ -1704,7 +1704,7 @@ public abstract class World implements IBlockAccess { } public void doTick() { - this.l(); + this.m(); } private void a() { @@ -1716,7 +1716,7 @@ public abstract class World implements IBlockAccess { } } - protected void l() { + protected void m() { if (!this.worldProvider.e) { if (this.r > 0) { --this.r; diff --git a/src/main/java/net/minecraft/server/WorldGenBigTree.java b/src/main/java/net/minecraft/server/WorldGenBigTree.java index f5117f1848..5ec2c44842 100644 --- a/src/main/java/net/minecraft/server/WorldGenBigTree.java +++ b/src/main/java/net/minecraft/server/WorldGenBigTree.java @@ -118,7 +118,7 @@ public class WorldGenBigTree extends WorldGenerator implements BlockSapling.Tree aint1[b2] = aint[b2] + k1; int l1 = this.world.getTypeId(aint1[0], aint1[1], aint1[2]); - if (l1 != 0 && l1 != 18) { + if (l1 != 0 && l1 != Block.LEAVES.id) { ++k1; } else { this.setTypeAndData(this.world, aint1[0], aint1[1], aint1[2], l, 0); @@ -160,7 +160,7 @@ public class WorldGenBigTree extends WorldGenerator implements BlockSapling.Tree for (int i1 = j + this.n; l < i1; ++l) { float f = this.b(l - j); - this.a(i, l, k, f, (byte) 1, 18); + this.a(i, l, k, f, (byte) 1, Block.LEAVES.id); } } @@ -197,7 +197,20 @@ public class WorldGenBigTree extends WorldGenerator implements BlockSapling.Tree 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.setTypeAndData(this.world, aint3[0], aint3[1], aint3[2], i, 0); + byte b5 = 0; + int l = Math.abs(aint3[0] - aint[0]); + int i1 = Math.abs(aint3[2] - aint[2]); + int j1 = Math.max(l, i1); + + if (j1 > 0) { + if (l == j1) { + b5 = 4; + } else if (i1 == j1) { + b5 = 8; + } + } + + this.setTypeAndData(this.world, aint3[0], aint3[1], aint3[2], i, b5); } } } @@ -226,17 +239,17 @@ public class WorldGenBigTree extends WorldGenerator implements BlockSapling.Tree int[] aint = new int[] { i, j, l}; int[] aint1 = new int[] { i, k, l}; - this.a(aint, aint1, 17); + this.a(aint, aint1, Block.LOG.id); if (this.l == 2) { ++aint[0]; ++aint1[0]; - this.a(aint, aint1, 17); + this.a(aint, aint1, Block.LOG.id); ++aint[2]; ++aint1[2]; - this.a(aint, aint1, 17); + this.a(aint, aint1, Block.LOG.id); aint[0] += -1; aint1[0] += -1; - this.a(aint, aint1, 17); + this.a(aint, aint1, Block.LOG.id); } } @@ -252,7 +265,7 @@ public class WorldGenBigTree extends WorldGenerator implements BlockSapling.Tree int k = aint[1] - this.d[1]; if (this.c(k)) { - this.a(aint, aint2, 17); + this.a(aint, aint2, (byte) Block.LOG.id); } } } @@ -296,7 +309,7 @@ public class WorldGenBigTree extends WorldGenerator implements BlockSapling.Tree aint3[b3] = MathHelper.floor((double) aint[b3] + (double) i * d1); int k = this.world.getTypeId(aint3[0], aint3[1], aint3[2]); - if ((k != 0 && k != 18) || aint3[1] >= 256) { // CraftBukkit - fix trees wrapping around + if ((k != 0 && k != Block.LEAVES.id) || aint3[1] >= 256) { // CraftBukkit - fix trees wrapping around break; } } diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java index bb69a2dbd4..340fe9007c 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -30,9 +30,10 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate public boolean weirdIsOpCache = false; public boolean savingDisabled; private boolean P; - private NoteDataList[] Q = new NoteDataList[] { new NoteDataList((EmptyClass2) null), new NoteDataList((EmptyClass2) null)}; - private int R = 0; - private static final StructurePieceTreasure[] S = new StructurePieceTreasure[] { new StructurePieceTreasure(Item.STICK.id, 0, 1, 3, 10), new StructurePieceTreasure(Block.WOOD.id, 0, 1, 3, 10), new StructurePieceTreasure(Block.LOG.id, 0, 1, 3, 10), new StructurePieceTreasure(Item.STONE_AXE.id, 0, 1, 1, 3), new StructurePieceTreasure(Item.WOOD_AXE.id, 0, 1, 1, 5), new StructurePieceTreasure(Item.STONE_PICKAXE.id, 0, 1, 1, 3), new StructurePieceTreasure(Item.WOOD_PICKAXE.id, 0, 1, 1, 5), new StructurePieceTreasure(Item.APPLE.id, 0, 2, 3, 5), new StructurePieceTreasure(Item.BREAD.id, 0, 2, 3, 3)}; + private int emptyTime = 0; + private NoteDataList[] R = new NoteDataList[] { new NoteDataList((EmptyClass2) null), new NoteDataList((EmptyClass2) null)}; + private int S = 0; + private static final StructurePieceTreasure[] T = new StructurePieceTreasure[] { new StructurePieceTreasure(Item.STICK.id, 0, 1, 3, 10), new StructurePieceTreasure(Block.WOOD.id, 0, 1, 3, 10), new StructurePieceTreasure(Block.LOG.id, 0, 1, 3, 10), new StructurePieceTreasure(Item.STONE_AXE.id, 0, 1, 1, 3), new StructurePieceTreasure(Item.WOOD_AXE.id, 0, 1, 1, 5), new StructurePieceTreasure(Item.STONE_PICKAXE.id, 0, 1, 1, 3), new StructurePieceTreasure(Item.WOOD_PICKAXE.id, 0, 1, 1, 5), new StructurePieceTreasure(Item.APPLE.id, 0, 2, 3, 5), new StructurePieceTreasure(Item.BREAD.id, 0, 2, 3, 3)}; private IntHashMap entitiesById; // CraftBukkit start @@ -415,6 +416,18 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate } } + public void tickEntities() { + if (false && this.players.isEmpty()) { // CraftBukkit - this prevents entity cleanup, other issues on servers with no players + if (this.emptyTime++ >= 60) { + return; + } + } else { + this.emptyTime = 0; + } + + super.tickEntities(); + } + public boolean a(boolean flag) { int i = this.O.size(); @@ -503,7 +516,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate super.entityJoinedWorld(entity, flag); } - protected IChunkProvider h() { + protected IChunkProvider i() { IChunkLoader ichunkloader = this.dataManager.createChunkLoader(this.worldProvider); // CraftBukkit start @@ -621,13 +634,13 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate this.worldData.setSpawn(i, j, k); this.isLoading = false; if (worldsettings.c()) { - this.i(); + this.j(); } } } - protected void i() { - WorldGenBonusChest worldgenbonuschest = new WorldGenBonusChest(S, 10); + protected void j() { + WorldGenBonusChest worldgenbonuschest = new WorldGenBonusChest(T, 10); for (int i = 0; i < 10; ++i) { int j = this.worldData.c() + this.random.nextInt(6) - this.random.nextInt(6); @@ -756,13 +769,13 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate public void playNote(int i, int j, int k, int l, int i1, int j1) { NoteBlockData noteblockdata = new NoteBlockData(i, j, k, l, i1, j1); - Iterator iterator = this.Q[this.R].iterator(); + Iterator iterator = this.R[this.S].iterator(); NoteBlockData noteblockdata1; do { if (!iterator.hasNext()) { - this.Q[this.R].add(noteblockdata); + this.R[this.S].add(noteblockdata); return; } @@ -772,11 +785,11 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate } private void Q() { - while (!this.Q[this.R].isEmpty()) { - int i = this.R; + while (!this.R[this.S].isEmpty()) { + int i = this.S; - this.R ^= 1; - Iterator iterator = this.Q[i].iterator(); + this.S ^= 1; + Iterator iterator = this.R[i].iterator(); while (iterator.hasNext()) { NoteBlockData noteblockdata = (NoteBlockData) iterator.next(); @@ -787,7 +800,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate } } - this.Q[i].clear(); + this.R[i].clear(); } } @@ -806,10 +819,10 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate this.dataManager.a(); } - protected void l() { + protected void m() { boolean flag = this.J(); - super.l(); + super.m(); if (flag != this.J()) { // CraftBukkit start - only sending weather packets to those affected for (int i = 0; i < this.players.size(); ++i) {