This commit is contained in:
md_5 2013-12-01 14:40:53 +11:00
parent 71d3b3b5ad
commit 80da3f0c9b
77 changed files with 706 additions and 2980 deletions

View File

@ -1,11 +1,11 @@
From 1e30afdf5e51ea4aab45e4ddadaa8e38e4082682 Mon Sep 17 00:00:00 2001
From 0fb4b4d5c11cbd1aa4d4143accc986954f0fea1a Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Tue, 2 Jul 2013 13:07:39 +1000
Subject: [PATCH] POM Changes
diff --git a/pom.xml b/pom.xml
index b56b26c..de6eeed 100644
index 2afdff4..a77fec8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,12 +1,20 @@
@ -25,7 +25,7 @@ index b56b26c..de6eeed 100644
+ <groupId>org.spigotmc</groupId>
+ <artifactId>spigot</artifactId>
<packaging>jar</packaging>
<version>1.6.4-R2.1-SNAPSHOT</version>
<version>1.7.2-R0.1-SNAPSHOT</version>
- <name>CraftBukkit</name>
- <url>http://www.bukkit.org</url>
+ <name>Spigot</name>
@ -142,11 +142,11 @@ index b56b26c..de6eeed 100644
<execution>
<phase>package</phase>
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index d140c4f..8fc8bba 100644
index caa184e..a478ee9 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -210,7 +210,7 @@ public final class CraftServer implements Server {
chunkGCLoadThresh = configuration.getInt("chunk-gc.load-threshold");
@@ -225,7 +225,7 @@ public final class CraftServer implements Server {
loadIcon();
updater = new AutoUpdater(new BukkitDLUpdaterService(configuration.getString("auto-updater.host")), getLogger(), configuration.getString("auto-updater.preferred-channel"));
- updater.setEnabled(configuration.getBoolean("auto-updater.enabled"));

View File

@ -1,15 +1,15 @@
From e0fec2ec7e896f2c660729f24eb0b72791865915 Mon Sep 17 00:00:00 2001
From 43a4368814bb1162e0cc30b58ba911b3d6099646 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sun, 2 Jun 2013 15:10:56 +1000
Subject: [PATCH] Skeleton API Implementations
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 9f75d8e..856c713 100644
index 5626e98..5938b37 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -1268,4 +1268,14 @@ public class CraftWorld implements World {
cps.queueUnload(chunk.x, chunk.z);
@@ -1274,4 +1274,14 @@ public class CraftWorld implements World {
cps.queueUnload(chunk.locX, chunk.locZ);
}
}
+ // Spigot start
@ -44,10 +44,10 @@ index b46b9c4..a386001 100644
+ // Spigot end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index d9659fb..4f4b84f 100644
index fe0f200..e026c1f 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -398,4 +398,15 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
@@ -399,4 +399,15 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
return getHandle().vehicle.getBukkitEntity();
}
@ -64,12 +64,12 @@ index d9659fb..4f4b84f 100644
+ // Spigot end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index ac73273..63ce45a 100644
index 0153608..9add7bf 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1072,4 +1072,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1125,4 +1125,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
collection.add(new AttributeModifiable(getHandle().aX(), (new AttributeRanged("generic.maxHealth", scaledHealth ? healthScale : getMaxHealth(), 0.0D, Float.MAX_VALUE)).a("Max Health").a(true)));
collection.add(new AttributeModifiable(getHandle().bc(), (new AttributeRanged("generic.maxHealth", scaledHealth ? healthScale : getMaxHealth(), 0.0D, Float.MAX_VALUE)).a("Max Health").a(true)));
}
+
+ // Spigot start

View File

