Fix lightning - use vanilla lightning code.

This commit is contained in:
md_5 2013-01-22 15:58:34 +11:00
parent 38a24558c2
commit 6b463d9614
6 changed files with 67 additions and 385 deletions

View file

@ -1,9 +1,7 @@
From 90c324d6ba0cda9717efb4bd93cb21c666cc4b75 Mon Sep 17 00:00:00 2001 From 87a3ec2b6f68e6f87645abcc32426e4c0141e666 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@bigpond.com> From: md_5 <md_5@live.com.au>
Date: Sun, 30 Dec 2012 23:56:05 -0600 Date: Tue, 22 Jan 2013 15:56:54 +1100
Subject: [PATCH] Spigot Changes. This commit has undergone basic testing and Subject: [PATCH] Spigot changes.
appears to now be safe for careful production usage. Please report any bugs
to IRC as soon as you encounter them. Long live Spigot!
--- ---
.gitignore | 2 + .gitignore | 2 +
@ -28,40 +26,37 @@ Subject: [PATCH] Spigot Changes. This commit has undergone basic testing and
src/main/java/net/minecraft/server/PlayerList.java | 10 +- src/main/java/net/minecraft/server/PlayerList.java | 10 +-
.../java/net/minecraft/server/SpawnerCreature.java | 23 +- .../java/net/minecraft/server/SpawnerCreature.java | 23 +-
.../net/minecraft/server/ThreadLoginVerifier.java | 23 + .../net/minecraft/server/ThreadLoginVerifier.java | 23 +
src/main/java/net/minecraft/server/World.java | 202 ++++++++- src/main/java/net/minecraft/server/World.java | 200 ++++++++-
.../java/net/minecraft/server/WorldServer.java | 133 ++++-- .../java/net/minecraft/server/WorldServer.java | 122 +++++-
.../java/org/bukkit/craftbukkit/CraftServer.java | 98 ++++- .../java/org/bukkit/craftbukkit/CraftServer.java | 98 ++++-
.../java/org/bukkit/craftbukkit/CraftWorld.java | 76 +++- .../java/org/bukkit/craftbukkit/CraftWorld.java | 76 +++-
src/main/java/org/bukkit/craftbukkit/Spigot.java | 27 ++ src/main/java/org/bukkit/craftbukkit/Spigot.java | 25 ++
.../craftbukkit/chunkio/ChunkIOProvider.java | 2 +- .../craftbukkit/chunkio/ChunkIOProvider.java | 2 +-
.../bukkit/craftbukkit/command/RestartCommand.java | 24 + .../bukkit/craftbukkit/command/RestartCommand.java | 24 +
.../craftbukkit/command/TicksPerSecondCommand.java | 35 ++ .../craftbukkit/command/TicksPerSecondCommand.java | 35 ++
.../org/bukkit/craftbukkit/entity/CraftPlayer.java | 7 + .../org/bukkit/craftbukkit/entity/CraftPlayer.java | 7 +
.../updater/BukkitDLUpdaterService.java | 26 +-
.../bukkit/craftbukkit/util/ExceptionHandler.java | 31 ++ .../bukkit/craftbukkit/util/ExceptionHandler.java | 31 ++
.../bukkit/craftbukkit/util/ExceptionReporter.java | 26 ++ .../bukkit/craftbukkit/util/ExceptionReporter.java | 26 ++
.../java/org/bukkit/craftbukkit/util/FlatMap.java | 34 ++ .../java/org/bukkit/craftbukkit/util/FlatMap.java | 34 ++
.../craftbukkit/util/LightningSimulator.java | 184 ++++++++
.../org/bukkit/craftbukkit/util/LongHashSet.java | 11 +- .../org/bukkit/craftbukkit/util/LongHashSet.java | 11 +-
.../bukkit/craftbukkit/util/LongObjectHashMap.java | 5 + .../bukkit/craftbukkit/util/LongObjectHashMap.java | 5 +
.../java/org/bukkit/craftbukkit/util/Metrics.java | 488 +++++++++++++++++++++ .../java/org/bukkit/craftbukkit/util/Metrics.java | 488 +++++++++++++++++++++
.../org/bukkit/craftbukkit/util/TimedThread.java | 37 ++ .../org/bukkit/craftbukkit/util/TimedThread.java | 37 ++
.../bukkit/craftbukkit/util/WatchdogThread.java | 88 ++++ .../bukkit/craftbukkit/util/WatchdogThread.java | 88 ++++
src/main/resources/configurations/bukkit.yml | 55 +++ src/main/resources/configurations/bukkit.yml | 30 ++
42 files changed, 1675 insertions(+), 156 deletions(-) 40 files changed, 1444 insertions(+), 137 deletions(-)
create mode 100644 src/main/java/org/bukkit/craftbukkit/Spigot.java create mode 100644 src/main/java/org/bukkit/craftbukkit/Spigot.java
create mode 100644 src/main/java/org/bukkit/craftbukkit/command/RestartCommand.java create mode 100644 src/main/java/org/bukkit/craftbukkit/command/RestartCommand.java
create mode 100644 src/main/java/org/bukkit/craftbukkit/command/TicksPerSecondCommand.java create mode 100644 src/main/java/org/bukkit/craftbukkit/command/TicksPerSecondCommand.java
create mode 100644 src/main/java/org/bukkit/craftbukkit/util/ExceptionHandler.java create mode 100644 src/main/java/org/bukkit/craftbukkit/util/ExceptionHandler.java
create mode 100644 src/main/java/org/bukkit/craftbukkit/util/ExceptionReporter.java create mode 100644 src/main/java/org/bukkit/craftbukkit/util/ExceptionReporter.java
create mode 100644 src/main/java/org/bukkit/craftbukkit/util/FlatMap.java create mode 100644 src/main/java/org/bukkit/craftbukkit/util/FlatMap.java
create mode 100644 src/main/java/org/bukkit/craftbukkit/util/LightningSimulator.java
create mode 100644 src/main/java/org/bukkit/craftbukkit/util/Metrics.java create mode 100644 src/main/java/org/bukkit/craftbukkit/util/Metrics.java
create mode 100644 src/main/java/org/bukkit/craftbukkit/util/TimedThread.java create mode 100644 src/main/java/org/bukkit/craftbukkit/util/TimedThread.java
create mode 100644 src/main/java/org/bukkit/craftbukkit/util/WatchdogThread.java create mode 100644 src/main/java/org/bukkit/craftbukkit/util/WatchdogThread.java
diff --git a/.gitignore b/.gitignore diff --git a/.gitignore b/.gitignore
index a689360..4138573 100644 index a689360..b97a549 100644
--- a/.gitignore --- a/.gitignore
+++ b/.gitignore +++ b/.gitignore
@@ -34,3 +34,5 @@ @@ -34,3 +34,5 @@
@ -70,6 +65,7 @@ index a689360..4138573 100644
/src/main/resources/lang /src/main/resources/lang
+ +
+/dependency-reduced-pom.xml +/dependency-reduced-pom.xml
\ No newline at end of file
diff --git a/pom.xml b/pom.xml diff --git a/pom.xml b/pom.xml
index f0b0bfb..bd394ae 100644 index f0b0bfb..bd394ae 100644
--- a/pom.xml --- a/pom.xml
@ -718,20 +714,19 @@ index 0686ba0..58d30eb 100644
URL url = new URL("http://session.minecraft.net/game/checkserver.jsp?user=" + URLEncoder.encode(PendingConnection.d(this.pendingConnection), "UTF-8") + "&serverId=" + URLEncoder.encode(s, "UTF-8")); URL url = new URL("http://session.minecraft.net/game/checkserver.jsp?user=" + URLEncoder.encode(PendingConnection.d(this.pendingConnection), "UTF-8") + "&serverId=" + URLEncoder.encode(s, "UTF-8"));
BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(url.openStream())); BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(url.openStream()));
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index e2fd0df..263cbd3 100644 index e2fd0df..5a01944 100644
--- a/src/main/java/net/minecraft/server/World.java --- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java
@@ -64,7 +64,8 @@ public abstract class World implements IBlockAccess { @@ -64,7 +64,7 @@ public abstract class World implements IBlockAccess {
// CraftBukkit start - public, longhashset // CraftBukkit start - public, longhashset
public boolean allowMonsters = true; public boolean allowMonsters = true;
public boolean allowAnimals = true; public boolean allowAnimals = true;
- protected LongHashSet chunkTickList = new LongHashSet(); - protected LongHashSet chunkTickList = new LongHashSet();
+ protected gnu.trove.map.hash.TLongShortHashMap chunkTickList; // Spigot + protected gnu.trove.map.hash.TLongShortHashMap chunkTickList; // Spigot
+ private org.bukkit.craftbukkit.util.LightningSimulator lightningSim = new org.bukkit.craftbukkit.util.LightningSimulator(this); // Spigot
public long ticksPerAnimalSpawns; public long ticksPerAnimalSpawns;
public long ticksPerMonsterSpawns; public long ticksPerMonsterSpawns;
// CraftBukkit end // CraftBukkit end
@@ -72,7 +73,20 @@ public abstract class World implements IBlockAccess { @@ -72,7 +72,20 @@ public abstract class World implements IBlockAccess {
int[] H; int[] H;
private List O; private List O;
public boolean isStatic; public boolean isStatic;
@ -752,7 +747,7 @@ index e2fd0df..263cbd3 100644
public BiomeBase getBiome(int i, int j) { public BiomeBase getBiome(int i, int j) {
if (this.isLoaded(i, 0, j)) { if (this.isLoaded(i, 0, j)) {
Chunk chunk = this.getChunkAtWorldCoords(i, j); Chunk chunk = this.getChunkAtWorldCoords(i, j);
@@ -98,6 +112,7 @@ public abstract class World implements IBlockAccess { @@ -98,6 +111,7 @@ public abstract class World implements IBlockAccess {
int lastXAccessed = Integer.MIN_VALUE; int lastXAccessed = Integer.MIN_VALUE;
int lastZAccessed = Integer.MIN_VALUE; int lastZAccessed = Integer.MIN_VALUE;
final Object chunkLock = new Object(); final Object chunkLock = new Object();
@ -760,7 +755,7 @@ index e2fd0df..263cbd3 100644
public CraftWorld getWorld() { public CraftWorld getWorld() {
return this.world; return this.world;
@@ -110,11 +125,18 @@ public abstract class World implements IBlockAccess { @@ -110,11 +124,18 @@ public abstract class World implements IBlockAccess {
// Changed signature // Changed signature
public World(IDataManager idatamanager, String s, WorldSettings worldsettings, WorldProvider worldprovider, MethodProfiler methodprofiler, ChunkGenerator gen, org.bukkit.World.Environment env) { public World(IDataManager idatamanager, String s, WorldSettings worldsettings, WorldProvider worldprovider, MethodProfiler methodprofiler, ChunkGenerator gen, org.bukkit.World.Environment env) {
this.generator = gen; this.generator = gen;
@ -779,7 +774,7 @@ index e2fd0df..263cbd3 100644
this.N = this.random.nextInt(12000); this.N = this.random.nextInt(12000);
this.H = new int['\u8000']; this.H = new int['\u8000'];
this.O = new UnsafeList(); // CraftBukkit - ArrayList -> UnsafeList this.O = new UnsafeList(); // CraftBukkit - ArrayList -> UnsafeList
@@ -122,7 +144,7 @@ public abstract class World implements IBlockAccess { @@ -122,7 +143,7 @@ public abstract class World implements IBlockAccess {
this.dataManager = idatamanager; this.dataManager = idatamanager;
this.methodProfiler = methodprofiler; this.methodProfiler = methodprofiler;
this.worldMaps = new WorldMapCollection(idatamanager); this.worldMaps = new WorldMapCollection(idatamanager);
@ -788,7 +783,7 @@ index e2fd0df..263cbd3 100644
if (worldprovider != null) { if (worldprovider != null) {
this.worldProvider = worldprovider; this.worldProvider = worldprovider;
} else if (this.worldData != null && this.worldData.j() != 0) { } else if (this.worldData != null && this.worldData.j() != 0) {
@@ -903,6 +925,47 @@ public abstract class World implements IBlockAccess { @@ -903,6 +924,47 @@ public abstract class World implements IBlockAccess {
event = CraftEventFactory.callCreatureSpawnEvent((EntityLiving) entity, spawnReason); event = CraftEventFactory.callCreatureSpawnEvent((EntityLiving) entity, spawnReason);
} else if (entity instanceof EntityItem) { } else if (entity instanceof EntityItem) {
event = CraftEventFactory.callItemSpawnEvent((EntityItem) entity); event = CraftEventFactory.callItemSpawnEvent((EntityItem) entity);
@ -836,7 +831,7 @@ index e2fd0df..263cbd3 100644
} else if (entity.getBukkitEntity() instanceof org.bukkit.entity.Projectile) { } else if (entity.getBukkitEntity() instanceof org.bukkit.entity.Projectile) {
// Not all projectiles extend EntityProjectile, so check for Bukkit interface instead // Not all projectiles extend EntityProjectile, so check for Bukkit interface instead
event = CraftEventFactory.callProjectileLaunchEvent(entity); event = CraftEventFactory.callProjectileLaunchEvent(entity);
@@ -995,6 +1058,39 @@ public abstract class World implements IBlockAccess { @@ -995,6 +1057,39 @@ public abstract class World implements IBlockAccess {
int i1 = MathHelper.floor(axisalignedbb.c); int i1 = MathHelper.floor(axisalignedbb.c);
int j1 = MathHelper.floor(axisalignedbb.f + 1.0D); int j1 = MathHelper.floor(axisalignedbb.f + 1.0D);
@ -876,7 +871,7 @@ index e2fd0df..263cbd3 100644
for (int k1 = i; k1 < j; ++k1) { for (int k1 = i; k1 < j; ++k1) {
for (int l1 = i1; l1 < j1; ++l1) { for (int l1 = i1; l1 < j1; ++l1) {
if (this.isLoaded(k1, 64, l1)) { if (this.isLoaded(k1, 64, l1)) {
@@ -1008,6 +1104,7 @@ public abstract class World implements IBlockAccess { @@ -1008,6 +1103,7 @@ public abstract class World implements IBlockAccess {
} }
} }
} }
@ -884,7 +879,7 @@ index e2fd0df..263cbd3 100644
double d0 = 0.25D; double d0 = 0.25D;
List list = this.getEntities(entity, axisalignedbb.grow(d0, d0, d0)); List list = this.getEntities(entity, axisalignedbb.grow(d0, d0, d0));
@@ -1315,7 +1412,37 @@ public abstract class World implements IBlockAccess { @@ -1315,7 +1411,37 @@ public abstract class World implements IBlockAccess {
this.entityJoinedWorld(entity, true); this.entityJoinedWorld(entity, true);
} }
@ -923,15 +918,7 @@ index e2fd0df..263cbd3 100644
int i = MathHelper.floor(entity.locX); int i = MathHelper.floor(entity.locX);
int j = MathHelper.floor(entity.locZ); int j = MathHelper.floor(entity.locZ);
byte b0 = 32; byte b0 = 32;
@@ -1815,6 +1942,7 @@ public abstract class World implements IBlockAccess { @@ -1896,6 +2022,11 @@ public abstract class World implements IBlockAccess {
protected void n() {
if (!this.worldProvider.f) {
+ lightningSim.onTick(); // Spigot
int i = this.worldData.getThunderDuration();
if (i <= 0) {
@@ -1896,6 +2024,11 @@ public abstract class World implements IBlockAccess {
this.worldData.setWeatherDuration(1); this.worldData.setWeatherDuration(1);
} }
@ -943,7 +930,7 @@ index e2fd0df..263cbd3 100644
protected void z() { protected void z() {
// this.chunkTickList.clear(); // CraftBukkit - removed // this.chunkTickList.clear(); // CraftBukkit - removed
this.methodProfiler.a("buildList"); this.methodProfiler.a("buildList");
@@ -1905,25 +2038,42 @@ public abstract class World implements IBlockAccess { @@ -1905,25 +2036,42 @@ public abstract class World implements IBlockAccess {
int j; int j;
int k; int k;
@ -1000,7 +987,7 @@ index e2fd0df..263cbd3 100644
this.methodProfiler.b(); this.methodProfiler.b();
if (this.N > 0) { if (this.N > 0) {
@@ -1931,7 +2081,7 @@ public abstract class World implements IBlockAccess { @@ -1931,7 +2079,7 @@ public abstract class World implements IBlockAccess {
} }
this.methodProfiler.a("playerCheckLight"); this.methodProfiler.a("playerCheckLight");
@ -1009,7 +996,7 @@ index e2fd0df..263cbd3 100644
i = this.random.nextInt(this.players.size()); i = this.random.nextInt(this.players.size());
entityhuman = (EntityHuman) this.players.get(i); entityhuman = (EntityHuman) this.players.get(i);
j = MathHelper.floor(entityhuman.locX) + this.random.nextInt(11) - 5; j = MathHelper.floor(entityhuman.locX) + this.random.nextInt(11) - 5;
@@ -1970,9 +2120,16 @@ public abstract class World implements IBlockAccess { @@ -1970,9 +2118,16 @@ public abstract class World implements IBlockAccess {
chunk.o(); chunk.o();
} }
@ -1026,7 +1013,7 @@ index e2fd0df..263cbd3 100644
public boolean w(int i, int j, int k) { public boolean w(int i, int j, int k) {
return this.c(i, j, k, false); return this.c(i, j, k, false);
@@ -2310,7 +2467,10 @@ public abstract class World implements IBlockAccess { @@ -2310,7 +2465,10 @@ public abstract class World implements IBlockAccess {
} }
public List getEntities(Entity entity, AxisAlignedBB axisalignedbb) { public List getEntities(Entity entity, AxisAlignedBB axisalignedbb) {
@ -1038,7 +1025,7 @@ index e2fd0df..263cbd3 100644
int i = MathHelper.floor((axisalignedbb.a - 2.0D) / 16.0D); int i = MathHelper.floor((axisalignedbb.a - 2.0D) / 16.0D);
int j = MathHelper.floor((axisalignedbb.d + 2.0D) / 16.0D); int j = MathHelper.floor((axisalignedbb.d + 2.0D) / 16.0D);
int k = MathHelper.floor((axisalignedbb.c - 2.0D) / 16.0D); int k = MathHelper.floor((axisalignedbb.c - 2.0D) / 16.0D);
@@ -2319,12 +2479,12 @@ public abstract class World implements IBlockAccess { @@ -2319,12 +2477,12 @@ public abstract class World implements IBlockAccess {
for (int i1 = i; i1 <= j; ++i1) { for (int i1 = i; i1 <= j; ++i1) {
for (int j1 = k; j1 <= l; ++j1) { for (int j1 = k; j1 <= l; ++j1) {
if (this.isChunkLoaded(i1, j1)) { if (this.isChunkLoaded(i1, j1)) {
@ -1054,7 +1041,7 @@ index e2fd0df..263cbd3 100644
public List a(Class oclass, AxisAlignedBB axisalignedbb) { public List a(Class oclass, AxisAlignedBB axisalignedbb) {
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 3f73ef9..6764bef 100644 index 3f73ef9..a42aa1e 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java --- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -1,5 +1,7 @@ @@ -1,5 +1,7 @@
@ -1135,25 +1122,7 @@ index 3f73ef9..6764bef 100644
// ChunkCoordIntPair chunkcoordintpair = (ChunkCoordIntPair) iterator.next(); // ChunkCoordIntPair chunkcoordintpair = (ChunkCoordIntPair) iterator.next();
int k = chunkX * 16; int k = chunkX * 16;
int l = chunkZ * 16; int l = chunkZ * 16;
@@ -293,16 +313,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate @@ -373,6 +393,14 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
int k1;
int l1;
- if (this.random.nextInt(100000) == 0 && this.N() && this.M()) {
- this.k = this.k * 3 + 1013904223;
- i1 = this.k >> 2;
- j1 = k + (i1 & 15);
- k1 = l + (i1 >> 8 & 15);
- l1 = this.h(j1, k1);
- if (this.D(j1, l1, k1)) {
- this.strikeLightning(new EntityLightning(this, (double) j1, (double) l1, (double) k1));
- }
- }
+ // Spigot - remove lightning code
this.methodProfiler.c("iceandsnow");
int i2;
@@ -373,6 +384,14 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
if (block != null && block.isTicking()) { if (block != null && block.isTicking()) {
++i; ++i;
@ -1168,7 +1137,7 @@ index 3f73ef9..6764bef 100644
block.b(this, k2 + k, i3 + chunksection.d(), l2 + l, this.random); block.b(this, k2 + k, i3 + chunksection.d(), l2 + l, this.random);
} }
} }
@@ -413,10 +432,11 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate @@ -413,10 +441,11 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
nextticklistentry.a(j1); nextticklistentry.a(j1);
} }
@ -1184,7 +1153,7 @@ index 3f73ef9..6764bef 100644
} }
} }
@@ -427,10 +447,11 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate @@ -427,10 +456,11 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
nextticklistentry.a((long) i1 + this.worldData.getTime()); nextticklistentry.a((long) i1 + this.worldData.getTime());
} }
@ -1200,7 +1169,7 @@ index 3f73ef9..6764bef 100644
} }
public void tickEntities() { public void tickEntities() {
@@ -452,9 +473,9 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate @@ -452,9 +482,9 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
public boolean a(boolean flag) { public boolean a(boolean flag) {
int i = this.M.size(); int i = this.M.size();
@ -1213,7 +1182,7 @@ index 3f73ef9..6764bef 100644
if (i > 1000) { if (i > 1000) {
// CraftBukkit start - if the server has too much to process over time, try to alleviate that // CraftBukkit start - if the server has too much to process over time, try to alleviate that
if (i > 20 * 1000) { if (i > 20 * 1000) {
@@ -472,8 +493,11 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate @@ -472,8 +502,11 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
break; break;
} }
@ -1227,7 +1196,7 @@ index 3f73ef9..6764bef 100644
byte b0 = 8; byte b0 = 8;
if (this.d(nextticklistentry.a - b0, nextticklistentry.b - b0, nextticklistentry.c - b0, nextticklistentry.a + b0, nextticklistentry.b + b0, nextticklistentry.c + b0)) { if (this.d(nextticklistentry.a - b0, nextticklistentry.b - b0, nextticklistentry.c - b0, nextticklistentry.a + b0, nextticklistentry.b + b0, nextticklistentry.c + b0)) {
@@ -502,10 +526,12 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate @@ -502,10 +535,12 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
} }
return !this.M.isEmpty(); return !this.M.isEmpty();
@ -1241,7 +1210,7 @@ index 3f73ef9..6764bef 100644
ArrayList arraylist = null; ArrayList arraylist = null;
ChunkCoordIntPair chunkcoordintpair = chunk.l(); ChunkCoordIntPair chunkcoordintpair = chunk.l();
int i = chunkcoordintpair.x << 4; int i = chunkcoordintpair.x << 4;
@@ -532,6 +558,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate @@ -532,6 +567,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
} }
return arraylist; return arraylist;
@ -1249,7 +1218,7 @@ index 3f73ef9..6764bef 100644
} }
public void entityJoinedWorld(Entity entity, boolean flag) { public void entityJoinedWorld(Entity entity, boolean flag) {
@@ -610,7 +637,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate @@ -610,7 +646,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
} }
if (this.L == null) { if (this.L == null) {
@ -1258,7 +1227,7 @@ index 3f73ef9..6764bef 100644
} }
if (this.M == null) { if (this.M == null) {
@@ -883,4 +910,48 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate @@ -883,4 +919,48 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
public PortalTravelAgent s() { public PortalTravelAgent s() {
return this.P; return this.P;
} }
@ -1579,10 +1548,10 @@ index cb20066..3544aa3 100644
return getChunkAt(x >> 4, z >> 4).getBlock(x & 0xF, y & 0xFF, z & 0xF); return getChunkAt(x >> 4, z >> 4).getBlock(x & 0xF, y & 0xFF, z & 0xF);
diff --git a/src/main/java/org/bukkit/craftbukkit/Spigot.java b/src/main/java/org/bukkit/craftbukkit/Spigot.java diff --git a/src/main/java/org/bukkit/craftbukkit/Spigot.java b/src/main/java/org/bukkit/craftbukkit/Spigot.java
new file mode 100644 new file mode 100644
index 0000000..0e04773 index 0000000..9e8b12e
--- /dev/null --- /dev/null
+++ b/src/main/java/org/bukkit/craftbukkit/Spigot.java +++ b/src/main/java/org/bukkit/craftbukkit/Spigot.java
@@ -0,0 +1,27 @@ @@ -0,0 +1,25 @@
+package org.bukkit.craftbukkit; +package org.bukkit.craftbukkit;
+ +
+import org.bukkit.command.SimpleCommandMap; +import org.bukkit.command.SimpleCommandMap;
@ -1606,8 +1575,6 @@ index 0000000..0e04773
+ server.getLogger().severe("[Spigot] You should not disable chunk-gc. Resetting period-in-ticks to 600 ticks."); + server.getLogger().severe("[Spigot] You should not disable chunk-gc. Resetting period-in-ticks to 600 ticks.");
+ server.chunkGCPeriod = 600; + server.chunkGCPeriod = 600;
+ } + }
+
+ org.bukkit.craftbukkit.util.LightningSimulator.configure(configuration);
+ } + }
+} +}
diff --git a/src/main/java/org/bukkit/craftbukkit/chunkio/ChunkIOProvider.java b/src/main/java/org/bukkit/craftbukkit/chunkio/ChunkIOProvider.java diff --git a/src/main/java/org/bukkit/craftbukkit/chunkio/ChunkIOProvider.java b/src/main/java/org/bukkit/craftbukkit/chunkio/ChunkIOProvider.java
@ -1717,76 +1684,6 @@ index f0e24d2..1c61830 100644
public void setCompassTarget(Location loc) { public void setCompassTarget(Location loc) {
if (getHandle().playerConnection == null) return; if (getHandle().playerConnection == null) return;
diff --git a/src/main/java/org/bukkit/craftbukkit/updater/BukkitDLUpdaterService.java b/src/main/java/org/bukkit/craftbukkit/updater/BukkitDLUpdaterService.java
index f027900..efc7889 100644
--- a/src/main/java/org/bukkit/craftbukkit/updater/BukkitDLUpdaterService.java
+++ b/src/main/java/org/bukkit/craftbukkit/updater/BukkitDLUpdaterService.java
@@ -1,6 +1,6 @@
package org.bukkit.craftbukkit.updater;
-import com.google.gson.*;
+// import com.google.gson.*; // Spigot
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
@@ -16,7 +16,7 @@ import java.util.logging.Logger;
public class BukkitDLUpdaterService {
private static final String API_PREFIX_ARTIFACT = "/api/1.0/downloads/projects/craftbukkit/view/";
private static final String API_PREFIX_CHANNEL = "/api/1.0/downloads/channels/";
- private static final DateDeserializer dateDeserializer = new DateDeserializer();
+ // private static final DateDeserializer dateDeserializer = new DateDeserializer(); // Spigot
private final String host;
public BukkitDLUpdaterService(String host) {
@@ -47,8 +47,11 @@ public class BukkitDLUpdaterService {
URLConnection connection = url.openConnection();
connection.setRequestProperty("User-Agent", getUserAgent());
reader = new InputStreamReader(connection.getInputStream());
- Gson gson = new GsonBuilder().registerTypeAdapter(Date.class, dateDeserializer).setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create();
- return gson.fromJson(reader, ArtifactDetails.class);
+ // Spigot start
+ // Gson gson = new GsonBuilder().registerTypeAdapter(Date.class, dateDeserializer).setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create();
+ // return gson.fromJson(reader, ArtifactDetails.class);
+ // Spigot end
+ return null;
} finally {
if (reader != null) {
reader.close();
@@ -76,10 +79,13 @@ public class BukkitDLUpdaterService {
URLConnection connection = url.openConnection();
connection.setRequestProperty("User-Agent", getUserAgent());
reader = new InputStreamReader(connection.getInputStream());
- Gson gson = new GsonBuilder().registerTypeAdapter(Date.class, dateDeserializer).setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create();
- ArtifactDetails.ChannelDetails fromJson = gson.fromJson(reader, ArtifactDetails.ChannelDetails.class);
+ // Spigot start
+ // Gson gson = new GsonBuilder().registerTypeAdapter(Date.class, dateDeserializer).setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create();
+ // ArtifactDetails.ChannelDetails fromJson = gson.fromJson(reader, ArtifactDetails.ChannelDetails.class);
- return fromJson;
+ //return fromJson;
+ // Spigot end
+ return null;
} finally {
if (reader != null) {
reader.close();
@@ -87,7 +93,9 @@ public class BukkitDLUpdaterService {
}
}
- static class DateDeserializer implements JsonDeserializer<Date> {
+ // Spigot start
+ /*
+ static class DateDeserializer implements JsonDeserializer<Date> {
private static final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public Date deserialize(JsonElement je, Type type, JsonDeserializationContext jdc) throws JsonParseException {
@@ -97,5 +105,5 @@ public class BukkitDLUpdaterService {
throw new JsonParseException("Date is not formatted correctly", ex);
}
}
- }
+ }*/// Spigot end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/util/ExceptionHandler.java b/src/main/java/org/bukkit/craftbukkit/util/ExceptionHandler.java diff --git a/src/main/java/org/bukkit/craftbukkit/util/ExceptionHandler.java b/src/main/java/org/bukkit/craftbukkit/util/ExceptionHandler.java
new file mode 100644 new file mode 100644
index 0000000..392155e index 0000000..392155e
@ -1896,196 +1793,6 @@ index 0000000..e8a7725
+ return get(LongHash.msw(key), LongHash.lsw(key)); + return get(LongHash.msw(key), LongHash.lsw(key));
+ } + }
+} +}
diff --git a/src/main/java/org/bukkit/craftbukkit/util/LightningSimulator.java b/src/main/java/org/bukkit/craftbukkit/util/LightningSimulator.java
new file mode 100644
index 0000000..3b12b19
--- /dev/null
+++ b/src/main/java/org/bukkit/craftbukkit/util/LightningSimulator.java
@@ -0,0 +1,184 @@
+package org.bukkit.craftbukkit.util;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Random;
+import net.minecraft.server.EntityLightning;
+import net.minecraft.server.EntityPlayer;
+import net.minecraft.server.MathHelper;
+import net.minecraft.server.World;
+import org.bukkit.Bukkit;
+import org.bukkit.configuration.file.YamlConfiguration;
+import org.bukkit.event.weather.ThunderChangeEvent;
+
+public class LightningSimulator {
+
+ private static final int MAX_LIGHTNING_BRANCHES = 5;
+ final World world;
+ final HashMap<EntityPlayer, Integer> playerCountdown = new HashMap<EntityPlayer, Integer>();
+ Intensity stormIntensity = null;
+ boolean canceled = false;
+
+ public LightningSimulator(World world) {
+ this.world = world;
+ }
+
+ public static void configure(YamlConfiguration configuration) {
+ Bukkit.getLogger().info("--------Setting up Storm Configuration--------");
+ for (Intensity intensity : Intensity.values()) {
+ String nameFormatted = intensity.name().toLowerCase().replaceAll("_", "-");
+ intensity.chance = configuration.getInt("storm-settings." + nameFormatted + ".chance", intensity.chance);
+ intensity.baseTicks = configuration.getInt("storm-settings." + nameFormatted + ".lightning-delay", intensity.baseTicks);
+ intensity.randomTicks = configuration.getInt("storm-settings." + nameFormatted + ".lightning-random-delay", intensity.randomTicks);
+ Bukkit.getLogger().info(" Storm Type: " + nameFormatted);
+ Bukkit.getLogger().info(" Chance: " + intensity.chance);
+ Bukkit.getLogger().info(" Lightning Delay Ticks: " + intensity.baseTicks);
+ Bukkit.getLogger().info(" Lightning Random Delay Ticks: " + intensity.randomTicks);
+ }
+ Bukkit.getLogger().info("--------Finished Storm Configuration--------");
+ }
+
+ public void onTick() {
+ try {
+ updatePlayerTimers();
+ } catch (Exception e) {
+ System.out.println("Spigot failed to calculate lightning for the server");
+ System.out.println("Please report this to md_5");
+ System.out.println("Spigot Version: " + Bukkit.getBukkitVersion());
+ e.printStackTrace();
+ }
+ }
+
+ public void updatePlayerTimers() {
+ if (world.getWorld().hasStorm()) {
+ if (canceled) {
+ return;
+ }
+ if (stormIntensity == null) {
+ ThunderChangeEvent thunder = new ThunderChangeEvent(world.getWorld(), true);
+ Bukkit.getPluginManager().callEvent(thunder);
+ if (thunder.isCancelled()) {
+ canceled = true;
+ return;
+ }
+ stormIntensity = Intensity.getRandomIntensity(world.random);
+ System.out.println("Started a storm of type " + stormIntensity.name() + " in world [" + world.worldData.getName() + "]");
+ }
+ List<EntityPlayer> toStrike = new ArrayList<EntityPlayer>();
+ for (Object o : world.players) {
+ if (o instanceof EntityPlayer) {
+ EntityPlayer player = (EntityPlayer) o;
+ Integer ticksLeft = playerCountdown.get(player);
+ if (ticksLeft == null) {
+ playerCountdown.put(player, getTicksBeforeNextLightning(world.random));
+ } else if (ticksLeft == 1) {
+ //weed out dc'd players
+ if (!player.playerConnection.disconnected) {
+ toStrike.add(player);
+ playerCountdown.put(player, getTicksBeforeNextLightning(world.random));
+ }
+ } else {
+ playerCountdown.put(player, ticksLeft - 1);
+ }
+ }
+ }
+ strikePlayers(toStrike);
+ } else {
+ stormIntensity = null;
+ canceled = false;
+ }
+ }
+
+ public void strikePlayers(List<EntityPlayer> toStrike) {
+ for (EntityPlayer player : toStrike) {
+ final int posX = MathHelper.floor(player.locX);
+ final int posY = MathHelper.floor(player.locY);
+ final int posZ = MathHelper.floor(player.locZ);
+ for (int tries = 0; tries < 10; tries++) {
+ //pick a random chunk between -4, -4, to 4, 4 relative to the player's position to strike at
+ int cx = (world.random.nextBoolean() ? -1 : 1) * world.random.nextInt(5);
+ int cz = (world.random.nextBoolean() ? -1 : 1) * world.random.nextInt(5);
+
+ //pick random coords to try to strike at inside the chunk (0, 0) to (15, 15)
+ int rx = world.random.nextInt(16);
+ int rz = world.random.nextInt(16);
+
+ //pick a offset from the player's y position to strike at (-15 - +15) of their position
+ int offsetY = (world.random.nextBoolean() ? -1 : 1) * world.random.nextInt(15);
+
+ int x = cx * 16 + rx + posX;
+ int y = posY + offsetY;
+ int z = cz * 16 + rz + posZ;
+
+ if (isRainingAt(x, y, z)) {
+ int lightning = 1;
+ //30% chance of extra lightning at the spot
+ if (world.random.nextInt(10) < 3) {
+ lightning += world.random.nextInt(MAX_LIGHTNING_BRANCHES);
+ }
+ for (int strikes = 0; strikes < lightning; strikes++) {
+ double adjustX = 0.5D;
+ double adjustY = 0.0D;
+ double adjustZ = 0.5D;
+ //if there are extra strikes, tweak their placement slightly
+ if (strikes > 0) {
+ adjustX += (world.random.nextBoolean() ? -1 : 1) * world.random.nextInt(2);
+ adjustY += (world.random.nextBoolean() ? -1 : 1) * world.random.nextInt(8);
+ adjustZ += (world.random.nextBoolean() ? -1 : 1) * world.random.nextInt(2);
+ }
+ EntityLightning lightningStrike = new EntityLightning(world, x + adjustX, y + adjustY, z + adjustZ);
+ world.strikeLightning(lightningStrike);
+ }
+ //success, go to the next player
+ break;
+ }
+ }
+ }
+ }
+
+ public int getTicksBeforeNextLightning(Random rand) {
+ return stormIntensity.baseTicks + rand.nextInt(stormIntensity.randomTicks);
+ }
+
+ public boolean isRainingAt(int x, int y, int z) {
+ return world.D(x, y, z);
+ }
+}
+
+enum Intensity {
+
+ STRONG_ELECTRICAL_STORM(5, 10, 20),
+ ELECTRICAL_STORM(15, 40, 150),
+ STRONG_THUNDERSTORM(30, 60, 250),
+ THUNDERSTORM(50, 100, 500),
+ WEAK_THUNDERSTORM(75, 300, 1000),
+ RAINSTORM(100, 500, 2000);
+ int chance, baseTicks, randomTicks;
+
+ Intensity(int chance, int baseTicks, int randomTicks) {
+ this.chance = chance;
+ this.baseTicks = baseTicks;
+ this.randomTicks = randomTicks;
+ }
+
+ public static Intensity getRandomIntensity(Random rand) {
+ int r = rand.nextInt(100);
+ if (r < STRONG_ELECTRICAL_STORM.chance) {
+ return STRONG_ELECTRICAL_STORM;
+ }
+ if (r < ELECTRICAL_STORM.chance) {
+ return ELECTRICAL_STORM;
+ }
+ if (r < STRONG_THUNDERSTORM.chance) {
+ return STRONG_THUNDERSTORM;
+ }
+ if (r < THUNDERSTORM.chance) {
+ return THUNDERSTORM;
+ }
+ if (r < WEAK_THUNDERSTORM.chance) {
+ return WEAK_THUNDERSTORM;
+ }
+ return RAINSTORM;
+ }
+}
diff --git a/src/main/java/org/bukkit/craftbukkit/util/LongHashSet.java b/src/main/java/org/bukkit/craftbukkit/util/LongHashSet.java diff --git a/src/main/java/org/bukkit/craftbukkit/util/LongHashSet.java b/src/main/java/org/bukkit/craftbukkit/util/LongHashSet.java
index 22c96c5..3f1617d 100644 index 22c96c5..3f1617d 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/LongHashSet.java --- a/src/main/java/org/bukkit/craftbukkit/util/LongHashSet.java
@ -2807,10 +2514,10 @@ index 0000000..9e92ea2
+ } + }
+} +}
diff --git a/src/main/resources/configurations/bukkit.yml b/src/main/resources/configurations/bukkit.yml diff --git a/src/main/resources/configurations/bukkit.yml b/src/main/resources/configurations/bukkit.yml
index 61a95e3..e192700 100644 index 61a95e3..5262ae1 100644
--- a/src/main/resources/configurations/bukkit.yml --- a/src/main/resources/configurations/bukkit.yml
+++ b/src/main/resources/configurations/bukkit.yml +++ b/src/main/resources/configurations/bukkit.yml
@@ -25,6 +25,61 @@ settings: @@ -25,6 +25,36 @@ settings:
query-plugins: true query-plugins: true
deprecated-verbose: default deprecated-verbose: default
shutdown-message: Server closed shutdown-message: Server closed
@ -2844,34 +2551,9 @@ index 61a95e3..e192700 100644
+ growth-chunks-per-tick: 0 + growth-chunks-per-tick: 0
+ random-light-updates: true + random-light-updates: true
+ water-creatures-per-chunk: 0 + water-creatures-per-chunk: 0
+storm-settings:
+ strong-electrical-storm:
+ chance: 5
+ lightning-delay: 10
+ lightning-random-delay: 20
+ electrical-storm:
+ chance: 15
+ lightning-delay: 40
+ lightning-random-delay: 150
+ strong-thunderstorm:
+ chance: 30
+ lightning-delay: 60
+ lightning-random-delay: 250
+ thunderstorm:
+ chance: 50
+ lightning-delay: 100
+ lightning-random-delay: 500
+ weak-thunderstorm:
+ chance: 75
+ lightning-delay: 300
+ lightning-random-delay: 1000
+ rainstorm:
+ chance: 100
+ lightning-delay: 500
+ lightning-random-delay: 2000
spawn-limits: spawn-limits:
monsters: 70 monsters: 70
animals: 15 animals: 15
-- --
1.8.0.3 1.8.1-rc2

View file

@ -1,4 +1,4 @@
From 771602a95edb220642e34e8e9ca3d205f6491561 Mon Sep 17 00:00:00 2001 From 41511c81fdae75c5daa04dca85051ddfa83a1b0c Mon Sep 17 00:00:00 2001
From: md_5 <md_5@bigpond.com> From: md_5 <md_5@bigpond.com>
Date: Sun, 23 Dec 2012 17:51:07 +1100 Date: Sun, 23 Dec 2012 17:51:07 +1100
Subject: [PATCH] Update item merge logic Subject: [PATCH] Update item merge logic
@ -8,10 +8,10 @@ Subject: [PATCH] Update item merge logic
1 file changed, 7 insertions(+), 8 deletions(-) 1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 263cbd3..6e9b13d 100644 index 5a01944..28ce1d7 100644
--- a/src/main/java/net/minecraft/server/World.java --- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java
@@ -927,6 +927,7 @@ public abstract class World implements IBlockAccess { @@ -926,6 +926,7 @@ public abstract class World implements IBlockAccess {
event = CraftEventFactory.callItemSpawnEvent((EntityItem) entity); event = CraftEventFactory.callItemSpawnEvent((EntityItem) entity);
// Spigot start // Spigot start
ItemStack item = ((EntityItem) entity).getItemStack(); ItemStack item = ((EntityItem) entity).getItemStack();
@ -19,7 +19,7 @@ index 263cbd3..6e9b13d 100644
int maxSize = item.getMaxStackSize(); int maxSize = item.getMaxStackSize();
if (item.count < maxSize) { if (item.count < maxSize) {
double radius = this.getWorld().itemMergeRadius; double radius = this.getWorld().itemMergeRadius;
@@ -936,14 +937,12 @@ public abstract class World implements IBlockAccess { @@ -935,14 +936,12 @@ public abstract class World implements IBlockAccess {
if (e instanceof EntityItem) { if (e instanceof EntityItem) {
EntityItem loopItem = (EntityItem) e; EntityItem loopItem = (EntityItem) e;
ItemStack loopStack = loopItem.getItemStack(); ItemStack loopStack = loopItem.getItemStack();

View file

@ -1,4 +1,4 @@
From 369fd92f61f955ef427c3db66a650458b095f26a Mon Sep 17 00:00:00 2001 From d1e42f45b53d9af605000319340b2a160e205e35 Mon Sep 17 00:00:00 2001
From: Mike Primm <mike@primmhome.com> From: Mike Primm <mike@primmhome.com>
Date: Wed, 16 Jan 2013 15:27:22 -0600 Date: Wed, 16 Jan 2013 15:27:22 -0600
Subject: [PATCH] Alternate, sync-free-but-safe chunk reference cache Subject: [PATCH] Alternate, sync-free-but-safe chunk reference cache
@ -8,10 +8,10 @@ Subject: [PATCH] Alternate, sync-free-but-safe chunk reference cache
1 file changed, 6 insertions(+), 8 deletions(-) 1 file changed, 6 insertions(+), 8 deletions(-)
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 6e9b13d..e28aa00 100644 index 28ce1d7..39e6110 100644
--- a/src/main/java/net/minecraft/server/World.java --- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java
@@ -297,15 +297,13 @@ public abstract class World implements IBlockAccess { @@ -296,15 +296,13 @@ public abstract class World implements IBlockAccess {
// CraftBukkit start // CraftBukkit start
public Chunk getChunkAt(int i, int j) { public Chunk getChunkAt(int i, int j) {

View file

@ -1,4 +1,4 @@
From 2af2697578d73f9965a4578afe80aa49a0cd30ab Mon Sep 17 00:00:00 2001 From 5cfd2fa15e41201cc36959046d6a1c5ac860b265 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co> From: Aikar <aikar@aikar.co>
Date: Thu, 10 Jan 2013 00:18:11 -0500 Date: Thu, 10 Jan 2013 00:18:11 -0500
Subject: [PATCH] Add Custom Timings to various points Subject: [PATCH] Add Custom Timings to various points
@ -210,7 +210,7 @@ index 43a24f5..7ca0acf 100644
/* CraftBukkit start - No longer needed as we have already handled it in server.dispatchServerCommand above. /* CraftBukkit start - No longer needed as we have already handled it in server.dispatchServerCommand above.
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index e28aa00..3c6adb6 100644 index 39e6110..46e8d11 100644
--- a/src/main/java/net/minecraft/server/World.java --- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java
@@ -14,6 +14,7 @@ import java.util.concurrent.Callable; @@ -14,6 +14,7 @@ import java.util.concurrent.Callable;
@ -221,7 +221,7 @@ index e28aa00..3c6adb6 100644
import org.bukkit.generator.ChunkGenerator; import org.bukkit.generator.ChunkGenerator;
import org.bukkit.craftbukkit.CraftServer; import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.craftbukkit.CraftWorld; import org.bukkit.craftbukkit.CraftWorld;
@@ -114,6 +115,7 @@ public abstract class World implements IBlockAccess { @@ -113,6 +114,7 @@ public abstract class World implements IBlockAccess {
final Object chunkLock = new Object(); final Object chunkLock = new Object();
private byte chunkTickRadius; private byte chunkTickRadius;
@ -229,7 +229,7 @@ index e28aa00..3c6adb6 100644
public CraftWorld getWorld() { public CraftWorld getWorld() {
return this.world; return this.world;
} }
@@ -193,6 +195,7 @@ public abstract class World implements IBlockAccess { @@ -192,6 +194,7 @@ public abstract class World implements IBlockAccess {
this.a(); this.a();
this.getServer().addWorld(this.world); // CraftBukkit this.getServer().addWorld(this.world); // CraftBukkit
@ -237,7 +237,7 @@ index e28aa00..3c6adb6 100644
} }
protected abstract IChunkProvider j(); protected abstract IChunkProvider j();
@@ -1207,6 +1210,7 @@ public abstract class World implements IBlockAccess { @@ -1206,6 +1209,7 @@ public abstract class World implements IBlockAccess {
CrashReport crashreport; CrashReport crashreport;
CrashReportSystemDetails crashreportsystemdetails; CrashReportSystemDetails crashreportsystemdetails;
@ -245,7 +245,7 @@ index e28aa00..3c6adb6 100644
for (i = 0; i < this.i.size(); ++i) { for (i = 0; i < this.i.size(); ++i) {
entity = (Entity) this.i.get(i); entity = (Entity) this.i.get(i);
// CraftBukkit start - fixed an NPE, don't process entities in chunks queued for unload // CraftBukkit start - fixed an NPE, don't process entities in chunks queued for unload
@@ -1261,7 +1265,9 @@ public abstract class World implements IBlockAccess { @@ -1260,7 +1264,9 @@ public abstract class World implements IBlockAccess {
this.f.clear(); this.f.clear();
this.methodProfiler.c("regular"); this.methodProfiler.c("regular");
@ -255,7 +255,7 @@ index e28aa00..3c6adb6 100644
for (i = 0; i < this.entityList.size(); ++i) { for (i = 0; i < this.entityList.size(); ++i) {
entity = (Entity) this.entityList.get(i); entity = (Entity) this.entityList.get(i);
@@ -1314,7 +1320,9 @@ public abstract class World implements IBlockAccess { @@ -1313,7 +1319,9 @@ public abstract class World implements IBlockAccess {
this.methodProfiler.b(); this.methodProfiler.b();
} }
@ -265,7 +265,7 @@ index e28aa00..3c6adb6 100644
this.M = true; this.M = true;
Iterator iterator = this.tileEntityList.iterator(); Iterator iterator = this.tileEntityList.iterator();
@@ -1393,6 +1401,7 @@ public abstract class World implements IBlockAccess { @@ -1392,6 +1400,7 @@ public abstract class World implements IBlockAccess {
this.a.clear(); this.a.clear();
} }
@ -274,7 +274,7 @@ index e28aa00..3c6adb6 100644
this.methodProfiler.b(); this.methodProfiler.b();
} }
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index faa56ac..b7ab326 100644 index 842d722..eb268ad 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java --- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -157,9 +157,12 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate @@ -157,9 +157,12 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate

View file

@ -1,4 +1,4 @@
From e0396f9b7cbcb5f22183d97bd5d2e3858f27ce52 Mon Sep 17 00:00:00 2001 From f3c3312ad255c5d61121f0e4e3db437fe7bc3b19 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au> From: md_5 <md_5@live.com.au>
Date: Mon, 21 Jan 2013 14:31:25 +1100 Date: Mon, 21 Jan 2013 14:31:25 +1100
Subject: [PATCH] Better + more flexible itemstack merging Subject: [PATCH] Better + more flexible itemstack merging
@ -40,10 +40,10 @@ index a7baa0f..5e3ac84 100644
} }
} else { } else {
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 3c6adb6..88b7f7a 100644 index 46e8d11..adb1312 100644
--- a/src/main/java/net/minecraft/server/World.java --- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java
@@ -927,30 +927,7 @@ public abstract class World implements IBlockAccess { @@ -926,30 +926,7 @@ public abstract class World implements IBlockAccess {
} else if (entity instanceof EntityItem) { } else if (entity instanceof EntityItem) {
event = CraftEventFactory.callItemSpawnEvent((EntityItem) entity); event = CraftEventFactory.callItemSpawnEvent((EntityItem) entity);
// Spigot start // Spigot start
@ -75,7 +75,7 @@ index 3c6adb6..88b7f7a 100644
EntityExperienceOrb xp = (EntityExperienceOrb) entity; EntityExperienceOrb xp = (EntityExperienceOrb) entity;
double radius = this.getWorld().expMergeRadius; double radius = this.getWorld().expMergeRadius;
if (radius > 0) { if (radius > 0) {
@@ -965,6 +942,7 @@ public abstract class World implements IBlockAccess { @@ -964,6 +941,7 @@ public abstract class World implements IBlockAccess {
} }
} }
} }

View file

@ -1,4 +1,4 @@
From e25646701f0e99f9b8d25c5bab68fce7dabf37ec Mon Sep 17 00:00:00 2001 From 247b905d9553d0f0fe899e8569ce638053e0e66d Mon Sep 17 00:00:00 2001
From: lishid <lishid@gmail.com> From: lishid <lishid@gmail.com>
Date: Mon, 21 Jan 2013 16:59:04 +1100 Date: Mon, 21 Jan 2013 16:59:04 +1100
Subject: [PATCH] Add oreobfuscator for Spigot. Subject: [PATCH] Add oreobfuscator for Spigot.
@ -254,7 +254,7 @@ index 0000000..6d5a519
+ } + }
+} +}
diff --git a/src/main/java/org/bukkit/craftbukkit/Spigot.java b/src/main/java/org/bukkit/craftbukkit/Spigot.java diff --git a/src/main/java/org/bukkit/craftbukkit/Spigot.java b/src/main/java/org/bukkit/craftbukkit/Spigot.java
index a535b69..9f0a99a 100644 index 931356d..83988c3 100644
--- a/src/main/java/org/bukkit/craftbukkit/Spigot.java --- a/src/main/java/org/bukkit/craftbukkit/Spigot.java
+++ b/src/main/java/org/bukkit/craftbukkit/Spigot.java +++ b/src/main/java/org/bukkit/craftbukkit/Spigot.java
@@ -24,6 +24,10 @@ public class Spigot { @@ -24,6 +24,10 @@ public class Spigot {
@ -269,10 +269,10 @@ index a535b69..9f0a99a 100644
server.getLogger().severe("[Spigot] You should not disable chunk-gc. Resetting period-in-ticks to 600 ticks."); server.getLogger().severe("[Spigot] You should not disable chunk-gc. Resetting period-in-ticks to 600 ticks.");
server.chunkGCPeriod = 600; server.chunkGCPeriod = 600;
diff --git a/src/main/resources/configurations/bukkit.yml b/src/main/resources/configurations/bukkit.yml diff --git a/src/main/resources/configurations/bukkit.yml b/src/main/resources/configurations/bukkit.yml
index c41fac1..fee0bb1 100644 index 9d6d613..6931712 100644
--- a/src/main/resources/configurations/bukkit.yml --- a/src/main/resources/configurations/bukkit.yml
+++ b/src/main/resources/configurations/bukkit.yml +++ b/src/main/resources/configurations/bukkit.yml
@@ -109,3 +109,8 @@ database: @@ -84,3 +84,8 @@ database:
driver: org.sqlite.JDBC driver: org.sqlite.JDBC
password: walrus password: walrus
url: jdbc:sqlite:{DIR}{NAME}.db url: jdbc:sqlite:{DIR}{NAME}.db
@ -282,5 +282,5 @@ index c41fac1..fee0bb1 100644
+ disabled-worlds: + disabled-worlds:
+ - world_the_end + - world_the_end
-- --
1.8.0.3 1.8.1-rc2