Phase 1 of MC 1.5 update. No this is not meant to compile, don't get your hopes up :p

This commit is contained in:
md_5 2013-03-16 08:35:56 +11:00
parent 67dd91ffe6
commit 6e1c16aed8
29 changed files with 323 additions and 1063 deletions

View File

@ -1,4 +1,4 @@
From 6657d4637da53ca67b7cf5fac814381313b7e869 Mon Sep 17 00:00:00 2001
From 5891b8019b304be3fbd27dd62dee1661b2ed6b90 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sun, 3 Feb 2013 09:44:24 +1100
Subject: [PATCH] POM Changes.
@ -8,7 +8,7 @@ Subject: [PATCH] POM Changes.
1 file changed, 32 insertions(+), 37 deletions(-)
diff --git a/pom.xml b/pom.xml
index d697ca1..a92e73d 100644
index 5a74ee9..e04acf9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,12 +1,20 @@
@ -28,7 +28,7 @@ index d697ca1..a92e73d 100644
+ <groupId>org.spigotmc</groupId>
+ <artifactId>spigot</artifactId>
<packaging>jar</packaging>
<version>1.4.7-R1.1-SNAPSHOT</version>
<version>1.5-R0.1-SNAPSHOT</version>
- <name>CraftBukkit</name>
- <url>http://www.bukkit.org</url>
+ <name>Spigot</name>
@ -37,7 +37,7 @@ index d697ca1..a92e73d 100644
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -16,25 +24,6 @@
<minecraft_version>1_4_R1</minecraft_version>
<minecraft_version>1_5_R1</minecraft_version>
</properties>
- <scm>

View File