@ -1,15 +1,15 @@
From f964622c2736fc8d723025d8553ca2ce91b7d67e Mon Sep 17 00:00:00 2001
From 5a795c69a696f3a4817dd22c16cc526937e30410 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sun, 7 Jul 2013 09:32:53 +1000
Subject: [PATCH] Spigot Configuration
diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java
index f871b73..0cca057 100644
index 03585b7..086f49e 100644
--- a/src/main/java/net/minecraft/server/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/DedicatedServer.java
@@ -90,6 +90,11 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
if (this.I() < 0) {
@@ -102,6 +102,11 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
if (this.J() < 0) {
this.setPort(this.propertyManager.getInt("server-port", 25565));
}
+ // Spigot start
@ -18,9 +18,9 @@ index f871b73..0cca057 100644
+ org.spigotmc.SpigotConfig.registerCommands();
+ // Spigot end
this.getLogger().info("Generating keypair");
h.info("Generating keypair");
this.a(MinecraftEncryption.b());
@@ -104,7 +109,11 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
@@ -116,7 +121,11 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
return false;
}
@ -32,12 +32,12 @@ index f871b73..0cca057 100644
+ // Spigot End
if (!this.getOnlineMode()) {
this.getLogger().warning("**** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!");
h.warn("**** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!");
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 3924a5c..fbbfa33 100644
index 67247f6..9357eb9 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -99,6 +99,7 @@ public abstract class World implements IBlockAccess {
@@ -105,6 +105,7 @@ public abstract class World implements IBlockAccess {
int lastXAccessed = Integer.MIN_VALUE;
int lastZAccessed = Integer.MIN_VALUE;
final Object chunkLock = new Object();
@ -45,19 +45,19 @@ index 3924a5c..fbbfa33 100644
public CraftWorld getWorld() {
return this.world;
@@ -110,6 +111,7 @@ public abstract class World implements IBlockAccess {
@@ -116,6 +117,7 @@ public abstract class World implements IBlockAccess {
// Changed signature
public World(IDataManager idatamanager, String s, WorldSettings worldsettings, WorldProvider worldprovider, MethodProfiler methodprofiler, IConsoleLogManager iconsolelogmanager, ChunkGenerator gen, org.bukkit.World.Environment env) {
// Changed signature - added gen and env
public World(IDataManager idatamanager, String s, WorldSettings worldsettings, WorldProvider worldprovider, MethodProfiler methodprofiler, ChunkGenerator gen, org.bukkit.World.Environment env) {
+ this.spigotConfig = new org.spigotmc.SpigotWorldConfig( s ); // Spigot
this.generator = gen;
this.world = new CraftWorld((WorldServer) this, gen, env);
this.ticksPerAnimalSpawns = this.getServer().getTicksPerAnimalSpawns(); // CraftBukkit
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index cee0549..62ecc19 100644
index a478ee9..5eefd0d 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -216,8 +216,10 @@ public final class CraftServer implements Server {
@@ -231,8 +231,10 @@ public final class CraftServer implements Server {
updater.getOnUpdate().addAll(configuration.getStringList("auto-updater.on-update"));
updater.check(serverVersion);
@ -70,7 +70,7 @@ index cee0549..62ecc19 100644
}
private File getConfigFile() {
@@ -566,6 +568,7 @@ public final class CraftServer implements Server {
@@ -582,6 +584,7 @@ public final class CraftServer implements Server {
playerList.getIPBans().load();
playerList.getNameBans().load();
@ -78,7 +78,7 @@ index cee0549..62ecc19 100644
for (WorldServer world : console.worlds) {
world.difficulty = difficulty;
world.setSpawnFlags(monsters, animals);
@@ -580,11 +583,13 @@ public final class CraftServer implements Server {
@@ -596,11 +599,13 @@ public final class CraftServer implements Server {
} else {
world.ticksPerMonsterSpawns = this.getTicksPerMonsterSpawns();
}

View File

@ -1,24 +1,17 @@
From e88612ecce87211e7d06cb37dc9cb17329bc3e68 Mon Sep 17 00:00:00 2001
From 4feddcc91c933967b5ea82389c2593641f28e20f Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Tue, 11 Jun 2013 12:56:02 +1000
Subject: [PATCH] Better Chunk Tick Selection
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 7d4def3..15d2a62 100644
index 9357eb9..f0a8024 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -66,13 +66,35 @@ public abstract class World implements IBlockAccess {
// CraftBukkit start - public, longhashset
public boolean allowMonsters = true;
public boolean allowAnimals = true;
- protected LongHashSet chunkTickList = new LongHashSet();
public long ticksPerAnimalSpawns;
public long ticksPerMonsterSpawns;
// CraftBukkit end
private int O;
int[] H;
public boolean isStatic;
@@ -74,6 +74,30 @@ public abstract class World implements IBlockAccess {
private boolean N;
int[] I;
+ // Spigot start
+ protected final gnu.trove.map.hash.TLongShortHashMap chunkTickList;
+ protected float growthOdds = 100;
@ -42,10 +35,11 @@ index 7d4def3..15d2a62 100644
+ return (int) ( ( ( k >> 32 ) & 0xFFFF0000L ) | ( ( k >> 16 ) & 0x0000FFFF ) );
+ }
+ // Spigot end
+
public BiomeBase getBiome(int i, int j) {
if (this.isLoaded(i, 0, j)) {
@@ -117,6 +139,11 @@ public abstract class World implements IBlockAccess {
Chunk chunk = this.getChunkAtWorldCoords(i, j);
@@ -123,6 +147,11 @@ public abstract class World implements IBlockAccess {
this.ticksPerAnimalSpawns = this.getServer().getTicksPerAnimalSpawns(); // CraftBukkit
this.ticksPerMonsterSpawns = this.getServer().getTicksPerMonsterSpawns(); // CraftBukkit
// CraftBukkit end
@ -55,9 +49,9 @@ index 7d4def3..15d2a62 100644
+ this.chunkTickList.setAutoCompactionFactor( 0 );
+ // Spigot end
this.O = this.random.nextInt(12000);
this.H = new int['\u8000'];
@@ -1955,24 +1982,44 @@ public abstract class World implements IBlockAccess {
this.L = this.random.nextInt(12000);
this.allowMonsters = true;
@@ -1896,24 +1925,44 @@ public abstract class World implements IBlockAccess {
int j;
int k;
@ -113,16 +107,14 @@ index 7d4def3..15d2a62 100644
this.methodProfiler.b();
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index eb9540f..b073b90 100644
index b9b967f..812e887 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -300,9 +300,19 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
@@ -306,10 +306,20 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
// CraftBukkit start
// Iterator iterator = this.chunkTickList.iterator();
- for (long chunkCoord : this.chunkTickList.popAll()) {
- int chunkX = LongHash.msw(chunkCoord);
- int chunkZ = LongHash.lsw(chunkCoord);
+ // Spigot start
+ for (gnu.trove.iterator.TLongShortIterator iter = chunkTickList.iterator(); iter.hasNext();) {
+ iter.advance();
@ -137,11 +129,14 @@ index eb9540f..b073b90 100644
+ }
+ // Spigot end
// ChunkCoordIntPair chunkcoordintpair = (ChunkCoordIntPair) iterator.next();
- int chunkX = LongHash.msw(chunkCoord);
- int chunkZ = LongHash.lsw(chunkCoord);
int k = chunkX * 16;
int l = chunkZ * 16;
@@ -400,6 +410,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
if (block != null && block.isTicking()) {
if (block.isTicking()) {
++i;
+ this.growthOdds = (iter.value() < 1) ? this.modifiedOdds : 100; // Spigot - grow fast if no players are in this chunk (value = player count)
block.a(this, k2 + k, i3 + chunksection.getYPosition(), l2 + l, this.random);
@ -164,5 +159,5 @@ index 961ddb4..478d9e6 100644
+ }
}
--
1.8.1.2
1.8.3.2

View File

@ -1,14 +1,14 @@
From 89188699eec6514aae0bc53904a2fe8f732630bf Mon Sep 17 00:00:00 2001
From 27be6c4e1c2e911cd92968c1a58b16e5ee7302a0 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Fri, 21 Jun 2013 17:17:20 +1000
Subject: [PATCH] Crop Growth Rates
diff --git a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java
index 2a85c1c..afe8735 100644
index dca832f..ad4e3a2 100644
--- a/src/main/java/net/minecraft/server/Block.java
+++ b/src/main/java/net/minecraft/server/Block.java
@@ -781,4 +781,16 @@ public class Block {
@@ -804,4 +804,16 @@ public class Block {
return 0;
}
// CraftBukkit end
@ -26,36 +26,41 @@ index 2a85c1c..afe8735 100644
+ // Spigot end
}
diff --git a/src/main/java/net/minecraft/server/BlockCactus.java b/src/main/java/net/minecraft/server/BlockCactus.java
index 03eece7..758ab84 100644
index 421af04..5c7910d 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 {
@@ -23,8 +23,8 @@ public class BlockCactus extends Block {
if (l < 3) {
int i1 = world.getData(i, j, k);
- if (i1 == 15) {
- org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(world, i, j + 1, k, this, 0); // CraftBukkit
+ if (i1 >= (byte) range(3, (world.growthOdds / world.spigotConfig.cactusModifier * 15) + 0.5F, 15)) { // Spigot
org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(world, i, j + 1, k, this.id, 0); // CraftBukkit
+ org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(world, i, j + 1, k, this.id, 0); // CraftBukkit
world.setData(i, j, k, 0, 4);
this.doPhysics(world, i, j + 1, k, this.id);
this.doPhysics(world, i, j + 1, k, this);
} else {
diff --git a/src/main/java/net/minecraft/server/BlockCrops.java b/src/main/java/net/minecraft/server/BlockCrops.java
index e157fbe..84a809b 100644
index 942d6ab..ef670e8 100644
--- a/src/main/java/net/minecraft/server/BlockCrops.java
+++ b/src/main/java/net/minecraft/server/BlockCrops.java
@@ -28,7 +28,7 @@ public class BlockCrops extends BlockFlower {
@@ -27,9 +27,8 @@ public class BlockCrops extends BlockPlant implements IBlockFragilePlantElement
if (l < 7) {
float f = this.k(world, i, j, k);
float f = this.n(world, i, j, k);
- if (random.nextInt((int) (25.0F / f) + 1) == 0) {
- ++l;
- org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(world, i, j, k, this, l); // CraftBukkit
+ if (random.nextInt((int) (world.growthOdds / world.spigotConfig.wheatModifier * (25.0F / f)) + 1) == 0) { // Spigot
org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(world, i, j, k, this.id, ++l); // CraftBukkit
+ org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(world, i, j, k, this.id, ++l); // CraftBukkit
}
}
}
diff --git a/src/main/java/net/minecraft/server/BlockGrass.java b/src/main/java/net/minecraft/server/BlockGrass.java
index 6f9301d..2ccc0b8 100644
index 7b78579..bdf3172 100644
--- a/src/main/java/net/minecraft/server/BlockGrass.java
+++ b/src/main/java/net/minecraft/server/BlockGrass.java
@@ -32,7 +32,8 @@ public class BlockGrass extends Block {
@@ -37,7 +37,8 @@ public class BlockGrass extends Block implements IBlockFragilePlantElement {
}
// CraftBukkit end
} else if (world.getLightLevel(i, j + 1, k) >= 9) {
@ -66,10 +71,10 @@ index 6f9301d..2ccc0b8 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 796527d..b4a6800 100644
index 54a399f..4cab3eb 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 {
@@ -23,7 +23,7 @@ public class BlockMushroom extends BlockPlant implements IBlockFragilePlantEleme
public void a(World world, int i, int j, int k, Random random) {
final int sourceX = i, sourceY = j, sourceZ = k; // CraftBukkit
@ -79,7 +84,7 @@ index 796527d..b4a6800 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 1de8c83..fa11d1c 100644
index 6ac6d94..a401f65 100644
--- a/src/main/java/net/minecraft/server/BlockMycel.java
+++ b/src/main/java/net/minecraft/server/BlockMycel.java
@@ -32,7 +32,8 @@ public class BlockMycel extends Block {
@ -93,23 +98,32 @@ index 1de8c83..fa11d1c 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 8657860..cf52501 100644
index a1350f6..246b951 100644
--- a/src/main/java/net/minecraft/server/BlockReed.java
+++ b/src/main/java/net/minecraft/server/BlockReed.java
@@ -23,7 +23,7 @@ public class BlockReed extends Block {
if (l < 3) {
int i1 = world.getData(i, j, k);
@@ -24,12 +24,11 @@ public class BlockReed extends Block {
if (l < 3) {
int i1 = world.getData(i, j, k);
- if (i1 == 15) {
- if (i1 == 15) {
- org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(world, i, j + 1, k, this, 0); // CraftBukkit
- world.setData(i, j, k, 0, 4);
- } else {
- world.setData(i, j, k, i1 + 1, 4);
- }
+ if (i1 >= (byte) range(3, (world.growthOdds / world.spigotConfig.caneModifier * 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, 4);
} else {
+ org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(world, i, j + 1, k, this.id, 0); // CraftBukkit
+ world.setData(i, j, k, 0, 4);
+ } else {
+ world.setData(i, j, k, i1 + 1, 4);
}
}
}
diff --git a/src/main/java/net/minecraft/server/BlockSapling.java b/src/main/java/net/minecraft/server/BlockSapling.java
index 706d6c9..fe675b3 100644
index 830eb65..24c95ef 100644
--- a/src/main/java/net/minecraft/server/BlockSapling.java
+++ b/src/main/java/net/minecraft/server/BlockSapling.java
@@ -25,7 +25,7 @@ public class BlockSapling extends BlockFlower {
@@ -26,7 +26,7 @@ public class BlockSapling extends BlockPlant implements IBlockFragilePlantElemen
public void a(World world, int i, int j, int k, Random random) {
if (!world.isStatic) {
super.a(world, i, j, k, random);
@ -119,12 +133,12 @@ index 706d6c9..fe675b3 100644
}
}
diff --git a/src/main/java/net/minecraft/server/BlockStem.java b/src/main/java/net/minecraft/server/BlockStem.java
index f2d4e57..5fe0a81 100644
index 4fae805..9c8e816 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 {
@@ -26,7 +26,7 @@ public class BlockStem extends BlockPlant implements IBlockFragilePlantElement {
if (world.getLightLevel(i, j + 1, k) >= 9) {
float f = this.m(world, i, j, k);
float f = this.n(world, i, j, k);
- if (random.nextInt((int) (25.0F / f) + 1) == 0) {
+ if (random.nextInt((int) (world.growthOdds / (this.id == Block.PUMPKIN_STEM.id ? world.spigotConfig.pumpkinModifier : world.spigotConfig.melonModifier) * (25.0F / f)) + 1) == 0) { // Spigot
@ -173,5 +187,5 @@ index 478d9e6..1c598ed 100644
+ }
}
--
1.8.1.2
1.8.3.2

View File

@ -1,30 +1,28 @@
From a47bb2a8c87e3c9d9ea238e46f01c984c71428f8 Mon Sep 17 00:00:00 2001
From ff637c04c532b97e577121ac1790ff689ad7bf31 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Tue, 11 Jun 2013 12:09:45 +1000
Subject: [PATCH] More Efficient Chunk Save Queue
diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
index 8a21f35..ba6d32f 100644
index d5cf88d..1e1499e 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;
@@ -16,6 +16,7 @@ import org.apache.logging.log4j.Logger;
public class ChunkRegionLoader implements IAsyncChunkSaver, IChunkLoader {
public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver {
- private List a = new ArrayList();
- private Set b = new HashSet();
+ private java.util.LinkedHashMap<ChunkCoordIntPair, PendingChunkToSave> pendingSaves = new java.util.LinkedHashMap<ChunkCoordIntPair, PendingChunkToSave>(); // Spigot
private Object c = new Object();
private final File d;
@@ -27,13 +26,11 @@ public class ChunkRegionLoader implements IAsyncChunkSaver, IChunkLoader {
private static final Logger a = LogManager.getLogger();
private List b = new ArrayList();
private Set c = new HashSet();
@@ -31,13 +32,11 @@ public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver {
ChunkCoordIntPair chunkcoordintpair = new ChunkCoordIntPair(i, j);
synchronized (this.c) {
- if (this.b.contains(chunkcoordintpair)) {
- for (int k = 0; k < this.a.size(); ++k) {
- if (((PendingChunkToSave) this.a.get(k)).a.equals(chunkcoordintpair)) {
synchronized (this.d) {
- if (this.c.contains(chunkcoordintpair)) {
- for (int k = 0; k < this.b.size(); ++k) {
- if (((PendingChunkToSave) this.b.get(k)).a.equals(chunkcoordintpair)) {
- return true;
- }
- }
@ -36,15 +34,15 @@ index 8a21f35..ba6d32f 100644
+ // Spigot end
}
return RegionFileCache.a(this.d, i, j).chunkExists(i & 31, j & 31);
@@ -60,14 +57,12 @@ public class ChunkRegionLoader implements IAsyncChunkSaver, IChunkLoader {
Object object = this.c;
return RegionFileCache.a(this.e, i, j).chunkExists(i & 31, j & 31);
@@ -64,14 +63,12 @@ public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver {
Object object = this.d;
synchronized (this.c) {
- if (this.b.contains(chunkcoordintpair)) {
- for (int k = 0; k < this.a.size(); ++k) {
- if (((PendingChunkToSave) this.a.get(k)).a.equals(chunkcoordintpair)) {
- nbttagcompound = ((PendingChunkToSave) this.a.get(k)).b;
synchronized (this.d) {
- if (this.c.contains(chunkcoordintpair)) {
- for (int k = 0; k < this.b.size(); ++k) {
- if (((PendingChunkToSave) this.b.get(k)).a.equals(chunkcoordintpair)) {
- nbttagcompound = ((PendingChunkToSave) this.b.get(k)).b;
- break;
- }
- }
@ -57,14 +55,14 @@ index 8a21f35..ba6d32f 100644
}
if (nbttagcompound == null) {
@@ -148,17 +143,11 @@ public class ChunkRegionLoader implements IAsyncChunkSaver, IChunkLoader {
Object object = this.c;
@@ -151,17 +148,11 @@ public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver {
Object object = this.d;
synchronized (this.c) {
- if (this.b.contains(chunkcoordintpair)) {
- for (int i = 0; i < this.a.size(); ++i) {
- if (((PendingChunkToSave) this.a.get(i)).a.equals(chunkcoordintpair)) {
- this.a.set(i, new PendingChunkToSave(chunkcoordintpair, nbttagcompound));
synchronized (this.d) {
- if (this.c.contains(chunkcoordintpair)) {
- for (int i = 0; i < this.b.size(); ++i) {
- if (((PendingChunkToSave) this.b.get(i)).a.equals(chunkcoordintpair)) {
- this.b.set(i, new PendingChunkToSave(chunkcoordintpair, nbttagcompound));
- return;
- }
- }
@ -73,24 +71,24 @@ index 8a21f35..ba6d32f 100644
+ return;
}
-
- this.a.add(new PendingChunkToSave(chunkcoordintpair, nbttagcompound));
- this.b.add(chunkcoordintpair);
- this.b.add(new PendingChunkToSave(chunkcoordintpair, nbttagcompound));
- this.c.add(chunkcoordintpair);
+ // Spigot end
FileIOThread.a.a(this);
}
}
@@ -168,12 +157,14 @@ public class ChunkRegionLoader implements IAsyncChunkSaver, IChunkLoader {
Object object = this.c;
@@ -171,12 +162,14 @@ public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver {
Object object = this.d;
synchronized (this.c) {
- if (this.a.isEmpty()) {
synchronized (this.d) {
- if (this.b.isEmpty()) {
+ // Spigot start
+ if (this.pendingSaves.isEmpty()) {
return false;
}
- pendingchunktosave = (PendingChunkToSave) this.a.remove(0);
- this.b.remove(pendingchunktosave.a);
- pendingchunktosave = (PendingChunkToSave) this.b.remove(0);
- this.c.remove(pendingchunktosave.a);
+ pendingchunktosave = this.pendingSaves.values().iterator().next();
+ this.pendingSaves.remove(pendingchunktosave.a);
+ // Spigot end
@ -98,5 +96,5 @@ index 8a21f35..ba6d32f 100644
if (pendingchunktosave != null) {
--
1.8.1.2
1.8.3.2

View File

@ -1,14 +1,14 @@
From 60ef2965fff046cd970c123c931facd7ee291f39 Mon Sep 17 00:00:00 2001
From 4aa2e37f77d90bcae16a89d4aff9727bd4a1fcab Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Tue, 11 Jun 2013 12:17:37 +1000
Subject: [PATCH] More Efficient GetCubes
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 15d2a62..8ac0e8e 100644
index f0a8024..a8dbc44 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -1044,19 +1044,47 @@ public abstract class World implements IBlockAccess {
@@ -1015,16 +1015,42 @@ public abstract class World implements IBlockAccess {
int i1 = MathHelper.floor(axisalignedbb.c);
int j1 = MathHelper.floor(axisalignedbb.f + 1.0D);
@ -16,10 +16,12 @@ index 15d2a62..8ac0e8e 100644
- for (int l1 = i1; l1 < j1; ++l1) {
- if (this.isLoaded(k1, 64, l1)) {
- for (int i2 = k - 1; i2 < l; ++i2) {
- Block block = Block.byId[this.getTypeId(k1, i2, l1)];
- Block block;
-
- if (block != null) {
- block.a(this, k1, i2, l1, axisalignedbb, this.M, entity);
- if (k1 >= -30000000 && k1 < 30000000 && l1 >= -30000000 && l1 < 30000000) {
- block = this.getType(k1, i2, l1);
- } else {
- block = Blocks.STONE;
+ // Spigot start
+ int ystart = ( ( k - 1 ) < 0 ) ? 0 : ( k - 1 );
+ for ( int chunkx = ( i >> 4 ); chunkx <= ( ( j - 1 ) >> 4 ); chunkx++ )
@ -53,10 +55,13 @@ index 15d2a62..8ac0e8e 100644
+ if ( block != null )
+ {
+ block.a( this, x, y, z, axisalignedbb, this.M, entity );
+ // SPIGOT TODO: THIS DIFF
+ }
+ }
}
}
block.a(this, k1, i2, l1, axisalignedbb, this.M, entity);
@@ -1032,6 +1058,7 @@ public abstract class World implements IBlockAccess {
}
}
}
@ -65,5 +70,5 @@ index 15d2a62..8ac0e8e 100644
double d0 = 0.25D;
List list = this.getEntities(entity, axisalignedbb.grow(d0, d0, d0));
--
1.8.1.2
1.8.3.2

View File

@ -1,4 +1,4 @@
From 51dda8f0e8253d99806ada3cc33de13402f3504e Mon Sep 17 00:00:00 2001
From 6caca256eacb7bcf592e0c987f6b2bc3e3365f2d Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sat, 23 Mar 2013 09:46:33 +1100
Subject: [PATCH] Merge tweaks and configuration
@ -6,13 +6,13 @@ Subject: [PATCH] Merge tweaks and configuration
This allows the merging of Experience orbs, as well as the configuration of the merge radius of items. Additionally it refactors the merge algorithm to be a better experience for players.
diff --git a/src/main/java/net/minecraft/server/EntityItem.java b/src/main/java/net/minecraft/server/EntityItem.java
index 8e1b024..0b8756b 100644
index bbcf674..08b9ac8 100644
--- a/src/main/java/net/minecraft/server/EntityItem.java
+++ b/src/main/java/net/minecraft/server/EntityItem.java
@@ -112,7 +112,10 @@ public class EntityItem extends Entity {
@@ -117,7 +117,10 @@ public class EntityItem extends Entity {
}
private void e() {
private void k() {
- Iterator iterator = this.world.a(EntityItem.class, this.boundingBox.grow(0.5D, 0.0D, 0.5D)).iterator();
+ // Spigot start
+ double radius = world.spigotConfig.itemMerge;
@ -21,7 +21,7 @@ index 8e1b024..0b8756b 100644
while (iterator.hasNext()) {
EntityItem entityitem = (EntityItem) iterator.next();
@@ -141,11 +144,13 @@ public class EntityItem extends Entity {
@@ -148,11 +151,13 @@ public class EntityItem extends Entity {
} else if (itemstack1.count + itemstack.count > itemstack1.getMaxStackSize()) {
return false;
} else {
@ -41,10 +41,10 @@ index 8e1b024..0b8756b 100644
}
} else {
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 8ac0e8e..0968ed8 100644
index a8dbc44..c91ae63 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -956,6 +956,23 @@ public abstract class World implements IBlockAccess {
@@ -927,6 +927,23 @@ public abstract class World implements IBlockAccess {
// Not all projectiles extend EntityProjectile, so check for Bukkit interface instead
event = CraftEventFactory.callProjectileLaunchEvent(entity);
}
@ -92,5 +92,5 @@ index 1c598ed..610f753 100644
+ }
}
--
1.8.1.2
1.8.3.2

View File

@ -1,86 +0,0 @@
From f87755a50f02b5c85c289b1cbb63b5333044c631 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Tue, 23 Apr 2013 11:22:07 +1000
Subject: [PATCH] Proxy IP Filter
diff --git a/src/main/java/net/minecraft/server/ThreadLoginVerifier.java b/src/main/java/net/minecraft/server/ThreadLoginVerifier.java
index 2ce2e3a..f87ebf9 100644
--- a/src/main/java/net/minecraft/server/ThreadLoginVerifier.java
+++ b/src/main/java/net/minecraft/server/ThreadLoginVerifier.java
@@ -28,6 +28,7 @@ class ThreadLoginVerifier extends Thread {
public void run() {
try {
+ if (org.spigotmc.SpamHaus.filterIp(pendingConnection)) return; // Spigot
String s = (new BigInteger(MinecraftEncryption.a(PendingConnection.a(this.pendingConnection), PendingConnection.b(this.pendingConnection).H().getPublic(), PendingConnection.c(this.pendingConnection)))).toString(16);
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.openConnection(PendingConnection.b(this.pendingConnection).ap()).getInputStream()));
diff --git a/src/main/java/org/spigotmc/SpamHaus.java b/src/main/java/org/spigotmc/SpamHaus.java
new file mode 100644
index 0000000..55d8d12
--- /dev/null
+++ b/src/main/java/org/spigotmc/SpamHaus.java
@@ -0,0 +1,44 @@
+package org.spigotmc;
+
+import java.net.InetAddress;
+import net.minecraft.server.PendingConnection;
+
+public class SpamHaus
+{
+
+ private SpamHaus()
+ {
+ }
+
+ public static boolean filterIp(PendingConnection con)
+ {
+ if ( SpigotConfig.preventProxies )
+ {
+ try
+ {
+ InetAddress address = con.getSocket().getInetAddress();
+ String ip = address.getHostAddress();
+
+ if ( !address.isLoopbackAddress() )
+ {
+ String[] split = ip.split( "\\." );
+ StringBuilder lookup = new StringBuilder();
+ for ( int i = split.length - 1; i >= 0; i-- )
+ {
+ lookup.append( split[i] );
+ lookup.append( "." );
+ }
+ lookup.append( "xbl.spamhaus.org." );
+ if ( InetAddress.getByName( lookup.toString() ) != null )
+ {
+ con.disconnect( "Your IP address (" + ip + ") is flagged as unsafe by spamhaus.org/xbl" );
+ return true;
+ }
+ }
+ } catch ( Exception ex )
+ {
+ }
+ }
+ return false;
+ }
+}
diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java
index 358d5ec..83696e9 100644
--- a/src/main/java/org/spigotmc/SpigotConfig.java
+++ b/src/main/java/org/spigotmc/SpigotConfig.java
@@ -117,4 +117,10 @@ public class SpigotConfig
config.addDefault( path, def );
return config.getString( path, config.getString( path ) );
}
+
+ public static boolean preventProxies;
+ private static void preventProxies()
+ {
+ preventProxies = getBoolean( "settings.prevent-proxies", false );
+ }
}
--
1.8.1.2

View File

@ -1,4 +1,4 @@
From 0db87d9664687b450e80bf526eb4f44e17bdc6a3 Mon Sep 17 00:00:00 2001
From 78255c9512516c665d4f93bf0b984d479cf5b824 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Fri, 21 Jun 2013 17:13:47 +1000
Subject: [PATCH] LongHash Tweaks
@ -220,5 +220,5 @@ index 0000000..9416f6e
+ }
+}
--
1.8.1.msysgit.1
1.8.3.2

View File

@ -1,4 +1,4 @@
From dafcb9453f2b6debf6e9613b3a402a85f28e654a Mon Sep 17 00:00:00 2001
From d4776c8e08161059f62919e41423f47216e7db43 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] Async Operation Catching
@ -6,10 +6,10 @@ Subject: [PATCH] Async Operation Catching
Catch and throw an exception when a potentially unsafe operation occurs on a thread other than the main server thread.
diff --git a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java
index afe8735..8fc6c12 100644
index ad4e3a2..32f8c3f 100644
--- a/src/main/java/net/minecraft/server/Block.java
+++ b/src/main/java/net/minecraft/server/Block.java
@@ -342,9 +342,13 @@ public class Block {
@@ -433,9 +433,13 @@ public class Block {
return 10;
}
@ -18,7 +18,7 @@ index afe8735..8fc6c12 100644
+ if (Thread.currentThread() != MinecraftServer.getServer().primaryThread) throw new IllegalStateException("Asynchronous block onPlace!"); // Spigot
+ }
- public void remove(World world, int i, int j, int k, int l, int i1) {}
- public void remove(World world, int i, int j, int k, Block block, int l) {}
+ public void remove(World world, int i, int j, int k, int l, int i1) {
+ if (Thread.currentThread() != MinecraftServer.getServer().primaryThread) throw new IllegalStateException("Asynchronous block remove!"); // Spigot
+ }
@ -26,30 +26,30 @@ index afe8735..8fc6c12 100644
public int a(Random random) {
return 1;
diff --git a/src/main/java/net/minecraft/server/EntityTracker.java b/src/main/java/net/minecraft/server/EntityTracker.java
index 1d9203b..ebbef6a 100644
index 7447e42..97d0bbb 100644
--- a/src/main/java/net/minecraft/server/EntityTracker.java
+++ b/src/main/java/net/minecraft/server/EntityTracker.java
@@ -87,6 +87,7 @@ public class EntityTracker {
@@ -91,6 +91,7 @@ public class EntityTracker {
}
public void addEntity(Entity entity, int i, int j, boolean flag) {
+ if (Thread.currentThread() != MinecraftServer.getServer().primaryThread) throw new IllegalStateException("Asynchronous entity track!"); // Spigot
if (i > this.d) {
i = this.d;
if (i > this.e) {
i = this.e;
}
@@ -122,6 +123,7 @@ public class EntityTracker {
@@ -125,6 +126,7 @@ public class EntityTracker {
}
public void untrackEntity(Entity entity) {
+ if (Thread.currentThread() != MinecraftServer.getServer().primaryThread) throw new IllegalStateException("Asynchronous entity untrack!"); // Spigot
if (entity instanceof EntityPlayer) {
EntityPlayer entityplayer = (EntityPlayer) entity;
Iterator iterator = this.b.iterator();
Iterator iterator = this.c.iterator();
diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java
index 8545b50..1f5a652 100644
index 9f818cf..8052ea6 100644
--- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java
+++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java
@@ -297,6 +297,7 @@ public class EntityTrackerEntry {
@@ -299,6 +299,7 @@ public class EntityTrackerEntry {
}
public void updatePlayer(EntityPlayer entityplayer) {
@ -57,19 +57,19 @@ index 8545b50..1f5a652 100644
if (entityplayer != this.tracker) {
double d0 = entityplayer.locX - (double) (this.xLoc / 32);
double d1 = entityplayer.locZ - (double) (this.zLoc / 32);
@@ -513,6 +514,7 @@ public class EntityTrackerEntry {
@@ -515,6 +516,7 @@ public class EntityTrackerEntry {
}
public void clear(EntityPlayer entityplayer) {
+ if (Thread.currentThread() != MinecraftServer.getServer().primaryThread) throw new IllegalStateException("Asynchronous player tracker clear!"); // Spigot
if (this.trackedPlayers.contains(entityplayer)) {
this.trackedPlayers.remove(entityplayer);
entityplayer.removeQueue.add(Integer.valueOf(this.tracker.id));
entityplayer.removeQueue.add(Integer.valueOf(this.tracker.getId()));
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 0968ed8..4ec4d08 100644
index c91ae63..967565b 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -925,6 +925,7 @@ public abstract class World implements IBlockAccess {
@@ -896,6 +896,7 @@ public abstract class World implements IBlockAccess {
}
public boolean addEntity(Entity entity, SpawnReason spawnReason) { // Changed signature, added SpawnReason
@ -77,7 +77,7 @@ index 0968ed8..4ec4d08 100644
if (entity == null) return false;
// CraftBukkit end
@@ -1031,6 +1032,7 @@ public abstract class World implements IBlockAccess {
@@ -1002,6 +1003,7 @@ public abstract class World implements IBlockAccess {
}
public void removeEntity(Entity entity) {
@ -85,16 +85,16 @@ index 0968ed8..4ec4d08 100644
entity.die();
if (entity instanceof EntityHuman) {
this.players.remove(entity);
@@ -2448,6 +2450,7 @@ public abstract class World implements IBlockAccess {
@@ -2398,6 +2400,7 @@ public abstract class World implements IBlockAccess {
}
public void a(List list) {
+ if (Thread.currentThread() != MinecraftServer.getServer().primaryThread) throw new IllegalStateException("Asynchronous entity world add!"); // Spigot
// CraftBukkit start
// this.entityList.addAll(list);
Entity entity = null;
for (int i = 0; i < list.size(); ++i) {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index fc71833..7601fb5 100644
index 5938b37..0f21e89 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -159,6 +159,7 @@ public class CraftWorld implements World {
@ -122,17 +122,17 @@ index fc71833..7601fb5 100644
if (generate) {
// Use the default variant of loadChunk when generate == true.
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 3cf0c28..988c6e7 100644
index 9add7bf..0b8b324 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -218,6 +218,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
@@ -230,6 +230,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public void kickPlayer(String message) {
+ if (Thread.currentThread() != MinecraftServer.getServer().primaryThread) throw new IllegalStateException("Asynchronous player kick!"); // Spigot
if (getHandle().playerConnection == null) return;
getHandle().playerConnection.disconnect(message == null ? "" : message);
--
1.8.1.2
1.8.3.2

View File

@ -1,4 +1,4 @@
From a400608cb3d78216f49772c1155e2e8c0a0f5490 Mon Sep 17 00:00:00 2001
From ff4ef17762df254ce5e8a0842b247d59cb1524dd Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sat, 23 Mar 2013 09:52:41 +1100
Subject: [PATCH] View Distance
@ -19,10 +19,10 @@ index 4e0398c..ae4ca63 100644
} else {
this.f = i;
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index b073b90..1a34feb 100644
index 812e887..9f09a3d 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
@@ -54,7 +54,7 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
// CraftBukkit end
this.server = minecraftserver;
this.tracker = new EntityTracker(this);
@ -48,5 +48,5 @@ index 610f753..3e66d79 100644
+ }
}
--
1.8.1.2
1.8.3.2

View File

@ -1,4 +1,4 @@
From d10857c13d5eea02e7d70951421a73469468b7ca Mon Sep 17 00:00:00 2001
From 1daa2b921a3a38f046c2281993f1b676ecac515a Mon Sep 17 00:00:00 2001
From: Mike Primm <mike@primmhome.com>
Date: Sun, 13 Jan 2013 03:49:07 -0800
Subject: [PATCH] Compressed Nibble Arrays
@ -12,10 +12,10 @@ Finish up NibbleArray lightening work - use for Snapshots, reduce copies
Fix nibble handling with NBT - arrays aren't copied by NBTByteArray
diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
index ba6d32f..0b086a2 100644
index 1e1499e..76b081a 100644
--- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java
+++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
@@ -218,15 +218,15 @@ public class ChunkRegionLoader implements IAsyncChunkSaver, IChunkLoader {
@@ -225,15 +225,15 @@ public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver {
nbttagcompound1.setByte("Y", (byte) (chunksection.getYPosition() >> 4 & 255));
nbttagcompound1.setByteArray("Blocks", chunksection.getIdArray());
if (chunksection.getExtendedIdArray() != null) {
@ -37,10 +37,10 @@ index ba6d32f..0b086a2 100644
nbttaglist.add(nbttagcompound1);
diff --git a/src/main/java/net/minecraft/server/ChunkSection.java b/src/main/java/net/minecraft/server/ChunkSection.java
index 3f67a19..e69afba 100644
index a05efa0..360de1a 100644
--- a/src/main/java/net/minecraft/server/ChunkSection.java
+++ b/src/main/java/net/minecraft/server/ChunkSection.java
@@ -134,7 +134,8 @@ public class ChunkSection {
@@ -140,7 +140,8 @@ public class ChunkSection {
}
}
} else {
@ -50,7 +50,7 @@ index 3f67a19..e69afba 100644
for (int off = 0, off2 = 0; off < blkIds.length;) {
byte extid = ext[off2];
int l = (blkIds[off] & 0xFF) | ((extid & 0xF) << 8); // Even data
@@ -165,6 +166,12 @@ public class ChunkSection {
@@ -171,6 +172,12 @@ public class ChunkSection {
off++;
off2++;
}
@ -63,7 +63,7 @@ index 3f67a19..e69afba 100644
}
this.nonEmptyBlockCount = cntNonEmpty;
this.tickingBlockCount = cntTicking;
@@ -225,12 +232,11 @@ public class ChunkSection {
@@ -224,12 +231,11 @@ public class ChunkSection {
public void setExtendedIdArray(NibbleArray nibblearray) {
// CraftBukkit start - Don't hang on to an empty nibble array
boolean empty = true;
@ -80,7 +80,7 @@ index 3f67a19..e69afba 100644
if (empty) {
return;
@@ -254,11 +260,11 @@ public class ChunkSection {
@@ -253,11 +259,11 @@ public class ChunkSection {
// CraftBukkit start - Validate array lengths
private NibbleArray validateNibbleArray(NibbleArray nibbleArray) {
@ -330,7 +330,7 @@ index 4e67e27..fa10397 100644
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
index 1a21516..6921206 100644
index b2c6ef4..55f5225 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
@@ -174,7 +174,18 @@ public class CraftChunk implements Chunk {
@ -402,5 +402,5 @@ index 1a21516..6921206 100644
}
--
1.8.1.2
1.8.3.2

View File

@ -1,17 +1,20 @@
From c876ff9dabc9bf638b9fcb1fd21521904c87193a Mon Sep 17 00:00:00 2001
From 5778aaae32fd276df37a9941ec8c281431bd3803 Mon Sep 17 00:00:00 2001
From: Mike Primm <mike@primmhome.com>
Date: Wed, 16 Jan 2013 15:27:22 -0600
Subject: [PATCH] Sync Free Chunk Reference Cache
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 4ec4d08..d5552b6 100644
index 967565b..93c476c 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -300,15 +300,13 @@ public abstract class World implements IBlockAccess {
@@ -290,20 +290,18 @@ public abstract class World implements IBlockAccess {
return this.getChunkAt(i >> 4, j >> 4);
}
// CraftBukkit start
+ // Spigot start
public Chunk getChunkAt(int i, int j) {
- // CraftBukkit start
- Chunk result = null;
- synchronized (this.chunkLock) {
- if (this.lastChunkAccessed == null || this.lastXAccessed != i || this.lastZAccessed != j) {
@ -28,8 +31,12 @@ index 4ec4d08..d5552b6 100644
}
+ //}
return result;
- // CraftBukkit end
}
// CraftBukkit end
+ // Spigot end
public boolean setTypeAndData(int i, int j, int k, Block block, int l, int i1) {
if (i >= -30000000 && k >= -30000000 && i < 30000000 && k < 30000000) {
--
1.8.1.2
1.8.3.2

View File

@ -1,14 +1,14 @@
From 608e4269f7d6eaa3db5509d6c696185e35a351e9 Mon Sep 17 00:00:00 2001
From 9b65fde8e1bbddb11b5e9a8faa5528e4dca6e9c1 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] Highly Optimized Tick Loop
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 029131d..d3a4265 100644
index cdc41b4..1a9df71 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -87,6 +87,12 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
@@ -101,6 +101,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
@ -19,37 +19,42 @@ index 029131d..d3a4265 100644
+ private static long catchupTime = 0;
+ // Spigot end
public MinecraftServer(OptionSet options) { // CraftBukkit - signature file -> OptionSet
this.c = Proxy.NO_PROXY;
@@ -391,39 +397,23 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
public MinecraftServer(OptionSet options, Proxy proxy) { // CraftBukkit - signature file -> OptionSet
i = this;
@@ -412,45 +418,23 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
public void run() {
try {
if (this.init()) {
- long i = aq();
- long i = ap();
- long j = 0L;
-
- for (long j = 0L; this.isRunning; this.R = true) {
- long k = aq();
- this.p.setMOTD(new ChatComponentText(this.motd));
- this.p.setServerInfo(new ServerPingServerData("1.7.2", 4));
- this.a(this.p);
-
- while (this.isRunning) {
- long k = ap();
- long l = k - i;
-
- if (l > 2000L && i - this.S >= 15000L) {
- if (l > 2000L && i - this.O >= 15000L) {
- if (this.server.getWarnOnOverload()) // CraftBukkit - Added option to suppress warning messages
- this.getLogger().warning("Can\'t keep up! Did the system time change, or is the server overloaded?");
- h.warn("Can\'t keep up! Did the system time change, or is the server overloaded? Running {}ms behind, skipping {} tick(s)", new Object[] { Long.valueOf(l), Long.valueOf(l / 50L)});
- l = 2000L;
- this.S = i;
- this.O = i;
- }
-
- if (l < 0L) {
- this.getLogger().warning("Time ran backwards! Did the system time change?");
- h.warn("Time ran backwards! Did the system time change?");
- l = 0L;
- }
-
- j += l;
- i = k;
- if (this.worlds.get(0).everyoneDeeplySleeping()) { // CraftBukkit
- this.s();
- this.t();
- j = 0L;
+ // Spigot start
+ for (long lastTick = 0L; this.isRunning; this.R = true) {
+ for (long lastTick = 0L; this.isRunning;) {
+ long curTime = System.nanoTime();
+ long wait = TICK_TIME - (curTime - lastTick) - catchupTime;
+ if (wait > 0) {
@ -60,16 +65,17 @@ index 029131d..d3a4265 100644
- while (j > 50L) {
- MinecraftServer.currentTick = (int) (System.currentTimeMillis() / 50); // CraftBukkit
- j -= 50L;
- this.s();
- this.t();
- }
+ catchupTime = Math.min(TICK_TIME * TPS, Math.abs(wait));
}
-
- Thread.sleep(1L);
- this.N = true;
+ currentTPS = (currentTPS * 0.95) + (1E9 / (curTime - lastTick) * 0.05);
+ lastTick = curTime;
+ MinecraftServer.currentTick++;
+ this.s();
+ this.t();
}
+ // Spigot end
} else {
@ -117,7 +123,7 @@ index 0000000..f114a31
+ }
+}
diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java
index 8f42042..693518d 100644
index 2f2752a..b5d611b 100644
--- a/src/main/java/org/spigotmc/SpigotConfig.java
+++ b/src/main/java/org/spigotmc/SpigotConfig.java
@@ -14,6 +14,7 @@ import net.minecraft.server.MinecraftServer;
@ -128,9 +134,9 @@ index 8f42042..693518d 100644
public class SpigotConfig
{
@@ -123,4 +124,9 @@ public class SpigotConfig
{
preventProxies = getBoolean( "settings.prevent-proxies", false );
@@ -117,4 +118,9 @@ public class SpigotConfig
config.addDefault( path, def );
return config.getString( path, config.getString( path ) );
}
+
+ private static void tpsCommand()
@ -139,5 +145,5 @@ index 8f42042..693518d 100644
+ }
}
--
1.8.1.2
1.8.3.2

View File

@ -1,4 +1,4 @@
From 8eccd95e302141a9334eac45ed42f09658e99ac3 Mon Sep 17 00:00:00 2001
From 75e5b9146eb945a1f5418ebab5da804264db3067 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
@ -6,10 +6,10 @@ Subject: [PATCH] Improved Timings System
Tracks nearly every point of minecraft internals and plugin events to give a good quick overview on what is causing TPS loss.
diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java
index b73f69c..17934c0 100644
index a702fe8..e642388 100644
--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java
@@ -102,6 +102,7 @@ public class ChunkProviderServer implements IChunkProvider {
@@ -107,6 +107,7 @@ public class ChunkProviderServer implements IChunkProvider {
// CraftBukkit end
if (chunk == null) {
@ -17,16 +17,16 @@ index b73f69c..17934c0 100644
chunk = this.loadChunk(i, j);
if (chunk == null) {
if (this.chunkProvider == null) {
@@ -140,6 +141,7 @@ public class ChunkProviderServer implements IChunkProvider {
@@ -143,6 +144,7 @@ public class ChunkProviderServer implements IChunkProvider {
}
// CraftBukkit end
chunk.a(this, this, i, j);
+ org.bukkit.craftbukkit.SpigotTimings.syncChunkLoadTimer.stopTiming(); // Spigot
}
// 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 2158088..d65c123 100644
index fec07f8..0c1350e 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -14,6 +14,7 @@ import org.bukkit.block.BlockFace;
@ -43,38 +43,39 @@ index 2158088..d65c123 100644
+ public CustomTimingsHandler tickTimer = org.bukkit.craftbukkit.SpigotTimings.getEntityTimings(this); // Spigot
+
public Entity(World world) {
this.id = entityCount++;
this.l = 1.0D;
@@ -405,6 +408,7 @@ public abstract class Entity {
public int getId() {
return this.id;
}
@@ -423,6 +426,8 @@ public abstract class Entity {
return;
}
// CraftBukkit end
+
+ org.bukkit.craftbukkit.SpigotTimings.entityMoveTimer.startTiming(); // Spigot
if (this.Z) {
if (this.Y) {
this.boundingBox.d(d0, d1, d2);
this.locX = (this.boundingBox.a + this.boundingBox.d) / 2.0D;
@@ -713,6 +717,7 @@ public abstract class Entity {
@@ -731,6 +736,7 @@ public abstract class Entity {
this.world.methodProfiler.b();
}
+ org.bukkit.craftbukkit.SpigotTimings.entityMoveTimer.stopTiming(); // Spigot
}
protected void D() {
protected String H() {
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index d3a4265..dec46bd 100644
index 1a9df71..5a07791 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -7,7 +7,6 @@ import java.security.KeyPair;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@@ -10,7 +10,6 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
-import java.util.Iterator;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.logging.Level;
@@ -20,6 +19,7 @@ import jline.console.ConsoleReader;
import java.util.Random;
import java.util.UUID;
@@ -36,6 +35,7 @@ import jline.console.ConsoleReader;
import joptsimple.OptionSet;
import org.bukkit.World.Environment;
@ -82,26 +83,26 @@ index d3a4265..dec46bd 100644
import org.bukkit.craftbukkit.util.Waitable;
import org.bukkit.event.server.RemoteServerCommandEvent;
import org.bukkit.event.world.WorldSaveEvent;
@@ -411,7 +411,10 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
@@ -432,7 +432,10 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
currentTPS = (currentTPS * 0.95) + (1E9 / (curTime - lastTick) * 0.05);
lastTick = curTime;
MinecraftServer.currentTick++;
+ SpigotTimings.serverTickTimer.startTiming();
this.s();
this.t();
+ SpigotTimings.serverTickTimer.stopTiming();
+ org.spigotmc.CustomTimingsHandler.tick();
}
// Spigot end
} else {
@@ -510,6 +513,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
public void t() {
@@ -557,6 +560,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
public void u() {
this.methodProfiler.a("levels");
+ SpigotTimings.schedulerTimer.startTiming(); // Spigot
// CraftBukkit start
this.server.getScheduler().mainThreadHeartbeat(this.ticks);
@@ -518,7 +522,10 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
@@ -565,7 +569,10 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
processQueue.remove().run();
}
@ -112,7 +113,7 @@ index d3a4265..dec46bd 100644
// Send time updates to everyone, it will get the right time from the world the player is in.
if (this.ticks % 20 == 0) {
@@ -570,7 +577,9 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
@@ -617,7 +624,9 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
this.methodProfiler.b();
this.methodProfiler.a("tracker");
@ -122,12 +123,12 @@ index d3a4265..dec46bd 100644
this.methodProfiler.b();
this.methodProfiler.b();
// } // CraftBukkit
@@ -579,14 +588,20 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
@@ -626,14 +635,20 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
}
this.methodProfiler.c("connection");
+ SpigotTimings.connectionTimer.startTiming(); // Spigot
this.ag().b();
this.ag().c();
+ SpigotTimings.connectionTimer.stopTiming(); // Spigot
this.methodProfiler.c("players");
+ SpigotTimings.playerListTimer.startTiming(); // Spigot
@ -136,18 +137,18 @@ index d3a4265..dec46bd 100644
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.m.size(); ++i) {
((IUpdatePlayerListBox) this.m.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 e4cb5c7..8443731 100644
index 2419ac2..4e41695 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -953,6 +953,7 @@ public class PlayerConnection extends Connection {
@@ -908,6 +908,7 @@ public class PlayerConnection implements PacketPlayInListener {
// CraftBukkit end
private void handleCommand(String s) {
@ -155,7 +156,7 @@ index e4cb5c7..8443731 100644
// CraftBukkit start
CraftPlayer player = this.getPlayer();
@@ -960,19 +961,23 @@ public class PlayerConnection extends Connection {
@@ -915,19 +916,23 @@ public class PlayerConnection implements PacketPlayInListener {
this.server.getPluginManager().callEvent(event);
if (event.isCancelled()) {
@ -164,7 +165,7 @@ index e4cb5c7..8443731 100644
}
try {
this.minecraftServer.getLogger().info(event.getPlayer().getName() + " issued server command: " + event.getMessage()); // CraftBukkit
this.c.info(event.getPlayer().getName() + " issued server command: " + event.getMessage()); // CraftBukkit
if (this.server.dispatchCommand(event.getPlayer(), event.getMessage().substring(1))) {
+ org.bukkit.craftbukkit.SpigotTimings.playerCommandTimer.stopTiming(); // Spigot
return;
@ -176,16 +177,16 @@ index e4cb5c7..8443731 100644
return;
}
+ org.bukkit.craftbukkit.SpigotTimings.playerCommandTimer.stopTiming(); // Spigot
//this.minecraftServer.getCommandHandler().a(this.player, s);
// CraftBukkit end
/* 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 f4be980..6ae7cb3 100644
index 811f1a4..3de32fe 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;
import java.util.Map;
import java.util.concurrent.Callable;
@@ -7,10 +7,12 @@ import java.util.concurrent.Callable;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
+import org.spigotmc.CustomTimingsHandler; // Spigot
import org.bukkit.inventory.InventoryHolder; // CraftBukkit
@ -193,11 +194,11 @@ index f4be980..6ae7cb3 100644
public class TileEntity {
+ public CustomTimingsHandler tickTimer = org.bukkit.craftbukkit.SpigotTimings.getTileEntityTimings(this); // Spigot
private static Map a = new HashMap();
private static Map b = new HashMap();
protected World world;
private static final Logger a = LogManager.getLogger();
private static Map i = new HashMap();
private static Map j = new HashMap();
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index ebbda63..3143d6e 100644
index 93c476c..b1f294d 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;
@ -208,7 +209,7 @@ index ebbda63..3143d6e 100644
import org.bukkit.craftbukkit.util.UnsafeList;
import org.bukkit.generator.ChunkGenerator;
import org.bukkit.craftbukkit.CraftServer;
@@ -123,6 +124,8 @@ public abstract class World implements IBlockAccess {
@@ -131,6 +132,8 @@ public abstract class World implements IBlockAccess {
final Object chunkLock = new Object();
public final org.spigotmc.SpigotWorldConfig spigotConfig; // Spigot
@ -217,7 +218,7 @@ index ebbda63..3143d6e 100644
public CraftWorld getWorld() {
return this.world;
}
@@ -200,6 +203,7 @@ public abstract class World implements IBlockAccess {
@@ -210,6 +213,7 @@ public abstract class World implements IBlockAccess {
this.a();
this.getServer().addWorld(this.world); // CraftBukkit
@ -225,7 +226,7 @@ index ebbda63..3143d6e 100644
}
protected abstract IChunkProvider j();
@@ -1272,6 +1276,7 @@ public abstract class World implements IBlockAccess {
@@ -1250,6 +1254,7 @@ public abstract class World implements IBlockAccess {
this.f.clear();
this.methodProfiler.c("regular");
@ -233,7 +234,7 @@ index ebbda63..3143d6e 100644
for (i = 0; i < this.entityList.size(); ++i) {
entity = (Entity) this.entityList.get(i);
@@ -1294,7 +1299,9 @@ public abstract class World implements IBlockAccess {
@@ -1272,7 +1277,9 @@ public abstract class World implements IBlockAccess {
this.methodProfiler.a("tick");
if (!entity.dead) {
try {
@ -243,17 +244,17 @@ index ebbda63..3143d6e 100644
} catch (Throwable throwable1) {
crashreport = CrashReport.a(throwable1, "Ticking entity");
crashreportsystemdetails = crashreport.a("Entity being ticked");
@@ -1319,7 +1326,9 @@ public abstract class World implements IBlockAccess {
@@ -1297,7 +1304,9 @@ public abstract class World implements IBlockAccess {
this.methodProfiler.b();
}
+ timings.entityTick.stopTiming(); // Spigot
this.methodProfiler.c("tileEntities");
this.methodProfiler.c("blockEntities");
+ timings.tileEntityTick.startTiming(); // Spigot
this.N = true;
Iterator iterator = this.tileEntityList.iterator();
@@ -1334,8 +1343,11 @@ public abstract class World implements IBlockAccess {
@@ -1312,8 +1321,11 @@ public abstract class World implements IBlockAccess {
if (!tileentity.r() && tileentity.o() && this.isLoaded(tileentity.x, tileentity.y, tileentity.z)) {
try {
@ -262,10 +263,10 @@ index ebbda63..3143d6e 100644
+ 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");
crashreport = CrashReport.a(throwable2, "Ticking block entity");
crashreportsystemdetails = crashreport.a("Block entity being ticked");
tileentity.a(crashreportsystemdetails);
@@ -1355,6 +1367,8 @@ public abstract class World implements IBlockAccess {
@@ -1333,6 +1345,8 @@ public abstract class World implements IBlockAccess {
}
}
@ -274,7 +275,7 @@ index ebbda63..3143d6e 100644
this.N = false;
if (!this.b.isEmpty()) {
this.tileEntityList.removeAll(this.b);
@@ -1393,6 +1407,7 @@ public abstract class World implements IBlockAccess {
@@ -1371,6 +1385,7 @@ public abstract class World implements IBlockAccess {
this.a.clear();
}
@ -282,15 +283,15 @@ index ebbda63..3143d6e 100644
this.methodProfiler.b();
this.methodProfiler.b();
}
@@ -1415,6 +1430,7 @@ public abstract class World implements IBlockAccess {
@@ -1393,6 +1408,7 @@ public abstract class World implements IBlockAccess {
byte b0 = 32;
if (!flag || this.e(i - b0, 0, j - b0, i + b0, 0, j + b0)) {
if (!flag || this.b(i - b0, 0, j - b0, i + b0, 0, j + b0)) {
+ entity.tickTimer.startTiming(); // Spigot
entity.U = entity.locX;
entity.V = entity.locY;
entity.W = entity.locZ;
@@ -1476,6 +1492,7 @@ public abstract class World implements IBlockAccess {
entity.T = entity.locX;
entity.U = entity.locY;
entity.V = entity.locZ;
@@ -1454,6 +1470,7 @@ public abstract class World implements IBlockAccess {
entity.passenger = null;
}
}
@ -299,23 +300,25 @@ index ebbda63..3143d6e 100644
}
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 88a9f88..3afcc0e 100644
index 9f09a3d..74a2d45 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -179,9 +179,12 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
@@ -184,10 +184,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)) {
+ timings.mobSpawn.startTiming(); // Spigot
this.Q.spawnEntities(this, this.allowMonsters && (this.ticksPerMonsterSpawns != 0 && time % this.ticksPerMonsterSpawns == 0L), this.allowAnimals && (this.ticksPerAnimalSpawns != 0 && time % this.ticksPerAnimalSpawns == 0L), this.worldData.getTime() % 400L == 0L);
this.R.spawnEntities(this, this.allowMonsters && (this.ticksPerMonsterSpawns != 0 && time % this.ticksPerMonsterSpawns == 0L), this.allowAnimals && (this.ticksPerAnimalSpawns != 0 && time % this.ticksPerAnimalSpawns == 0L), this.worldData.getTime() % 400L == 0L);
- // CraftBukkit end
+ timings.mobSpawn.stopTiming(); // Spigot
}
// CraftBukkit end
-
+ // CraftBukkit end
+ timings.doChunkUnload.startTiming(); // Spigot
this.methodProfiler.c("chunkSource");
this.chunkProvider.unloadChunks();
int j = this.a(1.0F);
@@ -195,21 +198,36 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
@@ -201,21 +203,36 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
this.worldData.setDayTime(this.worldData.getDayTime() + 1L);
}
@ -324,7 +327,7 @@ index 88a9f88..3afcc0e 100644
+ timings.doTickPending.startTiming(); // Spigot
this.a(false);
+ timings.doTickPending.stopTiming(); // Spigot
this.methodProfiler.c("tickTiles");
this.methodProfiler.c("tickBlocks");
+ timings.doTickTiles.startTiming(); // Spigot
this.g();
+ timings.doTickTiles.stopTiming(); // Spigot
@ -339,11 +342,11 @@ index 88a9f88..3afcc0e 100644
+ timings.doVillages.stopTiming(); // Spigot
this.methodProfiler.c("portalForcer");
+ timings.doPortalForcer.startTiming(); // Spigot
this.P.a(this.getTime());
this.Q.a(this.getTime());
+ timings.doPortalForcer.stopTiming(); // Spigot
this.methodProfiler.b();
+ timings.doSounds.startTiming(); // Spigot
this.aa();
this.Z();
+ timings.doSounds.stopTiming(); // Spigot
+ timings.doChunkGC.startTiming(); // Spigot

View File

@ -1,11 +1,11 @@
From 61bd37b5410c326094dde16492c13924c032416a Mon Sep 17 00:00:00 2001
From 29223bf84a6cc1301032e98df9c76f170b78f99e Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Thu, 16 May 2013 18:51:05 +1000
Subject: [PATCH] Orebfuscator
diff --git a/src/main/java/net/minecraft/server/EntityFallingBlock.java b/src/main/java/net/minecraft/server/EntityFallingBlock.java
index b552421..8617474 100644
index 991a765..e15840b 100644
--- a/src/main/java/net/minecraft/server/EntityFallingBlock.java
+++ b/src/main/java/net/minecraft/server/EntityFallingBlock.java
@@ -86,6 +86,7 @@ public class EntityFallingBlock extends Entity {
@ -18,20 +18,20 @@ index b552421..8617474 100644
if (this.onGround) {
@@ -101,6 +102,7 @@ public class EntityFallingBlock extends Entity {
}
this.world.setTypeIdAndData(i, j, k, this.id, this.data, 3);
this.world.setTypeAndData(i, j, k, this.id, this.data, 3);
// CraftBukkit end
+ world.spigotConfig.antiXrayInstance.updateNearbyBlocks(world, i, j, k); // Spigot
if (Block.byId[this.id] instanceof BlockSand) {
((BlockSand) Block.byId[this.id]).a_(this.world, i, j, k, this.data);
if (this.id instanceof BlockFalling) {
((BlockFalling) this.id).a(this.world, i, j, k, this.data);
diff --git a/src/main/java/net/minecraft/server/Explosion.java b/src/main/java/net/minecraft/server/Explosion.java
index 758d447..1d1c88c 100644
index 39e5b5b..d2587c1 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 {
@@ -239,6 +239,7 @@ public class Explosion {
j = chunkposition.y;
k = chunkposition.z;
l = this.world.getTypeId(i, j, k);
block = this.world.getType(i, j, k);
+ world.spigotConfig.antiXrayInstance.updateNearbyBlocks(world, i, j, k); // Spigot
if (flag) {
double d0 = (double) ((float) i + this.world.random.nextFloat());
@ -48,21 +48,21 @@ index fa10397..91d7feb 100644
try {
this.inflatedBuffer = chunkmap.a;
diff --git a/src/main/java/net/minecraft/server/Packet56MapChunkBulk.java b/src/main/java/net/minecraft/server/Packet56MapChunkBulk.java
index 04c44fc..a6e3be2 100644
--- a/src/main/java/net/minecraft/server/Packet56MapChunkBulk.java
+++ b/src/main/java/net/minecraft/server/Packet56MapChunkBulk.java
@@ -28,6 +28,7 @@ public class Packet56MapChunkBulk extends Packet {
diff --git a/src/main/java/net/minecraft/server/PacketPlayOutMapChunkBulk.java b/src/main/java/net/minecraft/server/PacketPlayOutMapChunkBulk.java
index 3eac231..c3cfdc7 100644
--- a/src/main/java/net/minecraft/server/PacketPlayOutMapChunkBulk.java
+++ b/src/main/java/net/minecraft/server/PacketPlayOutMapChunkBulk.java
@@ -26,6 +26,7 @@ public class PacketPlayOutMapChunkBulk extends Packet {
}
};
// CraftBukkit end
+ private World world; // Spigot
public Packet56MapChunkBulk() {}
public PacketPlayOutMapChunkBulk() {}
@@ -46,6 +47,9 @@ public class Packet56MapChunkBulk extends Packet {
@@ -44,6 +45,9 @@ public class PacketPlayOutMapChunkBulk extends Packet {
Chunk chunk = (Chunk) list.get(k);
ChunkMap chunkmap = Packet51MapChunk.a(chunk, true, '\uffff');
ChunkMap chunkmap = PacketPlayOutMapChunk.a(chunk, true, '\uffff');
+ // Spigot start
+ world = chunk.world;
@ -70,16 +70,16 @@ index 04c44fc..a6e3be2 100644
if (buildBuffer.length < j + chunkmap.a.length) {
byte[] abyte = new byte[j + chunkmap.a.length];
@@ -54,6 +58,8 @@ public class Packet56MapChunkBulk extends Packet {
@@ -52,6 +56,8 @@ public class PacketPlayOutMapChunkBulk extends Packet {
}
System.arraycopy(chunkmap.a, 0, buildBuffer, j, chunkmap.a.length);
+ */
+ // Spigot end
j += chunkmap.a.length;
this.c[k] = chunk.x;
this.d[k] = chunk.z;
@@ -81,6 +87,22 @@ public class Packet56MapChunkBulk extends Packet {
this.a[k] = chunk.locX;
this.b[k] = chunk.locZ;
@@ -79,6 +85,22 @@ public class PacketPlayOutMapChunkBulk extends Packet {
if (this.buffer != null) {
return;
}
@ -103,11 +103,11 @@ index 04c44fc..a6e3be2 100644
Deflater deflater = localDeflater.get();
deflater.reset();
diff --git a/src/main/java/net/minecraft/server/PlayerInteractManager.java b/src/main/java/net/minecraft/server/PlayerInteractManager.java
index 16420e4..db2e2a7 100644
index 3028404..e24d4b5 100644
--- a/src/main/java/net/minecraft/server/PlayerInteractManager.java
+++ b/src/main/java/net/minecraft/server/PlayerInteractManager.java
@@ -184,6 +184,7 @@ public class PlayerInteractManager {
this.o = j1;
@@ -173,6 +173,7 @@ public class PlayerInteractManager {
this.o = i1;
}
}
+ world.spigotConfig.antiXrayInstance.updateNearbyBlocks(world, i, j, k); // Spigot
@ -115,17 +115,17 @@ index 16420e4..db2e2a7 100644
}
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 3143d6e..48fbd2b 100644
index b1f294d..2e03b42 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -482,6 +482,7 @@ public abstract class World implements IBlockAccess {
this.g(i, j + 1, k, l);
this.g(i, j, k - 1, l);
this.g(i, j, k + 1, l);
@@ -464,6 +464,7 @@ public abstract class World implements IBlockAccess {
this.e(i, j + 1, k, block);
this.e(i, j, k - 1, block);
this.e(i, j, k + 1, block);
+ spigotConfig.antiXrayInstance.updateNearbyBlocks(this, i, j, k); // Spigot
}
public void c(int i, int j, int k, int l, int i1) {
public void b(int i, int j, int k, Block block, int l) {
diff --git a/src/main/java/org/spigotmc/AntiXray.java b/src/main/java/org/spigotmc/AntiXray.java
new file mode 100644
index 0000000..c165304

View File

@ -1,24 +1,24 @@
From 774f4afb154aafc002d1bd87843b2cafafeea32f Mon Sep 17 00:00:00 2001
From 01e36b7b71f41815e86bc7c29f9878559c6ca756 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Fri, 21 Jun 2013 17:29:54 +1000
Subject: [PATCH] Fix Mob Spawning Relative to View Distance
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index 5b13dea..c353b29 100644
index 95b4704..3bcca91 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -33,6 +33,7 @@ public class Chunk {
public int p;
public long q;
private int u;
@@ -40,6 +40,7 @@ public class Chunk {
public int r;
public long s;
private int x;
+ protected gnu.trove.map.hash.TObjectIntHashMap<Class> entityCount = new gnu.trove.map.hash.TObjectIntHashMap<Class>(); // Spigot
public Chunk(World world, int i, int j) {
this.sections = new ChunkSection[16];
@@ -552,6 +553,22 @@ public class Chunk {
entity.ak = k;
entity.al = this.z;
@@ -601,6 +602,22 @@ public class Chunk {
entity.aj = k;
entity.ak = this.locZ;
this.entitySlices[k].add(entity);
+ // Spigot start - increment creature type count
+ // Keep this synced up with World.a(Class)
@ -39,7 +39,7 @@ index 5b13dea..c353b29 100644
}
public void b(Entity entity) {
@@ -568,6 +585,22 @@ public class Chunk {
@@ -617,6 +634,22 @@ public class Chunk {
}
this.entitySlices[i].remove(entity);
@ -63,7 +63,7 @@ index 5b13dea..c353b29 100644
public boolean d(int i, int j, int k) {
diff --git a/src/main/java/net/minecraft/server/SpawnerCreature.java b/src/main/java/net/minecraft/server/SpawnerCreature.java
index 9812538..ecf13aa 100644
index f514b78..3f0dd70 100644
--- a/src/main/java/net/minecraft/server/SpawnerCreature.java
+++ b/src/main/java/net/minecraft/server/SpawnerCreature.java
@@ -27,6 +27,23 @@ public final class SpawnerCreature {
@ -131,7 +131,7 @@ index 9812538..ecf13aa 100644
+ continue label110;
+ }
+ // Spigot end
if (j2 >= entityinsentient.bv()) {
if (j2 >= entityinsentient.bz()) {
continue label110;
}
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
@ -151,5 +151,5 @@ index bab9d8f..9f95452 100644
+ }
}
--
1.8.1.2
1.8.3.2

View File

@ -1,14 +1,14 @@
From 68c93664b0745e9249dafc95a562c0db1f8199d9 Mon Sep 17 00:00:00 2001
From 05fb18bad02b47254f06de1d117946b509454305 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] Handle Null Tile Entities
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 48fbd2b..805b8eb 100644
index 2e03b42..d89ef3c 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -1335,6 +1335,13 @@ public abstract class World implements IBlockAccess {
@@ -1313,6 +1313,13 @@ public abstract class World implements IBlockAccess {
while (iterator.hasNext()) {
TileEntity tileentity = (TileEntity) iterator.next();

View File

@ -1,4 +1,4 @@
From 8e12cb3752d63dd7febab152ce56319e0671e9fc Mon Sep 17 00:00:00 2001
From c501d75e14fe07c06bee42ce7781d2c873b5970b 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
@ -9,7 +9,7 @@ This will drastically cut down on tick timings for entities that are not in rang
This change can have dramatic impact on gameplay if configured too low. Balance according to your servers desired gameplay.
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index d65c123..4183297 100644
index 0c1350e..4d573e6 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -88,7 +88,7 @@ public abstract class Entity {
@ -21,23 +21,21 @@ index d65c123..4183297 100644
public int noDamageTicks;
private boolean justCreated;
protected boolean fireProof;
@@ -111,8 +111,15 @@ public abstract class Entity {
@@ -111,7 +111,13 @@ public abstract class Entity {
public EnumEntitySize at;
public boolean valid; // CraftBukkit
+ // Spigot start
public CustomTimingsHandler tickTimer = org.bukkit.craftbukkit.SpigotTimings.getEntityTimings(this); // Spigot
+ public final byte activationType = org.spigotmc.ActivationRange.initializeEntityActivationType(this);
+ public final boolean defaultActivationState;
+ public long activatedTick = 0;
+ public void inactiveTick() { }
+ // Spigot end
+
public Entity(World world) {
this.id = entityCount++;
this.l = 1.0D;
@@ -131,7 +138,12 @@ public abstract class Entity {
public int getId() {
return this.id;
@@ -138,7 +144,12 @@ public abstract class Entity {
this.setPosition(0.0D, 0.0D, 0.0D);
if (world != null) {
this.dimension = world.worldProvider.dimension;
@ -48,10 +46,10 @@ index d65c123..4183297 100644
}
+ // Spigot end
this.datawatcher = new DataWatcher(this);
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/EntityAgeable.java b/src/main/java/net/minecraft/server/EntityAgeable.java
index 5ba19f3..4c73a5f 100644
index 36ed831..7ddca48 100644
--- a/src/main/java/net/minecraft/server/EntityAgeable.java
+++ b/src/main/java/net/minecraft/server/EntityAgeable.java
@@ -6,6 +6,31 @@ public abstract class EntityAgeable extends EntityCreature {
@ -87,12 +85,12 @@ index 5ba19f3..4c73a5f 100644
super(world);
}
diff --git a/src/main/java/net/minecraft/server/EntityArrow.java b/src/main/java/net/minecraft/server/EntityArrow.java
index c9ec78a..b1d3de8 100644
index 4b3e5dd..3fd3de9 100644
--- a/src/main/java/net/minecraft/server/EntityArrow.java
+++ b/src/main/java/net/minecraft/server/EntityArrow.java
@@ -14,7 +14,7 @@ public class EntityArrow extends Entity implements IProjectile {
private int f = -1;
private int g;
private Block g;
private int h;
- private boolean inGround;
+ public boolean inGround = false; // Spigot - private -> public
@ -100,7 +98,7 @@ index c9ec78a..b1d3de8 100644
public int shake;
public Entity shooter;
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index 16a16cf..76dfa81 100644
index 75b1ec1..a61001d 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -78,6 +78,13 @@ public abstract class EntityLiving extends Entity {
@ -118,10 +116,10 @@ index 16a16cf..76dfa81 100644
public EntityLiving(World world) {
super(world);
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 805b8eb..ab1ac5e 100644
index d89ef3c..f53e51d 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -1277,6 +1277,7 @@ public abstract class World implements IBlockAccess {
@@ -1255,6 +1255,7 @@ public abstract class World implements IBlockAccess {
this.f.clear();
this.methodProfiler.c("regular");
@ -129,22 +127,19 @@ index 805b8eb..ab1ac5e 100644
timings.entityTick.startTiming(); // Spigot
for (i = 0; i < this.entityList.size(); ++i) {
entity = (Entity) this.entityList.get(i);
@@ -1437,8 +1438,13 @@ public abstract class World implements IBlockAccess {
@@ -1415,7 +1416,11 @@ public abstract class World implements IBlockAccess {
int j = MathHelper.floor(entity.locZ);
byte b0 = 32;
- if (!flag || this.e(i - b0, 0, j - b0, i + b0, 0, j + b0)) {
- entity.tickTimer.startTiming(); // Spigot
- if (!flag || this.b(i - b0, 0, j - b0, i + b0, 0, j + b0)) {
+ // Spigot start
+ if (!org.spigotmc.ActivationRange.checkIfActive(entity)) {
+ entity.ticksLived++;
+ entity.inactiveTick();
+ } else {
+ entity.tickTimer.startTiming();
+ // Spigot end
entity.U = entity.locX;
entity.V = entity.locY;
entity.W = entity.locZ;
entity.tickTimer.startTiming(); // Spigot
entity.T = entity.locX;
entity.U = entity.locY;
diff --git a/src/main/java/org/bukkit/craftbukkit/SpigotTimings.java b/src/main/java/org/bukkit/craftbukkit/SpigotTimings.java
index 8340c13..541dfe4 100644
--- a/src/main/java/org/bukkit/craftbukkit/SpigotTimings.java

View File

@ -1,4 +1,4 @@
From 9b4f7770cae78ac23e89a6cb92bfcdac3517da6c Mon Sep 17 00:00:00 2001
From ce4cce7fa8d4f2c732f1b0c678a87921b10d39f0 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sat, 23 Feb 2013 08:58:35 +1100
Subject: [PATCH] Metrics
@ -657,7 +657,7 @@ index 0000000..f1690a2
+}
\ No newline at end of file
diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java
index f97a80b..b11499b 100644
index b5d611b..6a37636 100644
--- a/src/main/java/org/spigotmc/SpigotConfig.java
+++ b/src/main/java/org/spigotmc/SpigotConfig.java
@@ -36,6 +36,7 @@ public class SpigotConfig
@ -688,5 +688,5 @@ index f97a80b..b11499b 100644
static void readConfig(Class<?> clazz, Object instance)
--
1.8.1.2
1.8.3.2

View File

@ -1,15 +1,15 @@
From 70e523db2b07a95427820829af2c9b025585dbd6 Mon Sep 17 00:00:00 2001
From 95f1227925ed89e4582ce588573b111bfdc493cf 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
diff --git a/src/main/java/net/minecraft/server/ItemStack.java b/src/main/java/net/minecraft/server/ItemStack.java
index 69f81ca..f3a6027 100644
index 53c665b..123e4a5 100644
--- a/src/main/java/net/minecraft/server/ItemStack.java
+++ b/src/main/java/net/minecraft/server/ItemStack.java
@@ -178,7 +178,13 @@ public final class ItemStack {
return Item.byId[this.id].getMaxDurability();
@@ -175,7 +175,13 @@ public final class ItemStack {
return this.item.getMaxDurability();
}
+ // Spigot start
@ -22,7 +22,7 @@ index 69f81ca..f3a6027 100644
if (!this.g()) {
return false;
} else {
@@ -193,7 +199,16 @@ public final class ItemStack {
@@ -190,7 +196,16 @@ public final class ItemStack {
}
i -= k;
@ -40,15 +40,15 @@ index 69f81ca..f3a6027 100644
return false;
}
}
@@ -206,7 +221,7 @@ public final class ItemStack {
@@ -203,7 +218,7 @@ public final class ItemStack {
public void damage(int i, EntityLiving entityliving) {
if (!(entityliving instanceof EntityHuman) || !((EntityHuman) entityliving).abilities.canInstantlyBuild) {
if (this.g()) {
- if (this.isDamaged(i, entityliving.aD())) {
+ if (this.isDamaged(i, entityliving.aD(), entityliving)) {
- if (this.isDamaged(i, entityliving.aI())) {
+ if (this.isDamaged(i, entityliving.aI(), entityliving)) {
entityliving.a(this);
--this.count;
if (entityliving instanceof EntityHuman) {
--
1.8.1.2
1.8.3.2

View File

@ -1,4 +1,4 @@
From 8266b2fa8f23a47ae4120d7eb37f466539187269 Mon Sep 17 00:00:00 2001
From 1269d4ea0528dbf92fcd1b1c9c40ed2917b6a572 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sun, 17 Mar 2013 19:02:50 +1100
Subject: [PATCH] Faster UUID for entities
@ -6,18 +6,17 @@ Subject: [PATCH] Faster UUID for entities
It is overkill to create a new SecureRandom on each entity create and then use it to make a new Entity ID for every entity instance created. Instead we will just use a pseudo random UUID based off the random instance we already have.
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 4183297..852dfd3 100644
index 4d573e6..621e6c2 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -132,7 +132,7 @@ public abstract class Entity {
@@ -139,6 +139,7 @@ public abstract class Entity {
this.maxFireTicks = 1;
this.justCreated = true;
this.datawatcher = new DataWatcher();
- this.uniqueID = UUID.randomUUID();
this.uniqueID = UUID.randomUUID();
+ this.uniqueID = new UUID(random.nextLong(), random.nextLong()); // Spigot
this.at = EnumEntitySize.SIZE_2;
this.world = world;
this.setPosition(0.0D, 0.0D, 0.0D);
--
1.8.1.2
1.8.3.2

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
From 08668583e7fe45e2cae6330d4a69861300fb3740 Mon Sep 17 00:00:00 2001
From f0f90a6b9732962e719dd67d946a69b3550ca127 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Mon, 18 Mar 2013 20:01:44 +1100
Subject: [PATCH] Prevent NPE in CraftSign
@ -32,5 +32,5 @@ index 1647100..43c4434 100644
if(lines[i] != null) {
sign.lines[i] = lines[i];
--
1.8.1.2
1.8.3.2

View File

@ -1,4 +1,4 @@
From 85d83e03d344fff2a6ef62a657ab250ed1375583 Mon Sep 17 00:00:00 2001
From da8c410852c7404861f3ebc96e6d36ff5a9d2274 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Wed, 20 Feb 2013 11:58:47 -0500
Subject: [PATCH] Entity Tracking Ranges
@ -12,16 +12,16 @@ This has multiple benefits:
4) Less client lag - Not trying to render distant item frames and paintings and entities will reduce entity count on the client, which is major for shop/town worlds which may use tons of item frames.
diff --git a/src/main/java/net/minecraft/server/EntityTracker.java b/src/main/java/net/minecraft/server/EntityTracker.java
index ebbef6a..e833454 100644
index 97d0bbb..fc679ae 100644
--- a/src/main/java/net/minecraft/server/EntityTracker.java
+++ b/src/main/java/net/minecraft/server/EntityTracker.java
@@ -88,6 +88,7 @@ public class EntityTracker {
@@ -92,6 +92,7 @@ public class EntityTracker {
public void addEntity(Entity entity, int i, int j, boolean flag) {
if (Thread.currentThread() != MinecraftServer.getServer().primaryThread) throw new IllegalStateException("Asynchronous entity track!"); // Spigot
+ i = org.spigotmc.TrackingRange.getEntityTrackingRange(entity, i); // Spigot
if (i > this.d) {
i = this.d;
if (i > this.e) {
i = this.e;
}
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
index cca32b5..8ef6c6a 100644
@ -99,5 +99,5 @@ index 0000000..bc6438d
+ }
+}
--
1.8.1.2
1.8.3.2

View File

@ -1,4 +1,4 @@
From 6d55041a2fa334f514a7bc01c7c41c160fecfe1b Mon Sep 17 00:00:00 2001
From 4a3cd24fec99d9d0a41dfa3d90d64ae29aabd31a Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sat, 23 Mar 2013 19:08:41 +1100
Subject: [PATCH] Limit Custom Map Rendering
@ -6,10 +6,10 @@ Subject: [PATCH] Limit Custom Map Rendering
The default CraftBukkit render sequence for maps is ridiculously slow. By only using it when a custom renderer has been added (rarely in most cases), we can fallback to the Vanilla renderer for general usage. This leads to a much higher effiency overall, especially if no plugins are rendering such maps.
diff --git a/src/main/java/net/minecraft/server/WorldMapHumanTracker.java b/src/main/java/net/minecraft/server/WorldMapHumanTracker.java
index 22d9c7e..bed8705 100644
index ec708d1..ef56386 100644
--- a/src/main/java/net/minecraft/server/WorldMapHumanTracker.java
+++ b/src/main/java/net/minecraft/server/WorldMapHumanTracker.java
@@ -38,23 +38,29 @@ public class WorldMapHumanTracker {
@@ -37,23 +37,29 @@ public class WorldMapHumanTracker {
int i;
int j;
@ -47,7 +47,7 @@ index 22d9c7e..bed8705 100644
// CraftBukkit end
boolean flag = !itemstack.A();
@@ -89,7 +95,7 @@ public class WorldMapHumanTracker {
@@ -88,7 +94,7 @@ public class WorldMapHumanTracker {
abyte1[2] = (byte) j;
for (int i1 = 0; i1 < abyte1.length - 3; ++i1) {
@ -70,5 +70,5 @@ index b28d6a3..e70e4e4 100644
protected final WorldMap worldMap;
--
1.8.1.2
1.8.3.2

View File

@ -1,27 +1,27 @@
From a87ea76cdfdaefe17fd09b8639cbc35d13e97293 Mon Sep 17 00:00:00 2001
From dfcebcb9344ef7922d9ab62754ab1f7699948ddc 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
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
index 2e234f1..d054efe 100644
index 42fa9e0..af08d2f 100644
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -54,6 +54,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
@@ -62,6 +62,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
public int newTotalExp = 0;
public boolean keepLevel = false;
public double maxHealthCache;
+ public int lastPing = -1; // Spigot
// CraftBukkit end
public EntityPlayer(MinecraftServer minecraftserver, World world, String s, PlayerInteractManager playerinteractmanager) {
public EntityPlayer(MinecraftServer minecraftserver, WorldServer worldserver, GameProfile gameprofile, PlayerInteractManager playerinteractmanager) {
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
index a85fc5b..20b9c5d 100644
index df28a59..ad3c3cf 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
@@ -720,6 +720,25 @@ public abstract class PlayerList {
this.sendAll(new Packet201PlayerInfo(entityplayer.getName(), true, entityplayer.ping));
@@ -765,6 +765,25 @@ public abstract class PlayerList {
this.sendAll(new PacketPlayOutPlayerInfo(entityplayer.getName(), true, entityplayer.ping));
}
// CraftBukkit end */
+ // Spigot start
@ -47,5 +47,5 @@ index a85fc5b..20b9c5d 100644
public void sendAll(Packet packet) {
--
1.8.1.2
1.8.3.2

View File

@ -1,106 +0,0 @@
From ab31e3b5708f623c6a83b08c12b8505fe40e6e02 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sat, 23 Mar 2013 11:15:11 +1100
Subject: [PATCH] BungeeCord Support
- Allows BungeeCord to set the players real IP address very early in the login process, so that the BungeeCord proxy IP is never even seen by a plugin.
diff --git a/src/main/java/net/minecraft/server/PendingConnection.java b/src/main/java/net/minecraft/server/PendingConnection.java
index 6ffc927..8f1c214 100644
--- a/src/main/java/net/minecraft/server/PendingConnection.java
+++ b/src/main/java/net/minecraft/server/PendingConnection.java
@@ -236,4 +236,17 @@ public class PendingConnection extends Connection {
static boolean a(PendingConnection pendingconnection, boolean flag) {
return pendingconnection.h = flag;
}
+
+ // Spigot start
+ @Override
+ public void a(Packet250CustomPayload pcp) {
+ if (pcp.tag.equals("BungeeCord") && org.spigotmc.SpigotConfig.bungee && org.spigotmc.SpigotConfig.bungeeAddresses.contains(getSocket().getInetAddress().getHostAddress())) {
+ com.google.common.io.ByteArrayDataInput in = com.google.common.io.ByteStreams.newDataInput(pcp.data);
+ String subTag = in.readUTF();
+ if (subTag.equals("Login")) {
+ networkManager.setSocketAddress(new java.net.InetSocketAddress(in.readUTF(), in.readInt()));
+ }
+ }
+ }
+ // Spigot end
}
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
index 5dafeaf..a85fc5b 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
@@ -296,7 +296,7 @@ public abstract class PlayerList {
// depending on the outcome.
EntityPlayer entity = new EntityPlayer(this.server, this.server.getWorldServer(0), s, this.server.O() ? new DemoPlayerInteractManager(this.server.getWorldServer(0)) : new PlayerInteractManager(this.server.getWorldServer(0)));
Player player = entity.getBukkitEntity();
- PlayerLoginEvent event = new PlayerLoginEvent(player, hostname, pendingconnection.getSocket().getInetAddress());
+ PlayerLoginEvent event = new PlayerLoginEvent(player, hostname, ((java.net.InetSocketAddress) pendingconnection.networkManager.getSocketAddress()).getAddress(), pendingconnection.getSocket().getInetAddress()); // Spigot
SocketAddress socketaddress = pendingconnection.networkManager.getSocketAddress();
diff --git a/src/main/java/net/minecraft/server/ThreadLoginVerifier.java b/src/main/java/net/minecraft/server/ThreadLoginVerifier.java
index f87ebf9..f5032be 100644
--- a/src/main/java/net/minecraft/server/ThreadLoginVerifier.java
+++ b/src/main/java/net/minecraft/server/ThreadLoginVerifier.java
@@ -45,11 +45,11 @@ class ThreadLoginVerifier extends Thread {
return;
}
- AsyncPlayerPreLoginEvent asyncEvent = new AsyncPlayerPreLoginEvent(PendingConnection.d(this.pendingConnection), this.pendingConnection.getSocket().getInetAddress());
+ AsyncPlayerPreLoginEvent asyncEvent = new AsyncPlayerPreLoginEvent(PendingConnection.d(this.pendingConnection), ((java.net.InetSocketAddress) this.pendingConnection.networkManager.getSocketAddress()).getAddress()); // Spigot
this.server.getPluginManager().callEvent(asyncEvent);
if (PlayerPreLoginEvent.getHandlerList().getRegisteredListeners().length != 0) {
- final PlayerPreLoginEvent event = new PlayerPreLoginEvent(PendingConnection.d(this.pendingConnection), this.pendingConnection.getSocket().getInetAddress());
+ final PlayerPreLoginEvent event = new PlayerPreLoginEvent(PendingConnection.d(this.pendingConnection), ((java.net.InetSocketAddress) this.pendingConnection.networkManager.getSocketAddress()).getAddress()); // Spigot
if (asyncEvent.getResult() != PlayerPreLoginEvent.Result.ALLOWED) {
event.disallow(asyncEvent.getResult(), asyncEvent.getKickMessage());
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 20be022..e242f7d 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1077,6 +1077,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
// Spigot start
private final Player.Spigot spigot = new Player.Spigot()
{
+ @Override
+ public InetSocketAddress getRawAddress()
+ {
+ return ( getHandle().playerConnection == null ) ? null : (InetSocketAddress) getHandle().playerConnection.networkManager.getSocket().getRemoteSocketAddress();
+ }
};
public Player.Spigot spigot()
diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java
index 637fcf2..92cfac6 100644
--- a/src/main/java/org/spigotmc/SpigotConfig.java
+++ b/src/main/java/org/spigotmc/SpigotConfig.java
@@ -7,6 +7,7 @@ import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
@@ -202,4 +203,14 @@ public class SpigotConfig
nettyThreads = getInt( "settings.netty-threads", 3 );
}
+ public static List<String> bungeeAddresses = Arrays.asList( new String[]
+ {
+ "127.0.0.1"
+ } );
+ public static boolean bungee = true;
+ private static void bungee()
+ {
+ bungeeAddresses = getList( "settings.bungeecord-addresses", bungeeAddresses );
+ bungee = getBoolean( "settings.bungeecord", true );
+ }
}
--
1.8.1.2

View File

@ -0,0 +1,23 @@
From 379a06c3df065bc8ea719c01ce7a0a25e9d3e017 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Tue, 23 Apr 2013 11:50:27 +1000
Subject: [PATCH] Thread Naming and Tweaks
Removes the sleep forever thread and adds useful names for debugging to all staged thread files.
diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
index 84dcfcc..a30f217 100644
--- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
+++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
@@ -71,7 +71,7 @@ public class CraftScheduler implements BukkitScheduler {
*/
private final ConcurrentHashMap<Integer, CraftTask> runners = new ConcurrentHashMap<Integer, CraftTask>();
private volatile int currentTick = -1;
- private final Executor executor = Executors.newCachedThreadPool();
+ private final Executor executor = Executors.newCachedThreadPool(new com.google.common.util.concurrent.ThreadFactoryBuilder().setNameFormat("Craft Scheduler Thread - %1$d").build()); // Spigot
private CraftAsyncDebugger debugHead = new CraftAsyncDebugger(-1, null, null) {@Override StringBuilder debugTo(StringBuilder string) {return string;}};
private CraftAsyncDebugger debugTail = debugHead;
private static final int RECENT_TICKS;
--
1.8.3.2

View File

@ -1,4 +1,4 @@
From 5bc49050726a39ddfe0497a44127469e5c5ec403 Mon Sep 17 00:00:00 2001
From 34d90bfbf38c020b7e10bb1fa2d3d95090f1a687 Mon Sep 17 00:00:00 2001
From: Antony Riley <antony@cyberiantiger.org>
Date: Wed, 27 Mar 2013 01:41:54 +0200
Subject: [PATCH] Close Unloaded Save Files
@ -18,10 +18,10 @@ index 900ed68..829f4a3 100644
public static synchronized RegionFile a(File file1, int i, int j) {
File file2 = new File(file1, "region");
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 906ae33..b4c4f21 100644
index 5eefd0d..5f5174b 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -37,6 +37,8 @@ import net.minecraft.server.MinecraftServer;
@@ -41,6 +41,8 @@ import net.minecraft.server.MinecraftServer;
import net.minecraft.server.MobEffectList;
import net.minecraft.server.PropertyManager;
import net.minecraft.server.ServerCommand;
@ -30,7 +30,7 @@ index 906ae33..b4c4f21 100644
import net.minecraft.server.ServerNBTManager;
import net.minecraft.server.WorldLoaderServer;
import net.minecraft.server.WorldManager;
@@ -822,6 +824,30 @@ public final class CraftServer implements Server {
@@ -850,6 +852,30 @@ public final class CraftServer implements Server {
worlds.remove(world.getName().toLowerCase());
console.worlds.remove(console.worlds.indexOf(handle));

View File

@ -1,4 +1,4 @@
From 131db6fa5dabe5cc1563b6b57fb98a4d44b63030 Mon Sep 17 00:00:00 2001
From e6404134e65bbc8cd3511970a0cfa38c98e54820 Mon Sep 17 00:00:00 2001
From: Mike Primm <mike@primmhome.com>
Date: Wed, 24 Apr 2013 01:43:33 -0500
Subject: [PATCH] Improve NextTickList Performance
@ -20,57 +20,59 @@ index acf8838..1e3e0f8 100644
public NextTickListEntry a(long i) {
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 3afcc0e..5eb335f 100644
index 74a2d45..b860ce8 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -25,8 +25,8 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
@@ -29,8 +29,8 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
private final MinecraftServer server;
public EntityTracker tracker; // CraftBukkit - private final -> public
private final PlayerChunkMap manager;
- private Set L;
- private TreeSet M;
- private Set M;
- private TreeSet N;
+ private org.bukkit.craftbukkit.util.LongObjectHashMap<Set<NextTickListEntry>> tickEntriesByChunk; // Spigot - switch to something better for chunk-wise access
+ private TreeSet<NextTickListEntry> tickEntryQueue; // Spigot
public ChunkProviderServer chunkProviderServer;
public boolean savingDisabled;
private boolean N;
@@ -36,7 +36,8 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
private NoteDataList[] R = new NoteDataList[] { new NoteDataList((EmptyClass2) null), new NoteDataList((EmptyClass2) null)};
private int S;
private static final StructurePieceTreasure[] T = new StructurePieceTreasure[] { new StructurePieceTreasure(Item.STICK.id, 0, 1, 3, 10), new StructurePieceTreasure(Block.WOOD.id, 0, 1, 3, 10), new StructurePieceTreasure(Block.LOG.id, 0, 1, 3, 10), new StructurePieceTreasure(Item.STONE_AXE.id, 0, 1, 1, 3), new StructurePieceTreasure(Item.WOOD_AXE.id, 0, 1, 1, 5), new StructurePieceTreasure(Item.STONE_PICKAXE.id, 0, 1, 1, 3), new StructurePieceTreasure(Item.WOOD_PICKAXE.id, 0, 1, 1, 5), new StructurePieceTreasure(Item.APPLE.id, 0, 2, 3, 5), new StructurePieceTreasure(Item.BREAD.id, 0, 2, 3, 3)};
- private List U = new ArrayList();
private boolean O;
@@ -40,7 +40,8 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
private NoteDataList[] S = new NoteDataList[] { new NoteDataList((EmptyClass2) null), new NoteDataList((EmptyClass2) null)};
private int T;
private static final StructurePieceTreasure[] U = new StructurePieceTreasure[] { new StructurePieceTreasure(Items.STICK, 0, 1, 3, 10), new StructurePieceTreasure(Item.getItemOf(Blocks.WOOD), 0, 1, 3, 10), new StructurePieceTreasure(Item.getItemOf(Blocks.LOG), 0, 1, 3, 10), new StructurePieceTreasure(Items.STONE_AXE, 0, 1, 1, 3), new StructurePieceTreasure(Items.WOOD_AXE, 0, 1, 1, 5), new StructurePieceTreasure(Items.STONE_PICKAXE, 0, 1, 1, 3), new StructurePieceTreasure(Items.WOOD_PICKAXE, 0, 1, 1, 5), new StructurePieceTreasure(Items.APPLE, 0, 2, 3, 5), new StructurePieceTreasure(Items.BREAD, 0, 2, 3, 3), new StructurePieceTreasure(Item.getItemOf(Blocks.LOG2), 0, 1, 3, 10)};
- private List V = new ArrayList();
+ private ArrayList<NextTickListEntry> pendingTickEntries = new ArrayList<NextTickListEntry>(); // Spigot
+ private int nextPendingTickEntry; // Spigot
private IntHashMap entitiesById;
// CraftBukkit start
@@ -54,13 +55,15 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
@@ -59,13 +60,15 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
this.entitiesById = new IntHashMap();
}
- if (this.L == null) {
- this.L = new HashSet();
- if (this.M == null) {
- this.M = new HashSet();
+ // Spigot start
+ if (this.tickEntriesByChunk == null) {
+ this.tickEntriesByChunk = new org.bukkit.craftbukkit.util.LongObjectHashMap<Set<NextTickListEntry>>();
}
- if (this.M == null) {
- this.M = new TreeSet();
- if (this.N == null) {
- this.N = new TreeSet();
+ if (this.tickEntryQueue == null) {
+ this.tickEntryQueue = new TreeSet<NextTickListEntry>();
}
+ // Spigot end
this.P = new org.bukkit.craftbukkit.CraftTravelAgent(this); // CraftBukkit
this.Q = new org.bukkit.craftbukkit.CraftTravelAgent(this); // CraftBukkit
this.scoreboard = new ScoreboardServer(minecraftserver);
@@ -440,9 +443,16 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
@@ -438,10 +441,17 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
}
}
public boolean a(int i, int j, int k, int l) {
- NextTickListEntry nextticklistentry = new NextTickListEntry(i, j, k, l);
- public boolean a(int i, int j, int k, Block block) {
- NextTickListEntry nextticklistentry = new NextTickListEntry(i, j, k, block);
-
- return this.U.contains(nextticklistentry);
- return this.V.contains(nextticklistentry);
+ public boolean a(int i, int j, int k, Block block) { // Block was l
+ // Spigot start
+ int te_cnt = this.pendingTickEntries.size();
+ for (int idx = this.nextPendingTickEntry; idx < te_cnt; idx++) {
@ -83,14 +85,14 @@ index 3afcc0e..5eb335f 100644
+ // Spigot end
}
public void a(int i, int j, int k, int l, int i1) {
@@ -476,10 +486,9 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
nextticklistentry.a(j1);
public void a(int i, int j, int k, Block block, int l) {
@@ -475,10 +485,9 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
nextticklistentry.a(i1);
}
- if (!this.L.contains(nextticklistentry)) {
- this.L.add(nextticklistentry);
- if (!this.M.contains(nextticklistentry)) {
- this.M.add(nextticklistentry);
- this.N.add(nextticklistentry);
- }
+ // Spigot start
+ addNextTickIfNeeded(nextticklistentry);
@ -98,13 +100,13 @@ index 3afcc0e..5eb335f 100644
}
}
@@ -491,10 +500,9 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
nextticklistentry.a((long) i1 + this.worldData.getTime());
@@ -490,10 +499,9 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
nextticklistentry.a((long) l + this.worldData.getTime());
}
- if (!this.L.contains(nextticklistentry)) {
- this.L.add(nextticklistentry);
- if (!this.M.contains(nextticklistentry)) {
- this.M.add(nextticklistentry);
- this.N.add(nextticklistentry);
- }
+ // Spigot start
+ addNextTickIfNeeded(nextticklistentry);
@ -112,15 +114,15 @@ index 3afcc0e..5eb335f 100644
}
public void tickEntities() {
@@ -514,11 +522,12 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
@@ -513,11 +521,12 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
}
public boolean a(boolean flag) {
- int i = this.M.size();
- int i = this.N.size();
+ // Spigot start
+ int i = this.tickEntryQueue.size();
- if (i != this.L.size()) {
- if (i != this.M.size()) {
- throw new IllegalStateException("TickNextTick list out of synch");
- } else {
+ this.nextPendingTickEntry = 0;
@ -129,19 +131,20 @@ index 3afcc0e..5eb335f 100644
if (i > 1000) {
// CraftBukkit start - If the server has too much to process over time, try to alleviate that
if (i > 20 * 1000) {
@@ -534,23 +543,24 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
@@ -533,23 +542,24 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
NextTickListEntry nextticklistentry;
for (int j = 0; j < i; ++j) {
- nextticklistentry = (NextTickListEntry) this.M.first();
- nextticklistentry = (NextTickListEntry) this.N.first();
- if (!flag && nextticklistentry.d > this.worldData.getTime()) {
+ nextticklistentry = (NextTickListEntry) this.tickEntryQueue.first(); // Spigot
if (!flag && nextticklistentry.e > this.worldData.getTime()) {
+ if (!flag && nextticklistentry.e > this.worldData.getTime()) {
break;
}
- this.N.remove(nextticklistentry);
- this.M.remove(nextticklistentry);
- this.L.remove(nextticklistentry);
- this.U.add(nextticklistentry);
- this.V.add(nextticklistentry);
+ // Spigot start
+ this.removeNextTickIfNeeded(nextticklistentry);
+ this.pendingTickEntries.add(nextticklistentry);
@ -150,7 +153,7 @@ index 3afcc0e..5eb335f 100644
this.methodProfiler.b();
this.methodProfiler.a("ticking");
- Iterator iterator = this.U.iterator();
- Iterator iterator = this.V.iterator();
-
- while (iterator.hasNext()) {
- nextticklistentry = (NextTickListEntry) iterator.next();
@ -162,13 +165,13 @@ index 3afcc0e..5eb335f 100644
+ // Spigot end
byte b0 = 0;
if (this.e(nextticklistentry.a - b0, nextticklistentry.b - b0, nextticklistentry.c - b0, nextticklistentry.a + b0, nextticklistentry.b + b0, nextticklistentry.c + b0)) {
@@ -581,52 +591,18 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
if (this.b(nextticklistentry.a - b0, nextticklistentry.b - b0, nextticklistentry.c - b0, nextticklistentry.a + b0, nextticklistentry.b + b0, nextticklistentry.c + b0)) {
@@ -580,50 +590,18 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
}
this.methodProfiler.b();
- this.U.clear();
- return !this.M.isEmpty();
- this.V.clear();
- return !this.N.isEmpty();
- }
+ // Spigot start
+ this.pendingTickEntries.clear();
@ -190,14 +193,12 @@ index 3afcc0e..5eb335f 100644
- Iterator iterator;
-
- if (i1 == 0) {
- iterator = this.M.iterator();
- iterator = this.N.iterator();
- } else {
- iterator = this.U.iterator();
- /* CraftBukkit start - Comment out debug spam
- if (!this.U.isEmpty()) {
- System.out.println(this.U.size());
- iterator = this.V.iterator();
- if (!this.V.isEmpty()) {
- a.debug("toBeTicked = " + this.V.size());
- }
- // CraftBukkit end */
- }
-
- while (iterator.hasNext()) {
@ -205,7 +206,7 @@ index 3afcc0e..5eb335f 100644
-
- if (nextticklistentry.a >= i && nextticklistentry.a < j && nextticklistentry.c >= k && nextticklistentry.c < l) {
- if (flag) {
- this.L.remove(nextticklistentry);
- this.M.remove(nextticklistentry);
- iterator.remove();
- }
-
@ -225,19 +226,19 @@ index 3afcc0e..5eb335f 100644
}
/* CraftBukkit start - We prevent spawning in general, so this butchering is not needed
@@ -698,13 +674,15 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
@@ -695,13 +673,15 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
this.entitiesById = new IntHashMap();
}
- if (this.L == null) {
- this.L = new HashSet();
- if (this.M == null) {
- this.M = new HashSet();
+ // Spigot start
+ if (this.tickEntriesByChunk == null) {
+ this.tickEntriesByChunk = new org.bukkit.craftbukkit.util.LongObjectHashMap<Set<NextTickListEntry>>();
}
- if (this.M == null) {
- this.M = new TreeSet();
- if (this.N == null) {
- this.N = new TreeSet();
+ if (this.tickEntryQueue == null) {
+ this.tickEntryQueue = new TreeSet<NextTickListEntry>();
}
@ -245,8 +246,8 @@ index 3afcc0e..5eb335f 100644
this.b(worldsettings);
super.a(worldsettings);
@@ -995,4 +973,62 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
return this.setTypeIdAndData(x, y, z, typeId, data, 3);
@@ -1031,4 +1011,62 @@ public class WorldServer extends World implements org.bukkit.BlockChangeDelegate
return Block.b(getType(x, y, z));
}
// CraftBukkit end
+ // Spigot start

View File

@ -1,29 +0,0 @@
From 915d36b2eadd6373c1e671d1f1ca90eb4bac08ad Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Thu, 25 Jul 2013 17:06:02 +1000
Subject: [PATCH] Filter Invalid Names
diff --git a/src/main/java/net/minecraft/server/PendingConnection.java b/src/main/java/net/minecraft/server/PendingConnection.java
index 8f1c214..d83d475 100644
--- a/src/main/java/net/minecraft/server/PendingConnection.java
+++ b/src/main/java/net/minecraft/server/PendingConnection.java
@@ -66,13 +66,14 @@ public class PendingConnection extends Connection {
}
}
+ private static final java.util.regex.Pattern validName = java.util.regex.Pattern.compile("^[a-zA-Z0-9_-]{2,16}$"); // Spigot
public void a(Packet2Handshake packet2handshake) {
if (this.g != null) {
this.disconnect("Quit repeating yourself!");
} else {
this.hostname = packet2handshake.c + ':' + packet2handshake.d; // CraftBukkit - initialize field
this.g = packet2handshake.f();
- if (!this.g.equals(StripColor.a(this.g))) {
+ if (!this.g.equals(StripColor.a(this.g)) || !validName.matcher( this.g ).matches() ) { // Spigot
this.disconnect("Invalid username!");
} else {
PublicKey publickey = this.server.H().getPublic();
--
1.8.1.2

View File

@ -1,4 +1,4 @@
From fe47ab3364fde7609ad22c4e98ca6fb713b243cf Mon Sep 17 00:00:00 2001
From 0345c430b0b60309694c9c30dd4ac3e966f689d7 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sun, 19 May 2013 18:29:48 +1000
Subject: [PATCH] Remove -o Option
@ -6,10 +6,10 @@ Subject: [PATCH] Remove -o Option
Serves no purpose other than to confuse users.
diff --git a/src/main/java/net/minecraft/server/PropertyManager.java b/src/main/java/net/minecraft/server/PropertyManager.java
index 03aa219..a45c4ea 100644
index bb535c2..93968bd 100644
--- a/src/main/java/net/minecraft/server/PropertyManager.java
+++ b/src/main/java/net/minecraft/server/PropertyManager.java
@@ -53,7 +53,7 @@ public class PropertyManager {
@@ -52,7 +52,7 @@ public class PropertyManager {
}
private <T> T getOverride(String name, T value) {
@ -19,5 +19,5 @@ index 03aa219..a45c4ea 100644
}
--
1.8.1.2
1.8.3.2

View File

@ -1,4 +1,4 @@
From e3c6863c014cf05fd149bf2ab25491117164fb8a Mon Sep 17 00:00:00 2001
From cf69c189b9d4f9adeded504065f9f1141338a4f7 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sat, 1 Jun 2013 16:34:38 +1000
Subject: [PATCH] Recipe Deconstruction
@ -17,7 +17,7 @@ index bb28c12..c0836e4 100644
+ java.util.List<ItemStack> getIngredients(); // Spigot
}
diff --git a/src/main/java/net/minecraft/server/ShapedRecipes.java b/src/main/java/net/minecraft/server/ShapedRecipes.java
index 8f4246b..ac92050 100644
index cc444db..867dd07 100644
--- a/src/main/java/net/minecraft/server/ShapedRecipes.java
+++ b/src/main/java/net/minecraft/server/ShapedRecipes.java
@@ -10,7 +10,7 @@ public class ShapedRecipes implements IRecipe {
@ -26,11 +26,11 @@ index 8f4246b..ac92050 100644
private ItemStack[] items;
- private ItemStack result;
+ public ItemStack result; // Spigot
public final int a;
private boolean f;
private boolean e;
@@ -158,4 +158,11 @@ public class ShapedRecipes implements IRecipe {
this.f = true;
public ShapedRecipes(int i, int j, ItemStack[] aitemstack, ItemStack itemstack) {
@@ -156,4 +156,11 @@ public class ShapedRecipes implements IRecipe {
this.e = true;
return this;
}
+
@ -42,7 +42,7 @@ index 8f4246b..ac92050 100644
+ // Spigot end
}
diff --git a/src/main/java/net/minecraft/server/ShapelessRecipes.java b/src/main/java/net/minecraft/server/ShapelessRecipes.java
index fbdad80..dc0ce9e 100644
index 0fab83c..21181fb 100644
--- a/src/main/java/net/minecraft/server/ShapelessRecipes.java
+++ b/src/main/java/net/minecraft/server/ShapelessRecipes.java
@@ -11,7 +11,7 @@ import org.bukkit.craftbukkit.inventory.CraftShapelessRecipe;
@ -67,5 +67,5 @@ index fbdad80..dc0ce9e 100644
+ // Spigot end
}
--
1.8.1.2
1.8.3.2

View File

@ -1,60 +0,0 @@
From 6e2f5a24eec742f5d23f95aaf2808d3e9f300a7f Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Tue, 23 Apr 2013 11:50:27 +1000
Subject: [PATCH] Thread Naming and Tweaks
Removes the sleep forever thread and adds useful names for debugging to all staged thread files.
diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java
index 4759f6a..32f0e75 100644
--- a/src/main/java/net/minecraft/server/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/DedicatedServer.java
@@ -34,7 +34,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
super(options);
// CraftBukkit end
this.m = new ConsoleLogManager("Minecraft-Server", (String) null, (String) null); // CraftBukkit - null last argument
- new ThreadSleepForever(this);
+ // new ThreadSleepForever(this);
}
protected boolean init() throws java.net.UnknownHostException { // CraftBukkit - throws UnknownHostException
diff --git a/src/main/java/net/minecraft/server/ThreadCommandReader.java b/src/main/java/net/minecraft/server/ThreadCommandReader.java
index 489e184..bfd219c 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 {
final DedicatedServer server;
ThreadCommandReader(DedicatedServer dedicatedserver) {
+ super("Command Reader"); // Spigot
this.server = dedicatedserver;
}
diff --git a/src/main/java/net/minecraft/server/ThreadLoginVerifier.java b/src/main/java/net/minecraft/server/ThreadLoginVerifier.java
index f5032be..5e45cae 100644
--- a/src/main/java/net/minecraft/server/ThreadLoginVerifier.java
+++ b/src/main/java/net/minecraft/server/ThreadLoginVerifier.java
@@ -21,6 +21,7 @@ class ThreadLoginVerifier extends Thread {
CraftServer server;
ThreadLoginVerifier(PendingConnection pendingconnection, CraftServer server) {
+ super("Login Verifier - " + pendingconnection.getName());
this.server = server;
// CraftBukkit end
this.pendingConnection = pendingconnection;
diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
index 84dcfcc..a30f217 100644
--- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
+++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
@@ -71,7 +71,7 @@ public class CraftScheduler implements BukkitScheduler {
*/
private final ConcurrentHashMap<Integer, CraftTask> runners = new ConcurrentHashMap<Integer, CraftTask>();
private volatile int currentTick = -1;
- private final Executor executor = Executors.newCachedThreadPool();
+ private final Executor executor = Executors.newCachedThreadPool(new com.google.common.util.concurrent.ThreadFactoryBuilder().setNameFormat("Craft Scheduler Thread - %1$d").build()); // Spigot
private CraftAsyncDebugger debugHead = new CraftAsyncDebugger(-1, null, null) {@Override StringBuilder debugTo(StringBuilder string) {return string;}};
private CraftAsyncDebugger debugTail = debugHead;
private static final int RECENT_TICKS;
--
1.8.1.2

View File

@ -1,4 +1,4 @@
From de25dbdf3ecc440ee522364a9f535af596ca15c6 Mon Sep 17 00:00:00 2001
From ffd15463a41ddcbb6aebe9c6cff9664be5ddd804 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sun, 2 Jun 2013 15:16:05 +1000
Subject: [PATCH] Implement Arrow API
@ -27,5 +27,5 @@ index a386001..e976b83 100644
public Arrow.Spigot spigot()
--
1.8.1.2
1.8.3.2

View File

@ -1,11 +1,11 @@
From 43d0965a4e505944e32e156b6a0e39baeb82ebd5 Mon Sep 17 00:00:00 2001
From 9517fbacec37f55447c78c4eb0d188416e7133ba Mon Sep 17 00:00:00 2001
From: erocs <github@erocs.org>
Date: Sun, 8 Sep 2013 12:06:15 -0700
Subject: [PATCH] Hopper Cooldowns
diff --git a/src/main/java/net/minecraft/server/TileEntityHopper.java b/src/main/java/net/minecraft/server/TileEntityHopper.java
index e8cd525..5793b5c 100644
index 730eb78..7d17d37 100644
--- a/src/main/java/net/minecraft/server/TileEntityHopper.java
+++ b/src/main/java/net/minecraft/server/TileEntityHopper.java
@@ -182,12 +182,17 @@ public class TileEntityHopper extends TileEntity implements IHopper {
@ -36,7 +36,7 @@ index e8cd525..5793b5c 100644
+ this.c(world.spigotConfig.hopperTransfer); // Spigot
return false;
}
ItemStack itemstack1 = addItem(iinventory, CraftItemStack.asNMSCopy(event.getItem()), Facing.OPPOSITE_FACING[BlockHopper.c(this.p())]);
ItemStack itemstack1 = addItem(iinventory, CraftItemStack.asNMSCopy(event.getItem()), Facing.OPPOSITE_FACING[BlockHopper.b(this.p())]);
@@ -299,9 +304,9 @@ public class TileEntityHopper extends TileEntity implements IHopper {
iinventory.setItem(i, itemstack1);
@ -81,5 +81,5 @@ index 8ef6c6a..b63d3ad 100644
+ }
}
--
1.8.1.2
1.8.3.2

View File

@ -1,4 +1,4 @@
From 9bc27c7532f54fe34ead4dbb2940c3724639d5e0 Mon Sep 17 00:00:00 2001
From dd097bf3d6d43451da1b1e6f50e4079e4eabe19d Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Tue, 11 Jun 2013 11:54:32 +1000
Subject: [PATCH] Prevent Shutdown Hang
@ -6,14 +6,16 @@ Subject: [PATCH] Prevent Shutdown Hang
Prevents server hanging if players disconnect during the shutdown sequence.
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
index 20b9c5d..a85157b 100644
index ad3c3cf..5b12cb4 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
@@ -1064,7 +1064,14 @@ public abstract class PlayerList {
@@ -1115,8 +1115,15 @@ public abstract class PlayerList {
}
public void r() {
while (!this.players.isEmpty()) {
- ((EntityPlayer) this.players.get(0)).playerConnection.disconnect(this.server.server.getShutdownMessage()); // CraftBukkit - add custom shutdown message
- for (int i = 0; i < this.players.size(); ++i) {
- ((EntityPlayer) this.players.get(i)).playerConnection.disconnect(this.server.server.getShutdownMessage()); // CraftBukkit - add custom shutdown message
+ while (!this.players.isEmpty()) {
+ // Spigot start
+ EntityPlayer p = (EntityPlayer) this.players.get( 0 );
+ p.playerConnection.disconnect( this.server.server.getShutdownMessage() );
@ -26,5 +28,5 @@ index 20b9c5d..a85157b 100644
}
--
1.8.1.2
1.8.3.2

View File

@ -1,4 +1,4 @@
From 572345b8ef0a594cd823a4b2c7e3228974047eab Mon Sep 17 00:00:00 2001
From 9965936524d50d63d287ede6a2ded4e7a8453ca1 Mon Sep 17 00:00:00 2001
From: Andy Shulman <andy.shulman@hotmail.com>
Date: Mon, 15 Apr 2013 20:06:37 -0500
Subject: [PATCH] Implement SpawnerSpawnEvent.
@ -6,7 +6,7 @@ Subject: [PATCH] Implement SpawnerSpawnEvent.
Adds BUKKIT-267
diff --git a/src/main/java/net/minecraft/server/MobSpawnerAbstract.java b/src/main/java/net/minecraft/server/MobSpawnerAbstract.java
index 108b375..4edd5e3 100644
index 67c3397..bb6b3d5 100644
--- a/src/main/java/net/minecraft/server/MobSpawnerAbstract.java
+++ b/src/main/java/net/minecraft/server/MobSpawnerAbstract.java
@@ -5,7 +5,11 @@ import java.util.Collection;
@ -22,7 +22,7 @@ index 108b375..4edd5e3 100644
public abstract class MobSpawnerAbstract {
@@ -127,7 +131,12 @@ public abstract class MobSpawnerAbstract {
@@ -128,7 +132,12 @@ public abstract class MobSpawnerAbstract {
entity.f(nbttagcompound);
if (entity.world != null) {
@ -36,7 +36,7 @@ index 108b375..4edd5e3 100644
}
NBTTagCompound nbttagcompound1;
@@ -150,6 +159,11 @@ public abstract class MobSpawnerAbstract {
@@ -152,6 +161,11 @@ public abstract class MobSpawnerAbstract {
entity2.f(nbttagcompound2);
entity2.setPositionRotation(entity1.locX, entity1.locY, entity1.locZ, entity1.yaw, entity1.pitch);
@ -48,7 +48,7 @@ index 108b375..4edd5e3 100644
if (entity.world != null) {
entity.world.addEntity(entity2, CreatureSpawnEvent.SpawnReason.SPAWNER); // CraftBukkit
}
@@ -161,7 +175,12 @@ public abstract class MobSpawnerAbstract {
@@ -163,7 +177,12 @@ public abstract class MobSpawnerAbstract {
}
} else if (entity instanceof EntityLiving && entity.world != null) {
((EntityInsentient) entity).a((GroupDataEntity) null);
@ -63,7 +63,7 @@ index 108b375..4edd5e3 100644
return entity;
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index cccfe75..d8f56e9 100644
index 902aa88..a994264 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -35,6 +35,7 @@ import org.bukkit.Server;
@ -74,7 +74,7 @@ index cccfe75..d8f56e9 100644
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.craftbukkit.CraftWorld;
import org.bukkit.craftbukkit.block.CraftBlock;
@@ -115,6 +116,22 @@ public class CraftEventFactory {
@@ -116,6 +117,22 @@ public class CraftEventFactory {
}
/**
@ -98,5 +98,5 @@ index cccfe75..d8f56e9 100644
*/
public static PlayerBucketEmptyEvent callPlayerBucketEmptyEvent(EntityHuman who, int clickedX, int clickedY, int clickedZ, int clickedFace, ItemStack itemInHand) {
--
1.8.1.2
1.8.3.2

View File

@ -1,11 +1,11 @@
From d77eee29901ec8045af7dd5bd945c0ee6b70a6ef Mon Sep 17 00:00:00 2001
From 445f5d003c74ff2bdada5b4925bd541ad48aefdd Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sat, 15 Jun 2013 21:34:48 +1000
Subject: [PATCH] Firework Meta Crash Fix
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaFirework.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaFirework.java
index 3f9e4a3..93a1ce0 100644
index 0f7da6b..5a409ae 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaFirework.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaFirework.java
@@ -145,7 +145,7 @@ class CraftMetaFirework extends CraftMetaItem implements FireworkMeta {
@ -27,5 +27,5 @@ index 3f9e4a3..93a1ce0 100644
}
--
1.8.1.2
1.8.3.2

View File

@ -1,4 +1,4 @@
From 9ec77bb432ca9e73c89419d7198b7cb5976fce13 Mon Sep 17 00:00:00 2001
From 61e2bd2016bf217937001d19ba059f2e8dbed088 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sun, 16 Jun 2013 08:20:26 +1000
Subject: [PATCH] Do Not Search for Offline Players
@ -6,10 +6,10 @@ Subject: [PATCH] Do Not Search for Offline Players
By default we do not want to search as this leads to massive load times for plugins wanting to do mass data lookups.
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index b4c4f21..30239a7 100644
index 5f5174b..33cadfe 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -1104,7 +1104,7 @@ public final class CraftServer implements Server {
@@ -1132,7 +1132,7 @@ public final class CraftServer implements Server {
}
public OfflinePlayer getOfflinePlayer(String name) {

View File

@ -1,240 +0,0 @@
From 298046b76051b6baf697fa083a28c6c41ce67472 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sun, 2 Jun 2013 16:14:30 +1000
Subject: [PATCH] Particle API
diff --git a/src/main/java/net/minecraft/server/Packet63WorldParticles.java b/src/main/java/net/minecraft/server/Packet63WorldParticles.java
index f036c53..60e1237 100644
--- a/src/main/java/net/minecraft/server/Packet63WorldParticles.java
+++ b/src/main/java/net/minecraft/server/Packet63WorldParticles.java
@@ -17,6 +17,20 @@ public class Packet63WorldParticles extends Packet {
public Packet63WorldParticles() {}
+ // Spigot start - Added constructor
+ public Packet63WorldParticles(String particleName, float x, float y, float z, float offsetX, float offsetY, float offsetZ, float speed, int count) {
+ a = particleName;
+ b = x;
+ c = y;
+ d = z;
+ e = offsetX;
+ f = offsetY;
+ g = offsetZ;
+ h = speed;
+ i = count;
+ }
+ // Spigot end
+
public void a(DataInput datainput) throws java.io.IOException { // Spigot - throws
this.a = a(datainput, 64);
this.b = datainput.readFloat();
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftEffect.java b/src/main/java/org/bukkit/craftbukkit/CraftEffect.java
index 7de0de5..7eca388 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftEffect.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftEffect.java
@@ -55,6 +55,8 @@ public class CraftEffect {
Validate.isTrue(((Material) data).isBlock(), "Material is not a block!");
datavalue = ((Material) data).getId();
break;
+ case ITEM_BREAK:
+ datavalue = ((Material) data).getId();
default:
datavalue = 0;
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 15e28cb..4076e6d 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -766,31 +766,21 @@ public class CraftWorld implements World {
} else {
Validate.isTrue(effect.getData() == null, "Wrong kind of data for this effect!");
}
-
- int datavalue = data == null ? 0 : CraftEffect.getDataValue(effect, data);
- playEffect(loc, effect, datavalue, radius);
+ if (data != null && data.getClass().equals(org.bukkit.material.MaterialData.class)) {
+ org.bukkit.material.MaterialData materialData = (org.bukkit.material.MaterialData) data;
+ Validate.isTrue(materialData.getItemType().isBlock(), "Material must be block");
+ spigot().playEffect(loc, effect, materialData.getItemType().getId(), materialData.getData(), 0, 0, 0, 1, 1, radius);
+ } else {
+ int datavalue = data == null ? 0 : CraftEffect.getDataValue(effect, data);
+ playEffect(loc, effect, datavalue, radius);
+ }
}
public void playEffect(Location location, Effect effect, int data, int radius) {
- Validate.notNull(location, "Location cannot be null");
- Validate.notNull(effect, "Effect cannot be null");
- Validate.notNull(location.getWorld(), "World cannot be null");
- int packetData = effect.getId();
- Packet61WorldEvent packet = new Packet61WorldEvent(packetData, location.getBlockX(), location.getBlockY(), location.getBlockZ(), data, false);
- int distance;
- radius *= radius;
-
- for (Player player : getPlayers()) {
- if (((CraftPlayer) player).getHandle().playerConnection == null) continue;
- if (!location.getWorld().equals(player.getWorld())) continue;
-
- distance = (int) player.getLocation().distanceSquared(location);
- if (distance <= radius) {
- ((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
- }
- }
+ spigot().playEffect(location,effect, data, 0, 0f, 0f, 0f, 1f, 1, radius);
}
+
public <T extends Entity> T spawn(Location location, Class<T> clazz) throws IllegalArgumentException {
return spawn(location, clazz, SpawnReason.CUSTOM);
}
@@ -1274,6 +1264,62 @@ public class CraftWorld implements World {
// Spigot start
private final Spigot spigot = new Spigot()
{
+ @Override
+ public void playEffect(Location location, Effect effect, int id, int data, float offsetX, float offsetY, float offsetZ, float speed, int particleCount, int radius)
+ {
+ Validate.notNull( location, "Location cannot be null" );
+ Validate.notNull( effect, "Effect cannot be null" );
+ Validate.notNull( location.getWorld(), "World cannot be null" );
+
+ Packet packet;
+ if ( effect.getType() != Effect.Type.PARTICLE )
+ {
+ int packetData = effect.getId();
+ packet = new Packet61WorldEvent( packetData, location.getBlockX(), location.getBlockY(), location.getBlockZ(), id, false );
+ } else
+ {
+ StringBuilder particleFullName = new StringBuilder();
+ particleFullName.append( effect.getName() );
+
+ if ( effect.getData() != null && ( effect.getData().equals( Material.class ) || effect.getData().equals( org.bukkit.material.MaterialData.class ) ) )
+ {
+ particleFullName.append( '_' ).append( id );
+ }
+
+ if ( effect.getData() != null && effect.getData().equals( org.bukkit.material.MaterialData.class ) )
+ {
+ particleFullName.append( '_' ).append( data );
+ }
+ packet = new Packet63WorldParticles( particleFullName.toString(), (float) location.getX(), (float) location.getY(), (float) location.getZ(), offsetX, offsetY, offsetZ, speed, particleCount );
+ }
+
+ int distance;
+ radius *= radius;
+
+ for ( Player player : getPlayers() )
+ {
+ if ( ( (CraftPlayer) player ).getHandle().playerConnection == null )
+ {
+ continue;
+ }
+ if ( !location.getWorld().equals( player.getWorld() ) )
+ {
+ continue;
+ }
+
+ distance = (int) player.getLocation().distanceSquared( location );
+ if ( distance <= radius )
+ {
+ ( (CraftPlayer) player ).getHandle().playerConnection.sendPacket( packet );
+ }
+ }
+ }
+
+ @Override
+ public void playEffect(Location location, Effect effect)
+ {
+ CraftWorld.this.playEffect( location, effect, 0 );
+ }
};
public Spigot spigot()
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index e242f7d..4bae056 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -277,13 +277,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
getHandle().playerConnection.sendPacket(packet);
}
- public void playEffect(Location loc, Effect effect, int data) {
- if (getHandle().playerConnection == null) return;
-
- int packetData = effect.getId();
- Packet61WorldEvent packet = new Packet61WorldEvent(packetData, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), data, false);
- getHandle().playerConnection.sendPacket(packet);
+ // Spigot start
+ public void playEffect(Location location, Effect effect, int data) {
+ spigot().playEffect(location, effect, data, 0, 0f, 0f, 0f, 1f, 1, 64);
}
+ // Spigot end
public <T> void playEffect(Location loc, Effect effect, T data) {
if (data != null) {
@@ -291,9 +289,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
} else {
Validate.isTrue(effect.getData() == null, "Wrong kind of data for this effect!");
}
-
- int datavalue = data == null ? 0 : CraftEffect.getDataValue(effect, data);
- playEffect(loc, effect, datavalue);
+ if (data != null && data.getClass().equals(org.bukkit.material.MaterialData.class)) {
+ org.bukkit.material.MaterialData materialData = (org.bukkit.material.MaterialData) data;
+ Validate.isTrue(!materialData.getItemType().isBlock(), "Material must be block");
+ spigot().playEffect(loc, effect, materialData.getItemType().getId(), materialData.getData(), 0, 0, 0, 1, 1, 64);
+ } else {
+ int datavalue = data == null ? 0 : CraftEffect.getDataValue(effect, data);
+ playEffect(loc, effect, datavalue);
+ }
}
public void sendBlockChange(Location loc, Material material, byte data) {
@@ -1082,6 +1085,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
{
return ( getHandle().playerConnection == null ) ? null : (InetSocketAddress) getHandle().playerConnection.networkManager.getSocket().getRemoteSocketAddress();
}
+
+ @Override
+ public void playEffect(Location location, Effect effect, int id, int data, float offsetX, float offsetY, float offsetZ, float speed, int particleCount, int radius)
+ {
+ Validate.notNull( location, "Location cannot be null" );
+ Validate.notNull( effect, "Effect cannot be null" );
+ Validate.notNull( location.getWorld(), "World cannot be null" );
+
+ Packet packet;
+ if ( effect.getType() != Effect.Type.PARTICLE )
+ {
+ int packetData = effect.getId();
+ packet = new Packet61WorldEvent( packetData, location.getBlockX(), location.getBlockY(), location.getBlockZ(), id, false );
+ } else
+ {
+ StringBuilder particleFullName = new StringBuilder();
+ particleFullName.append( effect.getName() );
+
+ if ( effect.getData() != null && ( effect.getData().equals( Material.class ) || effect.getData().equals( org.bukkit.material.MaterialData.class ) ) )
+ {
+ particleFullName.append( '_' ).append( id );
+ }
+
+ if ( effect.getData() != null && effect.getData().equals( org.bukkit.material.MaterialData.class ) )
+ {
+ particleFullName.append( '_' ).append( data );
+ }
+ packet = new Packet63WorldParticles( effect.getName(), (float) location.getX(), (float) location.getY(), (float) location.getZ(), offsetX, offsetY, offsetZ, particleCount, radius );
+ }
+
+ if ( !location.getWorld().equals( getWorld() ) )
+ {
+ return;
+ }
+
+ getHandle().playerConnection.sendPacket( packet );
+ }
};
public Player.Spigot spigot()
--
1.8.3.2

View File

@ -1,34 +1,34 @@
From c94b0568262d0bf5f9fb4817903fb1e908d370e0 Mon Sep 17 00:00:00 2001
From 4edcbe30edadeb74f69735329648e349dffbc860 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Fri, 21 Jun 2013 18:01:29 +1000
Subject: [PATCH] Allow Disabling of Command Logging
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index 759dc89..c867fcf 100644
index 4e41695..8a5e257 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -976,7 +976,12 @@ public class PlayerConnection extends Connection {
@@ -921,7 +921,12 @@ public class PlayerConnection implements PacketPlayInListener {
}
try {
- this.minecraftServer.getLogger().info(event.getPlayer().getName() + " issued server command: " + event.getMessage()); // CraftBukkit
- this.c.info(event.getPlayer().getName() + " issued server command: " + event.getMessage()); // CraftBukkit
+ // Spigot Start
+ if ( org.spigotmc.SpigotConfig.logCommands )
+ {
+ this.minecraftServer.getLogger().info(event.getPlayer().getName() + " issued server command: " + event.getMessage()); // CraftBukkit
+ this.c.info(event.getPlayer().getName() + " issued server command: " + event.getMessage()); // CraftBukkit
+ }
+ // Spigot end
if (this.server.dispatchCommand(event.getPlayer(), event.getMessage().substring(1))) {
org.bukkit.craftbukkit.SpigotTimings.playerCommandTimer.stopTiming(); // Spigot
return;
diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java
index 86e3680..babedc0 100644
index 6a37636..837fcc9 100644
--- a/src/main/java/org/spigotmc/SpigotConfig.java
+++ b/src/main/java/org/spigotmc/SpigotConfig.java
@@ -222,4 +222,10 @@ public class SpigotConfig
"/skill"
} ) );
@@ -136,4 +136,10 @@ public class SpigotConfig
{
commands.put( "tps", new TicksPerSecondCommand( "tps" ) );
}
+
+ public static boolean logCommands;

View File

@ -1,14 +1,14 @@
From eca50c612dffde50a1ed1d1aa14dd87335f8f7dd Mon Sep 17 00:00:00 2001
From 7e8c1890f4c3dd7dc5d4966298c5aa644c0ceae5 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Fri, 21 Jun 2013 18:05:54 +1000
Subject: [PATCH] Allow Disabling of Command TabComplete
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 30239a7..b216aaf 100644
index 33cadfe..5178808 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -1371,7 +1371,7 @@ public final class CraftServer implements Server {
@@ -1399,7 +1399,7 @@ public final class CraftServer implements Server {
public List<String> tabCompleteCommand(Player player, String message) {
List<String> completions = null;
try {
@ -18,10 +18,10 @@ index 30239a7..b216aaf 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/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java
index babedc0..e146926 100644
index 837fcc9..3cdd6ac 100644
--- a/src/main/java/org/spigotmc/SpigotConfig.java
+++ b/src/main/java/org/spigotmc/SpigotConfig.java
@@ -228,4 +228,10 @@ public class SpigotConfig
@@ -142,4 +142,10 @@ public class SpigotConfig
{
logCommands = getBoolean( "commands.log", true );
}

View File

@ -1,52 +1,36 @@
From 970b4ae4d7f0ed9c3114609d2c6a56b1dd041071 Mon Sep 17 00:00:00 2001
From 53374efe82a99cd366b4b3b88be0cc4fc0f2baae Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Fri, 21 Jun 2013 19:21:58 +1000
Subject: [PATCH] Configurable Messages
diff --git a/src/main/java/net/minecraft/server/PendingConnection.java b/src/main/java/net/minecraft/server/PendingConnection.java
index d83d475..2b1df38 100644
--- a/src/main/java/net/minecraft/server/PendingConnection.java
+++ b/src/main/java/net/minecraft/server/PendingConnection.java
@@ -80,9 +80,9 @@ public class PendingConnection extends Connection {
if (packet2handshake.d() != 78) {
if (packet2handshake.d() > 78) {
- this.disconnect("Outdated server!");
+ this.disconnect(org.spigotmc.SpigotConfig.outdatedServerMessage); // Spigot
} else {
- this.disconnect("Outdated client!");
+ this.disconnect(org.spigotmc.SpigotConfig.outdatedClientMessage); // Spigot
}
} else {
this.loginKey = this.server.getOnlineMode() ? Long.toString(random.nextLong(), 16) : "-";
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
index a85157b..e5a259d 100644
index 5b12cb4..3ddf3ae 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
@@ -310,7 +310,7 @@ public abstract class PlayerList {
event.disallow(PlayerLoginEvent.Result.KICK_BANNED, s1);
} else if (!this.isWhitelisted(s)) {
@@ -335,7 +335,7 @@ public abstract class PlayerList {
event.disallow(PlayerLoginEvent.Result.KICK_BANNED, s);
} else if (!this.isWhitelisted(gameprofile.getName())) {
// return "You are not white-listed on this server!";
- event.disallow(PlayerLoginEvent.Result.KICK_WHITELIST, "You are not white-listed on this server!");
+ event.disallow(PlayerLoginEvent.Result.KICK_WHITELIST, org.spigotmc.SpigotConfig.whitelistMessage); // Spigot
} else {
String s2 = socketaddress.toString();
String s1 = socketaddress.toString();
@@ -326,7 +326,7 @@ public abstract class PlayerList {
event.disallow(PlayerLoginEvent.Result.KICK_BANNED, s3);
} else if (this.players.size() >= this.maxPlayers) {
- event.disallow(PlayerLoginEvent.Result.KICK_FULL, "The server is full!");
+ event.disallow(PlayerLoginEvent.Result.KICK_FULL, org.spigotmc.SpigotConfig.serverFullMessage); // Spigot
@@ -354,7 +354,7 @@ public abstract class PlayerList {
} else {
event.disallow(PlayerLoginEvent.Result.ALLOWED, s2);
// return this.players.size() >= this.maxPlayers ? "The server is full!" : null;
if (this.players.size() >= this.maxPlayers) {
- event.disallow(PlayerLoginEvent.Result.KICK_FULL, "The server is full!");
+ event.disallow(PlayerLoginEvent.Result.KICK_FULL, org.spigotmc.SpigotConfig.serverFullMessage); // Spigot
}
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 0d7b044..20719f7 100644
index 5178808..82a566d 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -533,11 +533,7 @@ public final class CraftServer implements Server {
@@ -548,11 +548,7 @@ public final class CraftServer implements Server {
return true;
}
@ -60,10 +44,10 @@ index 0d7b044..20719f7 100644
return false;
}
diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java
index e146926..1d9d3c9 100644
index 3cdd6ac..a3ddb99 100644
--- a/src/main/java/org/spigotmc/SpigotConfig.java
+++ b/src/main/java/org/spigotmc/SpigotConfig.java
@@ -15,6 +15,7 @@ import java.util.Map;
@@ -12,6 +12,7 @@ import java.util.Map;
import java.util.logging.Level;
import net.minecraft.server.MinecraftServer;
import org.bukkit.Bukkit;
@ -71,7 +55,7 @@ index e146926..1d9d3c9 100644
import org.bukkit.command.Command;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.craftbukkit.command.TicksPerSecondCommand;
@@ -234,4 +235,22 @@ public class SpigotConfig
@@ -148,4 +149,22 @@ public class SpigotConfig
{
tabComplete = getBoolean( "commands.tab-complete", true );
}

View File

@ -1,14 +1,14 @@
From 60c96ecddddb89969bbda55baf687b42402df903 Mon Sep 17 00:00:00 2001
From d2104b9150b700f8c3d3155eda9b7d422a4b9404 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sat, 22 Jun 2013 16:12:02 +1000
Subject: [PATCH] Allow Disabling of Random Lighting Updates
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index ab1ac5e..e594b04 100644
index f53e51d..3f4e2d5 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -2104,7 +2104,7 @@ public abstract class World implements IBlockAccess {
@@ -2045,7 +2045,7 @@ public abstract class World implements IBlockAccess {
}
this.methodProfiler.a("playerCheckLight");

View File

@ -1,4 +1,4 @@
From 65315609f8f437e29da1a66df0633b050b789b11 Mon Sep 17 00:00:00 2001
From b2abcc850b4c50b043f8ef3548ea3c82e839050a Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sat, 22 Jun 2013 16:40:11 +1000
Subject: [PATCH] Add Log Filtering
@ -35,10 +35,10 @@ index 0000000..aa7e9ab
+ }
+}
diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java
index 1d9d3c9..8d8bc97 100644
index a3ddb99..e65978b 100644
--- a/src/main/java/org/spigotmc/SpigotConfig.java
+++ b/src/main/java/org/spigotmc/SpigotConfig.java
@@ -13,6 +13,8 @@ import java.util.HashMap;
@@ -10,6 +10,8 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
@ -47,7 +47,7 @@ index 1d9d3c9..8d8bc97 100644
import net.minecraft.server.MinecraftServer;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
@@ -253,4 +255,27 @@ public class SpigotConfig
@@ -167,4 +169,27 @@ public class SpigotConfig
outdatedClientMessage = transform( getString( "messages.outdated-client", "Outdated client!" ) );
outdatedServerMessage = transform( getString( "messages.outdated-server", "Outdated server!" ) );
}
@ -76,5 +76,5 @@ index 1d9d3c9..8d8bc97 100644
+ }
}
--
1.8.1.2
1.8.3.2

View File

@ -1,22 +0,0 @@
From 4eae57efe800fe1a98a83fb2b22352e6c2c79bf0 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Fri, 21 Jun 2013 17:53:03 +1000
Subject: [PATCH] Enable Foreign Language Signs
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index 8443731..a836111 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -1586,7 +1586,7 @@ public class PlayerConnection extends Connection {
flag = false;
} else {
for (i = 0; i < packet130updatesign.lines[j].length(); ++i) {
- if (SharedConstants.allowedCharacters.indexOf(packet130updatesign.lines[j].charAt(i)) < 0) {
+ if (!SharedConstants.isAllowedChatCharacter(packet130updatesign.lines[j].charAt(i))) { // Spigot
flag = false;
}
}
--
1.8.3.2

View File

@ -1,4 +1,4 @@
From d3b7ead5953c0cb7389eb15001a2386092eba4ee Mon Sep 17 00:00:00 2001
From c0e37b19f9d11820289d0edb5624d493fca0c55b Mon Sep 17 00:00:00 2001
From: Andre LeBlanc <andre@norcode.com>
Date: Sat, 6 Apr 2013 12:00:31 -0400
Subject: [PATCH] Make AnvilInventory.getItem() use both containers. Fixes
@ -53,5 +53,5 @@ index a91d81a..46a1d38 100644
return getResultInventory().getSize() + getIngredientsInventory().getSize();
}
--
1.8.1.2
1.8.3.2

View File

@ -1,4 +1,4 @@
From 1139ef1777c64479f0664e4b3bbe5842a6dacb34 Mon Sep 17 00:00:00 2001
From 345300a113335095d65efe3e842bbd3cf716895f Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Thu, 27 Jun 2013 17:26:09 +1000
Subject: [PATCH] Properly Close Inventories
@ -6,10 +6,10 @@ Subject: [PATCH] Properly Close Inventories
Properly close inventories when unloading and switching worlds.
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index 8665ef2..8c98f3e 100644
index 3bcca91..99c30f9 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -704,6 +704,15 @@ public class Chunk {
@@ -749,6 +749,15 @@ public class Chunk {
while (iterator.hasNext()) {
TileEntity tileentity = (TileEntity) iterator.next();
@ -25,7 +25,7 @@ index 8665ef2..8c98f3e 100644
this.world.a(tileentity);
}
@@ -713,6 +722,15 @@ public class Chunk {
@@ -758,6 +767,15 @@ public class Chunk {
java.util.Iterator<Object> iter = this.entitySlices[i].iterator();
while (iter.hasNext()) {
Entity entity = (Entity) iter.next();
@ -42,7 +42,7 @@ index 8665ef2..8c98f3e 100644
// Do not pass along players, as doing so can get them stuck outside of time.
// (which for example disables inventory icon updates and prevents block breaking)
diff --git a/src/main/java/net/minecraft/server/EntityMinecartContainer.java b/src/main/java/net/minecraft/server/EntityMinecartContainer.java
index e89b106..f58cd7e 100644
index 1d997e1..1c64d42 100644
--- a/src/main/java/net/minecraft/server/EntityMinecartContainer.java
+++ b/src/main/java/net/minecraft/server/EntityMinecartContainer.java
@@ -149,6 +149,12 @@ public abstract class EntityMinecartContainer extends EntityMinecartAbstract imp
@ -59,5 +59,5 @@ index e89b106..f58cd7e 100644
super.b(i);
}
--
1.8.1.2
1.8.3.2

View File

@ -1,50 +0,0 @@
From 86d91741f9b8c49805e5473a6ded05dae11c11da Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Fri, 21 Jun 2013 17:59:22 +1000
Subject: [PATCH] Spam Filter Exclusions
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index a836111..759dc89 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -843,7 +843,17 @@ public class PlayerConnection extends Connection {
}
// This section stays because it is only applicable to packets
- if (chatSpamField.addAndGet(this, 20) > 200 && !this.minecraftServer.getPlayerList().isOp(this.player.getName())) { // CraftBukkit use thread-safe spam
+ // Spigot - spam exclusions
+ boolean counted = true;
+ for ( String exclude : org.spigotmc.SpigotConfig.spamExclusions )
+ {
+ if ( exclude != null && s.startsWith( exclude ) )
+ {
+ counted = false;
+ break;
+ }
+ }
+ if (counted && chatSpamField.addAndGet(this, 20) > 200 && !this.minecraftServer.getPlayerList().isOp(this.player.getName())) { // CraftBukkit use thread-safe spam
if (packet3chat.a_()) {
Waitable waitable = new Waitable() {
@Override
diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java
index 92cfac6..86e3680 100644
--- a/src/main/java/org/spigotmc/SpigotConfig.java
+++ b/src/main/java/org/spigotmc/SpigotConfig.java
@@ -213,4 +213,13 @@ public class SpigotConfig
bungeeAddresses = getList( "settings.bungeecord-addresses", bungeeAddresses );
bungee = getBoolean( "settings.bungeecord", true );
}
+
+ public static List<String> spamExclusions;
+ private static void spamExclusions()
+ {
+ spamExclusions = getList( "commands.spam-exclusions", Arrays.asList( new String[]
+ {
+ "/skill"
+ } ) );
+ }
}
--
1.8.3.2

View File

@ -1,17 +1,17 @@
From 0bc311b8717924ada1e4fa43cc81d3caa7563ae8 Mon Sep 17 00:00:00 2001
From 8a8e127c2db46ac38c3aa1b576ec93f9c5274473 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Fri, 28 Jun 2013 19:52:54 +1000
Subject: [PATCH] Disallow Interaction With Self
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index c867fcf..6c8aa41 100644
index 8a5e257..2e04e71 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -1096,6 +1096,13 @@ public class PlayerConnection extends Connection {
@@ -1028,6 +1028,13 @@ public class PlayerConnection implements PacketPlayInListener {
if (this.player.dead) return; // CraftBukkit
WorldServer worldserver = this.minecraftServer.getWorldServer(this.player.dimension);
Entity entity = worldserver.getEntity(packet7useentity.target);
Entity entity = packetplayinuseentity.a((World) worldserver);
+ // Spigot Start
+ if ( entity == player )
+ {
@ -20,7 +20,7 @@ index c867fcf..6c8aa41 100644
+ }
+ // Spigot End
this.player.u();
this.player.w();
if (entity != null) {
--
1.8.3.2

View File

@ -1,4 +1,4 @@
From 32e80b7320273f138bec13031eb9151c776cf3af Mon Sep 17 00:00:00 2001
From d6e3678b8c413d9ffb2cedc75aecb609d81d3dc8 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Tue, 2 Jul 2013 09:07:54 +1000
Subject: [PATCH] Lower Chunk Compression
@ -18,11 +18,11 @@ index 91d7feb..29baf6d 100644
this.d = chunkmap.c;
this.c = chunkmap.b;
diff --git a/src/main/java/net/minecraft/server/Packet56MapChunkBulk.java b/src/main/java/net/minecraft/server/Packet56MapChunkBulk.java
index a6e3be2..63dd8d3 100644
--- a/src/main/java/net/minecraft/server/Packet56MapChunkBulk.java
+++ b/src/main/java/net/minecraft/server/Packet56MapChunkBulk.java
@@ -24,7 +24,7 @@ public class Packet56MapChunkBulk extends Packet {
diff --git a/src/main/java/net/minecraft/server/PacketPlayOutMapChunkBulk.java b/src/main/java/net/minecraft/server/PacketPlayOutMapChunkBulk.java
index c3cfdc7..8e1c4cb 100644
--- a/src/main/java/net/minecraft/server/PacketPlayOutMapChunkBulk.java
+++ b/src/main/java/net/minecraft/server/PacketPlayOutMapChunkBulk.java
@@ -22,7 +22,7 @@ public class PacketPlayOutMapChunkBulk extends Packet {
@Override
protected Deflater initialValue() {
// Don't use higher compression level, slows things down too much
@ -32,5 +32,5 @@ index a6e3be2..63dd8d3 100644
};
// CraftBukkit end
--
1.8.1.2
1.8.3.2

View File

@ -1,14 +1,14 @@
From b4fb566fcfe84a9048824e187c3881e87108f8e7 Mon Sep 17 00:00:00 2001
From 3ba92e1abcd9685e94f0d708d0124df9557277a6 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Tue, 2 Jul 2013 20:32:49 +1000
Subject: [PATCH] Entity Mount and Dismount Events
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 852dfd3..92d7dc4 100644
index 621e6c2..3450502 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -1427,6 +1427,7 @@ public abstract class Entity {
@@ -1452,6 +1452,7 @@ public abstract class Entity {
}
}
// CraftBukkit end
@ -16,7 +16,7 @@ index 852dfd3..92d7dc4 100644
this.setPositionRotation(this.vehicle.locX, this.vehicle.boundingBox.b + (double) this.vehicle.length, this.vehicle.locZ, this.yaw, this.pitch);
this.vehicle.passenger = null;
@@ -1462,6 +1463,17 @@ public abstract class Entity {
@@ -1487,6 +1488,17 @@ public abstract class Entity {
}
}
// CraftBukkit end
@ -35,10 +35,10 @@ index 852dfd3..92d7dc4 100644
if (this.vehicle != null) {
this.vehicle.passenger = null;
diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java
index e4fe770..8c5a8ba 100644
index c12a08f..7442943 100644
--- a/src/main/java/net/minecraft/server/EntityHuman.java
+++ b/src/main/java/net/minecraft/server/EntityHuman.java
@@ -304,6 +304,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
@@ -323,6 +323,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
public void setPassengerOf(Entity entity) {
// CraftBukkit end
if (this.vehicle != null && entity == null) {
@ -47,5 +47,5 @@ index e4fe770..8c5a8ba 100644
Entity originalVehicle = this.vehicle;
// First statement moved down, second statement handled in parent method.
--
1.8.1.2
1.8.3.2

View File

@ -1,4 +1,4 @@
From 0b8dd5fe77226811be5a3e1e49b4f6c09c584c78 Mon Sep 17 00:00:00 2001
From ce6c551ec78c1733ade8eed48a279371a004ee3a Mon Sep 17 00:00:00 2001
From: Alex Ciuba <alexciuba@gmail.com>
Date: Mon, 10 Jun 2013 16:04:38 -0400
Subject: [PATCH] Properly Consume Bonemeal in Dispensers
@ -6,7 +6,7 @@ Subject: [PATCH] Properly Consume Bonemeal in Dispensers
Don't consume bonemeal if there is no crop in front. Fixes BUKKIT-3790
diff --git a/src/main/java/net/minecraft/server/DispenseBehaviorBonemeal.java b/src/main/java/net/minecraft/server/DispenseBehaviorBonemeal.java
index 1a58814..b83a803 100644
index 713bbe8..92b3789 100644
--- a/src/main/java/net/minecraft/server/DispenseBehaviorBonemeal.java
+++ b/src/main/java/net/minecraft/server/DispenseBehaviorBonemeal.java
@@ -20,9 +20,8 @@ final class DispenseBehaviorBonemeal extends DispenseBehaviorItem {
@ -43,5 +43,5 @@ index 1a58814..b83a803 100644
world.triggerEffect(2005, i, j, k, 0);
}
--
1.8.1.2
1.8.3.2

View File

@ -1,4 +1,4 @@
From db5688a7eb8b6133a1ea28ecf0d59523a6fd56c4 Mon Sep 17 00:00:00 2001
From 091244bc49de615628a6f3c70b50af9a30b3e1ef Mon Sep 17 00:00:00 2001
From: Alex Ciuba <alexciuba@gmail.com>
Date: Tue, 11 Jun 2013 15:23:03 -0400
Subject: [PATCH] Prevent Ghost Players Caused by Plugins
@ -6,10 +6,10 @@ Subject: [PATCH] Prevent Ghost Players Caused by Plugins
Check if the player is still connected after firing event. Fixes BUKKIT-4327
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
index e5a259d..bb13b41 100644
index 3ddf3ae..7497560 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
@@ -423,6 +423,9 @@ public abstract class PlayerList {
@@ -467,6 +467,9 @@ public abstract class PlayerList {
Player respawnPlayer = this.cserver.getPlayer(entityplayer1);
PlayerRespawnEvent respawnEvent = new PlayerRespawnEvent(respawnPlayer, location, isBedSpawn);
this.cserver.getPluginManager().callEvent(respawnEvent);
@ -20,5 +20,5 @@ index e5a259d..bb13b41 100644
location = respawnEvent.getRespawnLocation();
entityplayer.reset();
--
1.8.1.2
1.8.3.2

View File

@ -1,4 +1,4 @@
From 7e3f4169dfdf4b85dce2e1fa1e9a9e242cfbb030 Mon Sep 17 00:00:00 2001
From 409b4a97107927b2825494d918cb57180710d9f1 Mon Sep 17 00:00:00 2001
From: Ammar Askar <ammar@ammaraskar.com>
Date: Tue, 16 Jul 2013 03:32:32 +0500
Subject: [PATCH] Entity ticking chunk caching
@ -6,10 +6,10 @@ Subject: [PATCH] Entity ticking chunk caching
Cache known loaded chunks so we avoid making a potentially expensive contains call for every single entity in exchange for some simple arithmetic. Best case scenario, this cuts down contains call to once per chunk, worst case it adds on some simple arithmetic operations
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index e594b04..690f768 100644
index 3f4e2d5..35537c6 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -1222,6 +1222,7 @@ public abstract class World implements IBlockAccess {
@@ -1200,6 +1200,7 @@ public abstract class World implements IBlockAccess {
CrashReport crashreport;
CrashReportSystemDetails crashreportsystemdetails;
@ -17,7 +17,7 @@ index e594b04..690f768 100644
for (i = 0; i < this.i.size(); ++i) {
entity = (Entity) this.i.get(i);
// CraftBukkit start - Fixed an NPE, don't process entities in chunks queued for unload
@@ -1230,10 +1231,15 @@ public abstract class World implements IBlockAccess {
@@ -1208,10 +1209,15 @@ public abstract class World implements IBlockAccess {
}
ChunkProviderServer chunkProviderServer = ((WorldServer) this).chunkProviderServer;
@ -35,7 +35,7 @@ index e594b04..690f768 100644
try {
++entity.ticksLived;
@@ -1254,6 +1260,7 @@ public abstract class World implements IBlockAccess {
@@ -1232,6 +1238,7 @@ public abstract class World implements IBlockAccess {
this.i.remove(i--);
}
}
@ -43,7 +43,7 @@ index e594b04..690f768 100644
this.methodProfiler.c("remove");
this.entityList.removeAll(this.f);
@@ -1284,10 +1291,15 @@ public abstract class World implements IBlockAccess {
@@ -1262,10 +1269,15 @@ public abstract class World implements IBlockAccess {
// CraftBukkit start - Don't tick entities in chunks queued for unload
ChunkProviderServer chunkProviderServer = ((WorldServer) this).chunkProviderServer;

View File

@ -1,71 +0,0 @@
From 508049cfb6f0192e44667d9c2594cf7211cfa3db Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Tue, 25 Jun 2013 18:09:26 +1000
Subject: [PATCH] Always Fire PreLoginEvent
diff --git a/src/main/java/net/minecraft/server/PendingConnection.java b/src/main/java/net/minecraft/server/PendingConnection.java
index 2b1df38..358cba4 100644
--- a/src/main/java/net/minecraft/server/PendingConnection.java
+++ b/src/main/java/net/minecraft/server/PendingConnection.java
@@ -113,7 +113,7 @@ public class PendingConnection extends Connection {
}
this.j = true;
- if (this.server.getOnlineMode()) {
+ if (true) { // Spigot - Always fire
(new ThreadLoginVerifier(this, server.server)).start(); // CraftBukkit - add CraftServer
} else {
this.h = true;
diff --git a/src/main/java/net/minecraft/server/ThreadLoginVerifier.java b/src/main/java/net/minecraft/server/ThreadLoginVerifier.java
index 5e45cae..70f9fea 100644
--- a/src/main/java/net/minecraft/server/ThreadLoginVerifier.java
+++ b/src/main/java/net/minecraft/server/ThreadLoginVerifier.java
@@ -27,24 +27,29 @@ class ThreadLoginVerifier extends Thread {
this.pendingConnection = pendingconnection;
}
+ private boolean auth() throws java.io.IOException {
+ String s = (new BigInteger(MinecraftEncryption.a(PendingConnection.a(this.pendingConnection), PendingConnection.b(this.pendingConnection).H().getPublic(), PendingConnection.c(this.pendingConnection)))).toString(16);
+ 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.openConnection(PendingConnection.b(this.pendingConnection).ap()).getInputStream()));
+ String s1 = bufferedreader.readLine();
+
+ bufferedreader.close();
+ if (!"YES".equals(s1)) {
+ this.pendingConnection.disconnect("Failed to verify username!");
+ return false;
+ }
+
+ // CraftBukkit start
+ if (this.pendingConnection.getSocket() == null) {
+ return false;
+ }
+ return true;
+ }
+
public void run() {
try {
if (org.spigotmc.SpamHaus.filterIp(pendingConnection)) return; // Spigot
- String s = (new BigInteger(MinecraftEncryption.a(PendingConnection.a(this.pendingConnection), PendingConnection.b(this.pendingConnection).H().getPublic(), PendingConnection.c(this.pendingConnection)))).toString(16);
- 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.openConnection(PendingConnection.b(this.pendingConnection).ap()).getInputStream()));
- String s1 = bufferedreader.readLine();
-
- bufferedreader.close();
- if (!"YES".equals(s1)) {
- this.pendingConnection.disconnect("Failed to verify username!");
- return;
- }
-
- // CraftBukkit start
- if (this.pendingConnection.getSocket() == null) {
- return;
- }
+ if (server.getOnlineMode() && !auth()) return; // Spigot
AsyncPlayerPreLoginEvent asyncEvent = new AsyncPlayerPreLoginEvent(PendingConnection.d(this.pendingConnection), ((java.net.InetSocketAddress) this.pendingConnection.networkManager.getSocketAddress()).getAddress()); // Spigot
this.server.getPluginManager().callEvent(asyncEvent);
--
1.8.1.2

View File

@ -1,11 +1,11 @@
From 8454656a6b1eaff2ac3e95b1104f2b196a0c2b13 Mon Sep 17 00:00:00 2001
From 3d5b88405fa9bac3f3c128fc373bb65b577c23ca Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sat, 3 Aug 2013 19:02:59 +1000
Subject: [PATCH] Plug World Unload Memory Leak
diff --git a/src/main/java/net/minecraft/server/BlockRedstoneTorch.java b/src/main/java/net/minecraft/server/BlockRedstoneTorch.java
index f176e66..d4f3c51 100644
index 8e01414..e0469bb 100644
--- a/src/main/java/net/minecraft/server/BlockRedstoneTorch.java
+++ b/src/main/java/net/minecraft/server/BlockRedstoneTorch.java
@@ -11,7 +11,7 @@ import org.bukkit.event.block.BlockRedstoneEvent; // CraftBukkit
@ -18,5 +18,5 @@ index f176e66..d4f3c51 100644
private boolean a(World world, int i, int j, int k, boolean flag) {
if (!b.containsKey(world)) {
--
1.8.1.2
1.8.3.2

View File

@ -1,14 +1,14 @@
From 4800f114024eadb7b30fcb894ce1348f3bd42359 Mon Sep 17 00:00:00 2001
From 905390073f7d65f8c0963b5fed4e1cd85daa458d Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sat, 3 Aug 2013 19:27:07 +1000
Subject: [PATCH] Player Collision API
diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java
index 8c5a8ba..b180933 100644
index 7442943..14f5510 100644
--- a/src/main/java/net/minecraft/server/EntityHuman.java
+++ b/src/main/java/net/minecraft/server/EntityHuman.java
@@ -411,7 +411,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
@@ -430,7 +430,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
List list = this.world.getEntities(this, axisalignedbb);
@ -18,11 +18,11 @@ index 8c5a8ba..b180933 100644
Entity entity = (Entity) list.get(i);
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index 76dfa81..de07560 100644
index a61001d..35d30f1 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -1463,7 +1463,7 @@ public abstract class EntityLiving extends Entity {
protected void bj() {
@@ -1478,7 +1478,7 @@ public abstract class EntityLiving extends Entity {
protected void bo() {
List list = this.world.getEntities(this, this.boundingBox.grow(0.20000000298023224D, 0.0D, 0.20000000298023224D));
- if (list != null && !list.isEmpty()) {
@ -31,10 +31,10 @@ index 76dfa81..de07560 100644
Entity entity = (Entity) list.get(i);
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
index d054efe..6c55250 100644
index af08d2f..d6a384b 100644
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -56,6 +56,21 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
@@ -64,6 +64,21 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
public double maxHealthCache;
public int lastPing = -1; // Spigot
// CraftBukkit end
@ -54,16 +54,16 @@ index d054efe..6c55250 100644
+ }
+ // Spigot end
public EntityPlayer(MinecraftServer minecraftserver, World world, String s, PlayerInteractManager playerinteractmanager) {
super(world, s);
public EntityPlayer(MinecraftServer minecraftserver, WorldServer worldserver, GameProfile gameprofile, PlayerInteractManager playerinteractmanager) {
super(worldserver, gameprofile);
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 4bae056..e7ea9b4 100644
index 0b8b324..fb53781 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1122,6 +1122,19 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
getHandle().playerConnection.sendPacket( packet );
}
@@ -1130,6 +1130,19 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
// Spigot start
private final Player.Spigot spigot = new Player.Spigot()
{
+
+ @Override
+ public boolean getCollidesWithEntities()
@ -81,5 +81,5 @@ index 4bae056..e7ea9b4 100644
public Player.Spigot spigot()
--
1.8.1.2
1.8.3.2

View File

@ -1,27 +1,27 @@
From 0a366cc0e18159db488f1245e5ebf1b12b714351 Mon Sep 17 00:00:00 2001
From 102e1936c0748aa6f3ead6c5afd487cb77db2cde Mon Sep 17 00:00:00 2001
From: agentk20 <agentkid20@gmail.com>
Date: Sat, 3 Aug 2013 19:28:48 +1000
Subject: [PATCH] Fully Disable Snooper When Not Required
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index c0dfdb5..5a153de 100644
index 5a07791..2ab8366 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -498,11 +498,11 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
this.I = Packet.p;
@@ -545,11 +545,11 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
this.f[this.ticks % 100] = System.nanoTime() - i;
this.methodProfiler.b();
this.methodProfiler.a("snooper");
- if (!this.n.d() && this.ticks > 100) {
+ if (getSnooperEnabled() && !this.n.d() && this.ticks > 100) { // Spigot
this.n.a();
- if (!this.k.d() && this.ticks > 100) {
+ if (getSnooperEnabled() && !this.k.d() && this.ticks > 100) { // Spigot
this.k.a();
}
- if (this.ticks % 6000 == 0) {
+ if (getSnooperEnabled() && this.ticks % 6000 == 0) { // Spigot
this.n.b();
this.k.b();
}
--
1.8.1.2
1.8.3.2

View File

@ -1,14 +1,14 @@
From ff0cd39627b4395a87f4190d6f9844530de8b189 Mon Sep 17 00:00:00 2001
From dabdf5b931a35d41f2f843a35f8c3d9545892221 Mon Sep 17 00:00:00 2001
From: DerFlash <bte@freenet.de>
Date: Sat, 3 Aug 2013 19:53:48 +1000
Subject: [PATCH] Add Getter for Entity Invulnerability
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index 4f4b84f..65a77dc 100644
index e026c1f..96d763b 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -402,6 +402,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
@@ -403,6 +403,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
// Spigot start
private final Spigot spigot = new Spigot()
{
@ -21,5 +21,5 @@ index 4f4b84f..65a77dc 100644
public Spigot spigot()
--
1.8.1.2
1.8.3.2

View File

@ -1,11 +1,11 @@
From 7fb383919a5aa0e3be32033ba0be45553a590393 Mon Sep 17 00:00:00 2001
From e4739307ff133e2aead015ce083a58f2d3463d7e Mon Sep 17 00:00:00 2001
From: Ammar Askar <ammar@ammaraskar.com>
Date: Sat, 3 Aug 2013 21:42:00 +0500
Subject: [PATCH] Guard entity list
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 690f768..e3ff733 100644
index 35537c6..ede8912 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -29,7 +29,25 @@ import org.bukkit.event.weather.ThunderChangeEvent;
@ -35,15 +35,15 @@ index 690f768..e3ff733 100644
protected List f = new ArrayList();
public Set tileEntityList = new HashSet(); // CraftBukkit - ArrayList -> HashSet
private List a = new ArrayList();
@@ -74,6 +92,7 @@ public abstract class World implements IBlockAccess {
int[] H;
public boolean isStatic;
@@ -76,6 +94,7 @@ public abstract class World implements IBlockAccess {
int[] I;
// Spigot start
+ private boolean guardEntityList = false;
protected final gnu.trove.map.hash.TLongShortHashMap chunkTickList;
protected float growthOdds = 100;
protected float modifiedOdds = 100;
@@ -1286,6 +1305,7 @@ public abstract class World implements IBlockAccess {
@@ -1264,6 +1283,7 @@ public abstract class World implements IBlockAccess {
org.spigotmc.ActivationRange.activateEntities(this); // Spigot
timings.entityTick.startTiming(); // Spigot
@ -51,7 +51,7 @@ index 690f768..e3ff733 100644
for (i = 0; i < this.entityList.size(); ++i) {
entity = (Entity) this.entityList.get(i);
@@ -1333,12 +1353,15 @@ public abstract class World implements IBlockAccess {
@@ -1311,12 +1331,15 @@ public abstract class World implements IBlockAccess {
this.getChunkAt(j, k).b(entity);
}
@ -66,7 +66,7 @@ index 690f768..e3ff733 100644
+ guardEntityList = false; // Spigot
timings.entityTick.stopTiming(); // Spigot
this.methodProfiler.c("tileEntities");
this.methodProfiler.c("blockEntities");
--
1.8.3.2

View File

@ -1,14 +1,14 @@
From 9d02a6efdc53c838fd41d6c354f9dbd235c59b11 Mon Sep 17 00:00:00 2001
From a9e2039b9c817fd82bf8796da1b344dbeceb6475 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Mon, 5 Aug 2013 20:17:20 +1000
Subject: [PATCH] Cap Minimum Player Speed
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index e7ea9b4..33674b1 100644
index fb53781..bcfda5b 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -952,7 +952,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1002,7 +1002,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
public void setFlySpeed(float value) {
validateSpeed(value);
EntityPlayer player = getHandle();
@ -17,7 +17,7 @@ index e7ea9b4..33674b1 100644
player.updateAbilities();
}
@@ -960,7 +960,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1010,7 +1010,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
public void setWalkSpeed(float value) {
validateSpeed(value);
EntityPlayer player = getHandle();
@ -27,5 +27,5 @@ index e7ea9b4..33674b1 100644
}
--
1.8.1.2
1.8.3.2

View File

@ -1,22 +0,0 @@
From 101c4c46597d7dfd482177fe22ddc0ef7df9d6b5 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Thu, 4 Jul 2013 10:11:46 +1000
Subject: [PATCH] Colour Console Messages
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index dec46bd..c0dfdb5 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -917,7 +917,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
}
public void sendMessage(ChatMessage chatmessage) {
- this.getLogger().info(chatmessage.toString());
+ this.console.sendMessage(chatmessage.toString()); // Spigot - we want coloured and pretty messages too!
}
public boolean a(int i, String s) {
--
1.8.1.2

View File

@ -1,17 +1,17 @@
From e967122cbe41d627ea98e32d55f321212e57b26b Mon Sep 17 00:00:00 2001
From e7b9d56645ff0e83b26e9e6621ffe96001288c4e Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sat, 14 Sep 2013 10:16:38 +1000
Subject: [PATCH] Update Inventory and Health for PlayerConsumeItemEvent
diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java
index b180933..36eca0f 100644
index 14f5510..a14e3d9 100644
--- a/src/main/java/net/minecraft/server/EntityHuman.java
+++ b/src/main/java/net/minecraft/server/EntityHuman.java
@@ -258,6 +258,10 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
@@ -277,6 +277,10 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
// Update client
if (this instanceof EntityPlayer) {
((EntityPlayer) this).playerConnection.sendPacket(new Packet103SetSlot((byte) 0, activeContainer.a((IInventory) this.inventory, this.inventory.itemInHandIndex).index, this.f));
((EntityPlayer) this).playerConnection.sendPacket(new PacketPlayOutSetSlot((byte) 0, activeContainer.a((IInventory) this.inventory, this.inventory.itemInHandIndex).index, this.f));
+ // Spigot Start
+ ((EntityPlayer) this).getBukkitEntity().updateInventory();
+ ((EntityPlayer) this).getBukkitEntity().updateScaledHealth();
@ -20,5 +20,5 @@ index b180933..36eca0f 100644
return;
}
--
1.8.1.2
1.8.3.2

View File

@ -1,4 +1,4 @@
From 8e379c60ac61ac1a226407eaf6bcfe97e0165501 Mon Sep 17 00:00:00 2001
From 2df0995cba9ed8b162392ebe8bb8719b8cab7864 Mon Sep 17 00:00:00 2001
From: BlackHole <black-hole@live.com>
Date: Tue, 16 Jul 2013 22:34:50 +0200
Subject: [PATCH] Call EntityChangeBlockEvent for Fire Arrows hitting TNT
@ -31,5 +31,5 @@ index 9acd4f2..312b4c8 100644
world.setAir(i, j, k);
}
--
1.8.1.2
1.8.3.2

View File

@ -1,4 +1,4 @@
From 43abae864c7a6003f326e1c8649102e9695fff3c Mon Sep 17 00:00:00 2001
From b8c36f916c18da6c3446eb6298bfa9cdc15e8b4d Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sat, 21 Sep 2013 12:33:09 +1000
Subject: [PATCH] Allow Disabling of 1.6.3 Structure Saving
@ -47,5 +47,5 @@ index 2caafa2..a34670e 100644
+ }
}
--
1.8.1.2
1.8.3.2

View File

@ -1,22 +1,22 @@
From cbe7a0b1db676b84316ecb88540df21103b43529 Mon Sep 17 00:00:00 2001
From 888b4be4d4d65a9dae6c04f31efe23d1c136c00d Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sun, 22 Sep 2013 19:10:53 +1000
Subject: [PATCH] Item Despawn Rate
diff --git a/src/main/java/net/minecraft/server/EntityItem.java b/src/main/java/net/minecraft/server/EntityItem.java
index 24c44ad..52878ff 100644
index 08b9ac8..8ea7abc 100644
--- a/src/main/java/net/minecraft/server/EntityItem.java
+++ b/src/main/java/net/minecraft/server/EntityItem.java
@@ -100,7 +100,7 @@ public class EntityItem extends Entity {
}
@@ -104,7 +104,7 @@ public class EntityItem extends Entity {
}
// ++this.age; // CraftBukkit - Moved up
- if (!this.world.isStatic && this.age >= 6000) {
+ if (!this.world.isStatic && this.age >= world.spigotConfig.itemDespawnRate) {
// CraftBukkit start
if (org.bukkit.craftbukkit.event.CraftEventFactory.callItemDespawnEvent(this).isCancelled()) {
this.age = 0;
// ++this.age; // CraftBukkit - Moved up
- if (!this.world.isStatic && this.age >= 6000) {
+ if (!this.world.isStatic && this.age >= world.spigotConfig.itemDespawnRate) { // Spigot
// CraftBukkit start
if (org.bukkit.craftbukkit.event.CraftEventFactory.callItemDespawnEvent(this).isCancelled()) {
this.age = 0;
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
index a34670e..4631165 100644
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
@ -34,5 +34,5 @@ index a34670e..4631165 100644
+ }
}
--
1.8.1.2
1.8.3.2

View File

@ -1,22 +1,22 @@
From 490c0a6236569702b6804ce60ad5833615302f58 Mon Sep 17 00:00:00 2001
From 1e90d6dd86ba54a7fd68631543d9f40764aa5d41 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sun, 6 Oct 2013 17:36:28 +1100
Subject: [PATCH] Don't Special Case X Move Value
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index 10d853b..fbba359 100644
index 2e04e71..5c86849 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -96,6 +96,7 @@ public class PlayerConnection extends Connection {
@@ -102,6 +102,7 @@ public class PlayerConnection implements PacketPlayInListener {
private float lastPitch = Float.MAX_VALUE;
private float lastYaw = Float.MAX_VALUE;
private boolean justTeleported = false;
+ private boolean hasMoved; // Spigot
// For the packet15 hack :(
// For the PacketPlayOutBlockPlace hack :(
Long lastPacket;
@@ -222,7 +223,7 @@ public class PlayerConnection extends Connection {
@@ -218,7 +219,7 @@ public class PlayerConnection implements PacketPlayInListener {
this.lastPitch = to.getPitch();
// Skip the first time we do this
@ -25,7 +25,7 @@ index 10d853b..fbba359 100644
PlayerMoveEvent event = new PlayerMoveEvent(player, from, to);
this.server.getPluginManager().callEvent(event);
@@ -246,7 +247,7 @@ public class PlayerConnection extends Connection {
@@ -242,7 +243,7 @@ public class PlayerConnection implements PacketPlayInListener {
this.justTeleported = false;
return;
}
@ -33,7 +33,7 @@ index 10d853b..fbba359 100644
+ } else { hasMoved = true; } // Spigot - Better Check!
}
if (Double.isNaN(packet10flying.x) || Double.isNaN(packet10flying.y) || Double.isNaN(packet10flying.z) || Double.isNaN(packet10flying.stance)) {
if (Double.isNaN(packetplayinflying.x) || Double.isNaN(packetplayinflying.y) || Double.isNaN(packetplayinflying.z) || Double.isNaN(packetplayinflying.stance)) {
--
1.8.1.2
1.8.3.2

View File

@ -1,14 +1,14 @@
From 6912aa737396aa58002642e475abb6f7daad090a Mon Sep 17 00:00:00 2001
From 542bb89a252992890ee1c363339e05c3416f292b Mon Sep 17 00:00:00 2001
From: ninja- <xninja@openmailbox.org>
Date: Tue, 8 Oct 2013 14:34:49 +0200
Subject: [PATCH] Implement respawn API.
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 33674b1..ed93040 100644
index bcfda5b..7fecef9 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1135,6 +1135,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1143,6 +1143,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
getHandle().collidesWithEntities = collides;
getHandle().m = collides; // First boolean of Entity
}
@ -25,5 +25,5 @@ index 33674b1..ed93040 100644
public Player.Spigot spigot()
--
1.8.1.2
1.8.3.2

View File

@ -1,4 +1,4 @@
From 9a97b720c5e71939cb458b9f09c83a6446d1fd04 Mon Sep 17 00:00:00 2001
From 06b934ee352dad1b2b6e8c3a3d3c794b85dab4b8 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Wed, 9 Oct 2013 18:20:05 +1100
Subject: [PATCH] Fix BrewingStands Removing NBT / Potions
@ -24,5 +24,5 @@ index 270b2cb..308207a 100644
}
}
--
1.8.1.2
1.8.3.2

View File

@ -1,16 +1,16 @@
From f994c1f9c7f866dbc9defa92651248d01c324d8f Mon Sep 17 00:00:00 2001
From 7fe7946cf5bfa020ff811aff91c7046f8e50f536 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Mon, 14 Oct 2013 19:20:10 +1100
Subject: [PATCH] Arrow Despawn Rate
diff --git a/src/main/java/net/minecraft/server/EntityArrow.java b/src/main/java/net/minecraft/server/EntityArrow.java
index b1d3de8..75fe81b 100644
index 3fd3de9..a49519b 100644
--- a/src/main/java/net/minecraft/server/EntityArrow.java
+++ b/src/main/java/net/minecraft/server/EntityArrow.java
@@ -142,7 +142,7 @@ public class EntityArrow extends Entity implements IProjectile {
@@ -141,7 +141,7 @@ public class EntityArrow extends Entity implements IProjectile {
if (j == this.g && k == this.h) {
if (block == this.g && i == this.h) {
++this.j;
- if (this.j == 1200) {
+ if (this.j == world.spigotConfig.arrowDespawnRate) { // Spigot
@ -34,5 +34,5 @@ index 4631165..300db67 100644
+ }
}
--
1.8.1.2
1.8.3.2

View File

@ -1,22 +1,22 @@
From d58927bfbd44ebba7f3fd4e55bfe75cac76110f6 Mon Sep 17 00:00:00 2001
From d53c57c05f88c08c5cc27eb9fa227f4dccfce3f3 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.
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 5a153de..fb8bc87 100644
index 2ab8366..831707c 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -415,6 +415,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
this.s();
@@ -436,6 +436,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
this.t();
SpigotTimings.serverTickTimer.stopTiming();
org.spigotmc.CustomTimingsHandler.tick();
+ org.spigotmc.WatchdogThread.tick();
}
// Spigot end
} else {
@@ -442,6 +443,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
@@ -462,6 +463,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
this.a(crashreport);
} finally {
try {
@ -142,10 +142,10 @@ index 0000000..3ca7a46
+ }
+}
diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java
index 8d8bc97..6c0a14d 100644
index e65978b..94a1e3b 100644
--- a/src/main/java/org/spigotmc/SpigotConfig.java
+++ b/src/main/java/org/spigotmc/SpigotConfig.java
@@ -278,4 +278,18 @@ public class SpigotConfig
@@ -192,4 +192,18 @@ public class SpigotConfig
Bukkit.getLogger().setFilter( new LogFilter() );
}
@ -292,5 +292,5 @@ index 0000000..8d6e1b4
+ }
+}
--
1.8.1.2
1.8.3.2

View File

@ -1,106 +0,0 @@
From a23ad3d71fd60b003ddeef47a6a98758a99280aa Mon Sep 17 00:00:00 2001
From: Dylan Xaldin <Puremin0rez515@gmail.com>
Date: Sat, 14 Sep 2013 11:02:34 +1000
Subject: [PATCH] Nerf Zombie Lag Issues
Nerf the Zombie Lag issues in MC 1.6 - "Fixes" MC-17630
diff --git a/src/main/java/net/minecraft/server/PathfinderGoalMeleeAttack.java b/src/main/java/net/minecraft/server/PathfinderGoalMeleeAttack.java
index a07c6cf..ee4bc7e 100644
--- a/src/main/java/net/minecraft/server/PathfinderGoalMeleeAttack.java
+++ b/src/main/java/net/minecraft/server/PathfinderGoalMeleeAttack.java
@@ -63,19 +63,88 @@ public class PathfinderGoalMeleeAttack extends PathfinderGoal {
this.b.getNavigation().h();
}
+ // Spigot start
+ private double pathX;
+ private double pathY;
+ private double pathZ;
+ private boolean prevPathOK;
+ private int fullRangeSearchDelay;
+ // Spigot end
public void e() {
EntityLiving entityliving = this.b.getGoalTarget();
this.b.getControllerLook().a(entityliving, 30.0F, 30.0F);
+ double goalDistanceSq = this.b.e( entityliving.locX, entityliving.boundingBox.b, entityliving.locZ ); // Spigot
if ((this.e || this.b.getEntitySenses().canSee(entityliving)) && --this.h <= 0) {
- this.h = 4 + this.b.aD().nextInt(7);
- this.b.getNavigation().a((Entity) entityliving, this.d);
+ // Spigot start
+ double targetMovement = entityliving.e( pathX, pathY, pathZ );
+ // If this is true, then we are re-pathing
+ if ( ( this.h <= 0 && targetMovement >= 1.0D ) || ( this.h <= 0 && this.b.aD().nextInt( 200 ) == 0 ) ) /* EntityCreature random instance */
+
+ {
+ AttributeInstance rangeAttr = this.b.getAttributeInstance( GenericAttributes.b );
+ double origRange = rangeAttr.getValue();
+ if ( fullRangeSearchDelay > 0 )
+ {
+
+ double dist = Math.sqrt( goalDistanceSq );
+ if ( dist <= 8.0D )
+ {
+ dist = 8.0D;
+ }
+ if ( dist > origRange )
+ {
+ dist = origRange;
+ }
+ rangeAttr.setValue( dist );
+ }
+
+ prevPathOK = this.b.getNavigation().a( (Entity) entityliving, this.d );
+
+ if ( fullRangeSearchDelay > 0 )
+ {
+ fullRangeSearchDelay--;
+ if ( origRange > 40.0D )
+ {
+ origRange = 40.0D;
+ }
+ rangeAttr.setValue( origRange );
+ }
+
+ pathX = entityliving.locX;
+ pathY = entityliving.boundingBox.b;
+ pathZ = entityliving.locZ;
+ this.h = 4 + this.b.aD().nextInt( 7 ); /* EntityCreature random instance */
+
+ if ( goalDistanceSq > 256.0D )
+ {
+ if ( goalDistanceSq > 1024.0D )
+ {
+ this.h += 8;
+ } else
+ {
+ this.h += 16;
+ }
+ } else if ( !prevPathOK )
+ {
+ this.h += 24;
+ }
+
+ if ( !prevPathOK || goalDistanceSq <= 256.0D )
+ {
+ if ( fullRangeSearchDelay <= 0 )
+ {
+ fullRangeSearchDelay = 4 + this.b.aD().nextInt( 4 ); /* EntityCreature random instance */
+ }
+ }
+ }
}
+ // Spigot end
this.c = Math.max(this.c - 1, 0);
double d0 = (double) (this.b.width * 2.0F * this.b.width * 2.0F + entityliving.width);
- if (this.b.e(entityliving.locX, entityliving.boundingBox.b, entityliving.locZ) <= d0) {
+ if (goalDistanceSq <= d0) { // Spigot
if (this.c <= 0) {
this.c = 20;
if (this.b.aZ() != null) {
--
1.8.1.2

View File

@ -1,22 +0,0 @@
From f5c73385759005fc5622de0d33926a931e883125 Mon Sep 17 00:00:00 2001
From: mrapple <tony@oc.tc>
Date: Tue, 1 Oct 2013 21:10:50 -0500
Subject: [PATCH] Fix clearing potion effects on respawn -- missed rename
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
index 6c55250..d84c1be 100644
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -958,7 +958,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
this.expTotal = this.newTotalExp;
this.exp = 0;
this.deathTicks = 0;
- this.aJ(); // Should be removeAllEffects.
+ this.aK(); // Should be removeAllEffects.
this.updateEffects = true;
this.activeContainer = this.defaultContainer;
this.killer = null;
--
1.8.1.2