summaryrefslogtreecommitdiffstats
path: root/src/main/java/net/minecraft/server/ChunkProviderServer.java
diff options
context:
space:
mode:
authorTahg <tahgtahv@gmail.com>2011-02-19 10:55:47 -0500
committerTahg <tahgtahv@gmail.com>2011-02-19 23:44:35 -0500
commitca4076077eb8514b2e5bbeb315058b12169e7b81 (patch)
treed7894677e71eb0a148c93db28ec6580cf6a61bf0 /src/main/java/net/minecraft/server/ChunkProviderServer.java
parentd4b67c5549dec7c27b39a27c81299e218b79826f (diff)
downloadcraftbukkit-ca4076077eb8514b2e5bbeb315058b12169e7b81.tar
craftbukkit-ca4076077eb8514b2e5bbeb315058b12169e7b81.tar.gz
craftbukkit-ca4076077eb8514b2e5bbeb315058b12169e7b81.tar.lz
craftbukkit-ca4076077eb8514b2e5bbeb315058b12169e7b81.tar.xz
craftbukkit-ca4076077eb8514b2e5bbeb315058b12169e7b81.zip
fixed buttons, plates
added yield to explosion added event for chunk unloading
Diffstat (limited to 'src/main/java/net/minecraft/server/ChunkProviderServer.java')
-rw-r--r--src/main/java/net/minecraft/server/ChunkProviderServer.java28
1 files changed, 18 insertions, 10 deletions
diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java
index 53b69ef3..87beef57 100644
--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java
@@ -10,15 +10,17 @@ import java.util.Set;
// CraftBukkit start
import org.bukkit.Location;
+import org.bukkit.Server;
import org.bukkit.craftbukkit.CraftChunk;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.entity.Player;
import org.bukkit.event.Event.Type;
import org.bukkit.event.world.ChunkLoadEvent;
+import org.bukkit.event.world.ChunkUnloadEvent;
// CraftBukkit end
-public class ChunkProviderServer implements IChunkProvider {
-
+public class ChunkProviderServer implements IChunkProvider
+{
public LongHashset a = new LongHashset(); // CraftBukkit
private Chunk b;
private IChunkProvider c;
@@ -39,7 +41,7 @@ public class ChunkProviderServer implements IChunkProvider {
return this.e.containsKey(i, j);
}
// CraftBukkit end
-
+
public void c(int i, int j) {
int k = i * 16 + 8 - this.g.spawnX;
int l = j * 16 + 8 - this.g.spawnZ;
@@ -197,16 +199,22 @@ public class ChunkProviderServer implements IChunkProvider {
public boolean a() {
if (!this.g.C) {
// CraftBukkit start
+ Server server = g.getServer();
while (!this.a.isEmpty()) {
long chunkcoordinates = this.a.popFirst();
Chunk chunk = e.get(chunkcoordinates);
- if (chunk == null) continue;
- chunk.e();
- this.b(chunk);
- this.a(chunk);
- this.a.remove(chunkcoordinates);
- this.e.remove(chunkcoordinates);
- this.f.remove(chunk);
+ if (chunk == null) {
+ continue;
+ }
+ ChunkUnloadEvent cue = new ChunkUnloadEvent(Type.CHUNK_UNLOADED, chunk.bukkitChunk);
+ server.getPluginManager().callEvent(cue);
+ if (!cue.isCancelled()) {
+ chunk.e();
+ this.b(chunk);
+ this.a(chunk);
+ this.e.remove(chunkcoordinates);
+ this.f.remove(chunk);
+ }
}
// CraftBukkit end