@ -1,4 +1,4 @@
From 39ee91305fceb9c3c57cfb73471b0e760af3af80 Mon Sep 17 00:00:00 2001
From 87633bb351c719a15ec38bf63155fcffa7c89000 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sat, 23 Feb 2013 11:47:02 +1100
Subject: [PATCH] Spigot changes.
@ -15,16 +15,16 @@ Subject: [PATCH] Spigot changes.
.../java/net/minecraft/server/BlockSapling.java | 2 +-
src/main/java/net/minecraft/server/BlockStem.java | 2 +-
.../net/minecraft/server/ChunkRegionLoader.java | 35 +++--
.../java/net/minecraft/server/ChunkSection.java | 31 +++-
.../java/net/minecraft/server/ChunkSection.java | 31 ++++-
src/main/java/net/minecraft/server/EntityItem.java | 3 +-
.../java/net/minecraft/server/EntitySquid.java | 4 -
.../net/minecraft/server/PlayerConnection.java | 18 ++-
src/main/java/net/minecraft/server/PlayerList.java | 10 +-
.../net/minecraft/server/ThreadLoginVerifier.java | 23 +++
src/main/java/net/minecraft/server/World.java | 161 ++++++++++++++++++---
.../java/net/minecraft/server/WorldServer.java | 121 +++++++++++++---
.../net/minecraft/server/ThreadLoginVerifier.java | 23 ++++
src/main/java/net/minecraft/server/World.java | 152 ++++++++++++++++++---
.../java/net/minecraft/server/WorldServer.java | 128 +++++++++++++----
.../java/org/bukkit/craftbukkit/CraftServer.java | 45 +++---
.../java/org/bukkit/craftbukkit/CraftWorld.java | 76 +++++++++-
.../java/org/bukkit/craftbukkit/CraftWorld.java | 76 ++++++++++-
src/main/java/org/bukkit/craftbukkit/Spigot.java | 20 +++
.../craftbukkit/chunkio/ChunkIOProvider.java | 2 +-
.../org/bukkit/craftbukkit/entity/CraftPlayer.java | 7 +
@ -32,7 +32,7 @@ Subject: [PATCH] Spigot changes.
.../org/bukkit/craftbukkit/util/LongHashSet.java | 11 +-
.../bukkit/craftbukkit/util/LongObjectHashMap.java | 5 +
src/main/resources/configurations/bukkit.yml | 27 ++++
28 files changed, 564 insertions(+), 99 deletions(-)
28 files changed, 562 insertions(+), 99 deletions(-)
create mode 100644 src/main/java/org/bukkit/craftbukkit/Spigot.java
create mode 100644 src/main/java/org/bukkit/craftbukkit/util/FlatMap.java
@ -48,10 +48,10 @@ index a689360..b97a549 100644
+/dependency-reduced-pom.xml
\ No newline at end of file
diff --git a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java
index f29eace..202bd19 100644
index 4392cb2..8e041c2 100644
--- a/src/main/java/net/minecraft/server/Block.java
+++ b/src/main/java/net/minecraft/server/Block.java
@@ -753,4 +753,16 @@ public class Block {
@@ -768,4 +768,16 @@ public class Block {
return 0;
}
// CraftBukkit end
@ -69,7 +69,7 @@ index f29eace..202bd19 100644
+ // Spigot end
}
diff --git a/src/main/java/net/minecraft/server/BlockCactus.java b/src/main/java/net/minecraft/server/BlockCactus.java
index dd68020..1cb89fa 100644
index 83cc09d..4fb2d87 100644
--- a/src/main/java/net/minecraft/server/BlockCactus.java
+++ b/src/main/java/net/minecraft/server/BlockCactus.java
@@ -23,7 +23,7 @@ public class BlockCactus extends Block {
@ -79,15 +79,15 @@ index dd68020..1cb89fa 100644
- if (i1 == 15) {
+ if (i1 >= (byte) range(3, (world.growthOdds * 100 / world.getWorld().cactusGrowthModifier * 15 / 100F) + 0.5F, 15)) { // Spigot
org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(world, i, j + 1, k, this.id, 0); // CraftBukkit
world.setData(i, j, k, 0);
} else {
world.setData(i, j, k, 0, 4);
this.doPhysics(world, i, j + 1, k, this.id);
diff --git a/src/main/java/net/minecraft/server/BlockCrops.java b/src/main/java/net/minecraft/server/BlockCrops.java
index a2ce8f9..4d3b448 100644
index 14a1c3b..0c6ec6d 100644
--- a/src/main/java/net/minecraft/server/BlockCrops.java
+++ b/src/main/java/net/minecraft/server/BlockCrops.java
@@ -30,7 +30,7 @@ public class BlockCrops extends BlockFlower {
@@ -28,7 +28,7 @@ public class BlockCrops extends BlockFlower {
if (l < 7) {
float f = this.l(world, i, j, k);
float f = this.k(world, i, j, k);
- if (random.nextInt((int) (25.0F / f) + 1) == 0) {
+ if (random.nextInt((int) ((world.growthOdds * 100 / world.getWorld().wheatGrowthModifier / 25.0F) / f) + 1) == 0) { // Spigot
@ -95,10 +95,10 @@ index a2ce8f9..4d3b448 100644
}
}
diff --git a/src/main/java/net/minecraft/server/BlockGrass.java b/src/main/java/net/minecraft/server/BlockGrass.java
index 79a007c..0bc7882 100644
index 6f9301d..c78a934 100644
--- a/src/main/java/net/minecraft/server/BlockGrass.java
+++ b/src/main/java/net/minecraft/server/BlockGrass.java
@@ -37,7 +37,7 @@ public class BlockGrass extends Block {
@@ -32,7 +32,7 @@ public class BlockGrass extends Block {
}
// CraftBukkit end
} else if (world.getLightLevel(i, j + 1, k) >= 9) {
@ -108,12 +108,12 @@ index 79a007c..0bc7882 100644
int j1 = j + random.nextInt(5) - 3;
int k1 = k + random.nextInt(3) - 1;
diff --git a/src/main/java/net/minecraft/server/BlockMushroom.java b/src/main/java/net/minecraft/server/BlockMushroom.java
index db90874..9647bb2 100644
index 872ad00..aedcf62 100644
--- a/src/main/java/net/minecraft/server/BlockMushroom.java
+++ b/src/main/java/net/minecraft/server/BlockMushroom.java
@@ -24,7 +24,7 @@ public class BlockMushroom extends BlockFlower {
@@ -27,7 +27,7 @@ public class BlockMushroom extends BlockFlower {
public void b(World world, int i, int j, int k, Random random) {
public void a(World world, int i, int j, int k, Random random) {
final int sourceX = i, sourceY = j, sourceZ = k; // CraftBukkit
- if (random.nextInt(25) == 0) {
+ if (random.nextInt((int) (world.growthOdds * 100 / world.getWorld().mushroomGrowthModifier * 25)) == 0) { // Spigot
@ -121,10 +121,10 @@ index db90874..9647bb2 100644
int l = 5;
diff --git a/src/main/java/net/minecraft/server/BlockMycel.java b/src/main/java/net/minecraft/server/BlockMycel.java
index 6dbf49f..afef94d 100644
index 1de8c83..522d317 100644
--- a/src/main/java/net/minecraft/server/BlockMycel.java
+++ b/src/main/java/net/minecraft/server/BlockMycel.java
@@ -37,7 +37,7 @@ public class BlockMycel extends Block {
@@ -32,7 +32,7 @@ public class BlockMycel extends Block {
}
// CraftBukkit end
} else if (world.getLightLevel(i, j + 1, k) >= 9) {
@ -134,38 +134,38 @@ index 6dbf49f..afef94d 100644
int j1 = j + random.nextInt(5) - 3;
int k1 = k + random.nextInt(3) - 1;
diff --git a/src/main/java/net/minecraft/server/BlockReed.java b/src/main/java/net/minecraft/server/BlockReed.java
index 399050a..66ad508 100644
index 8657860..def38e9 100644
--- a/src/main/java/net/minecraft/server/BlockReed.java
+++ b/src/main/java/net/minecraft/server/BlockReed.java
@@ -24,7 +24,7 @@ public class BlockReed extends Block {
@@ -23,7 +23,7 @@ public class BlockReed extends Block {
if (l < 3) {
int i1 = world.getData(i, j, k);
- if (i1 == 15) {
+ if (i1 >= (byte) range(3, (world.growthOdds * 100 / world.getWorld().sugarGrowthModifier * 15 / 100F) + 0.5F, 15)) { // Spigot
org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(world, i, j + 1, k, this.id, 0); // CraftBukkit
world.setData(i, j, k, 0);
world.setData(i, j, k, 0, 4);
} else {
diff --git a/src/main/java/net/minecraft/server/BlockSapling.java b/src/main/java/net/minecraft/server/BlockSapling.java
index 9c94399..e8b0f96 100644
index 4264630..402647d 100644
--- a/src/main/java/net/minecraft/server/BlockSapling.java
+++ b/src/main/java/net/minecraft/server/BlockSapling.java
@@ -27,7 +27,7 @@ public class BlockSapling extends BlockFlower {
if (world.getLightLevel(i, j + 1, k) >= 9 && random.nextInt(7) == 0) {
int l = world.getData(i, j, k);
- if ((l & 8) == 0) {
+ if (world.getLightLevel(i, j + 1, k) >= 9 && (random.nextInt(Math.max(2, (int) ((world.growthOdds * 100 / world.getWorld().treeGrowthModifier * 7 / 100F) + 0.5F))) == 0)) { // Spigot
world.setData(i, j, k, l | 8);
} else {
this.grow(world, i, j, k, random, false, null, null); // CraftBukkit - added bonemeal, player and itemstack
@@ -25,7 +25,7 @@ public class BlockSapling extends BlockFlower {
public void a(World world, int i, int j, int k, Random random) {
if (!world.isStatic) {
super.a(world, i, j, k, random);
- if (world.getLightLevel(i, j + 1, k) >= 9 && random.nextInt(7) == 0) {
+ if (world.getLightLevel(i, j + 1, k) >= 9 && (random.nextInt(Math.max(2, (int) ((world.growthOdds * 100 / world.getWorld().treeGrowthModifier * 7 / 100F) + 0.5F))) == 0)) { // Spigot
this.grow(world, i, j, k, random, false, null, null); // CraftBukkit - added bonemeal, player and itemstack
}
}
diff --git a/src/main/java/net/minecraft/server/BlockStem.java b/src/main/java/net/minecraft/server/BlockStem.java
index ff1b89f..dfaf45d 100644
index 8339a35..a945ee4 100644
--- a/src/main/java/net/minecraft/server/BlockStem.java
+++ b/src/main/java/net/minecraft/server/BlockStem.java
@@ -27,7 +27,7 @@ public class BlockStem extends BlockFlower {
if (world.getLightLevel(i, j + 1, k) >= 9) {
float f = this.n(world, i, j, k);
float f = this.m(world, i, j, k);
- if (random.nextInt((int) (25.0F / f) + 1) == 0) {
+ if (random.nextInt((int) ((world.growthOdds * 100 / ((this.id == Block.PUMPKIN_STEM.id) ? world.getWorld().pumpkinGrowthModifier : world.getWorld().melonGrowthModifier) / 25.0F) / f) + 1) == 0) { // Spigot
@ -173,7 +173,7 @@ index ff1b89f..dfaf45d 100644
if (l < 7) {
diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
index 88c33d0..e5e60a9 100644
index 8f37333..c1f5cc2 100644
--- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java
+++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
@@ -13,8 +13,7 @@ import java.util.Set;
@ -326,7 +326,7 @@ index 90e0636..051cf6d 100644
+ // Spigot end
}
diff --git a/src/main/java/net/minecraft/server/EntityItem.java b/src/main/java/net/minecraft/server/EntityItem.java
index b8b6d52..a7baa0f 100644
index ee775bf..aa8d83f 100644
--- a/src/main/java/net/minecraft/server/EntityItem.java
+++ b/src/main/java/net/minecraft/server/EntityItem.java
@@ -61,6 +61,7 @@ public class EntityItem extends Entity {
@ -347,14 +347,14 @@ index b8b6d52..a7baa0f 100644
if (!this.world.isStatic && this.age >= 6000) {
// CraftBukkit start
diff --git a/src/main/java/net/minecraft/server/EntitySquid.java b/src/main/java/net/minecraft/server/EntitySquid.java
index 961d83a..188d477 100644
index 30259de..af42142 100644
--- a/src/main/java/net/minecraft/server/EntitySquid.java
+++ b/src/main/java/net/minecraft/server/EntitySquid.java
@@ -63,10 +63,6 @@ public class EntitySquid extends EntityWaterAnimal {
// CraftBukkit end
}
- public boolean H() {
- public boolean G() {
- return this.world.a(this.boundingBox.grow(0.0D, -0.6000000238418579D, 0.0D), Material.WATER, (Entity) this);
- }
-
@ -362,10 +362,10 @@ index 961d83a..188d477 100644
super.c();
this.e = this.d;
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index fac9ea5..43a24f5 100644
index aeca924..b3ff786 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -852,8 +852,19 @@ public class PlayerConnection extends Connection {
@@ -839,8 +839,19 @@ public class PlayerConnection extends Connection {
this.chat(s, packet3chat.a_());
@ -386,16 +386,16 @@ index fac9ea5..43a24f5 100644
// CraftBukkit start
if (packet3chat.a_()) {
Waitable waitable = new Waitable() {
@@ -976,7 +987,7 @@ public class PlayerConnection extends Connection {
@@ -963,7 +974,7 @@ public class PlayerConnection extends Connection {
}
try {
- logger.info(event.getPlayer().getName() + " issued server command: " + event.getMessage()); // CraftBukkit
+ if (server.logCommands) logger.info(event.getPlayer().getName() + " issued server command: " + event.getMessage()); // Spigot
- this.minecraftServer.getLogger().info(event.getPlayer().getName() + " issued server command: " + event.getMessage()); // CraftBukkit
+ if (server.logCommands) this.minecraftServer.getLogger().info(event.getPlayer().getName() + " issued server command: " + event.getMessage()); // Spigot
if (this.server.dispatchCommand(event.getPlayer(), event.getMessage().substring(1))) {
return;
}
@@ -1353,8 +1364,9 @@ public class PlayerConnection extends Connection {
@@ -1340,8 +1351,9 @@ public class PlayerConnection extends Connection {
flag = false;
} else {
for (i = 0; i < packet130updatesign.lines[j].length(); ++i) {
@ -407,10 +407,10 @@ index fac9ea5..43a24f5 100644
}
}
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
index e857612..d13fa19 100644
index 585595d..224c57f 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
@@ -253,7 +253,7 @@ public abstract class PlayerList {
@@ -303,7 +303,7 @@ public abstract class PlayerList {
event.disallow(PlayerLoginEvent.Result.KICK_BANNED, s1);
} else if (!this.isWhitelisted(s)) {
@ -419,7 +419,7 @@ index e857612..d13fa19 100644
} else {
String s2 = socketaddress.toString();
@@ -924,7 +924,13 @@ public abstract class PlayerList {
@@ -1044,7 +1044,13 @@ public abstract class PlayerList {
public void r() {
while (!this.players.isEmpty()) {
@ -469,10 +469,10 @@ 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"));
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
index c3dc4a4..6c9857b 100644
index 9c39815..14df580 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -65,7 +65,7 @@ public abstract class World implements IBlockAccess {
@@ -67,14 +67,27 @@ public abstract class World implements IBlockAccess {
// CraftBukkit start - public, longhashset
public boolean allowMonsters = true;
public boolean allowAnimals = true;
@ -481,9 +481,8 @@ index c3dc4a4..6c9857b 100644
public long ticksPerAnimalSpawns;
public long ticksPerMonsterSpawns;
// CraftBukkit end
@@ -73,7 +73,20 @@ public abstract class World implements IBlockAccess {
private int O;
int[] H;
private List O;
public boolean isStatic;
+ // Spigot start
@ -502,7 +501,7 @@ index c3dc4a4..6c9857b 100644
public BiomeBase getBiome(int i, int j) {
if (this.isLoaded(i, 0, j)) {
Chunk chunk = this.getChunkAtWorldCoords(i, j);
@@ -99,6 +112,7 @@ public abstract class World implements IBlockAccess {
@@ -100,6 +113,7 @@ public abstract class World implements IBlockAccess {
int lastXAccessed = Integer.MIN_VALUE;
int lastZAccessed = Integer.MIN_VALUE;
final Object chunkLock = new Object();
@ -510,9 +509,9 @@ index c3dc4a4..6c9857b 100644
public CraftWorld getWorld() {
return this.world;
@@ -111,11 +125,18 @@ public abstract class World implements IBlockAccess {
@@ -112,11 +126,18 @@ public abstract class World implements IBlockAccess {
// 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, IConsoleLogManager iconsolelogmanager, ChunkGenerator gen, org.bukkit.World.Environment env) {
this.generator = gen;
+ this.worldData = idatamanager.getWorldData(); // Spigot
this.world = new CraftWorld((WorldServer) this, gen, env);
@ -526,19 +525,19 @@ index c3dc4a4..6c9857b 100644
+ chunkTickList.setAutoCompactionFactor(0.0F);
+ // Spigot end
+
this.N = this.random.nextInt(12000);
this.O = this.random.nextInt(12000);
this.H = new int['\u8000'];
this.O = new UnsafeList(); // CraftBukkit - ArrayList -> UnsafeList
@@ -123,7 +144,7 @@ public abstract class World implements IBlockAccess {
this.dataManager = idatamanager;
this.isStatic = false;
@@ -124,7 +145,7 @@ public abstract class World implements IBlockAccess {
this.methodProfiler = methodprofiler;
this.worldMaps = new WorldMapCollection(idatamanager);
this.logAgent = iconsolelogmanager;
- this.worldData = idatamanager.getWorldData();
+ // this.worldData = idatamanager.getWorldData(); Moved up
if (worldprovider != null) {
this.worldProvider = worldprovider;
} else if (this.worldData != null && this.worldData.j() != 0) {
@@ -901,6 +922,47 @@ public abstract class World implements IBlockAccess {
@@ -925,6 +946,47 @@ public abstract class World implements IBlockAccess {
event = CraftEventFactory.callCreatureSpawnEvent((EntityLiving) entity, spawnReason);
} else if (entity instanceof EntityItem) {
event = CraftEventFactory.callItemSpawnEvent((EntityItem) entity);
@ -586,7 +585,7 @@ index c3dc4a4..6c9857b 100644
} else if (entity.getBukkitEntity() instanceof org.bukkit.entity.Projectile) {
// Not all projectiles extend EntityProjectile, so check for Bukkit interface instead
event = CraftEventFactory.callProjectileLaunchEvent(entity);
@@ -993,6 +1055,39 @@ public abstract class World implements IBlockAccess {
@@ -1017,6 +1079,39 @@ public abstract class World implements IBlockAccess {
int i1 = MathHelper.floor(axisalignedbb.c);
int j1 = MathHelper.floor(axisalignedbb.f + 1.0D);
@ -626,7 +625,7 @@ index c3dc4a4..6c9857b 100644
for (int k1 = i; k1 < j; ++k1) {
for (int l1 = i1; l1 < j1; ++l1) {
if (this.isLoaded(k1, 64, l1)) {
@@ -1006,6 +1101,7 @@ public abstract class World implements IBlockAccess {
@@ -1030,6 +1125,7 @@ public abstract class World implements IBlockAccess {
}
}
}
@ -634,7 +633,7 @@ index c3dc4a4..6c9857b 100644
double d0 = 0.25D;
List list = this.getEntities(entity, axisalignedbb.grow(d0, d0, d0));
@@ -1894,6 +1990,11 @@ public abstract class World implements IBlockAccess {
@@ -1942,6 +2038,11 @@ public abstract class World implements IBlockAccess {
this.worldData.setWeatherDuration(1);
}
@ -643,10 +642,10 @@ index c3dc4a4..6c9857b 100644
+ protected float modifiedOdds = 100F;
+ public float growthOdds = 100F;
+
protected void z() {
protected void A() {
// this.chunkTickList.clear(); // CraftBukkit - removed
this.methodProfiler.a("buildList");
@@ -1903,25 +2004,42 @@ public abstract class World implements IBlockAccess {
@@ -1951,25 +2052,42 @@ public abstract class World implements IBlockAccess {
int j;
int k;
@ -702,8 +701,8 @@ index c3dc4a4..6c9857b 100644
+ // Spigot End
this.methodProfiler.b();
if (this.N > 0) {
@@ -1929,7 +2047,7 @@ public abstract class World implements IBlockAccess {
if (this.O > 0) {
@@ -1977,7 +2095,7 @@ public abstract class World implements IBlockAccess {
}
this.methodProfiler.a("playerCheckLight");
@ -712,35 +711,8 @@ index c3dc4a4..6c9857b 100644
i = this.random.nextInt(this.players.size());
entityhuman = (EntityHuman) this.players.get(i);
j = MathHelper.floor(entityhuman.locX) + this.random.nextInt(11) - 5;
@@ -2308,7 +2426,10 @@ public abstract class World implements IBlockAccess {
}
public List getEntities(Entity entity, AxisAlignedBB axisalignedbb) {
- this.O.clear();
+ // Spigot start
+ // this.O.clear();
+ ArrayList<?> entities = new ArrayList();
+ // Spigot end
int i = MathHelper.floor((axisalignedbb.a - 2.0D) / 16.0D);
int j = MathHelper.floor((axisalignedbb.d + 2.0D) / 16.0D);
int k = MathHelper.floor((axisalignedbb.c - 2.0D) / 16.0D);
@@ -2317,12 +2438,12 @@ public abstract class World implements IBlockAccess {
for (int i1 = i; i1 <= j; ++i1) {
for (int j1 = k; j1 <= l; ++j1) {
if (this.isChunkLoaded(i1, j1)) {
- this.getChunkAt(i1, j1).a(entity, axisalignedbb, this.O);
+ this.getChunkAt(i1, j1).a(entity, axisalignedbb, entities); // Spigot
}
}
}
- return this.O;
+ return entities; // Spigot
}
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
index 3f73ef9..7032c61 100644
index d99b6a3..f7c1b87 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -1,5 +1,7 @@
@ -768,7 +740,7 @@ index 3f73ef9..7032c61 100644
private TreeSet M;
public ChunkProviderServer chunkProviderServer;
public boolean savingDisabled;
@@ -52,7 +55,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
@@ -53,7 +56,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
}
if (this.L == null) {
@ -777,7 +749,7 @@ index 3f73ef9..7032c61 100644
}
if (this.M == null) {
@@ -267,15 +270,31 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
@@ -277,15 +280,31 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
}
protected void g() {
@ -813,10 +785,11 @@ index 3f73ef9..7032c61 100644
// ChunkCoordIntPair chunkcoordintpair = (ChunkCoordIntPair) iterator.next();
int k = chunkX * 16;
int l = chunkZ * 16;
@@ -373,6 +392,14 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
@@ -383,7 +402,17 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
if (block != null && block.isTicking()) {
++i;
- block.a(this, k2 + k, i3 + chunksection.d(), l2 + l, this.random);
+ // Spigot start
+ if (players < 1) {
+ //grow fast if no players are in this chunk
@ -824,11 +797,14 @@ index 3f73ef9..7032c61 100644
+ } else {
+ this.growthOdds = 100;
+ }
+ for (int i = 0; i < getWorld().aggregateTicks; i++) {
+ block.a(this, k2 + k, i3 + chunksection.d(), l2 + l, this.random);
+ }
+ // Spigot end
block.b(this, k2 + k, i3 + chunksection.d(), l2 + l, this.random);
}
}
@@ -413,10 +440,11 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
}
@@ -429,10 +458,11 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
nextticklistentry.a(j1);
}
@ -844,7 +820,7 @@ index 3f73ef9..7032c61 100644
}
}
@@ -427,10 +455,11 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
@@ -444,10 +474,11 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
nextticklistentry.a((long) i1 + this.worldData.getTime());
}
@ -860,7 +836,7 @@ index 3f73ef9..7032c61 100644
}
public void tickEntities() {
@@ -452,9 +481,9 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
@@ -469,9 +500,9 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
public boolean a(boolean flag) {
int i = this.M.size();
@ -873,23 +849,26 @@ index 3f73ef9..7032c61 100644
if (i > 1000) {
// CraftBukkit start - if the server has too much to process over time, try to alleviate that
if (i > 20 * 1000) {
@@ -472,8 +501,11 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
@@ -492,10 +523,12 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
break;
}
- this.M.remove(nextticklistentry);
- this.L.remove(nextticklistentry);
- this.T.add(nextticklistentry);
- }
+ // Spigot start
+ //this.M.remove(nextticklistentry);
+ //this.L.remove(nextticklistentry);
+ this.removeNextTickIfNeeded(nextticklistentry);
+ // Spigot end
byte b0 = 8;
if (this.d(nextticklistentry.a - b0, nextticklistentry.b - b0, nextticklistentry.c - b0, nextticklistentry.a + b0, nextticklistentry.b + b0, nextticklistentry.c + b0)) {
@@ -502,10 +534,12 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
}
+ byte b0 = 8;
this.methodProfiler.b();
this.methodProfiler.a("ticking");
@@ -536,10 +569,12 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
this.methodProfiler.b();
this.T.clear();
return !this.M.isEmpty();
- }
+ // } // Spigot
@ -900,8 +879,8 @@ index 3f73ef9..7032c61 100644
+ /* Spigot start
ArrayList arraylist = null;
ChunkCoordIntPair chunkcoordintpair = chunk.l();
int i = chunkcoordintpair.x << 4;
@@ -532,6 +566,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
int i = (chunkcoordintpair.x << 4) - 2;
@@ -578,6 +613,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
}
return arraylist;
@ -909,7 +888,7 @@ index 3f73ef9..7032c61 100644
}
public void entityJoinedWorld(Entity entity, boolean flag) {
@@ -610,7 +645,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
@@ -648,7 +684,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
}
if (this.L == null) {
@ -918,10 +897,10 @@ index 3f73ef9..7032c61 100644
}
if (this.M == null) {
@@ -883,4 +918,48 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
public PortalTravelAgent s() {
return this.P;
@@ -934,4 +970,48 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
return this.setTypeIdAndData(x, y, z, typeId, data, 3);
}
// CraftBukkit end
+
+ // Spigot start
+ private void addNextTickIfNeeded(NextTickListEntry ent) {
@ -968,7 +947,7 @@ index 3f73ef9..7032c61 100644
+ // Spigot end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index e7c0760..257497e 100644
index 3775022..8f65601 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -146,7 +146,7 @@ public final class CraftServer implements Server {
@ -1093,7 +1072,7 @@ index e7c0760..257497e 100644
player.sendMessage(ChatColor.RED + "An internal error occurred while attempting to tab-complete this command");
getLogger().log(Level.SEVERE, "Exception when " + player.getName() + " attempted to tab complete " + message, ex);
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 6e364b1..45217cd 100644
index 9218f07..fdef910 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -75,7 +75,81 @@ public class CraftWorld implements World {

View File

@ -1,4 +1,4 @@
From 7c1be72b82a1dc2af199e0184fea60dd6fad252d Mon Sep 17 00:00:00 2001
From bfc5f88c1e7d5fbe91a141aa18e6491fafd2fd92 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@bigpond.com>
Date: Sun, 23 Dec 2012 17:09:40 +1100
Subject: [PATCH] Address BUKKIT-3286 by firing the inventory close event when
@ -10,10 +10,10 @@ Subject: [PATCH] Address BUKKIT-3286 by firing the inventory close event when
1 file changed, 6 insertions(+)
diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java
index ce0715b..028ba0c 100644
index bfcb6ce..552a013 100644
--- a/src/main/java/net/minecraft/server/EntityHuman.java
+++ b/src/main/java/net/minecraft/server/EntityHuman.java
@@ -4,11 +4,13 @@ import java.util.Iterator;
@@ -5,11 +5,13 @@ import java.util.Iterator;
import java.util.List;
// CraftBukkit start
@ -27,7 +27,7 @@ index ce0715b..028ba0c 100644
import org.bukkit.event.player.PlayerBedEnterEvent;
import org.bukkit.event.player.PlayerBedLeaveEvent;
import org.bukkit.event.player.PlayerDropItemEvent;
@@ -911,6 +913,10 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
@@ -941,6 +943,10 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
super.die();
this.defaultContainer.b(this);
if (this.activeContainer != null) {

View File

@ -1,4 +1,4 @@
From 5c745b48d2a4917947844408f63a581d5f626fb0 Mon Sep 17 00:00:00 2001
From 2e93b88a60c6455d3c3754c75c788cc705e5b7b3 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@bigpond.com>
Date: Sun, 23 Dec 2012 17:51:07 +1100
Subject: [PATCH] Update item merge logic
@ -8,10 +8,10 @@ Subject: [PATCH] Update item merge logic
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
index 9906b9e..1e36467 100644
index 14df580..d1fe36f 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -924,6 +924,7 @@ public abstract class World implements IBlockAccess {
@@ -948,6 +948,7 @@ public abstract class World implements IBlockAccess {
event = CraftEventFactory.callItemSpawnEvent((EntityItem) entity);
// Spigot start
ItemStack item = ((EntityItem) entity).getItemStack();
@ -19,7 +19,7 @@ index 9906b9e..1e36467 100644
int maxSize = item.getMaxStackSize();
if (item.count < maxSize) {
double radius = this.getWorld().itemMergeRadius;
@@ -933,14 +934,12 @@ public abstract class World implements IBlockAccess {
@@ -957,14 +958,12 @@ public abstract class World implements IBlockAccess {
if (e instanceof EntityItem) {
EntityItem loopItem = (EntityItem) e;
ItemStack loopStack = loopItem.getItemStack();

View File

@ -1,4 +1,4 @@
From 8a6dee291c36ec103e28624da71583f6eb863dde Mon Sep 17 00:00:00 2001
From 037685772e9421d9f819da76728cd90ef63f3741 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@bigpond.com>
Date: Sat, 12 Jan 2013 19:57:45 +1100
Subject: [PATCH] Per world view distance.
@ -10,10 +10,10 @@ Subject: [PATCH] Per world view distance.
3 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 7032c61..4aa2a19 100644
index f7c1b87..2407bc6 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -49,7 +49,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
@@ -50,7 +50,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
// CraftBukkit end
this.server = minecraftserver;
this.tracker = new EntityTracker(this);
@ -23,7 +23,7 @@ index 7032c61..4aa2a19 100644
this.entitiesById = new IntHashMap();
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 45217cd..94e07fe 100644
index fdef910..359f065 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -116,6 +116,9 @@ public class CraftWorld implements World {

View File

@ -1,4 +1,4 @@
From b5b44a60c5a1f64ba4ce828bb5fa112e1552cd72 Mon Sep 17 00:00:00 2001
From 07d43f2d51a94bbe84912b1f13353185f7089f27 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Fri, 11 Jan 2013 11:08:45 -0500
Subject: [PATCH] Fix various crop growth modifier formula issues
@ -10,12 +10,11 @@ Subject: [PATCH] Fix various crop growth modifier formula issues
src/main/java/net/minecraft/server/BlockMushroom.java | 2 +-
src/main/java/net/minecraft/server/BlockMycel.java | 3 ++-
src/main/java/net/minecraft/server/BlockReed.java | 2 +-
src/main/java/net/minecraft/server/BlockSapling.java | 2 +-
src/main/java/net/minecraft/server/BlockStem.java | 2 +-
8 files changed, 10 insertions(+), 8 deletions(-)
7 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/src/main/java/net/minecraft/server/BlockCactus.java b/src/main/java/net/minecraft/server/BlockCactus.java
index 1cb89fa..57bedfc 100644
index 4fb2d87..eed8ded 100644
--- a/src/main/java/net/minecraft/server/BlockCactus.java
+++ b/src/main/java/net/minecraft/server/BlockCactus.java
@@ -23,7 +23,7 @@ public class BlockCactus extends Block {
@ -25,15 +24,15 @@ index 1cb89fa..57bedfc 100644
- if (i1 >= (byte) range(3, (world.growthOdds * 100 / world.getWorld().cactusGrowthModifier * 15 / 100F) + 0.5F, 15)) { // Spigot
+ if (i1 >= (byte) range(3, (world.growthOdds / world.getWorld().cactusGrowthModifier * 15) + 0.5F, 15)) { // Spigot
org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(world, i, j + 1, k, this.id, 0); // CraftBukkit
world.setData(i, j, k, 0);
} else {
world.setData(i, j, k, 0, 4);
this.doPhysics(world, i, j + 1, k, this.id);
diff --git a/src/main/java/net/minecraft/server/BlockCrops.java b/src/main/java/net/minecraft/server/BlockCrops.java
index 4d3b448..b9d35ff 100644
index 0c6ec6d..0aee7af 100644
--- a/src/main/java/net/minecraft/server/BlockCrops.java
+++ b/src/main/java/net/minecraft/server/BlockCrops.java
@@ -30,7 +30,7 @@ public class BlockCrops extends BlockFlower {
@@ -28,7 +28,7 @@ public class BlockCrops extends BlockFlower {
if (l < 7) {
float f = this.l(world, i, j, k);
float f = this.k(world, i, j, k);
- if (random.nextInt((int) ((world.growthOdds * 100 / world.getWorld().wheatGrowthModifier / 25.0F) / f) + 1) == 0) { // Spigot
+ if (random.nextInt((int) (world.growthOdds / world.getWorld().wheatGrowthModifier * (25.0F / f)) + 1) == 0) { // Spigot
@ -41,10 +40,10 @@ index 4d3b448..b9d35ff 100644
}
}
diff --git a/src/main/java/net/minecraft/server/BlockGrass.java b/src/main/java/net/minecraft/server/BlockGrass.java
index 0bc7882..bf117bc 100644
index c78a934..2ccc0b8 100644
--- a/src/main/java/net/minecraft/server/BlockGrass.java
+++ b/src/main/java/net/minecraft/server/BlockGrass.java
@@ -37,7 +37,8 @@ public class BlockGrass extends Block {
@@ -32,7 +32,8 @@ public class BlockGrass extends Block {
}
// CraftBukkit end
} else if (world.getLightLevel(i, j + 1, k) >= 9) {
@ -55,12 +54,12 @@ index 0bc7882..bf117bc 100644
int j1 = j + random.nextInt(5) - 3;
int k1 = k + random.nextInt(3) - 1;
diff --git a/src/main/java/net/minecraft/server/BlockMushroom.java b/src/main/java/net/minecraft/server/BlockMushroom.java
index 9647bb2..ffe9778 100644
index aedcf62..6e135a4 100644
--- a/src/main/java/net/minecraft/server/BlockMushroom.java
+++ b/src/main/java/net/minecraft/server/BlockMushroom.java
@@ -24,7 +24,7 @@ public class BlockMushroom extends BlockFlower {
@@ -27,7 +27,7 @@ public class BlockMushroom extends BlockFlower {
public void b(World world, int i, int j, int k, Random random) {
public void a(World world, int i, int j, int k, Random random) {
final int sourceX = i, sourceY = j, sourceZ = k; // CraftBukkit
- if (random.nextInt((int) (world.growthOdds * 100 / world.getWorld().mushroomGrowthModifier * 25)) == 0) { // Spigot
+ if (random.nextInt(Math.max(1, (int) world.growthOdds / world.getWorld().mushroomGrowthModifier * 25)) == 0) { // Spigot
@ -68,10 +67,10 @@ index 9647bb2..ffe9778 100644
int l = 5;
diff --git a/src/main/java/net/minecraft/server/BlockMycel.java b/src/main/java/net/minecraft/server/BlockMycel.java
index afef94d..b7cfa69 100644
index 522d317..fa11d1c 100644
--- a/src/main/java/net/minecraft/server/BlockMycel.java
+++ b/src/main/java/net/minecraft/server/BlockMycel.java
@@ -37,7 +37,8 @@ public class BlockMycel extends Block {
@@ -32,7 +32,8 @@ public class BlockMycel extends Block {
}
// CraftBukkit end
} else if (world.getLightLevel(i, j + 1, k) >= 9) {
@ -82,38 +81,25 @@ index afef94d..b7cfa69 100644
int j1 = j + random.nextInt(5) - 3;
int k1 = k + random.nextInt(3) - 1;
diff --git a/src/main/java/net/minecraft/server/BlockReed.java b/src/main/java/net/minecraft/server/BlockReed.java
index 66ad508..c5a8d8a 100644
index def38e9..50c5200 100644
--- a/src/main/java/net/minecraft/server/BlockReed.java
+++ b/src/main/java/net/minecraft/server/BlockReed.java
@@ -24,7 +24,7 @@ public class BlockReed extends Block {
@@ -23,7 +23,7 @@ public class BlockReed extends Block {
if (l < 3) {
int i1 = world.getData(i, j, k);
- if (i1 >= (byte) range(3, (world.growthOdds * 100 / world.getWorld().sugarGrowthModifier * 15 / 100F) + 0.5F, 15)) { // Spigot
+ if (i1 >= (byte) range(3, (world.growthOdds / world.getWorld().sugarGrowthModifier * 15) + 0.5F, 15)) { // Spigot
org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(world, i, j + 1, k, this.id, 0); // CraftBukkit
world.setData(i, j, k, 0);
world.setData(i, j, k, 0, 4);
} else {
diff --git a/src/main/java/net/minecraft/server/BlockSapling.java b/src/main/java/net/minecraft/server/BlockSapling.java
index e8b0f96..d30fe65 100644
--- a/src/main/java/net/minecraft/server/BlockSapling.java
+++ b/src/main/java/net/minecraft/server/BlockSapling.java
@@ -27,7 +27,7 @@ public class BlockSapling extends BlockFlower {
if (world.getLightLevel(i, j + 1, k) >= 9 && random.nextInt(7) == 0) {
int l = world.getData(i, j, k);
- if (world.getLightLevel(i, j + 1, k) >= 9 && (random.nextInt(Math.max(2, (int) ((world.growthOdds * 100 / world.getWorld().treeGrowthModifier * 7 / 100F) + 0.5F))) == 0)) { // Spigot
+ if (random.nextInt(Math.max(2, (int) ((world.growthOdds / world.getWorld().treeGrowthModifier * 7) + 0.5F))) == 0) { // Spigot
world.setData(i, j, k, l | 8);
} else {
this.grow(world, i, j, k, random, false, null, null); // CraftBukkit - added bonemeal, player and itemstack
diff --git a/src/main/java/net/minecraft/server/BlockStem.java b/src/main/java/net/minecraft/server/BlockStem.java
index dfaf45d..86e7bba 100644
index a945ee4..c17ce36 100644
--- a/src/main/java/net/minecraft/server/BlockStem.java
+++ b/src/main/java/net/minecraft/server/BlockStem.java
@@ -27,7 +27,7 @@ public class BlockStem extends BlockFlower {
if (world.getLightLevel(i, j + 1, k) >= 9) {
float f = this.n(world, i, j, k);
float f = this.m(world, i, j, k);
- if (random.nextInt((int) ((world.growthOdds * 100 / ((this.id == Block.PUMPKIN_STEM.id) ? world.getWorld().pumpkinGrowthModifier : world.getWorld().melonGrowthModifier) / 25.0F) / f) + 1) == 0) { // Spigot
+ if (random.nextInt((int) (world.growthOdds / (this.id == Block.PUMPKIN_STEM.id ? world.getWorld().pumpkinGrowthModifier : world.getWorld().melonGrowthModifier) * (25.0F / f)) + 1) == 0) { // Spigot

View File

@ -1,4 +1,4 @@
From e82bcce15b5b93aaaf2eb09c47f44db1d735ff51 Mon Sep 17 00:00:00 2001
From b27c7c335908980afecc8fcb517c4dc5db2fa2f7 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Sat, 19 Jan 2013 01:11:30 -0500
Subject: [PATCH] Skip entity.move() if we are not moving anywhere.
@ -8,15 +8,15 @@ Subject: [PATCH] Skip entity.move() if we are not moving anywhere.
1 file changed, 1 insertion(+)
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 71707ed..d0a58f8 100644
index b9667a0..0dc65e6 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -423,6 +423,7 @@ public abstract class Entity {
@@ -430,6 +430,7 @@ public abstract class Entity {
}
public void move(double d0, double d1, double d2) {
+ if (d0 == 0 && d1 == 0 && d2 == 0) { return; } // Spigot
if (this.Y) {
if (this.Z) {
this.boundingBox.d(d0, d1, d2);
this.locX = (this.boundingBox.a + this.boundingBox.d) / 2.0D;
--

View File

@ -1,4 +1,4 @@
From 66bf9228164154e0da57d1a8dbabc6837b2da2f8 Mon Sep 17 00:00:00 2001
From c247b6e15e2155da6e60e7993db6f297675d67bb Mon Sep 17 00:00:00 2001
From: Mike Primm <mike@primmhome.com>
Date: Wed, 16 Jan 2013 15:27:22 -0600
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(-)
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index b1dd29e..41f4f31 100644
index d1fe36f..c398268 100644
--- a/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 {
@@ -294,15 +294,13 @@ public abstract class World implements IBlockAccess {
// CraftBukkit start
public Chunk getChunkAt(int i, int j) {

View File

@ -1,4 +1,4 @@
From fa1eeb2d804ba81c94d259d60df735627eae989f Mon Sep 17 00:00:00 2001
From 7d3399651d3d92f03b2b87f3a67c6ab97e52bb72 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sun, 3 Feb 2013 12:28:17 +1100
Subject: [PATCH] Tick loop optimization - sleep for as long as possible.
@ -11,10 +11,10 @@ Subject: [PATCH] Tick loop optimization - sleep for as long as possible.
create mode 100644 src/main/java/org/bukkit/craftbukkit/command/TicksPerSecondCommand.java
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 4bdf8aa..128016f 100644
index d3f3f86..36acefb 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -86,6 +86,12 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
@@ -85,6 +85,12 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
public java.util.Queue<Runnable> processQueue = new java.util.concurrent.ConcurrentLinkedQueue<Runnable>();
public int autosavePeriod;
// CraftBukkit end
@ -26,26 +26,26 @@ index 4bdf8aa..128016f 100644
+ // Spigot end
public MinecraftServer(OptionSet options) { // CraftBukkit - signature file -> OptionSet
l = this;
@@ -397,39 +403,23 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
k = this;
@@ -379,39 +385,23 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
public void run() {
try {
if (this.init()) {
- long i = System.currentTimeMillis();
-
- for (long j = 0L; this.isRunning; this.Q = true) {
- for (long j = 0L; this.isRunning; this.P = true) {
- long k = System.currentTimeMillis();
- long l = k - i;
-
- if (l > 2000L && i - this.R >= 15000L) {
- if (l > 2000L && i - this.Q >= 15000L) {
- if (this.server.getWarnOnOverload()) // CraftBukkit - Added option to suppress warning messages
- log.warning("Can\'t keep up! Did the system time change, or is the server overloaded?");
- this.getLogger().warning("Can\'t keep up! Did the system time change, or is the server overloaded?");
- l = 2000L;
- this.R = i;
- this.Q = i;
- }
-
- if (l < 0L) {
- log.warning("Time ran backwards! Did the system time change?");
- this.getLogger().warning("Time ran backwards! Did the system time change?");
- l = 0L;
- }
-
@ -136,5 +136,5 @@ index 0000000..f114a31
+ }
+}
--
1.8.1.1
1.8.1-rc2

View File

@ -1,4 +1,4 @@
From 37c0d29448613da381e0fafccefd8e1792e2cbfe Mon Sep 17 00:00:00 2001
From ca107d374660de533a321bbe1fb550b097cd1b03 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Thu, 10 Jan 2013 00:18:11 -0500
Subject: [PATCH] Improved Timings System
@ -19,7 +19,7 @@ Tracks nearly every point of minecraft internals and plugin events to give a goo
create mode 100644 src/main/java/org/bukkit/craftbukkit/SpigotTimings.java
diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java
index c0bab0f..5772932 100644
index d5887a9..3772ad8 100644
--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java
@@ -103,6 +103,7 @@ public class ChunkProviderServer implements IChunkProvider {
@ -39,10 +39,10 @@ index c0bab0f..5772932 100644
// CraftBukkit start - If we didn't need to load the chunk run the callback now
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index d0a58f8..bf9108a 100644
index 0dc65e6..c68e9cf 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -15,6 +15,7 @@ import org.bukkit.block.BlockFace;
@@ -14,6 +14,7 @@ import org.bukkit.block.BlockFace;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Painting;
import org.bukkit.entity.Vehicle;
@ -51,7 +51,7 @@ index d0a58f8..bf9108a 100644
import org.bukkit.event.painting.PaintingBreakByEntityEvent;
import org.bukkit.event.vehicle.VehicleBlockCollisionEvent;
@@ -111,6 +112,8 @@ public abstract class Entity {
public UUID uniqueId = UUID.randomUUID(); // CraftBukkit
public EnumEntitySize at;
public boolean valid = false; // CraftBukkit
+ public CustomTimingsHandler tickTimer = org.bukkit.craftbukkit.SpigotTimings.getEntityTimings(this); // Spigot
@ -59,35 +59,35 @@ index d0a58f8..bf9108a 100644
public Entity(World world) {
this.id = entityCount++;
this.l = 1.0D;
@@ -424,6 +427,7 @@ public abstract class Entity {
@@ -431,6 +434,7 @@ public abstract class Entity {
public void move(double d0, double d1, double d2) {
if (d0 == 0 && d1 == 0 && d2 == 0) { return; } // Spigot
+ org.bukkit.craftbukkit.SpigotTimings.entityMoveTimer.startTiming(); // Spigot
if (this.Y) {
if (this.Z) {
this.boundingBox.d(d0, d1, d2);
this.locX = (this.boundingBox.a + this.boundingBox.d) / 2.0D;
@@ -729,6 +733,7 @@ public abstract class Entity {
@@ -730,6 +734,7 @@ public abstract class Entity {
this.world.methodProfiler.b();
}
+ org.bukkit.craftbukkit.SpigotTimings.entityMoveTimer.stopTiming(); // Spigot
}
protected void D() {
protected void C() {
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index 7d2e633..bd1aeaa 100644
index ae180c2..89ce129 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -505,6 +505,7 @@ public abstract class EntityLiving extends Entity {
@@ -512,6 +512,7 @@ public abstract class EntityLiving extends Entity {
}
public void j_() {
public void l_() {
+ org.bukkit.craftbukkit.SpigotTimings.timerEntityBaseTick.startTiming(); // Spigot
super.j_();
super.l_();
if (!this.world.isStatic) {
int i;
@@ -531,7 +532,9 @@ public abstract class EntityLiving extends Entity {
@@ -538,7 +539,9 @@ public abstract class EntityLiving extends Entity {
}
}
@ -97,55 +97,55 @@ index 7d2e633..bd1aeaa 100644
double d0 = this.locX - this.lastX;
double d1 = this.locZ - this.lastZ;
float f = (float) (d0 * d0 + d1 * d1);
@@ -622,6 +625,7 @@ public abstract class EntityLiving extends Entity {
@@ -629,6 +632,7 @@ public abstract class EntityLiving extends Entity {
this.world.methodProfiler.b();
this.aD += f2;
this.aE += f2;
+ org.bukkit.craftbukkit.SpigotTimings.timerEntityTickRest.stopTiming(); // Spigot
}
// CraftBukkit start - delegate so we can handle providing a reason for health being regained
@@ -1228,6 +1232,7 @@ public abstract class EntityLiving extends Entity {
@@ -1264,6 +1268,7 @@ public abstract class EntityLiving extends Entity {
}
public void c() {
+ org.bukkit.craftbukkit.SpigotTimings.timerEntityAI.startTiming(); // Spigot
if (this.bV > 0) {
--this.bV;
if (this.bX > 0) {
--this.bX;
}
@@ -1279,6 +1284,7 @@ public abstract class EntityLiving extends Entity {
this.az = this.yaw;
@@ -1315,6 +1320,7 @@ public abstract class EntityLiving extends Entity {
this.aA = this.yaw;
}
}
+ org.bukkit.craftbukkit.SpigotTimings.timerEntityAI.stopTiming(); // Spigot
this.world.methodProfiler.b();
this.world.methodProfiler.a("jump");
@@ -1297,6 +1303,7 @@ public abstract class EntityLiving extends Entity {
@@ -1333,6 +1339,7 @@ public abstract class EntityLiving extends Entity {
this.world.methodProfiler.b();
this.world.methodProfiler.a("travel");
+ org.bukkit.craftbukkit.SpigotTimings.timerEntityAIMove.startTiming(); // Spigot
this.bC *= 0.98F;
this.bD *= 0.98F;
this.bE *= 0.9F;
@@ -1305,11 +1312,14 @@ public abstract class EntityLiving extends Entity {
this.aN *= this.bB();
this.e(this.bC, this.bD);
this.aN = f;
this.bE *= 0.98F;
this.bF *= 0.9F;
@@ -1341,11 +1348,14 @@ public abstract class EntityLiving extends Entity {
this.aO *= this.bE();
this.e(this.bD, this.bE);
this.aO = f;
+ org.bukkit.craftbukkit.SpigotTimings.timerEntityAIMove.stopTiming(); // Spigot
this.world.methodProfiler.b();
this.world.methodProfiler.a("push");
+ org.bukkit.craftbukkit.SpigotTimings.timerEntityAICollision.startTiming(); // Spigot
if (!this.world.isStatic) {
this.bd();
this.bg();
}
+ org.bukkit.craftbukkit.SpigotTimings.timerEntityAICollision.stopTiming(); // Spigot
this.world.methodProfiler.b();
this.world.methodProfiler.a("looting");
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 128016f..aa6a14a 100644
index 36acefb..e8620d5 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -6,7 +6,6 @@ import java.security.KeyPair;
@ -164,7 +164,7 @@ index 128016f..aa6a14a 100644
import org.bukkit.craftbukkit.util.Waitable;
import org.bukkit.event.server.RemoteServerCommandEvent;
import org.bukkit.event.world.WorldSaveEvent;
@@ -417,7 +417,10 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
@@ -399,7 +399,10 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
currentTPS = (currentTPS * 0.95) + (1E9 / (curTime - lastTick) * 0.05);
lastTick = curTime;
MinecraftServer.currentTick++;
@ -175,7 +175,7 @@ index 128016f..aa6a14a 100644
}
// Spigot end
} else {
@@ -517,6 +520,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
@@ -499,6 +502,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
this.methodProfiler.a("levels");
// CraftBukkit start - only send timeupdates to the people in that world
@ -183,7 +183,7 @@ index 128016f..aa6a14a 100644
this.server.getScheduler().mainThreadHeartbeat(this.ticks);
// Run tasks that are waiting on processing
@@ -524,7 +528,10 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
@@ -506,7 +510,10 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
processQueue.remove().run();
}
@ -194,7 +194,7 @@ index 128016f..aa6a14a 100644
// Send timeupdates to everyone, it will get the right time from the world the player is in.
if (this.ticks % 20 == 0) {
@@ -576,7 +583,9 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
@@ -558,7 +565,9 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
this.methodProfiler.b();
this.methodProfiler.a("tracker");
@ -204,7 +204,7 @@ index 128016f..aa6a14a 100644
this.methodProfiler.b();
this.methodProfiler.b();
// } // CraftBukkit
@@ -585,14 +594,20 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
@@ -567,14 +576,20 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
}
this.methodProfiler.c("connection");
@ -213,23 +213,23 @@ index 128016f..aa6a14a 100644
+ SpigotTimings.connectionTimer.stopTiming(); // Spigot
this.methodProfiler.c("players");
+ SpigotTimings.playerListTimer.startTiming(); // Spigot
this.t.tick();
this.s.tick();
+ SpigotTimings.playerListTimer.stopTiming(); // Spigot
this.methodProfiler.c("tickables");
+ SpigotTimings.tickablesTimer.startTiming(); // Spigot
for (i = 0; i < this.p.size(); ++i) {
((IUpdatePlayerListBox) this.p.get(i)).a();
for (i = 0; i < this.o.size(); ++i) {
((IUpdatePlayerListBox) this.o.get(i)).a();
}
+ SpigotTimings.tickablesTimer.stopTiming(); // Spigot
this.methodProfiler.b();
}
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index 43a24f5..d2c2305 100644
index b3ff786..6fbec1e 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -976,6 +976,7 @@ public class PlayerConnection extends Connection {
@@ -963,6 +963,7 @@ public class PlayerConnection extends Connection {
// CraftBukkit end
private void handleCommand(String s) {
@ -237,7 +237,7 @@ index 43a24f5..d2c2305 100644
// CraftBukkit start
CraftPlayer player = this.getPlayer();
@@ -983,19 +984,23 @@ public class PlayerConnection extends Connection {
@@ -970,19 +971,23 @@ public class PlayerConnection extends Connection {
this.server.getPluginManager().callEvent(event);
if (event.isCancelled()) {
@ -246,14 +246,14 @@ index 43a24f5..d2c2305 100644
}
try {
if (server.logCommands) logger.info(event.getPlayer().getName() + " issued server command: " + event.getMessage()); // Spigot
if (server.logCommands) this.minecraftServer.getLogger().info(event.getPlayer().getName() + " issued server command: " + event.getMessage()); // Spigot
if (this.server.dispatchCommand(event.getPlayer(), event.getMessage().substring(1))) {
+ org.bukkit.craftbukkit.SpigotTimings.playerCommandTimer.stopTiming(); // Spigot
return;
}
} catch (org.bukkit.command.CommandException ex) {
player.sendMessage(org.bukkit.ChatColor.RED + "An internal error occurred while attempting to perform this command");
Logger.getLogger(PlayerConnection.class.getName()).log(Level.SEVERE, null, ex);
java.util.logging.Logger.getLogger(PlayerConnection.class.getName()).log(Level.SEVERE, null, ex);
+ org.bukkit.craftbukkit.SpigotTimings.playerCommandTimer.stopTiming(); // Spigot
return;
}
@ -262,7 +262,7 @@ index 43a24f5..d2c2305 100644
/* CraftBukkit start - No longer needed as we have already handled it in server.dispatchServerCommand above.
diff --git a/src/main/java/net/minecraft/server/TileEntity.java b/src/main/java/net/minecraft/server/TileEntity.java
index d8eb6b9..b6b0d5f 100644
index db3fc42..174546d 100644
--- a/src/main/java/net/minecraft/server/TileEntity.java
+++ b/src/main/java/net/minecraft/server/TileEntity.java
@@ -4,10 +4,12 @@ import java.util.HashMap;
@ -277,9 +277,9 @@ index d8eb6b9..b6b0d5f 100644
+ public CustomTimingsHandler tickTimer = org.bukkit.craftbukkit.SpigotTimings.getTileEntityTimings(this); // Spigot
private static Map a = new HashMap();
private static Map b = new HashMap();
public World world; // CraftBukkit - protected -> public
protected World world;
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 41f4f31..ec1a08f 100644
index c398268..d1be7c3 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -13,6 +13,7 @@ import java.util.concurrent.Callable;
@ -290,7 +290,7 @@ index 41f4f31..ec1a08f 100644
import org.bukkit.craftbukkit.util.UnsafeList;
import org.bukkit.generator.ChunkGenerator;
import org.bukkit.craftbukkit.CraftServer;
@@ -114,6 +115,8 @@ public abstract class World implements IBlockAccess {
@@ -115,6 +116,8 @@ public abstract class World implements IBlockAccess {
final Object chunkLock = new Object();
private byte chunkTickRadius;
@ -299,7 +299,7 @@ index 41f4f31..ec1a08f 100644
public CraftWorld getWorld() {
return this.world;
}
@@ -193,6 +196,7 @@ public abstract class World implements IBlockAccess {
@@ -194,6 +197,7 @@ public abstract class World implements IBlockAccess {
this.a();
this.getServer().addWorld(this.world); // CraftBukkit
@ -307,7 +307,7 @@ index 41f4f31..ec1a08f 100644
}
protected abstract IChunkProvider j();
@@ -1259,6 +1263,7 @@ public abstract class World implements IBlockAccess {
@@ -1293,6 +1297,7 @@ public abstract class World implements IBlockAccess {
this.f.clear();
this.methodProfiler.c("regular");
@ -315,7 +315,7 @@ index 41f4f31..ec1a08f 100644
for (i = 0; i < this.entityList.size(); ++i) {
entity = (Entity) this.entityList.get(i);
@@ -1281,7 +1286,9 @@ public abstract class World implements IBlockAccess {
@@ -1315,7 +1320,9 @@ public abstract class World implements IBlockAccess {
this.methodProfiler.a("tick");
if (!entity.dead) {
try {
@ -325,38 +325,38 @@ index 41f4f31..ec1a08f 100644
} catch (Throwable throwable1) {
crashreport = CrashReport.a(throwable1, "Ticking entity");
crashreportsystemdetails = crashreport.a("Entity being ticked");
@@ -1311,7 +1318,9 @@ public abstract class World implements IBlockAccess {
@@ -1340,7 +1347,9 @@ public abstract class World implements IBlockAccess {
this.methodProfiler.b();
}
+ timings.entityTick.stopTiming(); // Spigot
this.methodProfiler.c("tileEntities");
+ timings.tileEntityTick.startTiming(); // Spigot
this.M = true;
this.N = true;
Iterator iterator = this.tileEntityList.iterator();
@@ -1326,8 +1335,11 @@ public abstract class World implements IBlockAccess {
@@ -1355,8 +1364,11 @@ public abstract class World implements IBlockAccess {
if (!tileentity.r() && tileentity.o() && this.isLoaded(tileentity.x, tileentity.y, tileentity.z)) {
try {
+ tileentity.tickTimer.startTiming(); // Spigot
tileentity.g();
tileentity.h();
+ tileentity.tickTimer.stopTiming(); // Spigot
} catch (Throwable throwable2) {
+ tileentity.tickTimer.stopTiming(); // Spigot
crashreport = CrashReport.a(throwable2, "Ticking tile entity");
crashreportsystemdetails = crashreport.a("Tile entity being ticked");
if (tileentity == null) {
@@ -1352,6 +1364,8 @@ public abstract class World implements IBlockAccess {
tileentity.a(crashreportsystemdetails);
@@ -1376,6 +1388,8 @@ public abstract class World implements IBlockAccess {
}
}
+ timings.tileEntityTick.stopTiming(); // Spigot
+ timings.tileEntityPending.startTiming(); // Spigot
this.M = false;
this.N = false;
if (!this.b.isEmpty()) {
this.tileEntityList.removeAll(this.b);
@@ -1390,6 +1404,7 @@ public abstract class World implements IBlockAccess {
@@ -1414,6 +1428,7 @@ public abstract class World implements IBlockAccess {
this.a.clear();
}
@ -364,15 +364,15 @@ index 41f4f31..ec1a08f 100644
this.methodProfiler.b();
this.methodProfiler.b();
}
@@ -1412,6 +1427,7 @@ public abstract class World implements IBlockAccess {
@@ -1436,6 +1451,7 @@ public abstract class World implements IBlockAccess {
byte b0 = 32;
if (!flag || this.d(i - b0, 0, j - b0, i + b0, 0, j + b0)) {
if (!flag || this.e(i - b0, 0, j - b0, i + b0, 0, j + b0)) {
+ entity.tickTimer.startTiming(); // Spigot
entity.T = entity.locX;
entity.U = entity.locY;
entity.V = entity.locZ;
@@ -1473,6 +1489,7 @@ public abstract class World implements IBlockAccess {
entity.U = entity.locX;
entity.V = entity.locY;
entity.W = entity.locZ;
@@ -1497,6 +1513,7 @@ public abstract class World implements IBlockAccess {
entity.passenger = null;
}
}
@ -381,10 +381,10 @@ index 41f4f31..ec1a08f 100644
}
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 4aa2a19..6cb3e24 100644
index 2407bc6..6ade608 100644
--- a/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
@@ -168,9 +168,12 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
// CraftBukkit start - Only call spawner if we have players online and the world allows for mobs or animals
long time = this.worldData.getTime();
if (this.getGameRules().getBoolean("doMobSpawning") && (this.allowMonsters || this.allowAnimals) && (this instanceof WorldServer && this.players.size() > 0)) {
@ -397,8 +397,8 @@ index 4aa2a19..6cb3e24 100644
this.methodProfiler.c("chunkSource");
this.chunkProvider.unloadChunks();
int j = this.a(1.0F);
@@ -186,6 +189,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
this.V();
@@ -196,6 +199,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
this.Y();
this.getWorld().processChunkGC(); // CraftBukkit
+ timings.doTickRest.stopTiming(); // Spigot

View File

@ -1,4 +1,4 @@
From a21753931b6180bc32da505ed261fce5ea0461c9 Mon Sep 17 00:00:00 2001
From 8379b6c5ada2d27070c6dc223accf351f190a3a6 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Fri, 25 Jan 2013 18:24:54 +1100
Subject: [PATCH] Better + more flexible itemstack merging
@ -9,7 +9,7 @@ Subject: [PATCH] Better + more flexible itemstack merging
2 files changed, 11 insertions(+), 33 deletions(-)
diff --git a/src/main/java/net/minecraft/server/EntityItem.java b/src/main/java/net/minecraft/server/EntityItem.java
index a7baa0f..5e3ac84 100644
index aa8d83f..bc69f5d 100644
--- a/src/main/java/net/minecraft/server/EntityItem.java
+++ b/src/main/java/net/minecraft/server/EntityItem.java
@@ -114,7 +114,8 @@ public class EntityItem extends Entity {
@ -40,10 +40,10 @@ index a7baa0f..5e3ac84 100644
}
} else {
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index ec1a08f..2fe9b1d 100644
index d1be7c3..5cf6bc6 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -924,31 +924,8 @@ public abstract class World implements IBlockAccess {
@@ -948,31 +948,8 @@ public abstract class World implements IBlockAccess {
event = CraftEventFactory.callCreatureSpawnEvent((EntityLiving) entity, spawnReason);
} else if (entity instanceof EntityItem) {
event = CraftEventFactory.callItemSpawnEvent((EntityItem) entity);
@ -77,7 +77,7 @@ index ec1a08f..2fe9b1d 100644
EntityExperienceOrb xp = (EntityExperienceOrb) entity;
double radius = this.getWorld().expMergeRadius;
if (radius > 0) {
@@ -963,8 +940,8 @@ public abstract class World implements IBlockAccess {
@@ -987,8 +964,8 @@ public abstract class World implements IBlockAccess {
}
}
}
@ -89,5 +89,5 @@ index ec1a08f..2fe9b1d 100644
event = CraftEventFactory.callProjectileLaunchEvent(entity);
}
--
1.8.1.1
1.8.1-rc2

View File

@ -1,4 +1,4 @@
From 57dc2265b21dba57997f39f0ba07f6ca8a1fff5d Mon Sep 17 00:00:00 2001
From fc7910a8c0bf1545518682ad89e434bfe09e594e Mon Sep 17 00:00:00 2001
From: lishid <lishid@gmail.com>
Date: Sat, 16 Feb 2013 10:05:25 +1100
Subject: [PATCH] Add oreobfuscator for Spigot.
@ -18,19 +18,19 @@ Subject: [PATCH] Add oreobfuscator for Spigot.
create mode 100644 src/main/java/org/bukkit/craftbukkit/OrebfuscatorManager.java
diff --git a/src/main/java/net/minecraft/server/EntityFallingBlock.java b/src/main/java/net/minecraft/server/EntityFallingBlock.java
index ea440dc..e86b10f 100644
index 96120d8..0707d23 100644
--- a/src/main/java/net/minecraft/server/EntityFallingBlock.java
+++ b/src/main/java/net/minecraft/server/EntityFallingBlock.java
@@ -103,6 +103,7 @@ public class EntityFallingBlock extends Entity {
// CraftBukkit end
@@ -94,6 +94,7 @@ public class EntityFallingBlock extends Entity {
}
this.world.setTypeId(i, j, k, 0);
this.world.setAir(i, j, k);
+ org.bukkit.craftbukkit.OrebfuscatorManager.updateNearbyBlocks(world, i, j, k); // Spigot (Orebfuscator)
}
if (this.onGround) {
diff --git a/src/main/java/net/minecraft/server/Explosion.java b/src/main/java/net/minecraft/server/Explosion.java
index ba2f88f..8d5b1d8 100644
index aa3ae58..2d0aaa3 100644
--- a/src/main/java/net/minecraft/server/Explosion.java
+++ b/src/main/java/net/minecraft/server/Explosion.java
@@ -240,6 +240,7 @@ public class Explosion {
@ -107,7 +107,7 @@ index 867ebd3..9d5cee7 100644
deflater.reset();
deflater.setInput(this.buildBuffer);
diff --git a/src/main/java/net/minecraft/server/PlayerInteractManager.java b/src/main/java/net/minecraft/server/PlayerInteractManager.java
index 5faee12..55f9ffa 100644
index 92e68be..62df1a3 100644
--- a/src/main/java/net/minecraft/server/PlayerInteractManager.java
+++ b/src/main/java/net/minecraft/server/PlayerInteractManager.java
@@ -291,6 +291,11 @@ public class PlayerInteractManager {
@ -123,7 +123,7 @@ index 5faee12..55f9ffa 100644
if (false) { // Never trigger
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 257497e..1a3cc03 100644
index 8f65601..16460b6 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -163,6 +163,12 @@ public final class CraftServer implements Server {
@ -140,7 +140,7 @@ index 257497e..1a3cc03 100644
private boolean value = true;
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 94e07fe..21bd64a 100644
index 359f065..449f3e1 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -119,6 +119,8 @@ public class CraftWorld implements World {
@ -354,5 +354,5 @@ index 0c92b66..78e9a66 100644
+ disabled-worlds:
+ - world_the_end
--
1.8.1.1
1.8.1-rc2

View File

@ -1,4 +1,4 @@
From a9525c7ac96f2692c584fcbd9c6469271e226364 Mon Sep 17 00:00:00 2001
From 5cf1d81fb59b7d6941a6b5e502dcbcb7211fb32f Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Fri, 18 Jan 2013 19:31:14 -0500
Subject: [PATCH] Reduce number of LivingEntity collision checks.
@ -8,13 +8,13 @@ Subject: [PATCH] Reduce number of LivingEntity collision checks.
1 file changed, 8 insertions(+)
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index bd1aeaa..01b16ac 100644
index 89ce129..86a0b6d 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -1391,12 +1391,20 @@ public abstract class EntityLiving extends Entity {
@@ -1427,12 +1427,20 @@ public abstract class EntityLiving extends Entity {
}
protected void bd() {
protected void bg() {
+ // Spigot start
+ boolean skip = false;
+ if (!(this instanceof EntityPlayer) && this.ticksLived % 2 != 0) {
@ -29,9 +29,9 @@ index bd1aeaa..01b16ac 100644
Entity entity = (Entity) list.get(i);
+ if (entity instanceof EntityLiving && skip) { continue; } // Spigot
if (entity.M()) {
if (entity.L()) {
this.o(entity);
}
--
1.8.1.1
1.8.1-rc2

View File

@ -1,4 +1,4 @@
From 0699ed06c2f350269703b4f2c62a268c80e1d9d2 Mon Sep 17 00:00:00 2001
From 2d146ed5859c06f1b74d68a256a9b2a72d7445a5 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Tue, 29 Jan 2013 13:25:53 -0500
Subject: [PATCH] Only count entities in chunks being processed for the spawn
@ -9,7 +9,7 @@ Subject: [PATCH] Only count entities in chunks being processed for the spawn
1 file changed, 43 insertions(+), 3 deletions(-)
diff --git a/src/main/java/net/minecraft/server/SpawnerCreature.java b/src/main/java/net/minecraft/server/SpawnerCreature.java
index 9b3e262..2173af7 100644
index 2d1a372..de8f065 100644
--- a/src/main/java/net/minecraft/server/SpawnerCreature.java
+++ b/src/main/java/net/minecraft/server/SpawnerCreature.java
@@ -16,6 +16,7 @@ public final class SpawnerCreature {
@ -101,9 +101,9 @@ index 9b3e262..2173af7 100644
+ continue label110;
+ }
+ // Spigot end
if (j2 >= entityliving.bv()) {
if (j2 >= entityliving.by()) {
continue label110;
}
--
1.8.1.1
1.8.1-rc2

View File

@ -1,4 +1,4 @@
From 14f2f48d062b71bdd20a50cb8bbd3a7a8a0d3621 Mon Sep 17 00:00:00 2001
From 8aef49550dffe98eab42122dda445d090f7770cb Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Tue, 19 Feb 2013 17:26:20 -0500
Subject: [PATCH] Only send maps in item frames upon tracking
@ -15,7 +15,7 @@ This means cursors will not dynamically update, but the map data should refresh
1 file changed, 19 insertions(+), 6 deletions(-)
diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java
index a026c4c..75c146d 100644
index 4948f23..45e469a 100644
--- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java
+++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java
@@ -36,6 +36,7 @@ public class EntityTrackerEntry {
@ -58,7 +58,7 @@ index a026c4c..75c146d 100644
}
}
}
@@ -329,6 +330,17 @@ public class EntityTrackerEntry {
@@ -330,6 +331,17 @@ public class EntityTrackerEntry {
}
}
@ -76,7 +76,7 @@ index a026c4c..75c146d 100644
if (this.tracker instanceof EntityHuman) {
EntityHuman entityhuman = (EntityHuman) this.tracker;
@@ -355,6 +367,7 @@ public class EntityTrackerEntry {
@@ -356,6 +368,7 @@ public class EntityTrackerEntry {
}
} else if (this.trackedPlayers.contains(entityplayer)) {
this.trackedPlayers.remove(entityplayer);
@ -85,5 +85,5 @@ index a026c4c..75c146d 100644
}
}
--
1.8.1.1
1.8.1-rc2

View File

@ -1,4 +1,4 @@
From 5f8e123bf8262bf21389a5cac3396188c7097463 Mon Sep 17 00:00:00 2001
From df7aaaaa25ae229a755ffadd32308cab505e3313 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sun, 3 Feb 2013 09:20:19 +1100
Subject: [PATCH] Detect, remove and warn about null tile entities.
@ -8,10 +8,10 @@ Subject: [PATCH] Detect, remove and warn about null tile entities.
1 file changed, 7 insertions(+)
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 2fe9b1d..4fc1233 100644
index 5cf6bc6..4b6c910 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -1303,6 +1303,13 @@ public abstract class World implements IBlockAccess {
@@ -1332,6 +1332,13 @@ public abstract class World implements IBlockAccess {
while (iterator.hasNext()) {
TileEntity tileentity = (TileEntity) iterator.next();
@ -26,5 +26,5 @@ index 2fe9b1d..4fc1233 100644
ChunkProviderServer chunkProviderServer = ((WorldServer) this).chunkProviderServer;
if (chunkProviderServer.unloadQueue.contains(tileentity.x >> 4, tileentity.z >> 4)) {
--
1.8.1.1
1.8.1-rc2

View File

@ -1,4 +1,4 @@
From 4fb653cd3f94ac7bbd2e0815c89de285db157a09 Mon Sep 17 00:00:00 2001
From d9054dc5ea2715c2eb9065ad6ef3ceb47446039c Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Sun, 3 Feb 2013 05:10:21 -0500
Subject: [PATCH] Entity Activation Range
@ -11,28 +11,28 @@ This change can have dramatic impact on gameplay if configured too low. Balance
src/main/java/net/minecraft/server/Entity.java | 13 +-
.../java/net/minecraft/server/EntityArrow.java | 2 +-
src/main/java/net/minecraft/server/EntityItem.java | 5 +-
src/main/java/net/minecraft/server/World.java | 14 +-
src/main/java/net/minecraft/server/World.java | 10 +-
.../java/org/bukkit/craftbukkit/CraftWorld.java | 15 +-
src/main/java/org/bukkit/craftbukkit/Spigot.java | 219 +++++++++++++++++++++
.../java/org/bukkit/craftbukkit/SpigotTimings.java | 3 +
src/main/resources/configurations/bukkit.yml | 3 +
8 files changed, 263 insertions(+), 11 deletions(-)
8 files changed, 263 insertions(+), 7 deletions(-)
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index bf9108a..8cbe086 100644
index c68e9cf..9e5ce4b 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -89,7 +89,7 @@ public abstract class Entity {
public int ticksLived;
public int maxFireTicks;
public int fireTicks; // CraftBukkit - private -> public
- protected boolean ad;
+ public boolean ad; // Spigot - private -> public isInWater - If this renames, update Spigot.checkEntityImmunities
- protected boolean ae;
+ public boolean ae; // Spigot - private -> public isInWater - If this renames, update Spigot.checkEntityImmunities
public int noDamageTicks;
private boolean justCreated;
protected boolean fireProof;
@@ -112,8 +112,14 @@ public abstract class Entity {
public UUID uniqueId = UUID.randomUUID(); // CraftBukkit
public EnumEntitySize at;
public boolean valid = false; // CraftBukkit
+ // Spigot start
@ -46,7 +46,7 @@ index bf9108a..8cbe086 100644
public Entity(World world) {
this.id = entityCount++;
this.l = 1.0D;
@@ -153,7 +159,12 @@ public abstract class Entity {
@@ -154,7 +160,12 @@ public abstract class Entity {
this.setPosition(0.0D, 0.0D, 0.0D);
if (world != null) {
this.dimension = world.worldProvider.dimension;
@ -60,7 +60,7 @@ index bf9108a..8cbe086 100644
this.datawatcher.a(0, Byte.valueOf((byte) 0));
this.datawatcher.a(1, Short.valueOf((short) 300));
diff --git a/src/main/java/net/minecraft/server/EntityArrow.java b/src/main/java/net/minecraft/server/EntityArrow.java
index 916b9dc..bdd18f6 100644
index 4b47364..647b91f 100644
--- a/src/main/java/net/minecraft/server/EntityArrow.java
+++ b/src/main/java/net/minecraft/server/EntityArrow.java
@@ -16,7 +16,7 @@ public class EntityArrow extends Entity implements IProjectile {
@ -73,7 +73,7 @@ index 916b9dc..bdd18f6 100644
public int shake = 0;
public Entity shooter;
diff --git a/src/main/java/net/minecraft/server/EntityItem.java b/src/main/java/net/minecraft/server/EntityItem.java
index 5e3ac84..fdfd763 100644
index bc69f5d..430dd79 100644
--- a/src/main/java/net/minecraft/server/EntityItem.java
+++ b/src/main/java/net/minecraft/server/EntityItem.java
@@ -100,8 +100,9 @@ public class EntityItem extends Entity {
@ -89,7 +89,7 @@ index 5e3ac84..fdfd763 100644
// CraftBukkit start
if (org.bukkit.craftbukkit.event.CraftEventFactory.callItemDespawnEvent(this).isCancelled()) {
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 4fc1233..7d2bad3 100644
index 4b6c910..417189e 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -13,6 +13,7 @@ import java.util.concurrent.Callable;
@ -100,7 +100,7 @@ index 4fc1233..7d2bad3 100644
import org.bukkit.craftbukkit.SpigotTimings; // Spigot
import org.bukkit.craftbukkit.util.UnsafeList;
import org.bukkit.generator.ChunkGenerator;
@@ -1240,6 +1241,7 @@ public abstract class World implements IBlockAccess {
@@ -1274,6 +1275,7 @@ public abstract class World implements IBlockAccess {
this.f.clear();
this.methodProfiler.c("regular");
@ -108,15 +108,11 @@ index 4fc1233..7d2bad3 100644
timings.entityTick.startTiming(); // Spigot
for (i = 0; i < this.entityList.size(); ++i) {
entity = (Entity) this.entityList.get(i);
@@ -1406,12 +1408,12 @@ public abstract class World implements IBlockAccess {
}
@@ -1434,8 +1436,12 @@ public abstract class World implements IBlockAccess {
int j = MathHelper.floor(entity.locZ);
byte b0 = 32;
public void entityJoinedWorld(Entity entity, boolean flag) {
- int i = MathHelper.floor(entity.locX);
- int j = MathHelper.floor(entity.locZ);
- byte b0 = 32;
-
- if (!flag || this.d(i - b0, 0, j - b0, i + b0, 0, j + b0)) {
- if (!flag || this.e(i - b0, 0, j - b0, i + b0, 0, j + b0)) {
- entity.tickTimer.startTiming(); // Spigot
+ // Spigot start
+ if (!Spigot.checkIfActive(entity)) {
@ -124,11 +120,11 @@ index 4fc1233..7d2bad3 100644
+ } else {
+ entity.tickTimer.startTiming();
+ // Spigot end
entity.T = entity.locX;
entity.U = entity.locY;
entity.V = entity.locZ;
entity.U = entity.locX;
entity.V = entity.locY;
entity.W = entity.locZ;
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 21bd64a..33df602 100644
index 449f3e1..25c462e 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -100,10 +100,14 @@ public class CraftWorld implements World {

View File

@ -1,4 +1,4 @@
From f20cebf078418f0f42373e94481592ee15608692 Mon Sep 17 00:00:00 2001
From 597aeb82a73eed6c5c6af591427a7773fb707bf0 Mon Sep 17 00:00:00 2001
From: Mike Primm <mike@primmhome.com>
Date: Wed, 20 Feb 2013 23:07:53 -0500
Subject: [PATCH] Optimize getTileEntities performance
@ -9,10 +9,10 @@ Avoid traversing tile entities for every loaded chunk
1 file changed, 12 insertions(+), 9 deletions(-)
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 6cb3e24..8f0050a 100644
index 6ade608..d399e7b 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -616,17 +616,20 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
@@ -663,17 +663,20 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
public List getTileEntities(int i, int j, int k, int l, int i1, int j1) {
ArrayList arraylist = new ArrayList();

View File

@ -1,4 +1,4 @@
From 2ee6a39216c5b2913d0ed585230afe36238960ff Mon Sep 17 00:00:00 2001
From 2d728b9be20e44900ccb1854bcebaafc2af49a48 Mon Sep 17 00:00:00 2001
From: shakytom <tom.roberts00@gmail.com>
Date: Wed, 20 Feb 2013 22:34:38 -0500
Subject: [PATCH] Improved tile entity lookup for chunk sending
@ -10,10 +10,10 @@ This results in a good reduction of time spent in player ticking.
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
index 8d61ca6..28f462b 100644
index 52fd561..b3c7790 100644
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -163,8 +163,9 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
@@ -172,8 +172,9 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
iterator1.remove();
if (chunkcoordintpair != null && this.world.isLoaded(chunkcoordintpair.x << 4, 0, chunkcoordintpair.z << 4)) {

View File

@ -1,4 +1,4 @@
From 8c47249526c029b0fd635fe1dc4402143b0b6eb3 Mon Sep 17 00:00:00 2001
From 76c7a62e5fdd044a952baf0d6fd53dc7b6cd5515 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sat, 23 Feb 2013 12:33:20 +1100
Subject: [PATCH] Watchdog Thread.
@ -14,10 +14,10 @@ Subject: [PATCH] Watchdog Thread.
create mode 100644 src/main/java/org/spigotmc/WatchdogThread.java
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index aa6a14a..6005fac 100644
index e8620d5..6d8b89a 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -421,6 +421,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
@@ -403,6 +403,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
this.q();
SpigotTimings.serverTickTimer.stopTiming();
org.bukkit.CustomTimingsHandler.tick();
@ -25,7 +25,7 @@ index aa6a14a..6005fac 100644
}
// Spigot end
} else {
@@ -448,6 +449,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
@@ -430,6 +431,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
this.a(crashreport);
} finally {
try {

View File

@ -1,4 +1,4 @@
From a6b6583baf41c2a3043bae060eca88e7f6faf22d Mon Sep 17 00:00:00 2001
From 5bb73d19023fdf238e475dfe5d97c91b9373a1f3 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Thu, 14 Feb 2013 17:32:20 +1100
Subject: [PATCH] Netty
@ -36,7 +36,7 @@ Subject: [PATCH] Netty
.../java/net/minecraft/server/INetworkManager.java | 24 ++
.../net/minecraft/server/Packet51MapChunk.java | 2 +-
.../net/minecraft/server/Packet56MapChunkBulk.java | 2 +-
.../net/minecraft/server/PendingConnection.java | 11 +-
.../net/minecraft/server/PendingConnection.java | 9 +-
.../net/minecraft/server/ThreadCommandReader.java | 1 +
.../net/minecraft/server/ThreadLoginVerifier.java | 1 +
.../craftbukkit/scheduler/CraftScheduler.java | 2 +-
@ -48,7 +48,7 @@ Subject: [PATCH] Netty
.../java/org/spigotmc/netty/PacketEncoder.java | 43 ++++
.../java/org/spigotmc/netty/PacketListener.java | 100 +++++++++
src/main/java/org/spigotmc/netty/ReadState.java | 16 ++
17 files changed, 924 insertions(+), 8 deletions(-)
17 files changed, 923 insertions(+), 7 deletions(-)
create mode 100644 src/main/java/net/minecraft/server/INetworkManager.java
create mode 100644 src/main/java/org/spigotmc/netty/CipherCodec.java
create mode 100644 src/main/java/org/spigotmc/netty/NettyNetworkManager.java
@ -60,7 +60,7 @@ Subject: [PATCH] Netty
create mode 100644 src/main/java/org/spigotmc/netty/ReadState.java
diff --git a/pom.xml b/pom.xml
index f17bd19..8efab09 100644
index e04acf9..0f9e86a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -132,6 +132,11 @@
@ -76,20 +76,20 @@ index f17bd19..8efab09 100644
<!-- This builds a completely 'ready to start' jar with all dependencies inside -->
diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java
index bd0377a..73cb5b1 100644
index f985c05..70d05a6 100644
--- a/src/main/java/net/minecraft/server/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/DedicatedServer.java
@@ -32,7 +32,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
public DedicatedServer(joptsimple.OptionSet options) {
@@ -34,7 +34,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
super(options);
// CraftBukkit end
this.l = new ConsoleLogManager("Minecraft-Server", (String) null, (String) null); // CraftBukkit - null last argument
- new ThreadSleepForever(this);
+ // new ThreadSleepForever(this); // Spigot
}
protected boolean init() throws java.net.UnknownHostException { // CraftBukkit - throws UnknownHostException
@@ -93,7 +93,11 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
log.info("Starting Minecraft server on " + (this.getServerIp().length() == 0 ? "*" : this.getServerIp()) + ":" + this.G());
@@ -94,7 +94,11 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
this.getLogger().info("Starting Minecraft server on " + (this.getServerIp().length() == 0 ? "*" : this.getServerIp()) + ":" + this.G());
try {
- this.r = new DedicatedServerConnection(this, inetaddress, this.G());
@ -99,8 +99,8 @@ index bd0377a..73cb5b1 100644
+ : new DedicatedServerConnection(this, inetaddress, this.G());
+ // Spigot end
} catch (Throwable ioexception) { // CraftBukkit - IOException -> Throwable
log.warning("**** FAILED TO BIND TO PORT!");
log.log(Level.WARNING, "The exception was: " + ioexception.toString());
this.getLogger().warning("**** FAILED TO BIND TO PORT!");
this.getLogger().warning("The exception was: {0}", new Object[] { ioexception.toString()});
diff --git a/src/main/java/net/minecraft/server/INetworkManager.java b/src/main/java/net/minecraft/server/INetworkManager.java
new file mode 100644
index 0000000..ff3daae
@ -158,20 +158,11 @@ index 9d5cee7..8486d82 100644
};
// CraftBukkit end
diff --git a/src/main/java/net/minecraft/server/PendingConnection.java b/src/main/java/net/minecraft/server/PendingConnection.java
index 8413a15..cdd456f 100644
index 5f4bcf2..7b015d7 100644
--- a/src/main/java/net/minecraft/server/PendingConnection.java
+++ b/src/main/java/net/minecraft/server/PendingConnection.java
@@ -17,7 +17,7 @@ public class PendingConnection extends Connection {
private byte[] d;
public static Logger logger = Logger.getLogger("Minecraft");
private static Random random = new Random();
- public NetworkManager networkManager;
+ public INetworkManager networkManager;
public boolean c = false;
private MinecraftServer server;
private int g = 0;
@@ -28,10 +28,15 @@ public class PendingConnection extends Connection {
private SecretKey l = null;
@@ -27,10 +27,15 @@ public class PendingConnection extends Connection {
private SecretKey k = null;
public String hostname = ""; // CraftBukkit - add field
+ public PendingConnection(MinecraftServer minecraftserver, org.spigotmc.netty.NettyNetworkManager networkManager) {
@ -181,23 +172,23 @@ index 8413a15..cdd456f 100644
+
public PendingConnection(MinecraftServer minecraftserver, Socket socket, String s) throws java.io.IOException { // CraftBukkit - throws IOException
this.server = minecraftserver;
this.networkManager = new NetworkManager(socket, s, this, minecraftserver.F().getPrivate());
this.networkManager = new NetworkManager(minecraftserver.getLogger(), socket, s, this, minecraftserver.F().getPrivate());
- this.networkManager.e = 0;
+ // this.networkManager.e = 0;
}
// CraftBukkit start
@@ -147,7 +152,7 @@ public class PendingConnection extends Connection {
@@ -146,7 +151,7 @@ public class PendingConnection extends Connection {
// CraftBukkit
org.bukkit.event.server.ServerListPingEvent pingEvent = org.bukkit.craftbukkit.event.CraftEventFactory.callServerListPingEvent(this.server.server, getSocket().getInetAddress(), this.server.getMotd(), playerlist.getPlayerCount(), playerlist.getMaxPlayers());
- if (packet254getinfo.a == 1) {
+ if (true) {
// CraftBukkit start - fix decompile issues, don't create a list from an array
Object[] list = new Object[] { 1, 51, this.server.getVersion(), pingEvent.getMotd(), playerlist.getPlayerCount(), pingEvent.getMaxPlayers() };
Object[] list = new Object[] { 1, 60, this.server.getVersion(), pingEvent.getMotd(), playerlist.getPlayerCount(), pingEvent.getMaxPlayers() };
diff --git a/src/main/java/net/minecraft/server/ThreadCommandReader.java b/src/main/java/net/minecraft/server/ThreadCommandReader.java
index 64eaa4c..fbf6fe6 100644
index 489e184..9533b6f 100644
--- a/src/main/java/net/minecraft/server/ThreadCommandReader.java
+++ b/src/main/java/net/minecraft/server/ThreadCommandReader.java
@@ -11,6 +11,7 @@ class ThreadCommandReader extends Thread {

View File

@ -1,4 +1,4 @@
From e92e872b2cb6bc659372997d6e08cd3489a78162 Mon Sep 17 00:00:00 2001
From 52d22a6258d9e5ccab14e70b6fb8470fb1a5a7a9 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Sun, 24 Feb 2013 20:45:20 +1100
Subject: [PATCH] Enable Improved ping sending
@ -10,10 +10,10 @@ Subject: [PATCH] Enable Improved ping sending
3 files changed, 18 insertions(+)
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
index 28f462b..933a2e7 100644
index b3c7790..2a77c2f 100644
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -48,6 +48,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
@@ -50,6 +50,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
public int newLevel = 0;
public int newTotalExp = 0;
public boolean keepLevel = false;
@ -22,10 +22,10 @@ index 28f462b..933a2e7 100644
public EntityPlayer(MinecraftServer minecraftserver, World world, String s, PlayerInteractManager playerinteractmanager) {
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
index d13fa19..6c19ad7 100644
index 224c57f..ddb2f07 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
@@ -662,7 +662,23 @@ public abstract class PlayerList {
@@ -713,7 +713,23 @@ public abstract class PlayerList {
this.sendAll(new Packet201PlayerInfo(entityplayer.name, true, entityplayer.ping));
}
// CraftBukkit end */

View File

@ -1,4 +1,4 @@
From 01db0ede45b595ea3713690c2f9fb91a337f4b95 Mon Sep 17 00:00:00 2001
From 560f69f4f3f38b65081816affd24e7976ca8e0b8 Mon Sep 17 00:00:00 2001
From: EdGruberman <ed@rjump.com>
Date: Tue, 12 Feb 2013 16:17:31 -0700
Subject: [PATCH] Remove dependency on CraftPlayer.getBedSpawnLocation; Fixes
@ -9,10 +9,10 @@ Subject: [PATCH] Remove dependency on CraftPlayer.getBedSpawnLocation; Fixes
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
index 6c19ad7..5743822 100644
index ddb2f07..a2510a0 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
@@ -439,8 +439,15 @@ public abstract class PlayerList {
@@ -490,8 +490,15 @@ public abstract class PlayerList {
boolean useTravelAgent = false; // don't use agent for custom worlds or return from THE_END
if (exitWorld != null) {
if ((cause == TeleportCause.END_PORTAL) && (i == 0)) {

View File

@ -1,4 +1,4 @@
From b8bb51ff362c990ef9cd991a5656cf823cbf2044 Mon Sep 17 00:00:00 2001
From bcb3872477f8ef9805fa7844d4ae7b877cd26af2 Mon Sep 17 00:00:00 2001
From: Yariv Livay <yarivlivay@gmail.com>
Date: Mon, 25 Feb 2013 22:26:36 +0200
Subject: [PATCH] Adds BUKKIT-3667, Faux sleepers wake up normally
@ -8,10 +8,10 @@ Subject: [PATCH] Adds BUKKIT-3667, Faux sleepers wake up normally
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
index 933a2e7..fc06e62 100644
index 2a77c2f..eae753d 100644
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -381,7 +381,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
@@ -422,7 +422,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
}
public void a(boolean flag, boolean flag1, boolean flag2) {
@ -19,7 +19,7 @@ index 933a2e7..fc06e62 100644
+ if (!this.sleeping) return; // CraftBukkit - Can't leave bed if not in one!
if (this.isSleeping()) {
this.p().getTracker().sendPacketToEntity(this, new Packet18ArmAnimation(this, 3));
this.o().getTracker().sendPacketToEntity(this, new Packet18ArmAnimation(this, 3));
--
1.8.1-rc2

View File

@ -1,4 +1,4 @@
From 2be562a064fd9341e1cfb8b298b5f77d66e9ce07 Mon Sep 17 00:00:00 2001
From b6475416c1cf91bdb1990435118c935f2c1363f9 Mon Sep 17 00:00:00 2001
From: Yariv Livay <yarivlivay@gmail.com>
Date: Tue, 26 Feb 2013 20:14:34 +0200
Subject: [PATCH] BUKKIT-3668 Fix wrong block in BlockDispenseEvent when
@ -9,10 +9,10 @@ Subject: [PATCH] BUKKIT-3668 Fix wrong block in BlockDispenseEvent when
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/java/net/minecraft/server/DispenseBehaviorEmptyBucket.java b/src/main/java/net/minecraft/server/DispenseBehaviorEmptyBucket.java
index b381e22..0df0669 100644
index 8f7e09b..ae65526 100644
--- a/src/main/java/net/minecraft/server/DispenseBehaviorEmptyBucket.java
+++ b/src/main/java/net/minecraft/server/DispenseBehaviorEmptyBucket.java
@@ -37,7 +37,7 @@ public class DispenseBehaviorEmptyBucket extends DispenseBehaviorItem {
@@ -32,7 +32,7 @@ final class DispenseBehaviorEmptyBucket extends DispenseBehaviorItem {
}
// CraftBukkit start

View File

@ -1,4 +1,4 @@
From ac384dd63995c6eb516756b2b0c0b93712038c84 Mon Sep 17 00:00:00 2001
From 8503226f492fd2dfcff2fd1cbc9b737c71c05fd0 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Mon, 4 Mar 2013 18:45:52 +1100
Subject: [PATCH] PlayerItemDamageEvent
@ -8,10 +8,10 @@ Subject: [PATCH] PlayerItemDamageEvent
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/src/main/java/net/minecraft/server/ItemStack.java b/src/main/java/net/minecraft/server/ItemStack.java
index 3043db9..e3db554 100644
index cd6dd07..a2df1d5 100644
--- a/src/main/java/net/minecraft/server/ItemStack.java
+++ b/src/main/java/net/minecraft/server/ItemStack.java
@@ -161,7 +161,16 @@ public final class ItemStack {
@@ -174,7 +174,16 @@ public final class ItemStack {
}
i -= k;
@ -26,7 +26,7 @@ index 3043db9..e3db554 100644
+ }
+ // Spigot end
+ if (i <= 0 ) {
return;
return false;
}
}
--

View File

@ -1,662 +0,0 @@
From 0440a1cf145aa79ef47d3c2db6f096e3d330d266 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sat, 2 Mar 2013 13:34:17 +1100
Subject: [PATCH] Snapshot support.
---
src/main/java/net/minecraft/server/Container.java | 420 ++++++++++++++-------
src/main/java/net/minecraft/server/ItemStack.java | 1 +
.../java/net/minecraft/server/MinecraftServer.java | 2 +-
.../net/minecraft/server/Packet100OpenWindow.java | 46 +++
.../net/minecraft/server/PendingConnection.java | 6 +-
src/main/java/org/bukkit/craftbukkit/Spigot.java | 8 +
src/main/resources/configurations/bukkit.yml | 2 +
7 files changed, 354 insertions(+), 131 deletions(-)
create mode 100644 src/main/java/net/minecraft/server/Packet100OpenWindow.java
diff --git a/src/main/java/net/minecraft/server/Container.java b/src/main/java/net/minecraft/server/Container.java
index 9ecefea..82df589 100644
--- a/src/main/java/net/minecraft/server/Container.java
+++ b/src/main/java/net/minecraft/server/Container.java
@@ -2,6 +2,7 @@ package net.minecraft.server;
import java.util.ArrayList;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
import java.util.Set;
@@ -16,9 +17,11 @@ public abstract class Container {
public List c = new ArrayList();
public int windowId = 0;
private short a = 0;
+ private int f = -1;
+ private int g = 0;
+ private final Set h = new HashSet();
protected List listeners = new ArrayList();
- private Set f = new HashSet();
-
+ private Set i = new HashSet();
// CraftBukkit start
public boolean checkReachable = true;
public abstract InventoryView getBukkitView();
@@ -105,168 +108,264 @@ public abstract class Container {
public ItemStack clickItem(int i, int j, int k, EntityHuman entityhuman) {
ItemStack itemstack = null;
PlayerInventory playerinventory = entityhuman.inventory;
- Slot slot;
- ItemStack itemstack1;
int l;
- ItemStack itemstack2;
-
- if ((k == 0 || k == 1) && (j == 0 || j == 1)) {
- if (i == -999) {
- if (playerinventory.getCarried() != null && i == -999) {
- if (j == 0) {
- entityhuman.drop(playerinventory.getCarried());
- playerinventory.setCarried((ItemStack) null);
- }
+ ItemStack itemstack1;
- if (j == 1) {
- // CraftBukkit start - store a reference
- ItemStack itemstack3 = playerinventory.getCarried();
- if (itemstack3.count > 0) {
- entityhuman.drop(itemstack3.a(1));
- }
+ if (k == 5) {
+ int i1 = this.g;
+
+ this.g = c__(j);
+ if ((i1 != 1 || this.g != 2) && i1 != this.g) {
+ this.d__();
+ } else if (playerinventory.getCarried() == null) {
+ this.d__();
+ } else if (this.g == 0) {
+ this.f = b__(j);
+ if (d(this.f)) {
+ this.g = 1;
+ this.h.clear();
+ } else {
+ this.d__();
+ }
+ } else if (this.g == 1) {
+ Slot slot = (Slot) this.c.get(i);
- if (itemstack3.count == 0) {
- // CraftBukkit end
- playerinventory.setCarried((ItemStack) null);
- }
- }
+ if (slot != null && a(slot, playerinventory.getCarried(), true) && slot.isAllowed(playerinventory.getCarried()) && playerinventory.getCarried().count > this.h.size() && this.b(slot)) {
+ this.h.add(slot);
}
- } else if (k == 1) {
- slot = (Slot) this.c.get(i);
- if (slot != null && slot.a(entityhuman)) {
- itemstack1 = this.b(entityhuman, i);
- if (itemstack1 != null) {
- int i1 = itemstack1.id;
-
- itemstack = itemstack1.cloneItemStack();
- if (slot != null && slot.getItem() != null && slot.getItem().id == i1) {
- this.a(i, j, true, entityhuman);
+ } else if (this.g == 2) {
+ if (!this.h.isEmpty()) {
+ itemstack1 = playerinventory.getCarried().cloneItemStack();
+ l = playerinventory.getCarried().count;
+ Iterator iterator = this.h.iterator();
+
+ while (iterator.hasNext()) {
+ Slot slot1 = (Slot) iterator.next();
+
+ if (slot1 != null && a(slot1, playerinventory.getCarried(), true) && slot1.isAllowed(playerinventory.getCarried()) && playerinventory.getCarried().count >= this.h.size() && this.b(slot1)) {
+ ItemStack itemstack2 = itemstack1.cloneItemStack();
+ int j1 = slot1.d() ? slot1.getItem().count : 0;
+
+ a(this.h, this.f, itemstack2, j1);
+ if (itemstack2.count > itemstack2.getMaxStackSize()) {
+ itemstack2.count = itemstack2.getMaxStackSize();
+ }
+
+ if (itemstack2.count > slot1.a()) {
+ itemstack2.count = slot1.a();
+ }
+
+ l -= itemstack2.count - j1;
+ slot1.set(itemstack2);
}
}
- }
- } else {
- if (i < 0) {
- return null;
- }
-
- slot = (Slot) this.c.get(i);
- if (slot != null) {
- itemstack1 = slot.getItem();
- ItemStack itemstack3 = playerinventory.getCarried();
- if (itemstack1 != null) {
- itemstack = itemstack1.cloneItemStack();
+ itemstack1.count = l;
+ if (itemstack1.count <= 0) {
+ itemstack1 = null;
}
- if (itemstack1 == null) {
- if (itemstack3 != null && slot.isAllowed(itemstack3)) {
- l = j == 0 ? itemstack3.count : 1;
- if (l > slot.a()) {
- l = slot.a();
- }
+ playerinventory.setCarried(itemstack1);
+ }
- // CraftBukkit start
- if (itemstack3.count >= l) {
- slot.set(itemstack3.a(l));
- }
- // CraftBukkit end
+ this.d__();
+ } else {
+ this.d__();
+ }
+ } else if (this.g != 0) {
+ this.d__();
+ } else {
+ Slot slot2;
+ int k1;
+ ItemStack itemstack3;
+
+ if ((k == 0 || k == 1) && (j == 0 || j == 1)) {
+ if (i == -999) {
+ if (playerinventory.getCarried() != null && i == -999) {
+ if (j == 0) {
+ entityhuman.drop(playerinventory.getCarried());
+ playerinventory.setCarried((ItemStack) null);
+ }
- if (itemstack3.count == 0) {
+ if (j == 1) {
+ entityhuman.drop(playerinventory.getCarried().a(1));
+ if (playerinventory.getCarried().count == 0) {
playerinventory.setCarried((ItemStack) null);
}
}
- } else if (slot.a(entityhuman)) {
- if (itemstack3 == null) {
- l = j == 0 ? itemstack1.count : (itemstack1.count + 1) / 2;
- itemstack2 = slot.a(l);
- playerinventory.setCarried(itemstack2);
- if (itemstack1.count == 0) {
- slot.set((ItemStack) null);
+ }
+ } else if (k == 1) {
+ if (i < 0) {
+ return null;
+ }
+
+ slot2 = (Slot) this.c.get(i);
+ if (slot2 != null && slot2.a(entityhuman)) {
+ itemstack1 = this.b(entityhuman, i);
+ if (itemstack1 != null) {
+ l = itemstack1.id;
+ itemstack = itemstack1.cloneItemStack();
+ if (slot2 != null && slot2.getItem() != null && slot2.getItem().id == l) {
+ this.a(i, j, true, entityhuman);
}
+ }
+ }
+ } else {
+ if (i < 0) {
+ return null;
+ }
- slot.a(entityhuman, playerinventory.getCarried());
- } else if (slot.isAllowed(itemstack3)) {
- if (itemstack1.id == itemstack3.id && itemstack1.getData() == itemstack3.getData() && ItemStack.equals(itemstack1, itemstack3)) {
- l = j == 0 ? itemstack3.count : 1;
- if (l > slot.a() - itemstack1.count) {
- l = slot.a() - itemstack1.count;
- }
+ slot2 = (Slot) this.c.get(i);
+ if (slot2 != null) {
+ itemstack1 = slot2.getItem();
+ ItemStack itemstack4 = playerinventory.getCarried();
+
+ if (itemstack1 != null) {
+ itemstack = itemstack1.cloneItemStack();
+ }
- if (l > itemstack3.getMaxStackSize() - itemstack1.count) {
- l = itemstack3.getMaxStackSize() - itemstack1.count;
+ if (itemstack1 == null) {
+ if (itemstack4 != null && slot2.isAllowed(itemstack4)) {
+ k1 = j == 0 ? itemstack4.count : 1;
+ if (k1 > slot2.a()) {
+ k1 = slot2.a();
}
- itemstack3.a(l);
- if (itemstack3.count == 0) {
+ slot2.set(itemstack4.a(k1));
+ if (itemstack4.count == 0) {
playerinventory.setCarried((ItemStack) null);
}
-
- itemstack1.count += l;
- } else if (itemstack3.count <= slot.a()) {
- slot.set(itemstack3);
- playerinventory.setCarried(itemstack1);
}
- } else if (itemstack1.id == itemstack3.id && itemstack3.getMaxStackSize() > 1 && (!itemstack1.usesData() || itemstack1.getData() == itemstack3.getData()) && ItemStack.equals(itemstack1, itemstack3)) {
- l = itemstack1.count;
- if (l > 0 && l + itemstack3.count <= itemstack3.getMaxStackSize()) {
- itemstack3.count += l;
- itemstack1 = slot.a(l);
+ } else if (slot2.a(entityhuman)) {
+ if (itemstack4 == null) {
+ k1 = j == 0 ? itemstack1.count : (itemstack1.count + 1) / 2;
+ itemstack3 = slot2.a(k1);
+ playerinventory.setCarried(itemstack3);
if (itemstack1.count == 0) {
- slot.set((ItemStack) null);
+ slot2.set((ItemStack) null);
}
- slot.a(entityhuman, playerinventory.getCarried());
+ slot2.a(entityhuman, playerinventory.getCarried());
+ } else if (slot2.isAllowed(itemstack4)) {
+ if (itemstack1.id == itemstack4.id && itemstack1.getData() == itemstack4.getData() && ItemStack.equals(itemstack1, itemstack4)) {
+ k1 = j == 0 ? itemstack4.count : 1;
+ if (k1 > slot2.a() - itemstack1.count) {
+ k1 = slot2.a() - itemstack1.count;
+ }
+
+ if (k1 > itemstack4.getMaxStackSize() - itemstack1.count) {
+ k1 = itemstack4.getMaxStackSize() - itemstack1.count;
+ }
+
+ itemstack4.a(k1);
+ if (itemstack4.count == 0) {
+ playerinventory.setCarried((ItemStack) null);
+ }
+
+ itemstack1.count += k1;
+ } else if (itemstack4.count <= slot2.a()) {
+ slot2.set(itemstack4);
+ playerinventory.setCarried(itemstack1);
+ }
+ } else if (itemstack1.id == itemstack4.id && itemstack4.getMaxStackSize() > 1 && (!itemstack1.usesData() || itemstack1.getData() == itemstack4.getData()) && ItemStack.equals(itemstack1, itemstack4)) {
+ k1 = itemstack1.count;
+ if (k1 > 0 && k1 + itemstack4.count <= itemstack4.getMaxStackSize()) {
+ itemstack4.count += k1;
+ itemstack1 = slot2.a(k1);
+ if (itemstack1.count == 0) {
+ slot2.set((ItemStack) null);
+ }
+
+ slot2.a(entityhuman, playerinventory.getCarried());
+ }
}
}
+
+ slot2.e();
+ }
+ }
+ } else if (k == 2 && j >= 0 && j < 9) {
+ slot2 = (Slot) this.c.get(i);
+ if (slot2.a(entityhuman)) {
+ itemstack1 = playerinventory.getItem(j);
+ boolean flag = itemstack1 == null || slot2.inventory == playerinventory && slot2.isAllowed(itemstack1);
+
+ k1 = -1;
+ if (!flag) {
+ k1 = playerinventory.i();
+ flag |= k1 > -1;
}
- slot.e();
+ if (slot2.d() && flag) {
+ itemstack3 = slot2.getItem();
+ playerinventory.setItem(j, itemstack3);
+ if ((slot2.inventory != playerinventory || !slot2.isAllowed(itemstack1)) && itemstack1 != null) {
+ if (k1 > -1) {
+ playerinventory.pickup(itemstack1);
+ slot2.a(itemstack3.count);
+ slot2.set((ItemStack) null);
+ slot2.a(entityhuman, itemstack3);
+ }
+ } else {
+ slot2.a(itemstack3.count);
+ slot2.set(itemstack1);
+ slot2.a(entityhuman, itemstack3);
+ }
+ } else if (!slot2.d() && itemstack1 != null && slot2.isAllowed(itemstack1)) {
+ playerinventory.setItem(j, (ItemStack) null);
+ slot2.set(itemstack1);
+ }
}
- }
- } else if (k == 2 && j >= 0 && j < 9) {
- slot = (Slot) this.c.get(i);
- if (slot.a(entityhuman)) {
- itemstack1 = playerinventory.getItem(j);
- boolean flag = itemstack1 == null || slot.inventory == playerinventory && slot.isAllowed(itemstack1);
-
- l = -1;
- if (!flag) {
- l = playerinventory.i();
- flag |= l > -1;
+ } else if (k == 3 && entityhuman.abilities.canInstantlyBuild && playerinventory.getCarried() == null && i >= 0) {
+ slot2 = (Slot) this.c.get(i);
+ if (slot2 != null && slot2.d()) {
+ itemstack1 = slot2.getItem().cloneItemStack();
+ itemstack1.count = itemstack1.getMaxStackSize();
+ playerinventory.setCarried(itemstack1);
}
-
- if (slot.d() && flag) {
- itemstack2 = slot.getItem();
- playerinventory.setItem(j, itemstack2);
- if ((slot.inventory != playerinventory || !slot.isAllowed(itemstack1)) && itemstack1 != null) {
- if (l > -1) {
- playerinventory.pickup(itemstack1);
- slot.a(itemstack2.count);
- slot.set((ItemStack) null);
- slot.a(entityhuman, itemstack2);
+ } else if (k == 4 && playerinventory.getCarried() == null && i >= 0) {
+ slot2 = (Slot) this.c.get(i);
+ if (slot2 != null && slot2.d()) {
+ itemstack1 = slot2.a(j == 0 ? 1 : slot2.getItem().count);
+ slot2.a(entityhuman, itemstack1);
+ entityhuman.drop(itemstack1);
+ }
+ } else if (k == 6 && i >= 0) {
+ slot2 = (Slot) this.c.get(i);
+ itemstack1 = playerinventory.getCarried();
+ if (itemstack1 != null && (slot2 == null || !slot2.d() || !slot2.a(entityhuman))) {
+ l = j == 0 ? 0 : this.c.size() - 1;
+ k1 = j == 0 ? 1 : -1;
+
+ for (int l1 = 0; l1 < 2; ++l1) {
+ for (int i2 = l; i2 >= 0 && i2 < this.c.size() && itemstack1.count < itemstack1.getMaxStackSize(); i2 += k1) {
+ Slot slot3 = (Slot) this.c.get(i2);
+
+ if (slot3.d() && a(slot3, itemstack1, true) && slot3.a(entityhuman) && this.a(itemstack1, slot3) && (l1 != 0 || slot3.getItem().count != slot3.getItem().getMaxStackSize())) {
+ int j2 = Math.min(itemstack1.getMaxStackSize() - itemstack1.count, slot3.getItem().count);
+ ItemStack itemstack5 = slot3.a(j2);
+
+ itemstack1.count += j2;
+ if (itemstack5.count <= 0) {
+ slot3.set((ItemStack) null);
+ slot3.a(entityhuman, itemstack5);
+ }
+ }
}
- } else {
- slot.a(itemstack2.count);
- slot.set(itemstack1);
- slot.a(entityhuman, itemstack2);
}
- } else if (!slot.d() && itemstack1 != null && slot.isAllowed(itemstack1)) {
- playerinventory.setItem(j, (ItemStack) null);
- slot.set(itemstack1);
}
- }
- } else if (k == 3 && entityhuman.abilities.canInstantlyBuild && playerinventory.getCarried() == null && i >= 0) {
- slot = (Slot) this.c.get(i);
- if (slot != null && slot.d()) {
- itemstack1 = slot.getItem().cloneItemStack();
- itemstack1.count = itemstack1.getMaxStackSize();
- playerinventory.setCarried(itemstack1);
+
+ this.b();
}
}
return itemstack;
}
+ public boolean a(ItemStack itemstack, Slot slot) {
+ return true;
+ }
+
protected void a(int i, int j, boolean flag, EntityHuman entityhuman) {
this.clickItem(i, j, 1, entityhuman);
}
@@ -289,14 +388,14 @@ public abstract class Container {
}
public boolean c(EntityHuman entityhuman) {
- return !this.f.contains(entityhuman);
+ return !this.i.contains(entityhuman);
}
public void a(EntityHuman entityhuman, boolean flag) {
if (flag) {
- this.f.remove(entityhuman);
+ this.i.remove(entityhuman);
} else {
- this.f.add(entityhuman);
+ this.i.add(entityhuman);
}
}
@@ -369,4 +468,71 @@ public abstract class Container {
return flag1;
}
+
+ public static int b__(int i) {
+ return i >> 2 & 3;
+ }
+
+ public static int c__(int i) {
+ return i & 3;
+ }
+
+ public static boolean d(int i) {
+ return i == 0 || i == 1;
+ }
+
+ protected void d__() {
+ this.g = 0;
+ this.h.clear();
+ }
+
+ public static boolean a(Slot slot, ItemStack itemstack, boolean flag) {
+ boolean flag1 = slot == null || !slot.d();
+
+ if (slot != null && slot.d() && itemstack != null && itemstack.doMaterialsMatch(slot.getItem()) && ItemStack.equals(slot.getItem(), itemstack)) {
+ int i = flag ? 0 : itemstack.count;
+
+ flag1 |= slot.getItem().count + i <= itemstack.getMaxStackSize();
+ }
+
+ return flag1;
+ }
+
+ public static void a(Set set, int i, ItemStack itemstack, int j) {
+ switch (i) {
+ case 0:
+ itemstack.count = MathHelper.d((float) itemstack.count / (float) set.size());
+ break;
+
+ case 1:
+ itemstack.count = 1;
+ }
+
+ itemstack.count += j;
+ }
+
+ public boolean b(Slot slot) {
+ return true;
+ }
+
+ public static int b(IInventory iinventory) {
+ if (iinventory == null) {
+ return 0;
+ } else {
+ int i = 0;
+ float f = 0.0F;
+
+ for (int j = 0; j < iinventory.getSize(); ++j) {
+ ItemStack itemstack = iinventory.getItem(j);
+
+ if (itemstack != null) {
+ f += (float) itemstack.count / (float) Math.min(iinventory.getMaxStackSize(), itemstack.getMaxStackSize());
+ ++i;
+ }
+ }
+
+ f /= (float) iinventory.getSize();
+ return MathHelper.d(f * 14.0F) + (i > 0 ? 1 : 0);
+ }
+ }
}
diff --git a/src/main/java/net/minecraft/server/ItemStack.java b/src/main/java/net/minecraft/server/ItemStack.java
index 8f0a5ad..3043db9 100644
--- a/src/main/java/net/minecraft/server/ItemStack.java
+++ b/src/main/java/net/minecraft/server/ItemStack.java
@@ -38,6 +38,7 @@ public final class ItemStack {
this.f = null;
this.id = i;
this.count = j;
+ if (org.bukkit.craftbukkit.Spigot.snapshotSupport && this.id >= 146 && this.id <= 158) this.id = 0; // Spigot
this.setData(k); // CraftBukkit
}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 6005fac..79b4369 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -765,7 +765,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
}
public String getVersion() {
- return "1.4.7";
+ return (org.bukkit.craftbukkit.Spigot.snapshotSupport) ? org.bukkit.craftbukkit.Spigot.snapshotVersion : "1.4.7";
}
public int y() {
diff --git a/src/main/java/net/minecraft/server/Packet100OpenWindow.java b/src/main/java/net/minecraft/server/Packet100OpenWindow.java
new file mode 100644
index 0000000..5182bfa
--- /dev/null
+++ b/src/main/java/net/minecraft/server/Packet100OpenWindow.java
@@ -0,0 +1,46 @@
+package net.minecraft.server;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+public class Packet100OpenWindow extends Packet {
+
+ public int a;
+ public int b;
+ public String c;
+ public int d;
+
+ public Packet100OpenWindow() {}
+
+ public Packet100OpenWindow(int i, int j, String s, int k) {
+ this.a = i;
+ this.b = j;
+ this.c = s;
+ this.d = k;
+ }
+
+ public void handle(Connection connection) {
+ connection.a(this);
+ }
+
+ public void a(DataInputStream datainputstream) throws IOException {
+ this.a = datainputstream.readByte() & 255;
+ this.b = datainputstream.readByte() & 255;
+ this.c = a(datainputstream, 32);
+ this.d = datainputstream.readByte() & 255;
+ if (org.bukkit.craftbukkit.Spigot.snapshotSupport) datainputstream.readBoolean(); // Spigot
+ }
+
+ public void a(DataOutputStream dataoutputstream) throws IOException {
+ dataoutputstream.writeByte(this.a & 255);
+ dataoutputstream.writeByte(this.b & 255);
+ a(this.c, dataoutputstream);
+ dataoutputstream.writeByte(this.d & 255);
+ if (org.bukkit.craftbukkit.Spigot.snapshotSupport) dataoutputstream.writeBoolean(false); // Spigot
+ }
+
+ public int a() {
+ return 3 + this.c.length();
+ }
+}
diff --git a/src/main/java/net/minecraft/server/PendingConnection.java b/src/main/java/net/minecraft/server/PendingConnection.java
index cdd456f..08aa314 100644
--- a/src/main/java/net/minecraft/server/PendingConnection.java
+++ b/src/main/java/net/minecraft/server/PendingConnection.java
@@ -78,8 +78,8 @@ public class PendingConnection extends Connection {
} else {
PublicKey publickey = this.server.F().getPublic();
- if (packet2handshake.d() != 51) {
- if (packet2handshake.d() > 51) {
+ if (packet2handshake.d() != ((org.bukkit.craftbukkit.Spigot.snapshotSupport) ? org.bukkit.craftbukkit.Spigot.snapshotProtocolVersion : 51)) {
+ if (packet2handshake.d() > ((org.bukkit.craftbukkit.Spigot.snapshotSupport) ? org.bukkit.craftbukkit.Spigot.snapshotProtocolVersion : 51)) {
this.disconnect("Outdated server!");
} else {
this.disconnect("Outdated client!");
@@ -154,7 +154,7 @@ public class PendingConnection extends Connection {
if (true) {
// CraftBukkit start - fix decompile issues, don't create a list from an array
- Object[] list = new Object[] { 1, 51, this.server.getVersion(), pingEvent.getMotd(), playerlist.getPlayerCount(), pingEvent.getMaxPlayers() };
+ Object[] list = new Object[] { 1, ((org.bukkit.craftbukkit.Spigot.snapshotSupport) ? org.bukkit.craftbukkit.Spigot.snapshotProtocolVersion : 51), this.server.getVersion(), pingEvent.getMotd(), playerlist.getPlayerCount(), pingEvent.getMaxPlayers() };
for (Object object : list) {
if (s == null) {
diff --git a/src/main/java/org/bukkit/craftbukkit/Spigot.java b/src/main/java/org/bukkit/craftbukkit/Spigot.java
index 6713281..208bf02 100644
--- a/src/main/java/org/bukkit/craftbukkit/Spigot.java
+++ b/src/main/java/org/bukkit/craftbukkit/Spigot.java
@@ -23,6 +23,9 @@ public class Spigot {
public static boolean tabPing = false;
private static Metrics metrics;
+ public static boolean snapshotSupport;
+ public static int snapshotProtocolVersion = 60;
+ public static String snapshotVersion = "1.5";
public static void initialize(CraftServer server, SimpleCommandMap commandMap, YamlConfiguration configuration) {
commandMap.register("bukkit", new org.bukkit.craftbukkit.command.TicksPerSecondCommand("tps"));
@@ -60,6 +63,11 @@ public class Spigot {
tabPing = configuration.getBoolean("settings.tab-ping", tabPing);
+ snapshotSupport = configuration.getBoolean("settings.snapshot-protocol", snapshotSupport);
+ if (snapshotSupport) {
+ server.getLogger().log(Level.INFO, "Enabled support for pre release / snapshot version {0}", snapshotVersion);
+ }
+
if (metrics == null) {
try {
metrics = new Metrics();
diff --git a/src/main/resources/configurations/bukkit.yml b/src/main/resources/configurations/bukkit.yml
index aac1406..0351530 100644
--- a/src/main/resources/configurations/bukkit.yml
+++ b/src/main/resources/configurations/bukkit.yml
@@ -35,6 +35,8 @@ settings:
timeout-time: 30
restart-on-crash: false
restart-script-location: /path/to/server/start.sh
+ # fakes the latest pre release / snapshot
+ snapshot-protocol: false
world-settings:
default:
growth-chunks-per-tick: 650
--
1.8.1-rc2

View File

@ -1,30 +0,0 @@
From 65e4386d461d313d9de97bc9f27c0e7aaef60dbd Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sun, 3 Mar 2013 20:22:45 +1100
Subject: [PATCH] Fix crash with exceptions in command block commands.
---
src/main/java/net/minecraft/server/TileEntityCommand.java | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/main/java/net/minecraft/server/TileEntityCommand.java b/src/main/java/net/minecraft/server/TileEntityCommand.java
index 4ff401b..10215ec 100644
--- a/src/main/java/net/minecraft/server/TileEntityCommand.java
+++ b/src/main/java/net/minecraft/server/TileEntityCommand.java
@@ -70,7 +70,12 @@ public class TileEntityCommand extends TileEntity implements ICommandListener {
// now dispatch all of the commands we ended up with
for (int i = 0; i < commands.size(); i++) {
- commandMap.dispatch(sender, joiner.join(Arrays.asList(commands.get(i))));
+ String[] cmd = commands.get(i);
+ try {
+ commandMap.dispatch(sender, joiner.join(Arrays.asList(cmd)));
+ } catch (org.bukkit.command.CommandException ex) {
+ org.bukkit.Bukkit.getServer().getLogger().log(java.util.logging.Level.WARNING, "Unexpected exception while parsing command block command \"" + cmd[0] + '"', ex);
+ }
}
// CraftBukkit end
}
--
1.8.1-rc2

View File

@ -1,4 +1,4 @@
From f4ffbf28426aefbec5fcef262ea3dd5c4133212a Mon Sep 17 00:00:00 2001
From 950d9560cf2fee49bbadf1607cca570bd1c5808a Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Thu, 7 Mar 2013 20:12:46 +1100
Subject: [PATCH] Thread safety. Adds thread safety for chunk load / unload
@ -9,7 +9,7 @@ Subject: [PATCH] Thread safety. Adds thread safety for chunk load / unload
1 file changed, 3 insertions(+)
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 33df602..1238f3b 100644
index 25c462e..d6a4d2d 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -254,6 +254,7 @@ public class CraftWorld implements World {