Update to Minecraft 1.8.3

This commit is contained in:
Thinkofdeath 2015-02-28 11:36:22 +00:00 committed by Zach Brown
parent 9b05d00764
commit e5290a457a
160 changed files with 2371 additions and 3138 deletions

View File

@ -1,11 +1,11 @@
From 3944fc93fc9dda3a79b13b15b159b75875ea7ee0 Mon Sep 17 00:00:00 2001
From eaef9b5a74b7256497d5f048a61118d7403c7114 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sun, 2 Jun 2013 10:36:24 +1000
Subject: [PATCH] POM Changes
diff --git a/pom.xml b/pom.xml
index 853fab1..7be35f3 100644
index 085883e..f29b8f7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,14 +9,14 @@
@ -16,7 +16,7 @@ index 853fab1..7be35f3 100644
- <artifactId>bukkit</artifactId>
+ <groupId>org.spigotmc</groupId>
+ <artifactId>spigot-api</artifactId>
<version>1.8-R0.1-SNAPSHOT</version>
<version>1.8.3-R0.1-SNAPSHOT</version>
<packaging>jar</packaging>
- <name>Bukkit</name>

View File

@ -1,4 +1,4 @@
From 9993323860c8eb9bb972aaaf06e5fbea29727378 Mon Sep 17 00:00:00 2001
From d2ba450a4a2ae61f6d3ba8b45bf56a696d0c7eb4 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
@ -6,7 +6,7 @@ Subject: [PATCH] POM Changes
Basic changes to the build system which mark the artifact as Spigot, and the necessary code changes to ensure proper functionality. Also disables the auto updater provided by CraftBukkit as it is useless to us.
diff --git a/pom.xml b/pom.xml
index fec390d..bcd3a30 100644
index 7f49330..eb0128a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,12 +1,12 @@
@ -18,7 +18,7 @@ index fec390d..bcd3a30 100644
+ <groupId>org.spigotmc</groupId>
+ <artifactId>spigot</artifactId>
<packaging>jar</packaging>
<version>1.8-R0.1-SNAPSHOT</version>
<version>1.8.3-R0.1-SNAPSHOT</version>
- <name>CraftBukkit</name>
- <url>http://www.bukkit.org</url>
+ <name>Spigot</name>
@ -26,7 +26,7 @@ index fec390d..bcd3a30 100644
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -20,10 +20,17 @@
@@ -20,10 +20,22 @@
<maven.compiler.target>1.6</maven.compiler.target>
</properties>
@ -41,12 +41,17 @@ index fec390d..bcd3a30 100644
<dependency>
- <groupId>org.bukkit</groupId>
- <artifactId>bukkit</artifactId>
+ <groupId>net.sf.trove4j</groupId>
+ <artifactId>trove4j</artifactId>
+ <version>3.0.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.spigotmc</groupId>
+ <artifactId>spigot-api</artifactId>
<version>${project.version}</version>
<type>jar</type>
<scope>compile</scope>
@@ -93,21 +100,39 @@
@@ -93,21 +105,39 @@
<!-- This builds a completely 'ready to start' jar with all dependencies inside -->
<build>
@ -89,7 +94,7 @@ index fec390d..bcd3a30 100644
<phase>compile</phase>
<goals>
<goal>gitdescribe</goal>
@@ -124,7 +149,7 @@
@@ -124,7 +154,7 @@
<manifestEntries>
<Main-Class>org.bukkit.craftbukkit.Main</Main-Class>
<Implementation-Title>CraftBukkit</Implementation-Title>
@ -98,7 +103,7 @@ index fec390d..bcd3a30 100644
<Implementation-Vendor>Bukkit Team</Implementation-Vendor>
<Specification-Title>Bukkit</Specification-Title>
<Specification-Version>${api.version}</Specification-Version>
@@ -169,7 +194,7 @@
@@ -169,7 +199,7 @@
<configuration>
<signature>
<groupId>org.codehaus.mojo.signature</groupId>

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
From af4dd992f13829f1991cfb775e0726ba5fe49d09 Mon Sep 17 00:00:00 2001
From e31c5dbce193a2d4aaedd1094e2d37821bdeba7b 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
@ -6,10 +6,10 @@ Subject: [PATCH] Skeleton API Implementations
This contains the basic, empty implementations for some Spigot-API extensions. They are included early in the patching progress so that compilation will still succeed midway despite the APIs only being provided by subsequent patches.
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 1f936b0..cd304ac 100644
index 629e6b8..4b3fcac 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -1628,4 +1628,14 @@ public final class CraftServer implements Server {
@@ -1642,4 +1642,14 @@ public final class CraftServer implements Server {
public UnsafeValues getUnsafe() {
return CraftMagicNumbers.INSTANCE;
}
@ -25,10 +25,10 @@ index 1f936b0..cd304ac 100644
+ }
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index dac2ad0..5ef7d97 100644
index 621c89f..20357f9 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -1345,4 +1345,14 @@ public class CraftWorld implements World {
@@ -1353,4 +1353,14 @@ public class CraftWorld implements World {
cps.queueUnload(chunk.locX, chunk.locZ);
}
}
@ -104,7 +104,7 @@ index 64e346d..243e8e5 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 6361b44..fed7b4d 100644
index 05923b4..058141d 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1313,4 +1313,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@ -161,10 +161,10 @@ index d3ae91b..0b71b53 100644
+ // Spigot end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java
index c4db462..fa6e826 100644
index ce42b30..342d4af 100644
--- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java
+++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java
@@ -214,5 +214,26 @@ final class CraftTeam extends CraftScoreboardComponent implements Team {
@@ -212,5 +212,26 @@ final class CraftTeam extends CraftScoreboardComponent implements Team {
return !(this.team != other.team && (this.team == null || !this.team.equals(other.team)));
}

View File

@ -1,4 +1,4 @@
From 3985866c3e05358f49461327fa3d04b610eaf494 Mon Sep 17 00:00:00 2001
From a5d8ed7311a8a717390419672a8b7b4165adad01 Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Mon, 14 Apr 2014 10:38:04 +1000
Subject: [PATCH] Obfuscation Helpers
@ -6,10 +6,10 @@ Subject: [PATCH] Obfuscation Helpers
Provides several friendly named methods which map to a obfuscated method. Obfuscated methods which are used frequently should be added to this file to ease with updates to new Minecraft versions.
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 4bd0c85..0a707eb 100644
index 4219e7b..486e652 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1309,6 +1309,12 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
@@ -1288,6 +1288,12 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
}
@ -19,7 +19,7 @@ index 4bd0c85..0a707eb 100644
+ return this.q;
+ }
+ // Spigot End
public ServerConnection ao() {
public ServerConnection ap() {
return this.q;
}
--

View File

@ -1,4 +1,4 @@
From 6c38d387d270dea5a06c8e784e2831e65c500ac6 Mon Sep 17 00:00:00 2001
From 0b8be4fd43a70c45431189ab67cc200fa0669586 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
@ -6,10 +6,10 @@ Subject: [PATCH] Spigot Configuration
Provides the basic infrastructure to load and save the Spigot configuration file, spigot.yml
diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java
index 29c0a34..424b71d 100644
index d57a796..8bc6ad6 100644
--- a/src/main/java/net/minecraft/server/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/DedicatedServer.java
@@ -116,6 +116,11 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
@@ -163,6 +163,11 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
if (this.Q() < 0) {
this.setPort(this.propertyManager.getInt("server-port", 25565));
}
@ -21,7 +21,7 @@ index 29c0a34..424b71d 100644
DedicatedServer.LOGGER.info("Generating keypair");
this.a(MinecraftEncryption.b());
@@ -130,7 +135,11 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
@@ -177,7 +182,11 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
return false;
}
@ -35,10 +35,10 @@ index 29c0a34..424b71d 100644
if (!this.getOnlineMode()) {
DedicatedServer.LOGGER.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 8dde097..3c1ba5b 100644
index 5c2e218..345ede9 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -98,6 +98,7 @@ public abstract class World implements IBlockAccess {
@@ -99,6 +99,7 @@ public abstract class World implements IBlockAccess {
public long ticksPerMonsterSpawns;
public boolean populating;
private int tickPosition;
@ -46,7 +46,7 @@ index 8dde097..3c1ba5b 100644
public CraftWorld getWorld() {
return this.world;
@@ -112,6 +113,7 @@ public abstract class World implements IBlockAccess {
@@ -113,6 +114,7 @@ public abstract class World implements IBlockAccess {
}
protected World(IDataManager idatamanager, WorldData worlddata, WorldProvider worldprovider, MethodProfiler methodprofiler, boolean flag, ChunkGenerator gen, org.bukkit.World.Environment env) {
@ -55,7 +55,7 @@ index 8dde097..3c1ba5b 100644
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 cd304ac..09c723f 100644
index 4b3fcac..2aceeb4 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -247,8 +247,10 @@ public final class CraftServer implements Server {

View File

@ -1,4 +1,4 @@
From c013f6381cd2c734afb9b84301b85cbeedad8315 Mon Sep 17 00:00:00 2001
From 47268e1d09430b441ffbd123d6cab9b2da8c9bda 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
@ -6,19 +6,19 @@ Subject: [PATCH] Better Chunk Tick Selection
An optimized chunk ticking algorithm which better selects chunks around players which are active on the server.
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 3c1ba5b..6d8a5e8 100644
index 345ede9..bed457a 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -64,7 +64,7 @@ public abstract class World implements IBlockAccess {
public Scoreboard scoreboard = new Scoreboard();
public final boolean isStatic;
@@ -65,7 +65,7 @@ public abstract class World implements IBlockAccess {
public Scoreboard scoreboard = new Scoreboard(); // CraftBukkit - public
public final boolean isClientSide;
// CraftBukkit - longhashset
- protected LongHashSet chunkTickList = new LongHashSet();
+ // protected LongHashSet chunkTickList = new LongHashSet(); // Spigot
private int K;
public boolean allowMonsters;
public boolean allowAnimals;
@@ -98,6 +98,31 @@ public abstract class World implements IBlockAccess {
private int L;
public boolean allowMonsters; // CraftBukkit - public
public boolean allowAnimals; // CraftBukkit - public
@@ -99,6 +99,31 @@ public abstract class World implements IBlockAccess {
public long ticksPerMonsterSpawns;
public boolean populating;
private int tickPosition;
@ -50,7 +50,7 @@ index 3c1ba5b..6d8a5e8 100644
public final org.spigotmc.SpigotWorldConfig spigotConfig; // Spigot
public CraftWorld getWorld() {
@@ -119,6 +144,11 @@ public abstract class World implements IBlockAccess {
@@ -120,6 +145,12 @@ public abstract class World implements IBlockAccess {
this.ticksPerAnimalSpawns = this.getServer().getTicksPerAnimalSpawns(); // CraftBukkit
this.ticksPerMonsterSpawns = this.getServer().getTicksPerMonsterSpawns(); // CraftBukkit
// CraftBukkit end
@ -59,10 +59,11 @@ index 3c1ba5b..6d8a5e8 100644
+ this.chunkTickList = new gnu.trove.map.hash.TLongShortHashMap( spigotConfig.chunksPerTick * 5, 0.7f, Long.MIN_VALUE, Short.MIN_VALUE );
+ this.chunkTickList.setAutoCompactionFactor( 0 );
+ // Spigot end
this.K = this.random.nextInt(12000);
+
this.L = this.random.nextInt(12000);
this.allowMonsters = true;
@@ -1892,17 +1922,44 @@ public abstract class World implements IBlockAccess {
this.allowAnimals = true;
@@ -1945,17 +1976,44 @@ public abstract class World implements IBlockAccess {
int k;
int l;
@ -111,7 +112,7 @@ index 3c1ba5b..6d8a5e8 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 80c464a..b81b1ff 100644
index 32bf7ff..383a491 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -343,12 +343,15 @@ public class WorldServer extends World implements IAsyncTaskHandler {
@ -157,8 +158,8 @@ index 80c464a..b81b1ff 100644
+ // ChunkCoordIntPair chunkcoordintpair = (ChunkCoordIntPair) iterator.next();
int k = chunkX * 16;
int l = chunkZ * 16;
@@ -457,6 +472,12 @@ public class WorldServer extends World implements IAsyncTaskHandler {
@@ -456,6 +471,12 @@ public class WorldServer extends World implements IAsyncTaskHandler {
}
}

View File

@ -1,4 +1,4 @@
From 2543375c589c3493a9016a245ffa1b13395296fc Mon Sep 17 00:00:00 2001
From b018b675a420b7150b58a336044582a1ce034ba6 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
@ -6,10 +6,10 @@ Subject: [PATCH] Crop Growth Rates
Allows configuring the growth rates of crops as a percentage of their normal growth rate.
diff --git a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java
index 59d03ce..12e2b79 100644
index 4923f8b..6b02059 100644
--- a/src/main/java/net/minecraft/server/Block.java
+++ b/src/main/java/net/minecraft/server/Block.java
@@ -927,4 +927,16 @@ public class Block {
@@ -1009,4 +1009,16 @@ public class Block {
return 0;
}
// CraftBukkit end
@ -27,7 +27,7 @@ index 59d03ce..12e2b79 100644
+ // Spigot end
}
diff --git a/src/main/java/net/minecraft/server/BlockCactus.java b/src/main/java/net/minecraft/server/BlockCactus.java
index 6277752..d9f6e0b 100644
index 7f5e5ca..488e5c2 100644
--- a/src/main/java/net/minecraft/server/BlockCactus.java
+++ b/src/main/java/net/minecraft/server/BlockCactus.java
@@ -29,7 +29,7 @@ public class BlockCactus extends Block {
@ -40,7 +40,7 @@ index 6277752..d9f6e0b 100644
IBlockData iblockdata1 = iblockdata.set(BlockCactus.AGE, Integer.valueOf(0));
diff --git a/src/main/java/net/minecraft/server/BlockCrops.java b/src/main/java/net/minecraft/server/BlockCrops.java
index 2ce2e34..d61251f 100644
index e3e898e..b91b220 100644
--- a/src/main/java/net/minecraft/server/BlockCrops.java
+++ b/src/main/java/net/minecraft/server/BlockCrops.java
@@ -32,8 +32,7 @@ public class BlockCrops extends BlockPlant implements IBlockFragilePlantElement
@ -51,10 +51,10 @@ index 2ce2e34..d61251f 100644
- // CraftBukkit start
+ if (random.nextInt((int) (world.growthOdds / world.spigotConfig.wheatModifier * (25.0F / f)) + 1) == 0) { // Spigot // CraftBukkit start
IBlockData data = iblockdata.set(AGE, Integer.valueOf(i + 1));
CraftEventFactory.handleBlockGrowEvent(world, blockposition.getX(), blockposition.getY(), blockposition.getZ(), this, toLegacyData(data));
CraftEventFactory.handleBlockGrowEvent(world, blockposition.getX(), blockposition.getY(), blockposition.getZ(), this, toLegacyData(data));
// CraftBukkit end
diff --git a/src/main/java/net/minecraft/server/BlockGrass.java b/src/main/java/net/minecraft/server/BlockGrass.java
index fc0e540..09cdd8a 100644
index 147fb1f..844ad30 100644
--- a/src/main/java/net/minecraft/server/BlockGrass.java
+++ b/src/main/java/net/minecraft/server/BlockGrass.java
@@ -45,7 +45,7 @@ public class BlockGrass extends Block implements IBlockFragilePlantElement {
@ -67,7 +67,7 @@ index fc0e540..09cdd8a 100644
Block block = world.getType(blockposition1.up()).getBlock();
IBlockData iblockdata1 = world.getType(blockposition1);
diff --git a/src/main/java/net/minecraft/server/BlockMushroom.java b/src/main/java/net/minecraft/server/BlockMushroom.java
index f2944be..decefa9 100644
index 160a063..7cf7a08 100644
--- a/src/main/java/net/minecraft/server/BlockMushroom.java
+++ b/src/main/java/net/minecraft/server/BlockMushroom.java
@@ -20,7 +20,7 @@ public class BlockMushroom extends BlockPlant implements IBlockFragilePlantEleme
@ -80,7 +80,7 @@ index f2944be..decefa9 100644
boolean flag = true;
Iterator iterator = BlockPosition.b(blockposition.a(-4, -1, -4), blockposition.a(4, 1, 4)).iterator();
diff --git a/src/main/java/net/minecraft/server/BlockMycel.java b/src/main/java/net/minecraft/server/BlockMycel.java
index 8f792e4..cb383a5 100644
index 70405d5..d2bd4dd 100644
--- a/src/main/java/net/minecraft/server/BlockMycel.java
+++ b/src/main/java/net/minecraft/server/BlockMycel.java
@@ -44,7 +44,7 @@ public class BlockMycel extends Block {
@ -93,7 +93,7 @@ index 8f792e4..cb383a5 100644
IBlockData iblockdata1 = world.getType(blockposition1);
Block block = world.getType(blockposition1.up()).getBlock();
diff --git a/src/main/java/net/minecraft/server/BlockReed.java b/src/main/java/net/minecraft/server/BlockReed.java
index f453c36..27b7f81 100644
index fae75fa..d00067d 100644
--- a/src/main/java/net/minecraft/server/BlockReed.java
+++ b/src/main/java/net/minecraft/server/BlockReed.java
@@ -28,7 +28,7 @@ public class BlockReed extends Block {
@ -106,12 +106,12 @@ index f453c36..27b7f81 100644
// world.setTypeUpdate(blockposition.up(), this.getBlockData()); // CraftBukkit
BlockPosition upPos = blockposition.up();
diff --git a/src/main/java/net/minecraft/server/BlockSapling.java b/src/main/java/net/minecraft/server/BlockSapling.java
index ff4f576..39c0cba 100644
index a2667d9..45fbf5c 100644
--- a/src/main/java/net/minecraft/server/BlockSapling.java
+++ b/src/main/java/net/minecraft/server/BlockSapling.java
@@ -28,7 +28,7 @@ public class BlockSapling extends BlockPlant implements IBlockFragilePlantElemen
@@ -32,7 +32,7 @@ public class BlockSapling extends BlockPlant implements IBlockFragilePlantElemen
public void b(World world, BlockPosition blockposition, IBlockData iblockdata, Random random) {
if (!world.isStatic) {
if (!world.isClientSide) {
super.b(world, blockposition, iblockdata, random);
- if (world.getLightLevel(blockposition.up()) >= 9 && random.nextInt(7) == 0) {
+ if (world.getLightLevel(blockposition.up()) >= 9 && (random.nextInt(Math.max(2, (int) ((world.growthOdds / world.spigotConfig.saplingModifier * 7) + 0.5F))) == 0)) { // Spigot) {
@ -119,10 +119,10 @@ index ff4f576..39c0cba 100644
world.captureTreeGeneration = true;
// CraftBukkit end
diff --git a/src/main/java/net/minecraft/server/BlockStem.java b/src/main/java/net/minecraft/server/BlockStem.java
index e4c65ff..dba443a 100644
index 2ff1a6b..2618c40 100644
--- a/src/main/java/net/minecraft/server/BlockStem.java
+++ b/src/main/java/net/minecraft/server/BlockStem.java
@@ -47,7 +47,7 @@ public class BlockStem extends BlockPlant implements IBlockFragilePlantElement {
@@ -55,7 +55,7 @@ public class BlockStem extends BlockPlant implements IBlockFragilePlantElement {
if (world.getLightLevel(blockposition.up()) >= 9) {
float f = BlockCrops.a((Block) this, world, blockposition);

View File

@ -1,4 +1,4 @@
From 61c9eb61268478e85737ae6fc1c51fb5a6c659d1 Mon Sep 17 00:00:00 2001
From a343b092ffaac6e336eef36fac78bb6ad4962d1c 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
@ -6,24 +6,24 @@ Subject: [PATCH] More Efficient Chunk Save Queue
Optimizes the data structures behind the chunk save queue into ones more suitable for the type of data and access which they are used for.
diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
index 527ab42..33bb889 100644
index 044a09d..b7d09a9 100644
--- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java
+++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
@@ -15,8 +15,11 @@ import org.apache.logging.log4j.Logger;
@@ -16,8 +16,11 @@ import org.apache.logging.log4j.Logger;
public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver {
private static final Logger a = LogManager.getLogger();
- private List b = Lists.newArrayList();
- private Set c = Sets.newHashSet();
- private List<ChunkRegionLoader.PendingChunkToSave> b = Lists.newArrayList();
- private Set<ChunkCoordIntPair> c = Sets.newHashSet();
+ // Spigot start
+ private java.util.LinkedHashMap<ChunkCoordIntPair, PendingChunkToSave> pendingSaves = new java.util.LinkedHashMap<ChunkCoordIntPair, PendingChunkToSave>();
+ // private List b = Lists.newArrayList();
+ // private Set c = Sets.newHashSet();
+ // private List<ChunkRegionLoader.PendingChunkToSave> b = Lists.newArrayList();
+ // private Set<ChunkCoordIntPair> c = Sets.newHashSet();
+ // Spigot end
private Object d = new Object();
private final File e;
@@ -29,13 +32,11 @@ public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver {
@@ -30,13 +33,11 @@ public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver {
ChunkCoordIntPair chunkcoordintpair = new ChunkCoordIntPair(i, j);
synchronized (this.d) {
@ -42,14 +42,14 @@ index 527ab42..33bb889 100644
}
return RegionFileCache.a(this.e, i, j).chunkExists(i & 31, j & 31);
@@ -62,14 +63,12 @@ public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver {
@@ -63,14 +64,12 @@ public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver {
Object object = this.d;
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;
- if (((ChunkRegionLoader.PendingChunkToSave) this.b.get(k)).a.equals(chunkcoordintpair)) {
- nbttagcompound = ((ChunkRegionLoader.PendingChunkToSave) this.b.get(k)).b;
- break;
- }
- }
@ -62,14 +62,14 @@ index 527ab42..33bb889 100644
}
if (nbttagcompound == null) {
@@ -150,17 +149,14 @@ public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver {
@@ -149,17 +148,14 @@ public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver {
Object object = this.d;
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));
- if (((ChunkRegionLoader.PendingChunkToSave) this.b.get(i)).a.equals(chunkcoordintpair)) {
- this.b.set(i, new ChunkRegionLoader.PendingChunkToSave(chunkcoordintpair, nbttagcompound));
- return;
- }
- }
@ -78,15 +78,15 @@ index 527ab42..33bb889 100644
+ return;
}
- this.b.add(new PendingChunkToSave(chunkcoordintpair, nbttagcompound));
- this.b.add(new ChunkRegionLoader.PendingChunkToSave(chunkcoordintpair, nbttagcompound));
- this.c.add(chunkcoordintpair);
+ // this.b.add(new PendingChunkToSave(chunkcoordintpair, nbttagcompound));
+ // this.b.add(new ChunkRegionLoader.PendingChunkToSave(chunkcoordintpair, nbttagcompound));
+ // this.c.add(chunkcoordintpair);
+ // Spigot end
FileIOThread.a().a(this);
}
}
@@ -170,12 +166,14 @@ public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver {
@@ -169,12 +165,14 @@ public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver {
Object object = this.d;
synchronized (this.d) {
@ -96,14 +96,14 @@ index 527ab42..33bb889 100644
return false;
}
- pendingchunktosave = (PendingChunkToSave) this.b.remove(0);
- this.c.remove(pendingchunktosave.a);
+ pendingchunktosave = this.pendingSaves.values().iterator().next();
+ this.pendingSaves.remove(pendingchunktosave.a);
- chunkregionloader_pendingchunktosave = (ChunkRegionLoader.PendingChunkToSave) this.b.remove(0);
- this.c.remove(chunkregionloader_pendingchunktosave.a);
+ chunkregionloader_pendingchunktosave = this.pendingSaves.values().iterator().next();
+ this.pendingSaves.remove(chunkregionloader_pendingchunktosave.a);
+ // Spigot end
}
if (pendingchunktosave != null) {
if (chunkregionloader_pendingchunktosave != null) {
--
2.1.0

View File

@ -1,4 +1,4 @@
From 01d4432152e449698e95ac5ff2e98c5570fb239b Mon Sep 17 00:00:00 2001
From d715d750c402d8651a2df9457336ad821ba3085a 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,10 +6,10 @@ 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 21117cc..3f2c5f5 100644
index 1e575fe..fa7e6df 100644
--- a/src/main/java/net/minecraft/server/EntityItem.java
+++ b/src/main/java/net/minecraft/server/EntityItem.java
@@ -122,7 +122,10 @@ public class EntityItem extends Entity {
@@ -123,7 +123,10 @@ public class EntityItem extends Entity {
}
private void w() {
@ -21,7 +21,7 @@ index 21117cc..3f2c5f5 100644
while (iterator.hasNext()) {
EntityItem entityitem = (EntityItem) iterator.next();
@@ -156,11 +159,13 @@ public class EntityItem extends Entity {
@@ -157,11 +160,13 @@ public class EntityItem extends Entity {
} else if (itemstack1.count + itemstack.count > itemstack1.getMaxStackSize()) {
return false;
} else {
@ -41,10 +41,10 @@ index 21117cc..3f2c5f5 100644
}
} else {
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 6d8a5e8..30b5fed 100644
index bed457a..581224f 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -923,6 +923,23 @@ public abstract class World implements IBlockAccess {
@@ -967,6 +967,23 @@ public abstract class World implements IBlockAccess {
// Not all projectiles extend EntityProjectile, so check for Bukkit interface instead
event = CraftEventFactory.callProjectileLaunchEvent(entity);
}

View File

@ -1,4 +1,4 @@
From ebf7df36d00536e84229a9a839b9325248bad306 Mon Sep 17 00:00:00 2001
From 96589be25d952b55e40a187d76180559f16c4e66 Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Tue, 25 Mar 2014 16:10:01 +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 12e2b79..9a19752 100644
index 6b02059..66e099f 100644
--- a/src/main/java/net/minecraft/server/Block.java
+++ b/src/main/java/net/minecraft/server/Block.java
@@ -268,9 +268,13 @@ public class Block {
@@ -309,9 +309,13 @@ public class Block {
return 10;
}
@ -26,10 +26,10 @@ index 12e2b79..9a19752 100644
public int a(Random random) {
return 1;
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index e0bde4a..778bcd3 100644
index 9973ff7..256953f 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -565,6 +565,7 @@ public abstract class EntityLiving extends Entity {
@@ -570,6 +570,7 @@ public abstract class EntityLiving extends Entity {
}
public void addEffect(MobEffect mobeffect) {
@ -38,18 +38,18 @@ index e0bde4a..778bcd3 100644
if (isTickingEffects) {
effectsToProcess.add(mobeffect);
diff --git a/src/main/java/net/minecraft/server/EntityTracker.java b/src/main/java/net/minecraft/server/EntityTracker.java
index c9058db..350f2f7 100644
index 1cc9c95..de38e80 100644
--- a/src/main/java/net/minecraft/server/EntityTracker.java
+++ b/src/main/java/net/minecraft/server/EntityTracker.java
@@ -94,6 +94,7 @@ public class EntityTracker {
}
public void addEntity(Entity entity, int i, int j, boolean flag) {
public void addEntity(Entity entity, int i, final int j, boolean flag) {
+ org.spigotmc.AsyncCatcher.catchOp( "entity track"); // Spigot
if (i > this.e) {
i = this.e;
}
@@ -129,6 +130,7 @@ public class EntityTracker {
@@ -144,6 +145,7 @@ public class EntityTracker {
}
public void untrackEntity(Entity entity) {
@ -58,18 +58,18 @@ index c9058db..350f2f7 100644
EntityPlayer entityplayer = (EntityPlayer) entity;
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 1204c56..640d7ff 100644
index 5ef2be4..8d50e05 100644
--- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java
+++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java
@@ -308,6 +308,7 @@ public class EntityTrackerEntry {
@@ -310,6 +310,7 @@ public class EntityTrackerEntry {
}
public void updatePlayer(EntityPlayer entityplayer) {
+ org.spigotmc.AsyncCatcher.catchOp( "player tracker update"); // Spigot
if (entityplayer != this.tracker) {
if (this.c(entityplayer)) {
if (!this.trackedPlayers.contains(entityplayer) && (this.e(entityplayer) || this.tracker.attachedToPlayer)) {
@@ -538,6 +539,7 @@ public class EntityTrackerEntry {
if (!this.trackedPlayers.contains(entityplayer) && (this.e(entityplayer) || this.tracker.attachedToPlayer)) {
@@ -540,6 +541,7 @@ public class EntityTrackerEntry {
}
public void clear(EntityPlayer entityplayer) {
@ -78,10 +78,10 @@ index 1204c56..640d7ff 100644
this.trackedPlayers.remove(entityplayer);
entityplayer.d(this.tracker);
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 30b5fed..86be044 100644
index 581224f..a67736a 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -893,6 +893,7 @@ public abstract class World implements IBlockAccess {
@@ -937,6 +937,7 @@ public abstract class World implements IBlockAccess {
}
public boolean addEntity(Entity entity, SpawnReason spawnReason) { // Changed signature, added SpawnReason
@ -89,7 +89,7 @@ index 30b5fed..86be044 100644
if (entity == null) return false;
// CraftBukkit end
int i = MathHelper.floor(entity.locX / 16.0D);
@@ -1000,6 +1001,7 @@ public abstract class World implements IBlockAccess {
@@ -1044,6 +1045,7 @@ public abstract class World implements IBlockAccess {
}
public void removeEntity(Entity entity) {
@ -97,16 +97,16 @@ index 30b5fed..86be044 100644
entity.die();
if (entity instanceof EntityHuman) {
this.players.remove(entity);
@@ -2418,6 +2420,7 @@ public abstract class World implements IBlockAccess {
@@ -2474,6 +2476,7 @@ public abstract class World implements IBlockAccess {
}
public void b(Collection collection) {
public void b(Collection<Entity> collection) {
+ org.spigotmc.AsyncCatcher.catchOp( "entity world add"); // Spigot
// CraftBukkit start
// this.entityList.addAll(collection);
Iterator iterator = collection.iterator();
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 5ef7d97..faefbe7 100644
index 20357f9..7b05b6a 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -165,6 +165,7 @@ public class CraftWorld implements World {
@ -134,7 +134,7 @@ index 5ef7d97..faefbe7 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 fed7b4d..9268686 100644
index 058141d..5dafb80 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -214,6 +214,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@ -146,7 +146,7 @@ index fed7b4d..9268686 100644
getHandle().playerConnection.disconnect(message == null ? "" : message);
diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java
index 87259f1..295aed2 100644
index 197086e..fbea5db 100644
--- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java
+++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java
@@ -42,6 +42,7 @@ public final class CraftScoreboardManager implements ScoreboardManager {

View File

@ -1,4 +1,4 @@
From 5837c58367bc1875f9bd8855ff5d0d96983427d0 Mon Sep 17 00:00:00 2001
From 379a48509beb86d658aad372cde149f162da4277 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
@ -6,23 +6,23 @@ Subject: [PATCH] View Distance
This commit allows the user to select per world view distances, and view distances below 3. Be wary of the issues selecting a view distance of 1 or 2 may cause!
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
index 8ac9387..5ca5935 100644
index 688d6f0..abb24c8 100644
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
@@ -26,9 +26,9 @@ public class PlayerChunkMap {
@@ -28,9 +28,9 @@ public class PlayerChunkMap {
private final int[][] i = new int[][] { { 1, 0}, { 0, 1}, { -1, 0}, { 0, -1}};
private boolean wasNotEmpty; // CraftBukkit - add field
- public PlayerChunkMap(WorldServer worldserver) {
+ public PlayerChunkMap(WorldServer worldserver, int viewDistance /* Spigot */) {
this.world = worldserver;
- this.a(worldserver.getMinecraftServer().getPlayerList().t());
- this.a(worldserver.getMinecraftServer().getPlayerList().s());
+ this.a(viewDistance); // Spigot
}
public WorldServer a() {
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index b81b1ff..8a09a79 100644
index 383a491..a3c3c78 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -60,7 +60,7 @@ public class WorldServer extends World implements IAsyncTaskHandler {

View File

@ -1,4 +1,4 @@
From e38f480ecc388d126b04fa163159f90ecc314e90 Mon Sep 17 00:00:00 2001
From 0db746ad5cbf69d3f04721e57e4371d9af9af713 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Thu, 10 Jan 2013 00:18:11 -0500
Subject: [PATCH] Spigot Timings
@ -6,10 +6,10 @@ Subject: [PATCH] Spigot Timings
Overhauls the Timings System adding performance tracking all around the Minecraft Server
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index bf48742..867caca 100644
index aade3f5..cfcd71e 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -864,6 +864,7 @@ public class Chunk {
@@ -893,6 +893,7 @@ public class Chunk {
}
public void loadNearby(IChunkProvider ichunkprovider, IChunkProvider ichunkprovider1, int i, int j) {
@ -17,7 +17,7 @@ index bf48742..867caca 100644
boolean flag = ichunkprovider.isChunkLoaded(i, j - 1);
boolean flag1 = ichunkprovider.isChunkLoaded(i + 1, j);
boolean flag2 = ichunkprovider.isChunkLoaded(i, j + 1);
@@ -910,6 +911,7 @@ public class Chunk {
@@ -939,6 +940,7 @@ public class Chunk {
}
}
@ -26,10 +26,10 @@ index bf48742..867caca 100644
public BlockPosition h(BlockPosition blockposition) {
diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java
index a363af7..9ee7e75 100644
index 5d75348..e7cdb4e 100644
--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java
@@ -130,6 +130,7 @@ public class ChunkProviderServer implements IChunkProvider {
@@ -132,6 +132,7 @@ public class ChunkProviderServer implements IChunkProvider {
// CraftBukkit end
if (chunk == null) {
@ -37,15 +37,15 @@ index a363af7..9ee7e75 100644
chunk = this.loadChunk(i, j);
if (chunk == null) {
if (this.chunkProvider == null) {
@@ -181,6 +182,7 @@ public class ChunkProviderServer implements IChunkProvider {
@@ -182,6 +183,7 @@ public class ChunkProviderServer implements IChunkProvider {
}
// CraftBukkit end
chunk.loadNearby(this, this, i, j);
+ world.timings.syncChunkLoadTimer.stopTiming(); // Spigot
}
return chunk;
@@ -215,7 +217,9 @@ public class ChunkProviderServer implements IChunkProvider {
@@ -216,7 +218,9 @@ public class ChunkProviderServer implements IChunkProvider {
if (chunk != null) {
chunk.setLastSaved(this.world.getTime());
if (this.chunkProvider != null) {
@ -56,28 +56,29 @@ index a363af7..9ee7e75 100644
}
diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
index 33bb889..7caddb5 100644
index b7d09a9..5c0ab6c 100644
--- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java
+++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
@@ -45,7 +45,9 @@ public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver {
@@ -46,7 +46,9 @@ public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver {
// CraftBukkit start - Add async variant, provide compatibility
public Chunk a(World world, int i, int j) {
public Chunk a(World world, int i, int j) throws IOException {
+ world.timings.syncChunkLoadDataTimer.startTiming(); // Spigot
Object[] data = loadChunk(world, i, j);
+ world.timings.syncChunkLoadDataTimer.stopTiming(); // Spigot
if (data != null) {
Chunk chunk = (Chunk) data[0];
NBTTagCompound nbttagcompound = (NBTTagCompound) data[1];
@@ -400,6 +402,7 @@ public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver {
@@ -399,7 +401,7 @@ public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver {
public void loadEntities(Chunk chunk, NBTTagCompound nbttagcompound, World world) {
// CraftBukkit end
-
+ world.timings.syncChunkLoadEntitiesTimer.startTiming(); // Spigot
NBTTagList nbttaglist1 = nbttagcompound.getList("Entities", 10);
if (nbttaglist1 != null) {
@@ -425,7 +428,8 @@ public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver {
@@ -425,7 +427,8 @@ public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver {
}
}
}
@ -87,7 +88,7 @@ index 33bb889..7caddb5 100644
NBTTagList nbttaglist2 = nbttagcompound.getList("TileEntities", 10);
if (nbttaglist2 != null) {
@@ -438,6 +442,8 @@ public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver {
@@ -438,6 +441,8 @@ public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver {
}
}
}
@ -96,35 +97,35 @@ index 33bb889..7caddb5 100644
if (nbttagcompound.hasKeyOfType("TileTicks", 9)) {
NBTTagList nbttaglist3 = nbttagcompound.getList("TileTicks", 10);
@@ -457,6 +463,7 @@ public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver {
@@ -457,6 +462,7 @@ public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver {
}
}
}
+ world.timings.syncChunkLoadTileTicksTimer.stopTiming(); // Spigot
// return chunk; // CraftBukkit
// return chunk; // CraftBukkit
}
diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java
index 424b71d..390c6eb 100644
index 8bc6ad6..1e682e9 100644
--- a/src/main/java/net/minecraft/server/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/DedicatedServer.java
@@ -18,6 +18,7 @@ import java.io.PrintStream;
@@ -20,6 +20,7 @@ import java.io.PrintStream;
import org.apache.logging.log4j.Level;
import org.bukkit.craftbukkit.LoggerOutputStream;
+import org.bukkit.craftbukkit.SpigotTimings; // Spigot
import org.bukkit.event.server.ServerCommandEvent;
// CraftBukkit end
@@ -317,6 +318,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
import org.bukkit.craftbukkit.util.Waitable;
import org.bukkit.event.server.RemoteServerCommandEvent;
@@ -369,6 +370,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
}
public void aM() {
public void aN() {
+ SpigotTimings.serverCommandTimer.startTiming(); // Spigot
while (!this.k.isEmpty()) {
ServerCommand servercommand = (ServerCommand) this.k.remove(0);
while (!this.l.isEmpty()) {
ServerCommand servercommand = (ServerCommand) this.l.remove(0);
@@ -330,6 +332,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
@@ -382,6 +384,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
// CraftBukkit end
}
@ -133,7 +134,7 @@ index 424b71d..390c6eb 100644
public boolean ad() {
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index ccf6479..c699dd1 100644
index d004df3..d3c7d1b 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -16,6 +16,7 @@ import org.bukkit.entity.Hanging;
@ -144,7 +145,7 @@ index ccf6479..c699dd1 100644
import org.bukkit.event.entity.EntityCombustByEntityEvent;
import org.bukkit.event.hanging.HangingBreakByEntityEvent;
import org.bukkit.event.painting.PaintingBreakByEntityEvent;
@@ -112,6 +113,8 @@ public abstract class Entity implements ICommandListener {
@@ -114,6 +115,8 @@ public abstract class Entity implements ICommandListener {
public boolean valid; // CraftBukkit
public org.bukkit.projectiles.ProjectileSource projectileSource; // CraftBukkit - For projectiles only
@ -153,16 +154,15 @@ index ccf6479..c699dd1 100644
public int getId() {
return this.id;
}
@@ -379,6 +382,8 @@ public abstract class Entity implements ICommandListener {
@@ -380,6 +383,7 @@ public abstract class Entity implements ICommandListener {
}
public void move(double d0, double d1, double d2) {
+ org.bukkit.craftbukkit.SpigotTimings.entityMoveTimer.startTiming(); // Spigot
+
if (this.T) {
if (this.noclip) {
this.a(this.getBoundingBox().c(d0, d1, d2));
this.recalcPosition();
@@ -715,6 +720,7 @@ public abstract class Entity implements ICommandListener {
@@ -716,6 +720,7 @@ public abstract class Entity implements ICommandListener {
this.world.methodProfiler.b();
}
@ -171,10 +171,10 @@ index ccf6479..c699dd1 100644
private void recalcPosition() {
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index 778bcd3..cd56586 100644
index 256953f..24aaec5 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -21,6 +21,8 @@ import org.bukkit.event.entity.EntityRegainHealthEvent;
@@ -23,6 +23,8 @@ import org.bukkit.event.entity.EntityRegainHealthEvent;
import org.bukkit.event.vehicle.VehicleExitEvent;
// CraftBukkit end
@ -183,15 +183,15 @@ index 778bcd3..cd56586 100644
public abstract class EntityLiving extends Entity {
private static final UUID a = UUID.fromString("662A6B8D-DA3E-4C1C-8813-96EA6097278D");
@@ -1425,6 +1427,7 @@ public abstract class EntityLiving extends Entity {
@@ -1430,6 +1432,7 @@ public abstract class EntityLiving extends Entity {
}
public void s_() {
public void t_() {
+ SpigotTimings.timerEntityBaseTick.startTiming(); // Spigot
super.s_();
if (!this.world.isStatic) {
int i = this.bu();
@@ -1463,7 +1466,9 @@ public abstract class EntityLiving extends Entity {
super.t_();
if (!this.world.isClientSide) {
int i = this.bv();
@@ -1468,7 +1471,9 @@ public abstract class EntityLiving extends Entity {
}
}
@ -201,23 +201,23 @@ index 778bcd3..cd56586 100644
double d0 = this.locX - this.lastX;
double d1 = this.locZ - this.lastZ;
float f = (float) (d0 * d0 + d1 * d1);
@@ -1528,6 +1533,7 @@ public abstract class EntityLiving extends Entity {
@@ -1533,6 +1538,7 @@ public abstract class EntityLiving extends Entity {
this.world.methodProfiler.b();
this.aR += f2;
this.aT += f2;
+ SpigotTimings.timerEntityTickRest.stopTiming(); // Spigot
}
protected float h(float f, float f1) {
@@ -1592,6 +1598,7 @@ public abstract class EntityLiving extends Entity {
@@ -1597,6 +1603,7 @@ public abstract class EntityLiving extends Entity {
}
this.world.methodProfiler.a("ai");
+ SpigotTimings.timerEntityAI.startTiming(); // Spigot
if (this.bC()) {
this.aW = false;
this.aX = 0.0F;
@@ -1602,6 +1609,7 @@ public abstract class EntityLiving extends Entity {
if (this.bD()) {
this.aY = false;
this.aZ = 0.0F;
@@ -1607,6 +1614,7 @@ public abstract class EntityLiving extends Entity {
this.doTick();
this.world.methodProfiler.b();
}
@ -225,27 +225,27 @@ index 778bcd3..cd56586 100644
this.world.methodProfiler.b();
this.world.methodProfiler.a("jump");
@@ -1623,11 +1631,15 @@ public abstract class EntityLiving extends Entity {
this.aX *= 0.98F;
this.aY *= 0.98F;
this.aZ *= 0.9F;
@@ -1628,11 +1636,15 @@ public abstract class EntityLiving extends Entity {
this.aZ *= 0.98F;
this.ba *= 0.98F;
this.bb *= 0.9F;
+ SpigotTimings.timerEntityAIMove.startTiming(); // Spigot
this.g(this.aX, this.aY);
this.g(this.aZ, this.ba);
+ SpigotTimings.timerEntityAIMove.stopTiming(); // Spigot
this.world.methodProfiler.b();
this.world.methodProfiler.a("push");
if (!this.world.isStatic) {
if (!this.world.isClientSide) {
+ SpigotTimings.timerEntityAICollision.startTiming(); // Spigot
this.bK();
this.bL();
+ SpigotTimings.timerEntityAICollision.stopTiming(); // Spigot
}
this.world.methodProfiler.b();
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 0a707eb..76591fb 100644
index 486e652..61abf67 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -45,6 +45,7 @@ import joptsimple.OptionSet;
@@ -46,6 +46,7 @@ import joptsimple.OptionSet;
import org.bukkit.craftbukkit.Main;
import org.bukkit.World.Environment;
@ -253,15 +253,15 @@ index 0a707eb..76591fb 100644
import org.bukkit.craftbukkit.util.Waitable;
import org.bukkit.event.server.RemoteServerCommandEvent;
import org.bukkit.event.world.WorldSaveEvent;
@@ -596,6 +597,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
protected void x() {}
@@ -617,6 +618,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
protected void y() {}
protected void y() throws ExceptionWorldConflict { // CraftBukkit - added throws
protected void z() throws ExceptionWorldConflict { // CraftBukkit - added throws
+ SpigotTimings.serverTickTimer.startTiming(); // Spigot
long i = System.nanoTime();
++this.ticks;
@@ -622,10 +624,12 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
@@ -643,10 +645,12 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
}
if (autosavePeriod > 0 && this.ticks % autosavePeriod == 0) { // CraftBukkit
@ -274,7 +274,7 @@ index 0a707eb..76591fb 100644
}
this.methodProfiler.a("tallying");
@@ -642,6 +646,8 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
@@ -663,6 +667,8 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
this.methodProfiler.b();
this.methodProfiler.b();
@ -282,8 +282,8 @@ index 0a707eb..76591fb 100644
+ org.spigotmc.CustomTimingsHandler.tick(); // Spigot
}
public void z() {
@@ -664,16 +670,23 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
public void A() {
@@ -677,16 +683,23 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
this.methodProfiler.c("levels");
@ -307,7 +307,7 @@ index 0a707eb..76591fb 100644
// Send time updates to everyone, it will get the right time from the world the player is in.
if (this.ticks % 20 == 0) {
for (int i = 0; i < this.getPlayerList().players.size(); ++i) {
@@ -681,6 +694,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
@@ -694,6 +707,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
entityplayer.playerConnection.sendPacket(new PacketPlayOutUpdateTime(entityplayer.world.getTime(), entityplayer.getPlayerTime(), entityplayer.world.getGameRules().getBoolean("doDaylightCycle"))); // Add support for per player time
}
}
@ -315,27 +315,27 @@ index 0a707eb..76591fb 100644
int i;
@@ -704,7 +718,9 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
@@ -717,7 +731,9 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
CrashReport crashreport;
try {
+ worldserver.timings.doTick.startTiming(); // Spigot
worldserver.doTick();
+ worldserver.timings.doTick.stopTiming(); // Spigot
} catch (Throwable throwable1) {
crashreport = CrashReport.a(throwable1, "Exception ticking world");
} catch (Throwable throwable) {
crashreport = CrashReport.a(throwable, "Exception ticking world");
worldserver.a(crashreport);
@@ -712,7 +728,9 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
@@ -725,7 +741,9 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
}
try {
+ worldserver.timings.tickEntities.startTiming(); // Spigot
worldserver.tickEntities();
+ worldserver.timings.tickEntities.stopTiming(); // Spigot
} catch (Throwable throwable2) {
crashreport = CrashReport.a(throwable2, "Exception ticking world entities");
} catch (Throwable throwable1) {
crashreport = CrashReport.a(throwable1, "Exception ticking world entities");
worldserver.a(crashreport);
@@ -721,7 +739,9 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
@@ -734,7 +752,9 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
this.methodProfiler.b();
this.methodProfiler.a("tracker");
@ -345,12 +345,12 @@ index 0a707eb..76591fb 100644
this.methodProfiler.b();
this.methodProfiler.b();
// } // CraftBukkit
@@ -730,14 +750,20 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
@@ -743,14 +763,20 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
}
this.methodProfiler.c("connection");
+ SpigotTimings.connectionTimer.startTiming(); // Spigot
this.ao().c();
this.ap().c();
+ SpigotTimings.connectionTimer.stopTiming(); // Spigot
this.methodProfiler.c("players");
+ SpigotTimings.playerListTimer.startTiming(); // Spigot
@ -359,27 +359,26 @@ index 0a707eb..76591fb 100644
this.methodProfiler.c("tickables");
+ SpigotTimings.tickablesTimer.startTiming(); // Spigot
for (i = 0; i < this.o.size(); ++i) {
((IUpdatePlayerListBox) this.o.get(i)).c();
for (i = 0; i < this.p.size(); ++i) {
((IUpdatePlayerListBox) this.p.get(i)).c();
}
+ 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 8d669a4..5c24333 100644
index 6649c0b..20e09e5 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -1042,6 +1042,8 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
@@ -1061,6 +1061,7 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
// CraftBukkit end
private void handleCommand(String s) {
private void handleCommand(String s) {
+ org.bukkit.craftbukkit.SpigotTimings.playerCommandTimer.startTiming(); // Spigot
+
// CraftBukkit start - whole method
this.c.info(this.player.getName() + " issued server command: " + s);
@@ -1051,18 +1053,22 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
@@ -1070,18 +1071,22 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
this.server.getPluginManager().callEvent(event);
if (event.isCancelled()) {
@ -403,7 +402,7 @@ index 8d669a4..5c24333 100644
// CraftBukkit end
}
diff --git a/src/main/java/net/minecraft/server/TileEntity.java b/src/main/java/net/minecraft/server/TileEntity.java
index ec76148..a93ad27 100644
index 8afd376..71bf63a 100644
--- a/src/main/java/net/minecraft/server/TileEntity.java
+++ b/src/main/java/net/minecraft/server/TileEntity.java
@@ -6,10 +6,12 @@ import java.util.concurrent.Callable;
@ -417,10 +416,10 @@ index ec76148..a93ad27 100644
+ public CustomTimingsHandler tickTimer = org.bukkit.craftbukkit.SpigotTimings.getTileEntityTimings(this); // Spigot
private static final Logger a = LogManager.getLogger();
private static Map f = Maps.newHashMap();
private static Map g = Maps.newHashMap();
private static Map<String, Class<? extends TileEntity>> f = Maps.newHashMap();
private static Map<Class<? extends TileEntity>, String> g = Maps.newHashMap();
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 86be044..06bd661 100644
index a67736a..bf4c758 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -18,6 +18,7 @@ import org.bukkit.Bukkit;
@ -431,7 +430,7 @@ index 86be044..06bd661 100644
import org.bukkit.generator.ChunkGenerator;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.craftbukkit.CraftWorld;
@@ -125,6 +126,8 @@ public abstract class World implements IBlockAccess {
@@ -126,6 +127,8 @@ public abstract class World implements IBlockAccess {
public final org.spigotmc.SpigotWorldConfig spigotConfig; // Spigot
@ -440,15 +439,15 @@ index 86be044..06bd661 100644
public CraftWorld getWorld() {
return this.world;
}
@@ -164,6 +167,7 @@ public abstract class World implements IBlockAccess {
this.M.a(new WorldBorderListener(((WorldServer) this).getServer().getHandle())); // CraftBukkit
this.getServer().addWorld(this.world); // CraftBukkit
+ timings = new SpigotTimings.WorldTimingsHandler(this); // Spigot - code below can generate new world and access timings
@@ -190,6 +193,7 @@ public abstract class World implements IBlockAccess {
});
this.getServer().addWorld(this.world);
// CraftBukkit end
+ timings = new SpigotTimings.WorldTimingsHandler(this); // Spigot - code below can generate new world and access timings
}
public World b() {
@@ -1254,6 +1258,7 @@ public abstract class World implements IBlockAccess {
@@ -1299,6 +1303,7 @@ public abstract class World implements IBlockAccess {
this.g.clear();
this.methodProfiler.c("regular");
@ -456,7 +455,7 @@ index 86be044..06bd661 100644
// CraftBukkit start - Use field for loop variable
for (this.tickPosition = 0; this.tickPosition < this.entityList.size(); ++this.tickPosition) {
entity = (Entity) this.entityList.get(this.tickPosition);
@@ -1270,7 +1275,9 @@ public abstract class World implements IBlockAccess {
@@ -1315,7 +1320,9 @@ public abstract class World implements IBlockAccess {
this.methodProfiler.a("tick");
if (!entity.dead) {
try {
@ -466,25 +465,25 @@ index 86be044..06bd661 100644
} catch (Throwable throwable1) {
crashreport = CrashReport.a(throwable1, "Ticking entity");
crashreportsystemdetails = crashreport.a("Entity being ticked");
@@ -1295,7 +1302,9 @@ public abstract class World implements IBlockAccess {
@@ -1340,7 +1347,9 @@ public abstract class World implements IBlockAccess {
this.methodProfiler.b();
}
+ timings.entityTick.stopTiming(); // Spigot
this.methodProfiler.c("blockEntities");
+ timings.tileEntityTick.startTiming(); // Spigot
this.L = true;
this.M = true;
// CraftBukkit start - From below, clean up tile entities before ticking them
if (!this.b.isEmpty()) {
@@ -1315,6 +1324,7 @@ public abstract class World implements IBlockAccess {
if (!this.c.isEmpty()) {
@@ -1359,6 +1368,7 @@ public abstract class World implements IBlockAccess {
if (this.isLoaded(blockposition) && this.M.a(blockposition)) {
if (this.isLoaded(blockposition) && this.N.a(blockposition)) {
try {
+ tileentity.tickTimer.startTiming(); // Spigot
((IUpdatePlayerListBox) tileentity).c();
} catch (Throwable throwable2) {
CrashReport crashreport1 = CrashReport.a(throwable2, "Ticking block entity");
@@ -1323,6 +1333,11 @@ public abstract class World implements IBlockAccess {
@@ -1367,6 +1377,11 @@ public abstract class World implements IBlockAccess {
tileentity.a(crashreportsystemdetails1);
throw new ReportedException(crashreport1);
}
@ -496,24 +495,24 @@ index 86be044..06bd661 100644
}
}
@@ -1335,6 +1350,8 @@ public abstract class World implements IBlockAccess {
@@ -1379,6 +1394,8 @@ public abstract class World implements IBlockAccess {
}
}
+ timings.tileEntityTick.stopTiming(); // Spigot
+ timings.tileEntityPending.startTiming(); // Spigot
this.L = false;
this.M = false;
/* CraftBukkit start - Moved up
if (!this.b.isEmpty()) {
@@ -1367,6 +1384,7 @@ public abstract class World implements IBlockAccess {
this.a.clear();
if (!this.c.isEmpty()) {
@@ -1411,6 +1428,7 @@ public abstract class World implements IBlockAccess {
this.b.clear();
}
+ timings.tileEntityPending.stopTiming(); // Spigot
this.methodProfiler.b();
this.methodProfiler.b();
}
@@ -1411,6 +1429,7 @@ public abstract class World implements IBlockAccess {
@@ -1455,6 +1473,7 @@ public abstract class World implements IBlockAccess {
// CraftBukkit start - Use neighbor cache instead of looking up
Chunk startingChunk = this.getChunkIfLoaded(i >> 4, j >> 4);
if (!flag || (startingChunk != null && startingChunk.areNeighborsLoaded(2)) /* this.isAreaLoaded(i - b0, 0, j - b0, i + b0, 0, j + b0) */) {
@ -521,7 +520,7 @@ index 86be044..06bd661 100644
// CraftBukkit end
entity.P = entity.locX;
entity.Q = entity.locY;
@@ -1474,6 +1493,7 @@ public abstract class World implements IBlockAccess {
@@ -1518,6 +1537,7 @@ public abstract class World implements IBlockAccess {
}
}
@ -530,10 +529,10 @@ index 86be044..06bd661 100644
}
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 8a09a79..1d6be5f 100644
index a3c3c78..6ed7078 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -210,10 +210,13 @@ public class WorldServer extends World implements IAsyncTaskHandler {
@@ -209,10 +209,13 @@ public class WorldServer extends World implements IAsyncTaskHandler {
// 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.worldData.getType() != WorldType.DEBUG_ALL_BLOCK_STATES && (this.allowMonsters || this.allowAnimals) && (this instanceof WorldServer && this.players.size() > 0)) {
@ -548,7 +547,7 @@ index 8a09a79..1d6be5f 100644
this.methodProfiler.c("chunkSource");
this.chunkProvider.unloadChunks();
int j = this.a(1.0F);
@@ -227,21 +230,34 @@ public class WorldServer extends World implements IAsyncTaskHandler {
@@ -226,21 +229,34 @@ public class WorldServer extends World implements IAsyncTaskHandler {
this.worldData.setDayTime(this.worldData.getDayTime() + 1L);
}
@ -577,17 +576,17 @@ index 8a09a79..1d6be5f 100644
this.methodProfiler.b();
+ timings.doSounds.startTiming(); // Spigot
this.ak();
this.getWorld().processChunkGC(); // CraftBukkit
+ timings.doChunkGC.stopTiming(); // Spigot
}
public BiomeMeta a(EnumCreatureType enumcreaturetype, BlockPosition blockposition) {
public BiomeBase.BiomeMeta a(EnumCreatureType enumcreaturetype, BlockPosition blockposition) {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 09c723f..07f15d1 100644
index 2aceeb4..ed0c30c 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -1638,6 +1638,11 @@ public final class CraftServer implements Server {
@@ -1652,6 +1652,11 @@ public final class CraftServer implements Server {
private final Spigot spigot = new Spigot()
{
@ -600,7 +599,7 @@ index 09c723f..07f15d1 100644
public Spigot spigot()
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index faefbe7..8105872 100644
index 7b05b6a..609b483 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -255,9 +255,11 @@ public class CraftWorld implements World {
@ -792,10 +791,10 @@ index 0000000..558574f
+ }
+}
diff --git a/src/main/java/org/bukkit/craftbukkit/chunkio/ChunkIOProvider.java b/src/main/java/org/bukkit/craftbukkit/chunkio/ChunkIOProvider.java
index 26ea0d3..7fabfa3 100644
index 5b56898..5f58a59 100644
--- a/src/main/java/org/bukkit/craftbukkit/chunkio/ChunkIOProvider.java
+++ b/src/main/java/org/bukkit/craftbukkit/chunkio/ChunkIOProvider.java
@@ -40,7 +40,9 @@ class ChunkIOProvider implements AsynchronousExecutor.CallBackProvider<QueuedChu
@@ -47,7 +47,9 @@ class ChunkIOProvider implements AsynchronousExecutor.CallBackProvider<QueuedChu
chunk.addEntities();
if (queuedChunk.provider.chunkProvider != null) {

View File

@ -1,4 +1,4 @@
From de4e58e3a910e9704c09042f4863344f8bbe6a4d Mon Sep 17 00:00:00 2001
From 5bf8504ba7b121589bb1244e4d1bc77eea87e938 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
@ -8,18 +8,18 @@ Changes the mob spawning algorithm to properly account for view distance and the
Needs better documentation.
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index 867caca..9e65ff7 100644
index cfcd71e..92b25f0 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -42,6 +42,7 @@ public class Chunk {
private long u;
private int v;
private ConcurrentLinkedQueue w;
private ConcurrentLinkedQueue<BlockPosition> w;
+ protected gnu.trove.map.hash.TObjectIntHashMap<Class> entityCount = new gnu.trove.map.hash.TObjectIntHashMap<Class>(); // Spigot
// CraftBukkit start - Neighbor loaded cache for chunk lighting and entity ticking
private int neighbors = 0x1 << 12;
@@ -650,6 +651,22 @@ public class Chunk {
@@ -674,6 +675,22 @@ public class Chunk {
entity.af = k;
entity.ag = this.locZ;
this.entitySlices[k].add(entity);
@ -42,7 +42,7 @@ index 867caca..9e65ff7 100644
}
public void b(Entity entity) {
@@ -666,6 +683,22 @@ public class Chunk {
@@ -690,6 +707,22 @@ public class Chunk {
}
this.entitySlices[i].remove(entity);
@ -66,7 +66,7 @@ index 867caca..9e65ff7 100644
public boolean d(BlockPosition blockposition) {
diff --git a/src/main/java/net/minecraft/server/SpawnerCreature.java b/src/main/java/net/minecraft/server/SpawnerCreature.java
index 25988d4..43954b3 100644
index 1b9af34..aeb0a44 100644
--- a/src/main/java/net/minecraft/server/SpawnerCreature.java
+++ b/src/main/java/net/minecraft/server/SpawnerCreature.java
@@ -19,6 +19,25 @@ public final class SpawnerCreature {
@ -107,7 +107,7 @@ index 25988d4..43954b3 100644
for (int i1 = -b0; i1 <= b0; ++i1) {
for (k = -b0; k <= b0; ++k) {
@@ -88,17 +112,19 @@ public final class SpawnerCreature {
@@ -87,17 +111,19 @@ public final class SpawnerCreature {
if (limit == 0) {
continue;
}
@ -140,7 +140,7 @@ index 25988d4..43954b3 100644
+ continue label115;
+ }
+ // Spigot end
if (l2 >= entityinsentient.bU()) {
if (l2 >= entityinsentient.bV()) {
continue label115;
}
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java

View File

@ -1,14 +1,14 @@
From de6f762085ae230640f23c628f61fb90cc50c95f Mon Sep 17 00:00:00 2001
From e05b61bd35a73364115bba2cf092b4a168a85dcc 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 06bd661..b6a509c 100644
index bf4c758..c78c2d8 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -1318,6 +1318,13 @@ public abstract class World implements IBlockAccess {
@@ -1362,6 +1362,13 @@ public abstract class World implements IBlockAccess {
while (iterator.hasNext()) {
TileEntity tileentity = (TileEntity) iterator.next();

View File

@ -1,4 +1,4 @@
From f483fb8bd514291b3f1a4dd68acf32fd7fa7a79c Mon Sep 17 00:00:00 2001
From 8bf46817709567086980648b133a6f148823dafd 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,27 +9,27 @@ 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 c699dd1..9dcddb1 100644
index d3c7d1b..ebdcaab 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -89,14 +89,14 @@ public abstract class Entity implements ICommandListener {
public int ticksLived;
public int maxFireTicks;
public int fireTicks;
public int fireTicks; // CraftBukkit - public
- protected boolean inWater;
+ public boolean inWater; // Spigot - protected -> public
public int noDamageTicks;
protected boolean justCreated;
protected boolean fireProof;
protected DataWatcher datawatcher;
private double ap;
private double aq;
private double ar;
private double as;
- public boolean ad;
+ public boolean ad;public boolean isAddedToChunk() { return ad; } // Spigot
+ public boolean ad; public boolean isAddedToChunk() { return ad; } // Spigot
public int ae;
public int af;
public int ag;
@@ -113,7 +113,13 @@ public abstract class Entity implements ICommandListener {
@@ -115,7 +115,13 @@ public abstract class Entity implements ICommandListener {
public boolean valid; // CraftBukkit
public org.bukkit.projectiles.ProjectileSource projectileSource; // CraftBukkit - For projectiles only
@ -43,7 +43,7 @@ index c699dd1..9dcddb1 100644
public int getId() {
return this.id;
@@ -143,7 +149,12 @@ public abstract class Entity implements ICommandListener {
@@ -145,7 +151,12 @@ public abstract class Entity implements ICommandListener {
this.setPosition(0.0D, 0.0D, 0.0D);
if (world != null) {
this.dimension = world.worldProvider.getDimension();
@ -57,11 +57,11 @@ index c699dd1..9dcddb1 100644
this.datawatcher = new DataWatcher(this);
this.datawatcher.a(0, Byte.valueOf((byte) 0));
diff --git a/src/main/java/net/minecraft/server/EntityAgeable.java b/src/main/java/net/minecraft/server/EntityAgeable.java
index 2adcc19..23091bd 100644
index 8a74059..09d4335 100644
--- a/src/main/java/net/minecraft/server/EntityAgeable.java
+++ b/src/main/java/net/minecraft/server/EntityAgeable.java
@@ -9,6 +9,31 @@ public abstract class EntityAgeable extends EntityCreature {
private float bl;
private float bn;
public boolean ageLocked = false; // CraftBukkit
+ // Spigot start
@ -69,7 +69,7 @@ index 2adcc19..23091bd 100644
+ public void inactiveTick()
+ {
+ super.inactiveTick();
+ if ( this.world.isStatic || this.ageLocked )
+ if ( this.world.isClientSide || this.ageLocked )
+ { // CraftBukkit
+ this.a( this.isBaby() );
+ } else
@ -93,7 +93,7 @@ index 2adcc19..23091bd 100644
super(world);
}
diff --git a/src/main/java/net/minecraft/server/EntityArrow.java b/src/main/java/net/minecraft/server/EntityArrow.java
index 3ba285a..6e5450a 100644
index d0e5f11..01c66e3 100644
--- a/src/main/java/net/minecraft/server/EntityArrow.java
+++ b/src/main/java/net/minecraft/server/EntityArrow.java
@@ -15,7 +15,7 @@ public class EntityArrow extends Entity implements IProjectile {
@ -107,7 +107,7 @@ index 3ba285a..6e5450a 100644
public Entity shooter;
@@ -24,6 +24,18 @@ public class EntityArrow extends Entity implements IProjectile {
private double damage = 2.0D;
public int knockbackStrength;
public int knockbackStrength; // CraftBukkit - public
+ // Spigot Start
+ @Override
@ -115,7 +115,7 @@ index 3ba285a..6e5450a 100644
+ {
+ if ( this.inGround )
+ {
+ this.ap += 1; // Despawn counter. First int after shooter
+ this.ar += 1; // Despawn counter. First int after shooter
+ }
+ super.inactiveTick();
+ }
@ -125,12 +125,12 @@ index 3ba285a..6e5450a 100644
super(world);
this.j = 10.0D;
diff --git a/src/main/java/net/minecraft/server/EntityFireworks.java b/src/main/java/net/minecraft/server/EntityFireworks.java
index 8357157..f5b794b 100644
index 607608f..02f1603 100644
--- a/src/main/java/net/minecraft/server/EntityFireworks.java
+++ b/src/main/java/net/minecraft/server/EntityFireworks.java
@@ -5,6 +5,15 @@ public class EntityFireworks extends Entity {
private int ticksFlown;
public int expectedLifespan;
public int expectedLifespan; // CraftBukkit - public
+ // Spigot Start
+ @Override
@ -143,12 +143,12 @@ index 8357157..f5b794b 100644
+
public EntityFireworks(World world) {
super(world);
this.a(0.25F, 0.25F);
this.setSize(0.25F, 0.25F);
diff --git a/src/main/java/net/minecraft/server/EntityItem.java b/src/main/java/net/minecraft/server/EntityItem.java
index 3f2c5f5..652b803 100644
index fa7e6df..65a03df 100644
--- a/src/main/java/net/minecraft/server/EntityItem.java
+++ b/src/main/java/net/minecraft/server/EntityItem.java
@@ -121,6 +121,28 @@ public class EntityItem extends Entity {
@@ -122,6 +122,28 @@ public class EntityItem extends Entity {
}
}
@ -162,7 +162,7 @@ index 3f2c5f5..652b803 100644
+ this.lastTick = MinecraftServer.currentTick;
+ // CraftBukkit end
+
+ if (!this.world.isStatic && this.age >= world.spigotConfig.itemDespawnRate) { // Spigot
+ if (!this.world.isClientSide && this.age >= world.spigotConfig.itemDespawnRate) { // Spigot
+ // CraftBukkit start - fire ItemDespawnEvent
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callItemDespawnEvent(this).isCancelled()) {
+ this.age = 0;
@ -178,10 +178,10 @@ index 3f2c5f5..652b803 100644
// Spigot start
double radius = world.spigotConfig.itemMerge;
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index cd56586..89374d7 100644
index 24aaec5..e90ff2f 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -87,6 +87,13 @@ public abstract class EntityLiving extends Entity {
@@ -89,6 +89,13 @@ public abstract class EntityLiving extends Entity {
public int maxAirTicks = 300;
ArrayList<org.bukkit.inventory.ItemStack> drops = null;
// CraftBukkit end
@ -189,17 +189,17 @@ index cd56586..89374d7 100644
+ public void inactiveTick()
+ {
+ super.inactiveTick();
+ ++this.aO; // Above all the floats
+ ++this.ticksFarFromPlayer; // Above all the floats
+ }
+ // Spigot end
public void G() {
this.damageEntity(DamageSource.OUT_OF_WORLD, Float.MAX_VALUE);
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index b6a509c..d85479b 100644
index c78c2d8..6a975d3 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -1258,6 +1258,7 @@ public abstract class World implements IBlockAccess {
@@ -1303,6 +1303,7 @@ public abstract class World implements IBlockAccess {
this.g.clear();
this.methodProfiler.c("regular");
@ -207,7 +207,7 @@ index b6a509c..d85479b 100644
timings.entityTick.startTiming(); // Spigot
// CraftBukkit start - Use field for loop variable
for (this.tickPosition = 0; this.tickPosition < this.entityList.size(); ++this.tickPosition) {
@@ -1433,9 +1434,11 @@ public abstract class World implements IBlockAccess {
@@ -1477,9 +1478,11 @@ public abstract class World implements IBlockAccess {
int j = MathHelper.floor(entity.locZ);
byte b0 = 32;

View File

@ -1,14 +1,14 @@
From 6e805f1310bdc9c60ae053b397f741c66abb40d4 Mon Sep 17 00:00:00 2001
From 1447382b4c93fa76fea2224645c098378fed842f 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 0457ede..3e0d808 100644
index 25c6877..62b2136 100644
--- a/src/main/java/net/minecraft/server/ItemStack.java
+++ b/src/main/java/net/minecraft/server/ItemStack.java
@@ -323,6 +323,11 @@ public final class ItemStack {
@@ -324,6 +324,11 @@ public final class ItemStack {
}
public boolean isDamaged(int i, Random random) {
@ -20,7 +20,7 @@ index 0457ede..3e0d808 100644
if (!this.e()) {
return false;
} else {
@@ -337,7 +342,16 @@ public final class ItemStack {
@@ -338,7 +343,16 @@ public final class ItemStack {
}
i -= k;
@ -38,12 +38,12 @@ index 0457ede..3e0d808 100644
return false;
}
}
@@ -350,7 +364,7 @@ public final class ItemStack {
@@ -351,7 +365,7 @@ public final class ItemStack {
public void damage(int i, EntityLiving entityliving) {
if (!(entityliving instanceof EntityHuman) || !((EntityHuman) entityliving).abilities.canInstantlyBuild) {
if (this.e()) {
- if (this.isDamaged(i, entityliving.bb())) {
+ if (this.isDamaged(i, entityliving.bb(), entityliving)) { // Spigot
- if (this.isDamaged(i, entityliving.bc())) {
+ if (this.isDamaged(i, entityliving.bc(), entityliving)) { // Spigot
entityliving.b(this);
--this.count;
if (entityliving instanceof EntityHuman) {

View File

@ -1,4 +1,4 @@
From f6c53d37393f337957319ad8b8d46e634e7fecab Mon Sep 17 00:00:00 2001
From 3610083330f3022f069598e344801350f76fa74e 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,17 +12,56 @@ 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 350f2f7..e3b2864 100644
index de38e80..1f7dd1a 100644
--- a/src/main/java/net/minecraft/server/EntityTracker.java
+++ b/src/main/java/net/minecraft/server/EntityTracker.java
@@ -95,6 +95,7 @@ public class EntityTracker {
public void addEntity(Entity entity, int i, int j, boolean flag) {
public void addEntity(Entity entity, int i, final int j, boolean flag) {
org.spigotmc.AsyncCatcher.catchOp( "entity track"); // Spigot
+ i = org.spigotmc.TrackingRange.getEntityTrackingRange(entity, i); // Spigot
if (i > this.e) {
i = this.e;
}
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
index d3f4af1..0143623 100644
--- a/src/main/java/org/spigotmc/ActivationRange.java
+++ b/src/main/java/org/spigotmc/ActivationRange.java
@@ -106,7 +106,7 @@ public class ActivationRange
maxRange = Math.max( maxRange, miscActivationRange );
maxRange = Math.min( ( world.spigotConfig.viewDistance << 4 ) - 8, maxRange );
- for ( Entity player : (List<Entity>) world.players )
+ for ( Entity player : (List<Entity>) (List) world.players )
{
player.activatedTick = MinecraftServer.currentTick;
@@ -188,7 +188,7 @@ public class ActivationRange
public static boolean checkEntityImmunities(Entity entity)
{
// quick checks.
- if ( entity.inWater /* isInWater */ || entity.fireTicks > 0 )
+ if ( entity.inWater || entity.fireTicks > 0 )
{
return true;
}
@@ -215,14 +215,14 @@ public class ActivationRange
{
return true;
}
- if ( entity instanceof EntityVillager && ( (EntityVillager) entity ).ck() /* Getter for first boolean */ )
+ if ( entity instanceof EntityVillager && ( (EntityVillager) entity ).cm() /* Getter for first boolean */ )
{
return true;
}
if ( entity instanceof EntityAnimal )
{
EntityAnimal animal = (EntityAnimal) entity;
- if ( animal.isBaby() || animal.cp() /*love*/ )
+ if ( animal.isBaby() || animal.isInLove() )
{
return true;
}
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
index ed2836a..6421bf2 100644
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java

View File

@ -1,4 +1,4 @@
From 1447e11573baf2733066d84f7af8f3ace5671c03 Mon Sep 17 00:00:00 2001
From 4a0dd916ac1f28729c9a269f5213c7340f1aad0e 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

View File

@ -1,27 +1,27 @@
From bd686bb6d5799cecc1e84d821535613b3826fbc2 Mon Sep 17 00:00:00 2001
From 0e944971858decdee97370dc2da8cc1f94bce1e1 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
diff --git a/src/main/java/net/minecraft/server/RegionFileCache.java b/src/main/java/net/minecraft/server/RegionFileCache.java
index f4f72ef..1b03878 100644
index b07e7d5..5528019 100644
--- a/src/main/java/net/minecraft/server/RegionFileCache.java
+++ b/src/main/java/net/minecraft/server/RegionFileCache.java
@@ -10,7 +10,7 @@ import java.util.Map;
public class RegionFileCache {
- private static final Map a = Maps.newHashMap();
+ public static final Map a = Maps.newHashMap(); // Spigot - private -> public
- private static final Map<File, RegionFile> a = Maps.newHashMap();
+ public static final Map<File, RegionFile> a = Maps.newHashMap(); // Spigot - private -> public
public static synchronized RegionFile a(File file, int i, int j) {
File file1 = new File(file, "region");
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 07f15d1..fa8ae87 100644
index ed0c30c..58d52d8 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -953,6 +953,31 @@ public final class CraftServer implements Server {
@@ -967,6 +967,31 @@ 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 afc2bc63a5b6ddf07e88b38976ac0878fc319655 Mon Sep 17 00:00:00 2001
From 6edd9fd1c7bd9f906f4668e9be876fc679557e08 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 00b35a1..622d6e0 100644
index dbb329c..0549a0f 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 {
@@ -54,7 +54,7 @@ public class PropertyManager {
}
private <T> T getOverride(String name, T value) {

View File

@ -1,4 +1,4 @@
From 40d1381d320d2c39caa8503827a2ede8eb239739 Mon Sep 17 00:00:00 2001
From 157bffdb7ed6d858ad9055e98c25ba08488126eb 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
@ -6,21 +6,21 @@ Subject: [PATCH] Recipe Deconstruction
Some non API methods contributed by Asphodan to allow recipe deconstruction.
diff --git a/src/main/java/net/minecraft/server/IRecipe.java b/src/main/java/net/minecraft/server/IRecipe.java
index d2655a0..e5b116f 100644
index babf604..e7aba17 100644
--- a/src/main/java/net/minecraft/server/IRecipe.java
+++ b/src/main/java/net/minecraft/server/IRecipe.java
@@ -13,4 +13,6 @@ public interface IRecipe {
ItemStack[] b(InventoryCrafting inventorycrafting);
org.bukkit.inventory.Recipe toBukkitRecipe(); // CraftBukkit
+
+ 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 407cbfb..6c3de90 100644
index a387e2d..825b6d9 100644
--- a/src/main/java/net/minecraft/server/ShapedRecipes.java
+++ b/src/main/java/net/minecraft/server/ShapedRecipes.java
@@ -11,7 +11,7 @@ public class ShapedRecipes implements IRecipe {
@@ -10,7 +10,7 @@ public class ShapedRecipes implements IRecipe {
private final int width;
private final int height;
private final ItemStack[] items;
@ -29,9 +29,9 @@ index 407cbfb..6c3de90 100644
private boolean e;
public ShapedRecipes(int i, int j, ItemStack[] aitemstack, ItemStack itemstack) {
@@ -171,4 +171,11 @@ public class ShapedRecipes implements IRecipe {
this.e = true;
return this;
@@ -165,4 +165,11 @@ public class ShapedRecipes implements IRecipe {
public int a() {
return this.width * this.height;
}
+
+ // Spigot start
@ -42,7 +42,7 @@ index 407cbfb..6c3de90 100644
+ // Spigot end
}
diff --git a/src/main/java/net/minecraft/server/ShapelessRecipes.java b/src/main/java/net/minecraft/server/ShapelessRecipes.java
index 2d243d1..b6106db 100644
index b13dcb7..aa0e9aa 100644
--- a/src/main/java/net/minecraft/server/ShapelessRecipes.java
+++ b/src/main/java/net/minecraft/server/ShapelessRecipes.java
@@ -12,7 +12,7 @@ import org.bukkit.craftbukkit.inventory.CraftShapelessRecipe;
@ -51,9 +51,9 @@ index 2d243d1..b6106db 100644
- private final ItemStack result;
+ public final ItemStack result; // Spigot
private final List ingredients;
private final List<ItemStack> ingredients;
public ShapelessRecipes(ItemStack itemstack, List list) {
public ShapelessRecipes(ItemStack itemstack, List<ItemStack> list) {
@@ -90,4 +90,11 @@ public class ShapelessRecipes implements IRecipe {
public int a() {
return this.ingredients.size();

View File

@ -1,4 +1,4 @@
From 3e06be67869c79404fc040387909522a02228088 Mon Sep 17 00:00:00 2001
From 094f53bc27b0ac80ef7d0142db127b8ffecfd12d 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

View File

@ -1,4 +1,4 @@
From 204f59aebe0db94c0d288bc4fc3b2cf4c25ffb47 Mon Sep 17 00:00:00 2001
From a1f5331d1b57175a29474e6c1465db9c9d56b5af Mon Sep 17 00:00:00 2001
From: erocs <github@erocs.org>
Date: Sun, 8 Sep 2013 12:06:15 -0700
Subject: [PATCH] Hopper Customisations
@ -6,10 +6,10 @@ Subject: [PATCH] Hopper Customisations
Allows editing hopper cooldowns and amount transferred per tick.
diff --git a/src/main/java/net/minecraft/server/TileEntityHopper.java b/src/main/java/net/minecraft/server/TileEntityHopper.java
index 7fe1f46..f4dc9c7 100644
index 72d067a..b3bf687 100644
--- a/src/main/java/net/minecraft/server/TileEntityHopper.java
+++ b/src/main/java/net/minecraft/server/TileEntityHopper.java
@@ -193,12 +193,18 @@ public class TileEntityHopper extends TileEntityContainer implements IHopper, IU
@@ -194,12 +194,18 @@ public class TileEntityHopper extends TileEntityContainer implements IHopper, IU
}
if (flag) {
@ -29,16 +29,16 @@ index 7fe1f46..f4dc9c7 100644
return false;
} else {
return false;
@@ -252,7 +258,7 @@ public class TileEntityHopper extends TileEntityContainer implements IHopper, IU
@@ -253,7 +259,7 @@ public class TileEntityHopper extends TileEntityContainer implements IHopper, IU
// ItemStack itemstack1 = addItem(iinventory, this.splitStack(i, 1), enumdirection);
// CraftBukkit start - Call event when pushing items into other inventories
- CraftItemStack oitemstack = CraftItemStack.asCraftMirror(this.splitStack(i, 1));
+ CraftItemStack oitemstack = CraftItemStack.asCraftMirror(this.splitStack(i, world.spigotConfig.hopperAmount)); // Spigot
Inventory destinationInventory;
// Have to special case large chests as they work oddly
@@ -266,9 +272,10 @@ public class TileEntityHopper extends TileEntityContainer implements IHopper, IU
@@ -267,9 +273,10 @@ public class TileEntityHopper extends TileEntityContainer implements IHopper, IU
this.getWorld().getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) {
this.setItem(i, itemstack);
@ -50,7 +50,7 @@ index 7fe1f46..f4dc9c7 100644
ItemStack itemstack1 = addItem(iinventory, CraftItemStack.asNMSCopy(event.getItem()), enumdirection);
if (itemstack1 == null || itemstack1.count == 0) {
@@ -280,7 +287,7 @@ public class TileEntityHopper extends TileEntityContainer implements IHopper, IU
@@ -281,7 +288,7 @@ public class TileEntityHopper extends TileEntityContainer implements IHopper, IU
// CraftBukkit end
return true;
}
@ -59,7 +59,7 @@ index 7fe1f46..f4dc9c7 100644
this.setItem(i, itemstack);
}
}
@@ -386,7 +393,7 @@ public class TileEntityHopper extends TileEntityContainer implements IHopper, IU
@@ -391,7 +398,7 @@ public class TileEntityHopper extends TileEntityContainer implements IHopper, IU
ItemStack itemstack1 = itemstack.cloneItemStack();
// ItemStack itemstack2 = addItem(ihopper, iinventory.splitStack(i, 1), (EnumDirection) null);
// CraftBukkit start - Call event on collection of items from inventories into the hopper
@ -68,24 +68,24 @@ index 7fe1f46..f4dc9c7 100644
Inventory sourceInventory;
// Have to special case large chests as they work oddly
@@ -403,13 +410,14 @@ public class TileEntityHopper extends TileEntityContainer implements IHopper, IU
@@ -408,13 +415,13 @@ public class TileEntityHopper extends TileEntityContainer implements IHopper, IU
iinventory.setItem(i, itemstack1);
if (ihopper instanceof TileEntityHopper) {
- ((TileEntityHopper) ihopper).d(8); // Delay hopper checks
+ ((TileEntityHopper) ihopper).d(ihopper.getWorld().spigotConfig.hopperTransfer); // Spigot
} else if (ihopper instanceof EntityMinecartHopper) {
- ((EntityMinecartHopper) ihopper).l(4); // Delay hopper minecart checks
+ ((EntityMinecartHopper) ihopper).l(ihopper.getWorld().spigotConfig.hopperTransfer / 2); // Spigot
- ((EntityMinecartHopper) ihopper).m(4); // Delay hopper minecart checks
+ ((EntityMinecartHopper) ihopper).m(ihopper.getWorld().spigotConfig.hopperTransfer / 2); // Spigot
}
-
return false;
}
+ int origCount = event.getItem().getAmount(); // Spigot
ItemStack itemstack2 = addItem(ihopper, CraftItemStack.asNMSCopy(event.getItem()), null);
if (itemstack2 == null || itemstack2.count == 0) {
@@ -421,6 +429,7 @@ public class TileEntityHopper extends TileEntityContainer implements IHopper, IU
@@ -426,6 +433,7 @@ public class TileEntityHopper extends TileEntityContainer implements IHopper, IU
// CraftBukkit end
return true;
}
@ -93,7 +93,7 @@ index 7fe1f46..f4dc9c7 100644
iinventory.setItem(i, itemstack1);
}
@@ -511,7 +520,7 @@ public class TileEntityHopper extends TileEntityContainer implements IHopper, IU
@@ -515,7 +523,7 @@ public class TileEntityHopper extends TileEntityContainer implements IHopper, IU
TileEntityHopper tileentityhopper = (TileEntityHopper) iinventory;
if (tileentityhopper.o()) {

View File

@ -1,4 +1,4 @@
From 9666b42d5eb9966872cd10ef837ed0b1b28a2e03 Mon Sep 17 00:00:00 2001
From 7c6666fbd139bdc6e3b1171158299b8b00429488 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 e597d77..4bbd288 100644
index 8d668fa..41cfde8 100644
--- a/src/main/java/net/minecraft/server/MobSpawnerAbstract.java
+++ b/src/main/java/net/minecraft/server/MobSpawnerAbstract.java
@@ -4,7 +4,11 @@ import com.google.common.collect.Lists;
@ -48,10 +48,11 @@ index e597d77..4bbd288 100644
if (entity.world != null && flag) {
entity.world.addEntity(entity2, CreatureSpawnEvent.SpawnReason.SPAWNER); // CraftBukkit
}
@@ -171,7 +185,12 @@ public abstract class MobSpawnerAbstract {
@@ -173,8 +187,12 @@ public abstract class MobSpawnerAbstract {
if (entity instanceof EntityInsentient) {
((EntityInsentient) entity).prepare(entity.world.E(new BlockPosition(entity)), (GroupDataEntity) null);
}
} else if (entity instanceof EntityInsentient && entity.world != null && flag) { // CraftBukkit - EntityLiving -> EntityInsentient
((EntityInsentient) entity).prepare(entity.world.E(new BlockPosition(entity)), (GroupDataEntity) null);
-
- entity.world.addEntity(entity, CreatureSpawnEvent.SpawnReason.SPAWNER); // CraftBukkit
+ // Spigot start - call SpawnerSpawnEvent, abort if cancelled
+ SpawnerSpawnEvent event = CraftEventFactory.callSpawnerSpawnEvent(entity, this.b().getX(), this.b().getY(), this.b().getZ());
@ -63,7 +64,7 @@ index e597d77..4bbd288 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 60e2a4f..dd0cab1 100644
index 7da317c..218fd1f 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -18,6 +18,7 @@ import org.bukkit.Statistic.Type;

View File

@ -1,4 +1,4 @@
From b0b821c92e898f1c6d82743abdd81cbe4327bb22 Mon Sep 17 00:00:00 2001
From a10a1d12c71d080ddbd92db34de2bfe18a2fbc78 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

View File

@ -1,16 +1,16 @@
From 2f99b2e55476a79e54bbcffb4f3c092594fbdff4 Mon Sep 17 00:00:00 2001
From 13dc74685ff2babf3e4f068a0b1c519f515b884c 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 5c24333..6a96c37 100644
index 20e09e5..9afd03f 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -1045,6 +1045,7 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
@@ -1063,6 +1063,7 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
private void handleCommand(String s) {
org.bukkit.craftbukkit.SpigotTimings.playerCommandTimer.startTiming(); // Spigot
// CraftBukkit start - whole method
+ if ( org.spigotmc.SpigotConfig.logCommands ) // Spigot
this.c.info(this.player.getName() + " issued server command: " + s);

View File

@ -1,14 +1,14 @@
From 429ac7e3e8cbd6989d11f6d34f280899b1f98748 Mon Sep 17 00:00:00 2001
From 68e5367a039241677a762a1af4b76c90a5ef6e53 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 fa8ae87..3c83b5a 100644
index 58d52d8..905573c 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -1557,6 +1557,13 @@ public final class CraftServer implements Server {
@@ -1571,6 +1571,13 @@ public final class CraftServer implements Server {
}
public List<String> tabCompleteCommand(Player player, String message) {

View File

@ -1,32 +1,32 @@
From 204d50e3026b1e3efb49eab3519636ef96ae5253 Mon Sep 17 00:00:00 2001
From 2697f8ced8ddd323cd47b8c74799dc4dafedc5a8 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/HandshakeListener.java b/src/main/java/net/minecraft/server/HandshakeListener.java
index f8bac48..e036bc6 100644
index 98f40f1..8f421f3 100644
--- a/src/main/java/net/minecraft/server/HandshakeListener.java
+++ b/src/main/java/net/minecraft/server/HandshakeListener.java
@@ -62,11 +62,11 @@ public class HandshakeListener implements PacketHandshakingInListener {
// CraftBukkit end
if (packethandshakinginsetprotocol.b() > 47) {
- chatcomponenttext = new ChatComponentText("Outdated server! I\'m still on 1.8");
+ chatcomponenttext = new ChatComponentText( java.text.MessageFormat.format( org.spigotmc.SpigotConfig.outdatedServerMessage, "1.8" ) ); // Spigot
- chatcomponenttext = new ChatComponentText("Outdated server! I\'m still on 1.8.3");
+ chatcomponenttext = new ChatComponentText( java.text.MessageFormat.format( org.spigotmc.SpigotConfig.outdatedServerMessage, "1.8.3" ) ); // Spigot
this.b.handle(new PacketLoginOutDisconnect(chatcomponenttext));
this.b.close(chatcomponenttext);
} else if (packethandshakinginsetprotocol.b() < 47) {
- chatcomponenttext = new ChatComponentText("Outdated client! Please use 1.8");
+ chatcomponenttext = new ChatComponentText(java.text.MessageFormat.format( org.spigotmc.SpigotConfig.outdatedClientMessage, "1.8" ) ); // Spigot
- chatcomponenttext = new ChatComponentText("Outdated client! Please use 1.8.3");
+ chatcomponenttext = new ChatComponentText( java.text.MessageFormat.format( org.spigotmc.SpigotConfig.outdatedClientMessage, "1.8.3" ) ); // Spigot
this.b.handle(new PacketLoginOutDisconnect(chatcomponenttext));
this.b.close(chatcomponenttext);
} else {
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
index f10cfa9..b29820c 100644
index 64b755d..e396288 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
@@ -388,7 +388,7 @@ public abstract class PlayerList {
@@ -418,7 +418,7 @@ public abstract class PlayerList {
event.disallow(PlayerLoginEvent.Result.KICK_BANNED, s);
} else if (!this.isWhitelisted(gameprofile)) {
// return "You are not white-listed on this server!";
@ -35,7 +35,7 @@ index f10cfa9..b29820c 100644
} else if (getIPBans().isBanned(socketaddress) && !getIPBans().get(socketaddress).hasExpired()) {
IpBanEntry ipbanentry = this.l.get(socketaddress);
@@ -402,7 +402,7 @@ public abstract class PlayerList {
@@ -432,7 +432,7 @@ public abstract class PlayerList {
} else {
// return this.players.size() >= this.maxPlayers ? "The server is full!" : null;
if (this.players.size() >= this.maxPlayers) {
@ -45,7 +45,7 @@ index f10cfa9..b29820c 100644
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 3c83b5a..18e736a 100644
index 905573c..f0453e6 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -628,11 +628,7 @@ public final class CraftServer implements Server {

View File

@ -1,14 +1,14 @@
From 8a7bd05a3ec26589a239e62d70cccc005095c620 Mon Sep 17 00:00:00 2001
From 1efa3a7b78341805aff195eedcce8094fca56682 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/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index 9e65ff7..2e715b3 100644
index 92b25f0..ab971cf 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -982,7 +982,7 @@ public class Chunk {
@@ -1011,7 +1011,7 @@ public class Chunk {
}
this.p = true;
@ -18,10 +18,10 @@ index 9e65ff7..2e715b3 100644
}
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index d85479b..dad3d19 100644
index 6a975d3..8fc5c71 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -2017,7 +2017,7 @@ public abstract class World implements IBlockAccess {
@@ -2071,7 +2071,7 @@ public abstract class World implements IBlockAccess {
}
this.methodProfiler.a("playerCheckLight");

View File

@ -1,4 +1,4 @@
From e59b9c6809c13422cad7fe4d06bef09ed52b0451 Mon Sep 17 00:00:00 2001
From 1aee6e97da0635b4c3df6e10290b98ee9ae03850 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 2e715b3..49eab04 100644
index ab971cf..5f07158 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -796,6 +796,18 @@ public class Chunk {
@@ -820,6 +820,18 @@ public class Chunk {
while (iterator.hasNext()) {
TileEntity tileentity = (TileEntity) iterator.next();
@ -28,7 +28,7 @@ index 2e715b3..49eab04 100644
this.world.b(tileentity);
}
@@ -806,6 +818,18 @@ public class Chunk {
@@ -830,6 +842,18 @@ public class Chunk {
java.util.Iterator<Entity> iter = newList.iterator();
while (iter.hasNext()) {
Entity entity = iter.next();
@ -48,10 +48,10 @@ index 2e715b3..49eab04 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 ab1b3a5..bf882de 100644
index 712018a..17b5714 100644
--- a/src/main/java/net/minecraft/server/EntityMinecartContainer.java
+++ b/src/main/java/net/minecraft/server/EntityMinecartContainer.java
@@ -124,6 +124,12 @@ public abstract class EntityMinecartContainer extends EntityMinecartAbstract imp
@@ -127,6 +127,12 @@ public abstract class EntityMinecartContainer extends EntityMinecartAbstract imp
}
public void c(int i) {

View File

@ -1,14 +1,14 @@
From 53f8e931acadf9c42c011e9fa779829ac8810d1a Mon Sep 17 00:00:00 2001
From 35548f6d4f97ccfd58b93c6758e5bcf5b07c12ca 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 6a96c37..1a2c8f8 100644
index 9afd03f..a868a19 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -1179,6 +1179,13 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
@@ -1198,6 +1198,13 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
PlayerConnectionUtils.ensureMainThread(packetplayinuseentity, this, this.player.u());
WorldServer worldserver = this.minecraftServer.getWorldServer(this.player.dimension);
Entity entity = packetplayinuseentity.a((World) worldserver);

View File

@ -1,14 +1,14 @@
From 6c0d9ff5e5043eccd210f7f838a9ad0c80e57f77 Mon Sep 17 00:00:00 2001
From b52a30de982b0edca30416c5075cc4228fb76cf2 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 9dcddb1..8f7d865 100644
index ebdcaab..5cf3833 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -1537,6 +1537,7 @@ public abstract class Entity implements ICommandListener {
@@ -1540,6 +1540,7 @@ public abstract class Entity implements ICommandListener {
}
}
// CraftBukkit end
@ -16,7 +16,7 @@ index 9dcddb1..8f7d865 100644
this.setPositionRotation(this.vehicle.locX, this.vehicle.getBoundingBox().b + (double) this.vehicle.length, this.vehicle.locZ, this.yaw, this.pitch);
this.vehicle.passenger = null;
}
@@ -1571,6 +1572,18 @@ public abstract class Entity implements ICommandListener {
@@ -1574,6 +1575,18 @@ public abstract class Entity implements ICommandListener {
}
}
// CraftBukkit end

View File

@ -1,4 +1,4 @@
From e8cfec1c1b15854e523489b9fa2a79980ce613cb Mon Sep 17 00:00:00 2001
From d2dadf6c02543ca71f6f8b85e5cb2f6046dbbc12 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 b29820c..74091d5 100644
index e396288..f24739d 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
@@ -515,6 +515,11 @@ public abstract class PlayerList {
@@ -548,6 +548,11 @@ public abstract class PlayerList {
Player respawnPlayer = cserver.getPlayer(entityplayer1);
PlayerRespawnEvent respawnEvent = new PlayerRespawnEvent(respawnPlayer, location, isBedSpawn);
cserver.getPluginManager().callEvent(respawnEvent);

View File

@ -1,19 +1,19 @@
From 4fd9b5495f938f14b6b258b1ede36292ed333fb5 Mon Sep 17 00:00:00 2001
From b61ff25808179d81c140fdff162e6e84f1e43fab 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 2cdf7d3..6acfb62 100644
index 125cefe..6a7e7b3 100644
--- a/src/main/java/net/minecraft/server/BlockRedstoneTorch.java
+++ b/src/main/java/net/minecraft/server/BlockRedstoneTorch.java
@@ -10,7 +10,7 @@ import org.bukkit.event.block.BlockRedstoneEvent; // CraftBukkit
public class BlockRedstoneTorch extends BlockTorch {
- private static Map b = Maps.newHashMap();
+ private static Map b = new java.util.WeakHashMap(); // Spigot
- private static Map<World, List<BlockRedstoneTorch.RedstoneUpdateInfo>> b = Maps.newHashMap();
+ private static Map<World, List<BlockRedstoneTorch.RedstoneUpdateInfo>> b = new java.util.WeakHashMap(); // Spigot
private final boolean isOn;
private boolean a(World world, BlockPosition blockposition, boolean flag) {

View File

@ -1,11 +1,11 @@
From b0a27025f00b99c90fd70dc7cfac95cde1b1e591 Mon Sep 17 00:00:00 2001
From a3aa58034bd77397a293f64aab4e88ac804917a2 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 7eb41e1..b65c225 100644
index 55340ab..96ed585 100644
--- a/src/main/java/net/minecraft/server/EntityHuman.java
+++ b/src/main/java/net/minecraft/server/EntityHuman.java
@@ -427,6 +427,7 @@ public abstract class EntityHuman extends EntityLiving {
@ -25,20 +25,20 @@ index 7eb41e1..b65c225 100644
}
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index 89374d7..5edefa0 100644
index e90ff2f..ca0430d 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -1657,7 +1657,7 @@ public abstract class EntityLiving extends Entity {
protected void bK() {
List list = this.world.getEntities(this, this.getBoundingBox().grow(0.20000000298023224D, 0.0D, 0.20000000298023224D));
@@ -1670,7 +1670,7 @@ public abstract class EntityLiving extends Entity {
}
}));
- if (list != null && !list.isEmpty()) {
+ if (this.ad() && list != null && !list.isEmpty()) { // Spigot: Add this.ad() condition
- if (!list.isEmpty()) {
+ if (this.ad() && !list.isEmpty()) { // Spigot: Add this.ad() condition
for (int i = 0; i < list.size(); ++i) {
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 1a51836..5c961ba 100644
index aefed46..657f3f5 100644
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -62,6 +62,21 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
@ -64,7 +64,7 @@ index 1a51836..5c961ba 100644
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 9268686..dfef8cb 100644
index 5dafb80..3dc0255 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1318,6 +1318,19 @@ public class CraftPlayer extends CraftHumanEntity implements Player {

View File

@ -1,25 +1,25 @@
From 19a5fa4ce25bee4eb0dd9975b6f8343c5d381885 Mon Sep 17 00:00:00 2001
From 4bd1dd657b32a94cbc065a2189d77e5a7779732f 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 76591fb..6ba24ac 100644
index 61abf67..b7a8a4c 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -636,11 +636,11 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
this.g[this.ticks % 100] = System.nanoTime() - i;
@@ -657,11 +657,11 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
this.h[this.ticks % 100] = System.nanoTime() - i;
this.methodProfiler.b();
this.methodProfiler.a("snooper");
- if (!this.m.d() && this.ticks > 100) {
+ if (getSnooperEnabled() && !this.m.d() && this.ticks > 100) { // Spigot
this.m.a();
- if (!this.n.d() && this.ticks > 100) {
+ if (getSnooperEnabled() && !this.n.d() && this.ticks > 100) { // Spigot
this.n.a();
}
- if (this.ticks % 6000 == 0) {
+ if (getSnooperEnabled() && this.ticks % 6000 == 0) { // Spigot
this.m.b();
this.n.b();
}
--

View File

@ -1,4 +1,4 @@
From f4f4d9c8ac1cb7b1da1ec97f5251050c59b23b87 Mon Sep 17 00:00:00 2001
From 49d817977c0e7021a305e98a9df7d3575f1c298e 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

View File

@ -1,11 +1,11 @@
From eb503329561dc70abbcfc1e3166af1232927499e Mon Sep 17 00:00:00 2001
From 8ac4f210d0dd342a3569297679026acda3533ba2 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 dfef8cb..348b6e2 100644
index 3dc0255..027ca4d 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1182,7 +1182,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {

View File

@ -1,11 +1,11 @@
From ff433233faf63a2d234c73c6e54aef64e3a463e0 Mon Sep 17 00:00:00 2001
From 68e60e378b8ac8c3799012194a71f417f9726159 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 b65c225..eaa5879 100644
index 96ed585..2004d67 100644
--- a/src/main/java/net/minecraft/server/EntityHuman.java
+++ b/src/main/java/net/minecraft/server/EntityHuman.java
@@ -300,6 +300,10 @@ public abstract class EntityHuman extends EntityLiving {

View File

@ -1,4 +1,4 @@
From a4bd9805229e2bf5fe1484c7396c372969a85977 Mon Sep 17 00:00:00 2001
From 83d50f5bf12811352b54643722ddfc0348a5c658 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
@ -6,7 +6,7 @@ Subject: [PATCH] Call EntityChangeBlockEvent for Fire Arrows hitting TNT
Adds BUKKIT-4355
diff --git a/src/main/java/net/minecraft/server/BlockTNT.java b/src/main/java/net/minecraft/server/BlockTNT.java
index cc61759..7443873 100644
index f15b199..40c0a87 100644
--- a/src/main/java/net/minecraft/server/BlockTNT.java
+++ b/src/main/java/net/minecraft/server/BlockTNT.java
@@ -77,6 +77,11 @@ public class BlockTNT extends Block {

View File

@ -1,14 +1,14 @@
From ed80edcc31f4e5b9ca408c38dac3b1fafdd78484 Mon Sep 17 00:00:00 2001
From 9fe0e6a0eb3e48eb3b1668c800cba2b45dd052a4 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
diff --git a/src/main/java/net/minecraft/server/StructureGenerator.java b/src/main/java/net/minecraft/server/StructureGenerator.java
index 49b7aa1..ecab5d1 100644
index 0bced98..bb1a11e 100644
--- a/src/main/java/net/minecraft/server/StructureGenerator.java
+++ b/src/main/java/net/minecraft/server/StructureGenerator.java
@@ -171,7 +171,15 @@ public abstract class StructureGenerator extends WorldGenBase {
@@ -195,7 +195,15 @@ public abstract class StructureGenerator extends WorldGenBase {
private void a(World world) {
if (this.d == null) {

View File

@ -1,19 +1,19 @@
From 867901c33416a8b9b4522a83a95db7b15dc928b0 Mon Sep 17 00:00:00 2001
From 37d47654d1062f881edd92496fb62005521b8127 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 652b803..81bba48 100644
index 65a03df..d6d83fe 100644
--- a/src/main/java/net/minecraft/server/EntityItem.java
+++ b/src/main/java/net/minecraft/server/EntityItem.java
@@ -108,7 +108,7 @@ public class EntityItem extends Entity {
// Craftbukkit end */
@@ -109,7 +109,7 @@ public class EntityItem extends Entity {
this.W();
- if (!this.world.isStatic && this.age >= 6000) {
+ if (!this.world.isStatic && this.age >= world.spigotConfig.itemDespawnRate) { // Spigot
- if (!this.world.isClientSide && this.age >= 6000) {
+ if (!this.world.isClientSide && this.age >= world.spigotConfig.itemDespawnRate) { // Spigot
// CraftBukkit start - fire ItemDespawnEvent
if (org.bukkit.craftbukkit.event.CraftEventFactory.callItemDespawnEvent(this).isCancelled()) {
this.age = 0;

View File

@ -1,14 +1,14 @@
From 72172cc543759a0be6d71c589a72a54d87234db2 Mon Sep 17 00:00:00 2001
From b1712073a0f13630cfb261c29299ccc1328d8d02 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 1a2c8f8..c30e96e 100644
index a868a19..9fa0e67 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -108,6 +108,7 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
@@ -109,6 +109,7 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
private float lastPitch = Float.MAX_VALUE;
private float lastYaw = Float.MAX_VALUE;
private boolean justTeleported = false;
@ -16,7 +16,7 @@ index 1a2c8f8..c30e96e 100644
public CraftPlayer getPlayer() {
return (this.player == null) ? null : (CraftPlayer) this.player.getBukkitEntity();
@@ -209,6 +210,18 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
@@ -219,6 +220,18 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
}
// CraftBukkit start - fire PlayerMoveEvent
Player player = this.getPlayer();
@ -35,7 +35,7 @@ index 1a2c8f8..c30e96e 100644
Location from = new Location(player.getWorld(), lastPosX, lastPosY, lastPosZ, lastYaw, lastPitch); // Get the Players previous Event location.
Location to = player.getLocation().clone(); // Start off the To location as the Players current location.
@@ -237,7 +250,7 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
@@ -247,7 +260,7 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
this.lastPitch = to.getPitch();
// Skip the first time we do this

View File

@ -1,11 +1,11 @@
From c49b50666a4ad0e35112cdd1a3e5904e749ebe79 Mon Sep 17 00:00:00 2001
From e779bd6a7bcec77b4cafc43b02749891a844c57f 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 348b6e2..272f7df 100644
index 027ca4d..00043de 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1331,6 +1331,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {

View File

@ -1,22 +1,22 @@
From 447d33d7376eae95e7a492d463c8e326bd6528e6 Mon Sep 17 00:00:00 2001
From c9433b9cc24018bc3fb0c172a7792aebc8bbf536 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 6e5450a..ead7eef 100644
index 01c66e3..46f6374 100644
--- a/src/main/java/net/minecraft/server/EntityArrow.java
+++ b/src/main/java/net/minecraft/server/EntityArrow.java
@@ -155,7 +155,7 @@ public class EntityArrow extends Entity implements IProjectile {
if (block == this.g && i == this.h) {
++this.ap;
- if (this.ap >= 1200) {
+ if (this.ap >= world.spigotConfig.arrowDespawnRate) { // Spigot - First int after shooter
++this.ar;
- if (this.ar >= 1200) {
+ if (this.ar >= world.spigotConfig.arrowDespawnRate) { // Spigot - First int after shooter
this.die();
}
} else {
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
index a5786ea..af0c4b2 100644
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java

View File

@ -1,25 +1,25 @@
From 2bde17cffe96cc498b18d34c312cb4716abb52a6 Mon Sep 17 00:00:00 2001
From ac1c585ef55565675089fe2fd8e73955f6f94532 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sun, 1 Dec 2013 17:52:14 +1100
Subject: [PATCH] Fix packed ice generation
diff --git a/src/main/java/net/minecraft/server/WorldGenPackedIce2.java b/src/main/java/net/minecraft/server/WorldGenPackedIce2.java
index 38e9602..3d08a82 100644
index dcd085a..3d08a82 100644
--- a/src/main/java/net/minecraft/server/WorldGenPackedIce2.java
+++ b/src/main/java/net/minecraft/server/WorldGenPackedIce2.java
@@ -40,13 +40,13 @@ public class WorldGenPackedIce2 extends WorldGenerator {
Block block = world.getType(blockposition.a(i1, k, j1)).getBlock();
if (block.getMaterial() == Material.AIR || block == Blocks.DIRT || block == Blocks.SNOW || block == Blocks.ICE) {
- this.a(world, blockposition.a(i1, k, j1), Blocks.PACKED_ICE);
- this.a(world, blockposition.a(i1, k, j1), Blocks.PACKED_ICE.getBlockData());
+ world.setTypeUpdate(blockposition.a(i1, k, j1), Blocks.PACKED_ICE.getBlockData()); // Spigot
}
if (k != 0 && l > 1) {
block = world.getType(blockposition.a(i1, -k, j1)).getBlock();
if (block.getMaterial() == Material.AIR || block == Blocks.DIRT || block == Blocks.SNOW || block == Blocks.ICE) {
- this.a(world, blockposition.a(i1, -k, j1), Blocks.PACKED_ICE);
- this.a(world, blockposition.a(i1, -k, j1), Blocks.PACKED_ICE.getBlockData());
+ world.setTypeUpdate(blockposition.a(i1, -k, j1), Blocks.PACKED_ICE.getBlockData()); // Spigot
}
}
@ -28,7 +28,7 @@ index 38e9602..3d08a82 100644
Block block1 = world.getType(blockposition1).getBlock();
if (block1.getMaterial() == Material.AIR || block1 == Blocks.DIRT || block1 == Blocks.SNOW || block1 == Blocks.ICE || block1 == Blocks.PACKED_ICE) {
- this.a(world, blockposition1, Blocks.PACKED_ICE);
- this.a(world, blockposition1, Blocks.PACKED_ICE.getBlockData());
+ world.setTypeUpdate(blockposition1, Blocks.PACKED_ICE.getBlockData()); // Spigot
blockposition1 = blockposition1.down();
--l1;

View File

@ -1,35 +1,35 @@
From a14b8d2bee4eff2100f569903a2c6d2427edb216 Mon Sep 17 00:00:00 2001
From 6e9323fac10fa52d12de38ee61b2aaccc1ff3bec Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Tue, 5 Aug 2014 17:20:19 +0100
Subject: [PATCH] Watchdog Thread.
diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java
index 390c6eb..240c909 100644
index 1e682e9..ae9e255 100644
--- a/src/main/java/net/minecraft/server/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/DedicatedServer.java
@@ -225,7 +225,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
@@ -271,7 +271,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
}
// CraftBukkit end
- if (this.aQ() > 0L) {
+ if (false && this.aQ() > 0L) { // Spigot - disable
Thread thread = new Thread(new ThreadWatchdog(this));
- if (this.aR() > 0L) {
+ if (false && this.aR() > 0L) { // Spigot - disable
Thread thread1 = new Thread(new ThreadWatchdog(this));
thread.setName("Server Watchdog");
thread1.setName("Server Watchdog");
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 6ba24ac..84f27a3 100644
index b7a8a4c..bcdd918 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -546,6 +546,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
@@ -567,6 +567,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
this.a(crashreport);
} finally {
try {
+ org.spigotmc.WatchdogThread.doStop();
this.stop();
this.isStopped = true;
this.stop();
} catch (Throwable throwable1) {
@@ -646,6 +647,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
@@ -667,6 +668,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
this.methodProfiler.b();
this.methodProfiler.b();
@ -39,7 +39,7 @@ index 6ba24ac..84f27a3 100644
}
diff --git a/src/main/java/org/spigotmc/RestartCommand.java b/src/main/java/org/spigotmc/RestartCommand.java
new file mode 100644
index 0000000..429c258
index 0000000..429c2580
--- /dev/null
+++ b/src/main/java/org/spigotmc/RestartCommand.java
@@ -0,0 +1,124 @@

View File

@ -1,14 +1,14 @@
From 289e193139e4dad6f37e57888e17a8471ed414cd Mon Sep 17 00:00:00 2001
From 5498542d2f34ab0718066833f973fb2b4f9de6b8 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Tue, 3 Dec 2013 11:07:48 +1100
Subject: [PATCH] Clear Flower Pot on Drop
diff --git a/src/main/java/net/minecraft/server/BlockFlowerPot.java b/src/main/java/net/minecraft/server/BlockFlowerPot.java
index d1275a3..0fdfdde 100644
index fd77047..ce46138 100644
--- a/src/main/java/net/minecraft/server/BlockFlowerPot.java
+++ b/src/main/java/net/minecraft/server/BlockFlowerPot.java
@@ -90,6 +90,7 @@ public class BlockFlowerPot extends BlockContainer {
@@ -95,6 +95,7 @@ public class BlockFlowerPot extends BlockContainer {
if (tileentityflowerpot != null && tileentityflowerpot.b() != null) {
a(world, blockposition, new ItemStack(tileentityflowerpot.b(), 1, tileentityflowerpot.c()));

View File

@ -1,14 +1,14 @@
From 922374f93b9f94b020d7a461940293f8864390c0 Mon Sep 17 00:00:00 2001
From d57ae577426a74a98f9b776aceffad9ae6297e9f Mon Sep 17 00:00:00 2001
From: Thinkofdeath <thethinkofdeath@gmail.com>
Date: Mon, 2 Dec 2013 23:42:09 +0000
Subject: [PATCH] Fix some chunks not being sent to the client
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index 49eab04..372d90f 100644
index 5f07158..b2ce05f 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -1024,7 +1024,15 @@ public class Chunk {
@@ -1053,7 +1053,15 @@ public class Chunk {
}
public boolean isReady() {

View File

@ -1,24 +1,22 @@
From cafc66c0b55ab4064e949c5a70e16c2b5385c6fc Mon Sep 17 00:00:00 2001
From add640221c6a7a23228de32c3147fb2f0daa4cbd Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Thu, 5 Dec 2013 13:55:53 +1100
Subject: [PATCH] Fix Broken Async Chat
diff --git a/src/main/java/net/minecraft/server/PacketPlayInChat.java b/src/main/java/net/minecraft/server/PacketPlayInChat.java
index 8e1740d..cb614ef 100644
index 0ab90f3..18358b4 100644
--- a/src/main/java/net/minecraft/server/PacketPlayInChat.java
+++ b/src/main/java/net/minecraft/server/PacketPlayInChat.java
@@ -30,7 +30,26 @@ public class PacketPlayInChat implements Packet {
return this.a;
@@ -24,7 +24,24 @@ public class PacketPlayInChat implements Packet<PacketListenerPlayIn> {
packetdataserializer.a(this.a);
}
- public void a(PacketListener packetlistener) {
- public void a(PacketListenerPlayIn packetlistenerplayin) {
+ // Spigot Start
+ private static final java.util.concurrent.ExecutorService executors = java.util.concurrent.Executors.newCachedThreadPool(
+ new com.google.common.util.concurrent.ThreadFactoryBuilder().setDaemon( true ).setNameFormat( "Async Chat Thread - #%d" ).build() );
+ @Override
+ public void a(final PacketListener packetlistener)
+ {
+ public void a(final PacketListenerPlayIn packetlistenerplayin) {
+ if ( !a.startsWith("/") )
+ {
+ executors.submit( new Runnable()
@ -27,15 +25,15 @@ index 8e1740d..cb614ef 100644
+ @Override
+ public void run()
+ {
+ PacketPlayInChat.this.a( (PacketListenerPlayIn) packetlistener );
+ packetlistenerplayin.a( PacketPlayInChat.this );
+ }
+ } );
+ return;
+ }
+ // Spigot End
this.a((PacketListenerPlayIn) packetlistener);
packetlistenerplayin.a(this);
}
}
--
2.1.0

View File

@ -1,11 +1,11 @@
From c58f0fe1ac9b081c3f140ea23bbde86dc31fe435 Mon Sep 17 00:00:00 2001
From 178ba754758e09c17d82ac88d52f0f86591f7142 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 22dc42d..fd78677 100644
index 9e0d5ad..ce91553 100644
--- a/src/main/java/net/minecraft/server/EntityFallingBlock.java
+++ b/src/main/java/net/minecraft/server/EntityFallingBlock.java
@@ -60,6 +60,7 @@ public class EntityFallingBlock extends Entity {
@ -13,22 +13,22 @@ index 22dc42d..fd78677 100644
if (this.world.getType(blockposition).getBlock() == block && !CraftEventFactory.callEntityChangeBlockEvent(this, blockposition.getX(), blockposition.getY(), blockposition.getZ(), Blocks.AIR, 0).isCancelled()) {
this.world.setAir(blockposition);
+ world.spigotConfig.antiXrayInstance.updateNearbyBlocks(world, blockposition); // Spigot
} else if (!this.world.isStatic) {
} else if (!this.world.isClientSide) {
this.die();
return;
@@ -84,6 +85,7 @@ public class EntityFallingBlock extends Entity {
return;
}
this.world.setTypeAndData(blockposition, this.block, 3);
+ world.spigotConfig.antiXrayInstance.updateNearbyBlocks(world, blockposition); // Spigot
// CraftBukkit end
if (block instanceof BlockFalling) {
((BlockFalling) block).a_(this.world, blockposition);
@@ -85,6 +86,7 @@ public class EntityFallingBlock extends Entity {
return;
}
this.world.setTypeAndData(blockposition, this.block, 3);
+ world.spigotConfig.antiXrayInstance.updateNearbyBlocks(world, blockposition); // Spigot
// CraftBukkit end
if (block instanceof BlockFalling) {
((BlockFalling) block).a_(this.world, blockposition);
diff --git a/src/main/java/net/minecraft/server/Explosion.java b/src/main/java/net/minecraft/server/Explosion.java
index 85bd257..19759e8 100644
index 71c78bd..4564877 100644
--- a/src/main/java/net/minecraft/server/Explosion.java
+++ b/src/main/java/net/minecraft/server/Explosion.java
@@ -198,6 +198,7 @@ public class Explosion {
@@ -194,6 +194,7 @@ public class Explosion {
blockposition = (BlockPosition) iterator.next();
Block block = this.world.getType(blockposition).getBlock();
@ -37,40 +37,40 @@ index 85bd257..19759e8 100644
double d0 = (double) ((float) blockposition.getX() + this.world.random.nextFloat());
double d1 = (double) ((float) blockposition.getY() + this.world.random.nextFloat());
diff --git a/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java b/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java
index e24d3ae..e106a1f 100644
index 6e368f5..58c0275 100644
--- a/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java
+++ b/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java
@@ -18,6 +18,7 @@ public class PacketPlayOutMapChunk implements Packet {
@@ -19,6 +19,7 @@ public class PacketPlayOutMapChunk implements Packet<PacketListenerPlayOut> {
this.b = chunk.locZ;
this.d = flag;
this.c = a(chunk, flag, !chunk.getWorld().worldProvider.o(), i);
+ chunk.world.spigotConfig.antiXrayInstance.obfuscateSync(chunk.locX, chunk.locZ, c.b, c.a, chunk.world);
}
public void a(PacketDataSerializer packetdataserializer) {
public void a(PacketDataSerializer packetdataserializer) throws IOException {
diff --git a/src/main/java/net/minecraft/server/PacketPlayOutMapChunkBulk.java b/src/main/java/net/minecraft/server/PacketPlayOutMapChunkBulk.java
index 8af5e1f..9df0d53 100644
index 63b90f7..10c0e34 100644
--- a/src/main/java/net/minecraft/server/PacketPlayOutMapChunkBulk.java
+++ b/src/main/java/net/minecraft/server/PacketPlayOutMapChunkBulk.java
@@ -8,6 +8,7 @@ public class PacketPlayOutMapChunkBulk implements Packet {
@@ -9,6 +9,7 @@ public class PacketPlayOutMapChunkBulk implements Packet<PacketListenerPlayOut>
private int[] b;
private ChunkMap[] c;
private PacketPlayOutMapChunk.ChunkMap[] c;
private boolean d;
+ private World world; // Spigot
public PacketPlayOutMapChunkBulk() {}
@@ -27,7 +28,8 @@ public class PacketPlayOutMapChunkBulk implements Packet {
@@ -28,7 +29,8 @@ public class PacketPlayOutMapChunkBulk implements Packet<PacketListenerPlayOut>
this.b[j] = chunk.locZ;
this.c[j] = chunkmap;
this.c[j] = packetplayoutmapchunk_chunkmap;
}
-
+
+ world = ((Chunk) list.get(0)).getWorld(); // Spigot
}
public void a(PacketDataSerializer packetdataserializer) {
@@ -67,6 +69,7 @@ public class PacketPlayOutMapChunkBulk implements Packet {
public void a(PacketDataSerializer packetdataserializer) throws IOException {
@@ -68,6 +70,7 @@ public class PacketPlayOutMapChunkBulk implements Packet<PacketListenerPlayOut>
}
for (i = 0; i < this.a.length; ++i) {
@ -79,7 +79,7 @@ index 8af5e1f..9df0d53 100644
}
diff --git a/src/main/java/net/minecraft/server/PlayerInteractManager.java b/src/main/java/net/minecraft/server/PlayerInteractManager.java
index b2431d9..7b469e1 100644
index 0301fba..7a84a95 100644
--- a/src/main/java/net/minecraft/server/PlayerInteractManager.java
+++ b/src/main/java/net/minecraft/server/PlayerInteractManager.java
@@ -197,6 +197,7 @@ public class PlayerInteractManager {
@ -91,10 +91,10 @@ index b2431d9..7b469e1 100644
public void a(BlockPosition blockposition) {
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index dad3d19..f6b1dac 100644
index 8fc5c71..a4fda33 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -460,6 +460,7 @@ public abstract class World implements IBlockAccess {
@@ -494,6 +494,7 @@ public abstract class World implements IBlockAccess {
this.d(blockposition.up(), block);
this.d(blockposition.north(), block);
this.d(blockposition.south(), block);
@ -102,7 +102,7 @@ index dad3d19..f6b1dac 100644
}
public void a(BlockPosition blockposition, Block block, EnumDirection enumdirection) {
@@ -673,9 +674,16 @@ public abstract class World implements IBlockAccess {
@@ -719,9 +720,16 @@ public abstract class World implements IBlockAccess {
return this.worldProvider.p()[this.getLightLevel(blockposition)];
}

View File

@ -1,4 +1,4 @@
From c1863e84d7af9c8e328c2928f3db960ce2d7215a Mon Sep 17 00:00:00 2001
From 13c622659e5b7767c3240d9ab5f260252a5226b6 Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Fri, 13 Dec 2013 11:45:47 +1100
Subject: [PATCH] Optimize DataWatcher
@ -6,69 +6,69 @@ Subject: [PATCH] Optimize DataWatcher
Use primitive orientated collections, as well as more effective copies across collections.
diff --git a/src/main/java/net/minecraft/server/DataWatcher.java b/src/main/java/net/minecraft/server/DataWatcher.java
index e21e68d..966d737 100644
index 2bf9196..aa46c28 100644
--- a/src/main/java/net/minecraft/server/DataWatcher.java
+++ b/src/main/java/net/minecraft/server/DataWatcher.java
@@ -14,8 +14,13 @@ public class DataWatcher {
@@ -15,8 +15,13 @@ public class DataWatcher {
private final Entity a;
private boolean b = true;
- private static final Map c = Maps.newHashMap();
- private final Map d = Maps.newHashMap();
- private static final Map<Class<?>, Integer> c = Maps.newHashMap();
- private final Map<Integer, DataWatcher.WatchableObject> d = Maps.newHashMap();
+ // Spigot Start
+ private static final gnu.trove.map.TObjectIntMap classToId = new gnu.trove.map.hash.TObjectIntHashMap( 10, 0.5f, -1 );
+ private final gnu.trove.map.TIntObjectMap dataValues = new gnu.trove.map.hash.TIntObjectHashMap( 10, 0.5f, -1 );
+ // These exist as an attempt at backwards compatability for (broken) NMS plugins
+ private static final Map c = gnu.trove.TDecorators.wrap( classToId );
+ private final Map d = gnu.trove.TDecorators.wrap( dataValues );
+ private static final Map<Class<?>, Integer> c = gnu.trove.TDecorators.wrap( classToId );
+ private final Map<Integer, DataWatcher.WatchableObject> d = gnu.trove.TDecorators.wrap( dataValues );
+ // Spigot End
private boolean e;
private ReadWriteLock f = new ReentrantReadWriteLock();
@@ -24,19 +29,19 @@ public class DataWatcher {
@@ -25,19 +30,19 @@ public class DataWatcher {
}
public void a(int i, Object object) {
- Integer integer = (Integer) DataWatcher.c.get(object.getClass());
+ int integer = classToId.get(object.getClass()); // Spigot
public <T> void a(int i, T t0) {
- Integer integer = (Integer) DataWatcher.c.get(t0.getClass());
+ int integer = classToId.get(t0.getClass()); // Spigot
- if (integer == null) {
+ if (integer == -1) { // Spigot
throw new IllegalArgumentException("Unknown data type: " + object.getClass());
throw new IllegalArgumentException("Unknown data type: " + t0.getClass());
} else if (i > 31) {
throw new IllegalArgumentException("Data value id is too big with " + i + "! (Max is " + 31 + ")");
- } else if (this.d.containsKey(Integer.valueOf(i))) {
+ } else if (this.dataValues.containsKey(i)) { // Spigot
throw new IllegalArgumentException("Duplicate id value for " + i + "!");
} else {
- WatchableObject watchableobject = new WatchableObject(integer.intValue(), i, object);
+ WatchableObject watchableobject = new WatchableObject(integer, i, object); // Spigot
- DataWatcher.WatchableObject datawatcher_watchableobject = new DataWatcher.WatchableObject(integer.intValue(), i, t0);
+ DataWatcher.WatchableObject datawatcher_watchableobject = new DataWatcher.WatchableObject(integer, i, t0); // Spigot
this.f.writeLock().lock();
- this.d.put(Integer.valueOf(i), watchableobject);
+ this.dataValues.put(i, watchableobject); // Spigot
- this.d.put(Integer.valueOf(i), datawatcher_watchableobject);
+ this.dataValues.put(i, datawatcher_watchableobject); // Spigot
this.f.writeLock().unlock();
this.b = false;
}
@@ -46,7 +51,7 @@ public class DataWatcher {
WatchableObject watchableobject = new WatchableObject(j, i, (Object) null);
@@ -47,7 +52,7 @@ public class DataWatcher {
DataWatcher.WatchableObject datawatcher_watchableobject = new DataWatcher.WatchableObject(j, i, (Object) null);
this.f.writeLock().lock();
- this.d.put(Integer.valueOf(i), watchableobject);
+ this.dataValues.put(i, watchableobject); // Spigot
- this.d.put(Integer.valueOf(i), datawatcher_watchableobject);
+ this.dataValues.put(i, datawatcher_watchableobject); // Spigot
this.f.writeLock().unlock();
this.b = false;
}
@@ -81,7 +86,7 @@ public class DataWatcher {
WatchableObject watchableobject;
@@ -82,7 +87,7 @@ public class DataWatcher {
DataWatcher.WatchableObject datawatcher_watchableobject;
try {
- watchableobject = (WatchableObject) this.d.get(Integer.valueOf(i));
+ watchableobject = (WatchableObject) this.dataValues.get(i); // Spigot
- datawatcher_watchableobject = (DataWatcher.WatchableObject) this.d.get(Integer.valueOf(i));
+ datawatcher_watchableobject = (DataWatcher.WatchableObject) this.dataValues.get(i); // Spigot
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.a(throwable, "Getting synched entity data");
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Synched entity data");
@@ -138,7 +143,7 @@ public class DataWatcher {
@@ -139,7 +144,7 @@ public class DataWatcher {
if (this.e) {
this.f.readLock().lock();
@ -76,29 +76,29 @@ index e21e68d..966d737 100644
+ Iterator iterator = this.dataValues.valueCollection().iterator(); // Spigot
while (iterator.hasNext()) {
WatchableObject watchableobject = (WatchableObject) iterator.next();
@@ -162,7 +167,7 @@ public class DataWatcher {
DataWatcher.WatchableObject datawatcher_watchableobject = (DataWatcher.WatchableObject) iterator.next();
@@ -163,7 +168,7 @@ public class DataWatcher {
public void a(PacketDataSerializer packetdataserializer) {
public void a(PacketDataSerializer packetdataserializer) throws IOException {
this.f.readLock().lock();
- Iterator iterator = this.d.values().iterator();
+ Iterator iterator = this.dataValues.valueCollection().iterator(); // Spigot
while (iterator.hasNext()) {
WatchableObject watchableobject = (WatchableObject) iterator.next();
@@ -175,18 +180,11 @@ public class DataWatcher {
DataWatcher.WatchableObject datawatcher_watchableobject = (DataWatcher.WatchableObject) iterator.next();
@@ -176,18 +181,11 @@ public class DataWatcher {
}
public List c() {
public List<DataWatcher.WatchableObject> c() {
- ArrayList arraylist = null;
+ ArrayList arraylist = Lists.newArrayList(); // Spigot
this.f.readLock().lock();
- WatchableObject watchableobject;
- DataWatcher.WatchableObject datawatcher_watchableobject;
-
- for (Iterator iterator = this.d.values().iterator(); iterator.hasNext(); arraylist.add(watchableobject)) {
- watchableobject = (WatchableObject) iterator.next();
- for (Iterator iterator = this.d.values().iterator(); iterator.hasNext(); arraylist.add(datawatcher_watchableobject)) {
- datawatcher_watchableobject = (DataWatcher.WatchableObject) iterator.next();
- if (arraylist == null) {
- arraylist = Lists.newArrayList();
- }
@ -107,7 +107,7 @@ index e21e68d..966d737 100644
this.f.readLock().unlock();
return arraylist;
@@ -309,13 +307,15 @@ public class DataWatcher {
@@ -310,14 +308,16 @@ public class DataWatcher {
}
static {
@ -130,7 +130,8 @@ index e21e68d..966d737 100644
+ classToId.put(Vector3f.class, 7);
+ // Spigot End
}
}
public static class WatchableObject {
--
2.1.0

View File

@ -1,14 +1,22 @@
From a2254fd7c9d928ddc9c9ef5cc74feac8ff0d0ee0 Mon Sep 17 00:00:00 2001
From aefb2679c827a044b2b9d8522b6b0040de3f727f Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Wed, 18 Dec 2013 13:32:10 +1100
Subject: [PATCH] Fire PreLogin Events in Offline Mode
diff --git a/src/main/java/net/minecraft/server/LoginListener.java b/src/main/java/net/minecraft/server/LoginListener.java
index ba2b912..a59ea80 100644
index 50beec2..42905fd 100644
--- a/src/main/java/net/minecraft/server/LoginListener.java
+++ b/src/main/java/net/minecraft/server/LoginListener.java
@@ -60,10 +60,23 @@ public class LoginListener implements PacketLoginInListener, IUpdatePlayerListBo
@@ -13,6 +13,7 @@ import java.util.Arrays;
import java.util.Random;
import java.util.UUID;
import java.util.concurrent.atomic.AtomicInteger;
+import java.util.logging.Level;
import javax.crypto.SecretKey;
import org.apache.commons.lang3.Validate;
import org.apache.logging.log4j.LogManager;
@@ -80,10 +81,23 @@ public class LoginListener implements PacketLoginInListener, IUpdatePlayerListBo
}
@ -32,128 +40,99 @@ index ba2b912..a59ea80 100644
// CraftBukkit start - fire PlayerLoginEvent
EntityPlayer s = this.server.getPlayerList().attemptLogin(this, this.i, hostname);
@@ -98,7 +111,7 @@ public class LoginListener implements PacketLoginInListener, IUpdatePlayerListBo
this.g = EnumProtocolState.KEY;
@@ -133,7 +147,14 @@ public class LoginListener implements PacketLoginInListener, IUpdatePlayerListBo
this.g = LoginListener.EnumProtocolState.KEY;
this.networkManager.handle(new PacketLoginOutEncryptionBegin(this.j, this.server.P().getPublic(), this.e));
} else {
- this.g = EnumProtocolState.READY_TO_ACCEPT;
+ (new ThreadPlayerLookupUUID(this, "User Authenticator #" + b.incrementAndGet())).start(); // Spigot
- this.g = LoginListener.EnumProtocolState.READY_TO_ACCEPT;
+ // Spigot start
+ try {
+ new LoginHandler().fireEvents();
+ } catch (Exception ex) {
+ disconnect("Failed to verify username!");
+ server.server.getLogger().log(java.util.logging.Level.WARNING, "Exception verifying " + i.getName(), ex);
+ }
+ // Spigot end
}
}
diff --git a/src/main/java/net/minecraft/server/ThreadPlayerLookupUUID.java b/src/main/java/net/minecraft/server/ThreadPlayerLookupUUID.java
index 34843be..021cb59 100644
--- a/src/main/java/net/minecraft/server/ThreadPlayerLookupUUID.java
+++ b/src/main/java/net/minecraft/server/ThreadPlayerLookupUUID.java
@@ -24,50 +24,19 @@ class ThreadPlayerLookupUUID extends Thread {
GameProfile gameprofile = LoginListener.b(this.a);
@@ -162,6 +183,40 @@ public class LoginListener implements PacketLoginInListener, IUpdatePlayerListBo
return;
}
try {
+ // Spigot Start
+ if ( !LoginListener.a( this.a ).getOnlineMode() )
+ {
+ a.initUUID();
+ fireLoginEvents();
+ return;
+ }
+ // Spigot End
String s = (new BigInteger(MinecraftEncryption.a(LoginListener.c(this.a), LoginListener.a(this.a).P().getPublic(), LoginListener.d(this.a)))).toString(16);
LoginListener.a(this.a, LoginListener.a(this.a).aB().hasJoinedServer(new GameProfile((UUID) null, gameprofile.getName()), s));
if (LoginListener.b(this.a) != null) {
- // CraftBukkit start - fire PlayerPreLoginEvent
- if (!this.a.networkManager.g()) {
- return;
- }
-
- String playerName = LoginListener.b(this.a).getName();
- java.net.InetAddress address = ((java.net.InetSocketAddress) a.networkManager.getSocketAddress()).getAddress();
- java.util.UUID uniqueId = LoginListener.b(this.a).getId();
- final org.bukkit.craftbukkit.CraftServer server = LoginListener.a(this.a).server;
-
- AsyncPlayerPreLoginEvent asyncEvent = new AsyncPlayerPreLoginEvent(playerName, address, uniqueId);
- server.getPluginManager().callEvent(asyncEvent);
-
- if (PlayerPreLoginEvent.getHandlerList().getRegisteredListeners().length != 0) {
- final PlayerPreLoginEvent event = new PlayerPreLoginEvent(playerName, address, uniqueId);
- if (asyncEvent.getResult() != PlayerPreLoginEvent.Result.ALLOWED) {
- event.disallow(asyncEvent.getResult(), asyncEvent.getKickMessage());
- }
- Waitable<PlayerPreLoginEvent.Result> waitable = new Waitable<PlayerPreLoginEvent.Result>() {
- @Override
- protected PlayerPreLoginEvent.Result evaluate() {
- server.getPluginManager().callEvent(event);
- return event.getResult();
- }};
-
- LoginListener.a(this.a).processQueue.add(waitable);
- if (waitable.get() != PlayerPreLoginEvent.Result.ALLOWED) {
- this.a.disconnect(event.getKickMessage());
- return;
- }
- } else {
- if (asyncEvent.getLoginResult() != AsyncPlayerPreLoginEvent.Result.ALLOWED) {
- this.a.disconnect(asyncEvent.getKickMessage());
- return;
- }
- }
- // CraftBukkit end
-
- LoginListener.e().info("UUID of player " + LoginListener.b(this.a).getName() + " is " + LoginListener.b(this.a).getId());
- LoginListener.a(this.a, EnumProtocolState.READY_TO_ACCEPT);
+ fireLoginEvents(); // Spigot
} else if (LoginListener.a(this.a).S()) {
LoginListener.e().warn("Failed to verify username but will let them in anyway!");
LoginListener.a(this.a, this.a.a(gameprofile));
@@ -93,4 +62,48 @@ class ThreadPlayerLookupUUID extends Thread {
}
}
+ new LoginHandler().fireEvents();
+ } else if (LoginListener.this.server.S()) {
+ LoginListener.c.warn("Failed to verify username but will let them in anyway!");
+ LoginListener.this.i = LoginListener.this.a(gameprofile);
+ LoginListener.this.g = LoginListener.EnumProtocolState.READY_TO_ACCEPT;
+ } else {
+ LoginListener.this.disconnect("Failed to verify username!");
+ LoginListener.c.error("Username \'" + gameprofile.getName() + "\' tried to join with an invalid session"); // CraftBukkit - fix null pointer
+ }
+ } catch (AuthenticationUnavailableException authenticationunavailableexception) {
+ if (LoginListener.this.server.S()) {
+ LoginListener.c.warn("Authentication servers are down but will let them in anyway!");
+ LoginListener.this.i = LoginListener.this.a(gameprofile);
+ LoginListener.this.g = LoginListener.EnumProtocolState.READY_TO_ACCEPT;
+ } else {
+ LoginListener.this.disconnect("Authentication servers are down. Please try again later, sorry!");
+ LoginListener.c.error("Couldn\'t verify username because servers are unavailable");
+ }
+ // CraftBukkit start - catch all exceptions
+ } catch (Exception exception) {
+ disconnect("Failed to verify username!");
+ server.server.getLogger().log(java.util.logging.Level.WARNING, "Exception verifying " + gameprofile.getName(), exception);
+ // CraftBukkit end
+ }
+
+ private void fireLoginEvents() throws Exception
+ {
+ // CraftBukkit start - fire PlayerPreLoginEvent
+ if (!this.a.networkManager.g()) {
+ return;
+ }
+ }).start();
+ }
+
+ String playerName = LoginListener.b(this.a).getName();
+ java.net.InetAddress address = ((java.net.InetSocketAddress) a.networkManager.getSocketAddress()).getAddress();
+ java.util.UUID uniqueId = LoginListener.b(this.a).getId();
+ final org.bukkit.craftbukkit.CraftServer server = LoginListener.a(this.a).server;
+
+ AsyncPlayerPreLoginEvent asyncEvent = new AsyncPlayerPreLoginEvent(playerName, address, uniqueId);
+ server.getPluginManager().callEvent(asyncEvent);
+
+ if (PlayerPreLoginEvent.getHandlerList().getRegisteredListeners().length != 0) {
+ final PlayerPreLoginEvent event = new PlayerPreLoginEvent(playerName, address, uniqueId);
+ if (asyncEvent.getResult() != PlayerPreLoginEvent.Result.ALLOWED) {
+ event.disallow(asyncEvent.getResult(), asyncEvent.getKickMessage());
+ }
+ Waitable<PlayerPreLoginEvent.Result> waitable = new Waitable<PlayerPreLoginEvent.Result>() {
+ @Override
+ protected PlayerPreLoginEvent.Result evaluate() {
+ server.getPluginManager().callEvent(event);
+ return event.getResult();
+ }};
+
+ LoginListener.a(this.a).processQueue.add(waitable);
+ if (waitable.get() != PlayerPreLoginEvent.Result.ALLOWED) {
+ this.a.disconnect(event.getKickMessage());
+ return;
+ }
+ } else {
+ if (asyncEvent.getLoginResult() != AsyncPlayerPreLoginEvent.Result.ALLOWED) {
+ this.a.disconnect(asyncEvent.getKickMessage());
+ return;
+ }
+ }
+ // CraftBukkit end
+
+ LoginListener.e().info("UUID of player " + LoginListener.b(this.a).getName() + " is " + LoginListener.b(this.a).getId());
+ LoginListener.a(this.a, EnumProtocolState.READY_TO_ACCEPT);
+ }
}
+
+ // Spigot start
+ public class LoginHandler {
+
+ public void fireEvents() throws Exception {
String playerName = i.getName();
java.net.InetAddress address = ((java.net.InetSocketAddress) networkManager.getSocketAddress()).getAddress();
java.util.UUID uniqueId = i.getId();
@@ -196,34 +251,9 @@ public class LoginListener implements PacketLoginInListener, IUpdatePlayerListBo
// CraftBukkit end
LoginListener.c.info("UUID of player " + LoginListener.this.i.getName() + " is " + LoginListener.this.i.getId());
LoginListener.this.g = LoginListener.EnumProtocolState.READY_TO_ACCEPT;
- } else if (LoginListener.this.server.S()) {
- LoginListener.c.warn("Failed to verify username but will let them in anyway!");
- LoginListener.this.i = LoginListener.this.a(gameprofile);
- LoginListener.this.g = LoginListener.EnumProtocolState.READY_TO_ACCEPT;
- } else {
- LoginListener.this.disconnect("Failed to verify username!");
- LoginListener.c.error("Username \'" + gameprofile.getName() + "\' tried to join with an invalid session"); // CraftBukkit - fix null pointer
- }
- } catch (AuthenticationUnavailableException authenticationunavailableexception) {
- if (LoginListener.this.server.S()) {
- LoginListener.c.warn("Authentication servers are down but will let them in anyway!");
- LoginListener.this.i = LoginListener.this.a(gameprofile);
- LoginListener.this.g = LoginListener.EnumProtocolState.READY_TO_ACCEPT;
- } else {
- LoginListener.this.disconnect("Authentication servers are down. Please try again later, sorry!");
- LoginListener.c.error("Couldn\'t verify username because servers are unavailable");
- }
- // CraftBukkit start - catch all exceptions
- } catch (Exception exception) {
- disconnect("Failed to verify username!");
- server.server.getLogger().log(java.util.logging.Level.WARNING, "Exception verifying " + gameprofile.getName(), exception);
- // CraftBukkit end
- }
-
- }
- }).start();
}
}
+ // Spigot end
protected GameProfile a(GameProfile gameprofile) {
UUID uuid = UUID.nameUUIDFromBytes(("OfflinePlayer:" + gameprofile.getName()).getBytes(Charsets.UTF_8));
--
2.1.0

View File

@ -1,4 +1,4 @@
From 7c7903f9cd5589868c13b305e9c77c5bee6152d0 Mon Sep 17 00:00:00 2001
From 5c24f2e31369f0c038b9fdde57327bd0e9c1f99c Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sun, 1 Dec 2013 18:18:41 +1100
Subject: [PATCH] BungeeCord Support
@ -6,15 +6,13 @@ Subject: [PATCH] BungeeCord Support
Provides support for IP forwarding via BungeeCord.
diff --git a/src/main/java/net/minecraft/server/HandshakeListener.java b/src/main/java/net/minecraft/server/HandshakeListener.java
index e036bc6..c9a7839 100644
index 8f421f3..727948a 100644
--- a/src/main/java/net/minecraft/server/HandshakeListener.java
+++ b/src/main/java/net/minecraft/server/HandshakeListener.java
@@ -6,7 +6,8 @@ import java.util.HashMap;
// CraftBukkit end
@@ -7,6 +7,7 @@ import java.util.HashMap;
public class HandshakeListener implements PacketHandshakingInListener {
-
+
+ private static final com.google.gson.Gson gson = new com.google.gson.Gson(); // Spigot
// CraftBukkit start - add fields
private static final HashMap<InetAddress, Long> throttleTracker = new HashMap<InetAddress, Long>();
@ -28,7 +26,7 @@ index e036bc6..c9a7839 100644
+ String[] split = packethandshakinginsetprotocol.b.split("\00");
+ if ( split.length == 3 || split.length == 4 ) {
+ packethandshakinginsetprotocol.b = split[0];
+ b.j = new java.net.InetSocketAddress(split[1], ((java.net.InetSocketAddress) b.getSocketAddress()).getPort());
+ b.l = new java.net.InetSocketAddress(split[1], ((java.net.InetSocketAddress) b.getSocketAddress()).getPort());
+ b.spoofedUUID = com.mojang.util.UUIDTypeAdapter.fromString( split[2] );
+ } else
+ {
@ -47,10 +45,10 @@ index e036bc6..c9a7839 100644
}
break;
diff --git a/src/main/java/net/minecraft/server/LoginListener.java b/src/main/java/net/minecraft/server/LoginListener.java
index a59ea80..df651d5 100644
index 42905fd..3508f87 100644
--- a/src/main/java/net/minecraft/server/LoginListener.java
+++ b/src/main/java/net/minecraft/server/LoginListener.java
@@ -63,9 +63,24 @@ public class LoginListener implements PacketLoginInListener, IUpdatePlayerListBo
@@ -84,9 +84,24 @@ public class LoginListener implements PacketLoginInListener, IUpdatePlayerListBo
// Spigot start
public void initUUID()
{
@ -77,41 +75,41 @@ index a59ea80..df651d5 100644
// Spigot end
diff --git a/src/main/java/net/minecraft/server/NetworkManager.java b/src/main/java/net/minecraft/server/NetworkManager.java
index 33166a3..78d5949 100644
index e120462..f7a011a 100644
--- a/src/main/java/net/minecraft/server/NetworkManager.java
+++ b/src/main/java/net/minecraft/server/NetworkManager.java
@@ -31,7 +31,11 @@ public class NetworkManager extends SimpleChannelInboundHandler {
private final EnumProtocolDirection g;
private final Queue h = Queues.newConcurrentLinkedQueue();
private Channel i;
- private SocketAddress j;
@@ -64,7 +64,11 @@ public class NetworkManager extends SimpleChannelInboundHandler<Packet> {
private final Queue<NetworkManager.QueuedPacket> i = Queues.newConcurrentLinkedQueue();
private final ReentrantReadWriteLock j = new ReentrantReadWriteLock();
public Channel k; // CraftBukkit - public, PAIL: rename
- private SocketAddress l;
+ // Spigot Start
+ public SocketAddress j;
+ public SocketAddress l;
+ public java.util.UUID spoofedUUID;
+ public com.mojang.authlib.properties.Property[] spoofedProfile;
+ // Spigot End
private PacketListener k;
private IChatBaseComponent l;
private boolean m;
@@ -239,4 +243,11 @@ public class NetworkManager extends SimpleChannelInboundHandler {
static Channel a(NetworkManager networkmanager) {
return networkmanager.i;
private PacketListener m;
private IChatBaseComponent n;
private boolean o;
@@ -322,4 +326,11 @@ public class NetworkManager extends SimpleChannelInboundHandler<Packet> {
this.b = agenericfuturelistener;
}
}
+
+ // Spigot Start
+ public SocketAddress getRawAddress()
+ {
+ return this.i.remoteAddress();
+ return this.k.remoteAddress();
+ }
+ // Spigot End
}
diff --git a/src/main/java/net/minecraft/server/PacketHandshakingInSetProtocol.java b/src/main/java/net/minecraft/server/PacketHandshakingInSetProtocol.java
index 97920b0..0b86011 100644
index cc5aee0..18d0c6b 100644
--- a/src/main/java/net/minecraft/server/PacketHandshakingInSetProtocol.java
+++ b/src/main/java/net/minecraft/server/PacketHandshakingInSetProtocol.java
@@ -11,7 +11,7 @@ public class PacketHandshakingInSetProtocol implements Packet {
@@ -13,7 +13,7 @@ public class PacketHandshakingInSetProtocol implements Packet<PacketHandshakingI
public void a(PacketDataSerializer packetdataserializer) {
public void a(PacketDataSerializer packetdataserializer) throws IOException {
this.a = packetdataserializer.e();
- this.b = packetdataserializer.c(255);
+ this.b = packetdataserializer.c(Short.MAX_VALUE); // Spigot
@ -119,10 +117,10 @@ index 97920b0..0b86011 100644
this.d = EnumProtocol.a(packetdataserializer.e());
}
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
index 74091d5..c942db1 100644
index f24739d..b674e67 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
@@ -373,7 +373,7 @@ public abstract class PlayerList {
@@ -403,7 +403,7 @@ public abstract class PlayerList {
EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), gameprofile, new PlayerInteractManager(server.getWorldServer(0)));
Player player = entity.getBukkitEntity();
@ -132,7 +130,7 @@ index 74091d5..c942db1 100644
if (getProfileBans().isBanned(gameprofile) && !getProfileBans().get(gameprofile).hasExpired()) {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 18e736a..be4a647 100644
index f0453e6..46710d8 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -561,7 +561,13 @@ public final class CraftServer implements Server {
@ -151,7 +149,7 @@ index 18e736a..be4a647 100644
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 272f7df..2841e94 100644
index 00043de..c28b6bc 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1320,6 +1320,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player {

View File

@ -1,4 +1,4 @@
From e4a0b9c3cc7c08b13cbe010a55519589f293d982 Mon Sep 17 00:00:00 2001
From 96c4623c1ce960e00d9998d7c0fbeab9d9eaa10f Mon Sep 17 00:00:00 2001
From: Dylan Xaldin <Puremin0rez515@gmail.com>
Date: Thu, 12 Dec 2013 18:05:03 -0600
Subject: [PATCH] Allow Disabling Zombie Villager Aggression
@ -6,10 +6,10 @@ Subject: [PATCH] Allow Disabling Zombie Villager Aggression
Ability to configure if Zombies will be aggressive towards Villagers.
diff --git a/src/main/java/net/minecraft/server/EntityZombie.java b/src/main/java/net/minecraft/server/EntityZombie.java
index aa609ef..3e6a101 100644
index 4b56058..2c0c74c 100644
--- a/src/main/java/net/minecraft/server/EntityZombie.java
+++ b/src/main/java/net/minecraft/server/EntityZombie.java
@@ -39,12 +39,12 @@ public class EntityZombie extends EntityMonster {
@@ -38,12 +38,12 @@ public class EntityZombie extends EntityMonster {
}
protected void n() {

View File

@ -1,4 +1,4 @@
From 8a7194cd0bc661597b091020b8876bd5312d1a34 Mon Sep 17 00:00:00 2001
From a52ed5af41b4f75024cbeba009eaa85aabc1e37b Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Fri, 13 Dec 2013 11:58:58 +1100
Subject: [PATCH] Configurable Amount of Netty Threads
@ -6,36 +6,36 @@ Subject: [PATCH] Configurable Amount of Netty Threads
This brings back the option that the Spigot version of netty saw. By default Netty will try and use cores*2 threads, however if running multiple servers on the same machine, this can be too many threads. Additionally some people have 16 core servers. If 32 Netty threads are allowed in this setup, then the lock contention, and thus blocking between threads becomes much greater, leading to decreased performance.
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 84f27a3..6ff18f0 100644
index bcdd918..4c18e24 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -61,7 +61,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
private final List o = Lists.newArrayList();
private final ICommandHandler p;
@@ -63,7 +63,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
private final List<IUpdatePlayerListBox> p = Lists.newArrayList();
protected final ICommandHandler b;
public final MethodProfiler methodProfiler = new MethodProfiler();
- private final ServerConnection q;
+ private ServerConnection q; // Spigot
private final ServerPing r = new ServerPing();
private final Random s = new Random();
private String serverIp;
@@ -123,7 +123,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
this.d = proxy;
MinecraftServer.k = this;
@@ -125,7 +125,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
this.e = proxy;
MinecraftServer.l = this;
// this.universe = file; // CraftBukkit
- this.q = new ServerConnection(this);
+ // this.q = new ServerConnection(this); // Spigot
this.Z = new UserCache(this, file1);
this.p = this.h();
this.b = this.h();
// this.convertable = new WorldLoaderServer(file); // CraftBukkit - moved to DedicatedServer.init
@@ -1344,7 +1344,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
@@ -1323,7 +1323,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
}
// Spigot End
public ServerConnection ao() {
public ServerConnection ap() {
- return this.q;
+ return this.q == null ? this.q = new ServerConnection(this) : this.q; // Spigot
}
public boolean aq() {
public boolean ar() {
diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java
index 47ab82f..865a17f 100644
--- a/src/main/java/org/spigotmc/SpigotConfig.java

View File

@ -1,14 +1,14 @@
From ff86af308bf2727020508b941887e83a8399f0c9 Mon Sep 17 00:00:00 2001
From 975fbd6108019d07c966a3d2d6b1100794a54c20 Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Fri, 13 Dec 2013 15:21:02 +1100
Subject: [PATCH] Prevent Mineshaft Saving
diff --git a/src/main/java/net/minecraft/server/StructureGenerator.java b/src/main/java/net/minecraft/server/StructureGenerator.java
index ecab5d1..dde9929 100644
index bb1a11e..0f8211a 100644
--- a/src/main/java/net/minecraft/server/StructureGenerator.java
+++ b/src/main/java/net/minecraft/server/StructureGenerator.java
@@ -172,7 +172,7 @@ public abstract class StructureGenerator extends WorldGenBase {
@@ -196,7 +196,7 @@ public abstract class StructureGenerator extends WorldGenBase {
private void a(World world) {
if (this.d == null) {
// Spigot Start

View File

@ -1,14 +1,14 @@
From a012b081db4e38b2a392d150dbbda1919ac05d73 Mon Sep 17 00:00:00 2001
From 51d23beae4d968713dc6c8bdf2c7c41c470a333b Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Wed, 18 Dec 2013 13:39:14 +1100
Subject: [PATCH] Log Cause of Unexpected Exceptions
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 6ff18f0..85b4bf9 100644
index 4c18e24..d57af9e 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -527,6 +527,12 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
@@ -548,6 +548,12 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
}
} catch (Throwable throwable) {
MinecraftServer.LOGGER.error("Encountered an unexpected exception", throwable);

View File

@ -1,4 +1,4 @@
From 789c7ec28f8a13d350b4fcad31f215a04f251716 Mon Sep 17 00:00:00 2001
From 113c3cdca3e582d522b1ff90f5a486b8092cc28d Mon Sep 17 00:00:00 2001
From: Thinkofdeath <thethinkofdeath@gmail.com>
Date: Fri, 20 Dec 2013 21:36:06 +0000
Subject: [PATCH] Particle API
@ -19,10 +19,10 @@ index 7de0de5..13f9e9d 100644
datavalue = 0;
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 8105872..204acdb 100644
index 609b483..5dc77b1 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -814,28 +814,18 @@ public class CraftWorld implements World {
@@ -822,28 +822,18 @@ public class CraftWorld implements World {
Validate.isTrue(effect.getData() == null, "Wrong kind of data for this effect!");
}
@ -60,7 +60,7 @@ index 8105872..204acdb 100644
}
public <T extends Entity> T spawn(Location location, Class<T> clazz) throws IllegalArgumentException {
@@ -1353,6 +1343,70 @@ public class CraftWorld implements World {
@@ -1361,6 +1351,70 @@ public class CraftWorld implements World {
// Spigot start
private final Spigot spigot = new Spigot()
{
@ -132,7 +132,7 @@ index 8105872..204acdb 100644
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 2841e94..9f3e610 100644
index c28b6bc..276c9fd 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -322,9 +322,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {

View File

@ -1,14 +1,14 @@
From 29e58880faa0e54cc4a10353bb2fb52dae36c60d Mon Sep 17 00:00:00 2001
From 07ac2c012866680de5f9301196a037e5806bff2f Mon Sep 17 00:00:00 2001
From: DerFlash <bte@freenet.de>
Date: Tue, 9 Jul 2013 00:11:12 +0200
Subject: [PATCH] Save ticks lived to nbttag
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 8f7d865..d7e610b 100644
index 5cf3833..5e1e695 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -1198,6 +1198,7 @@ public abstract class Entity implements ICommandListener {
@@ -1191,6 +1191,7 @@ public abstract class Entity implements ICommandListener {
nbttagcompound.setLong("WorldUUIDLeast", this.world.getDataManager().getUUID().getLeastSignificantBits());
nbttagcompound.setLong("WorldUUIDMost", this.world.getDataManager().getUUID().getMostSignificantBits());
nbttagcompound.setInt("Bukkit.updateLevel", CURRENT_LEVEL);
@ -16,7 +16,7 @@ index 8f7d865..d7e610b 100644
// CraftBukkit end
if (this.getCustomName() != null && this.getCustomName().length() > 0) {
nbttagcompound.setString("CustomName", this.getCustomName());
@@ -1285,6 +1286,8 @@ public abstract class Entity implements ICommandListener {
@@ -1282,6 +1283,8 @@ public abstract class Entity implements ICommandListener {
if (this instanceof EntityLiving) {
EntityLiving entity = (EntityLiving) this;

View File

@ -1,30 +1,29 @@
From 253f5cf92dddb7284528dfbc34fbc9937311e90d Mon Sep 17 00:00:00 2001
From 162e0a05ba706a962485f55cb36cd998a9446cd1 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 f6b1dac..248f485 100644
index a4fda33..974fe77 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -1052,33 +1052,60 @@ public abstract class World implements IBlockAccess {
int i1 = MathHelper.floor(axisalignedbb.c);
int j1 = MathHelper.floor(axisalignedbb.f + 1.0D);
@@ -1101,28 +1101,56 @@ public abstract class World implements IBlockAccess {
IBlockData iblockdata = Blocks.STONE.getBlockData();
BlockPosition.MutableBlockPosition blockposition_mutableblockposition = new BlockPosition.MutableBlockPosition();
- for (int k1 = i; k1 < j; ++k1) {
- for (int l1 = i1; l1 < j1; ++l1) {
- if (this.isLoaded(new BlockPosition(k1, 64, l1))) {
- if (this.isLoaded(blockposition_mutableblockposition.c(k1, 64, l1))) {
- for (int i2 = k - 1; i2 < l; ++i2) {
- BlockPosition blockposition = new BlockPosition(k1, i2, l1);
- boolean flag = entity.aS();
- boolean flag1 = this.a(this.af(), entity);
-
- blockposition_mutableblockposition.c(k1, i2, l1);
- if (flag && flag1) {
- entity.h(false);
- } else if (!flag && !flag1) {
- entity.h(true);
- }
-
- IBlockData iblockdata1 = iblockdata;
+ // Spigot start
+ int ystart = ( ( k - 1 ) < 0 ) ? 0 : ( k - 1 );
+ for ( int chunkx = ( i >> 4 ); chunkx <= ( ( j - 1 ) >> 4 ); chunkx++ )
@ -51,8 +50,6 @@ index f6b1dac..248f485 100644
+ for ( int y = ystart; y < l; y++ )
+ {
+ BlockPosition blockposition = new BlockPosition( x, y, z );
+ boolean flag = entity.aS();
+ boolean flag1 = this.a(this.af(), entity);
+
+ if (flag && flag1) {
+ entity.h(false);
@ -60,15 +57,10 @@ index f6b1dac..248f485 100644
+ entity.h(true);
+ }
- IBlockData iblockdata;
+ IBlockData iblockdata;
- if (!this.af().a(blockposition) && flag1) {
- iblockdata = Blocks.STONE.getBlockData();
- } else {
- iblockdata = this.getType(blockposition);
- if (worldborder.a((BlockPosition) blockposition_mutableblockposition) || !flag1) {
- iblockdata1 = this.getType(blockposition_mutableblockposition);
+ IBlockData block;
+ if (!this.af().a(blockposition) && flag1) {
+ if (!this.getWorldBorder().a(blockposition) && flag1) {
+ block = Blocks.STONE.getBlockData();
+ } else
+ {
@ -80,7 +72,7 @@ index f6b1dac..248f485 100644
+ }
}
-
- iblockdata.getBlock().a(this, blockposition, iblockdata, axisalignedbb, arraylist, entity);
- iblockdata1.getBlock().a(this, blockposition_mutableblockposition, iblockdata1, axisalignedbb, arraylist, entity);
}
}
}

View File

@ -1,14 +1,14 @@
From 2b450241577ab91631bfc4e4c362728d51b8bf81 Mon Sep 17 00:00:00 2001
From 4bb35602ee6638ad0778370e8b8f97c210469400 Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Sun, 2 Feb 2014 16:55:46 +0000
Subject: [PATCH] Add Option to Nerf Mobs from Spawner's
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index d7e610b..a1d51a8 100644
index 5e1e695..b930c0d 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -118,6 +118,7 @@ public abstract class Entity implements ICommandListener {
@@ -120,6 +120,7 @@ public abstract class Entity implements ICommandListener {
public final byte activationType = org.spigotmc.ActivationRange.initializeEntityActivationType(this);
public final boolean defaultActivationState;
public long activatedTick = Integer.MIN_VALUE;
@ -17,7 +17,7 @@ index d7e610b..a1d51a8 100644
// Spigot end
diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java
index f387687..5ef61d9 100644
index c8156aa..7c23753 100644
--- a/src/main/java/net/minecraft/server/EntityInsentient.java
+++ b/src/main/java/net/minecraft/server/EntityInsentient.java
@@ -450,6 +450,12 @@ public abstract class EntityInsentient extends EntityLiving {
@ -31,10 +31,10 @@ index f387687..5ef61d9 100644
+ }
+ // Spigot End
this.world.methodProfiler.a("sensing");
this.bi.a();
this.bk.a();
this.world.methodProfiler.b();
diff --git a/src/main/java/net/minecraft/server/MobSpawnerAbstract.java b/src/main/java/net/minecraft/server/MobSpawnerAbstract.java
index 4bbd288..67273f7 100644
index 41cfde8..df71db5 100644
--- a/src/main/java/net/minecraft/server/MobSpawnerAbstract.java
+++ b/src/main/java/net/minecraft/server/MobSpawnerAbstract.java
@@ -144,6 +144,12 @@ public abstract class MobSpawnerAbstract {
@ -50,7 +50,7 @@ index 4bbd288..67273f7 100644
}
// CraftBukkit end
}
@@ -189,6 +195,12 @@ public abstract class MobSpawnerAbstract {
@@ -191,6 +197,12 @@ public abstract class MobSpawnerAbstract {
SpawnerSpawnEvent event = CraftEventFactory.callSpawnerSpawnEvent(entity, this.b().getX(), this.b().getY(), this.b().getZ());
if (!event.isCancelled()) {
entity.world.addEntity(entity, CreatureSpawnEvent.SpawnReason.SPAWNER); // CraftBukkit

View File

@ -1,4 +1,4 @@
From 48f3305a08768dbae35142074ac26f0b2e2b3406 Mon Sep 17 00:00:00 2001
From 75a2543c83ce99ca4c1b60a45c6caca5d604adeb Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Mon, 23 Dec 2013 14:07:41 +1100
Subject: [PATCH] Warn if PermGen may be insufficient

View File

@ -1,11 +1,11 @@
From 273dc143ae33035ea2415266a0d3983f92b0ad48 Mon Sep 17 00:00:00 2001
From dcf83e0337de967e36ed1e2a028c4a976d26c1f6 Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Mon, 23 Dec 2013 15:57:57 +1100
Subject: [PATCH] Disable Connected Check on setScoreboard
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 9f3e610..2fc4839 100644
index 276c9fd..cbbcfc9 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1241,7 +1241,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {

View File

@ -1,4 +1,4 @@
From 5b926b4e80215c772f0f6f8db5423af7018d5cdf Mon Sep 17 00:00:00 2001
From 325f69316cc1566252e7b178f281d36ec5fb65e0 Mon Sep 17 00:00:00 2001
From: slide23 <me@slide.ws>
Date: Fri, 20 Dec 2013 20:15:33 -0600
Subject: [PATCH] Add Late Bind Option
@ -6,18 +6,18 @@ Subject: [PATCH] Add Late Bind Option
Add late-bind config option to delay binding until loading is done.
diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java
index 240c909..ced9efa 100644
index ae9e255..188a094 100644
--- a/src/main/java/net/minecraft/server/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/DedicatedServer.java
@@ -127,6 +127,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
@@ -174,6 +174,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
this.a(MinecraftEncryption.b());
DedicatedServer.LOGGER.info("Starting Minecraft server on " + (this.getServerIp().length() == 0 ? "*" : this.getServerIp()) + ":" + this.Q());
+ if (!org.spigotmc.SpigotConfig.lateBind) {
try {
this.ao().a(inetaddress, this.Q());
} catch (Throwable ioexception) { // CraftBukkit - IOException -> Throwable
@@ -135,6 +136,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
this.ap().a(inetaddress, this.Q());
} catch (IOException ioexception) {
@@ -182,6 +183,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
DedicatedServer.LOGGER.warn("Perhaps a server is already running on that port?");
return false;
}
@ -25,14 +25,14 @@ index 240c909..ced9efa 100644
// Spigot Start - Move DedicatedPlayerList up and bring plugin loading from CraftServer to here
// this.a((PlayerList) (new DedicatedPlayerList(this))); // CraftBukkit
@@ -225,6 +227,17 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
@@ -271,6 +273,17 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
}
// CraftBukkit end
+ if (org.spigotmc.SpigotConfig.lateBind) {
+ try {
+ this.ao().a(inetaddress, this.Q());
+ } catch (Throwable ioexception) { // CraftBukkit - IOException -> Throwable
+ this.ap().a(inetaddress, this.Q());
+ } catch (IOException ioexception) {
+ DedicatedServer.LOGGER.warn("**** FAILED TO BIND TO PORT!");
+ DedicatedServer.LOGGER.warn("The exception was: {}", new Object[] { ioexception.toString()});
+ DedicatedServer.LOGGER.warn("Perhaps a server is already running on that port?");
@ -40,8 +40,8 @@ index 240c909..ced9efa 100644
+ }
+ }
+
if (false && this.aQ() > 0L) { // Spigot - disable
Thread thread = new Thread(new ThreadWatchdog(this));
if (false && this.aR() > 0L) { // Spigot - disable
Thread thread1 = new Thread(new ThreadWatchdog(this));
diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java
index 865a17f..f3187f8 100644

View File

@ -1,11 +1,11 @@
From 8df8e6fc29a4c1c9d93b862e04bd38cfd7a2ae37 Mon Sep 17 00:00:00 2001
From 5428d854f3be41d9a03048775e572f867464cab0 Mon Sep 17 00:00:00 2001
From: Thinkofdeath <thethinkofdeath@gmail.com>
Date: Tue, 7 Jan 2014 15:56:26 +0000
Subject: [PATCH] Allow statistics to be disabled/forced
diff --git a/src/main/java/net/minecraft/server/ServerStatisticManager.java b/src/main/java/net/minecraft/server/ServerStatisticManager.java
index 4561825..9906b56 100644
index 97c3e79..dc1dffb 100644
--- a/src/main/java/net/minecraft/server/ServerStatisticManager.java
+++ b/src/main/java/net/minecraft/server/ServerStatisticManager.java
@@ -31,6 +31,14 @@ public class ServerStatisticManager extends StatisticManager {

View File

@ -1,14 +1,14 @@
From d897805eec1424c915fb8296104b0524fe55f7c8 Mon Sep 17 00:00:00 2001
From fc35ee9742d0f9352ad14e2345eeb2fe342205a7 Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Fri, 10 Jan 2014 15:15:50 +1100
Subject: [PATCH] Fix ItemStack Unbreakable Code
diff --git a/src/main/java/net/minecraft/server/ItemStack.java b/src/main/java/net/minecraft/server/ItemStack.java
index 3e0d808..596db09 100644
index 62b2136..4b33dbd 100644
--- a/src/main/java/net/minecraft/server/ItemStack.java
+++ b/src/main/java/net/minecraft/server/ItemStack.java
@@ -270,7 +270,13 @@ public final class ItemStack {
@@ -272,7 +272,13 @@ public final class ItemStack {
}
public boolean e() {

View File

@ -1,20 +1,20 @@
From 36b00fa112a13f5390455a150aac049d86393a8a Mon Sep 17 00:00:00 2001
From 9489a7b68288b5b2c19bc3ab0418ed17df89c17b Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Sun, 12 Jan 2014 20:56:41 +1100
Subject: [PATCH] Try and Debug Crash Reports Crashing
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 85b4bf9..0ee0c21 100644
index d57af9e..1fe3014 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -730,7 +730,13 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
@@ -743,7 +743,13 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
worldserver.doTick();
worldserver.timings.doTick.stopTiming(); // Spigot
} catch (Throwable throwable1) {
} catch (Throwable throwable) {
+ // Spigot Start
+ try {
crashreport = CrashReport.a(throwable1, "Exception ticking world");
crashreport = CrashReport.a(throwable, "Exception ticking world");
+ } catch (Throwable t){
+ throw new RuntimeException("Error generating crash report", t);
+ }
@ -22,13 +22,13 @@ index 85b4bf9..0ee0c21 100644
worldserver.a(crashreport);
throw new ReportedException(crashreport);
}
@@ -740,7 +746,13 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
@@ -753,7 +759,13 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
worldserver.tickEntities();
worldserver.timings.tickEntities.stopTiming(); // Spigot
} catch (Throwable throwable2) {
} catch (Throwable throwable1) {
+ // Spigot Start
+ try {
crashreport = CrashReport.a(throwable2, "Exception ticking world entities");
crashreport = CrashReport.a(throwable1, "Exception ticking world entities");
+ } catch (Throwable t){
+ throw new RuntimeException("Error generating crash report", t);
+ }

View File

@ -1,4 +1,4 @@
From 7637dd80826ce060950cd9b0afc55559ec1e17d5 Mon Sep 17 00:00:00 2001
From 1eb61c31c972d2eeb44c69d3fe3d889cc470c933 Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Sun, 12 Jan 2014 21:07:18 +1100
Subject: [PATCH] Improve AutoSave Mechanism
@ -11,10 +11,10 @@ Instead we will mimic the save-all command in its behaviour, which is both safe
Also, only save modified chunks, or chunks with entities after 4 auto save passes
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index 372d90f..c0e2a50 100644
index b2ce05f..a59ff8e 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -905,7 +905,7 @@ public class Chunk {
@@ -934,7 +934,7 @@ public class Chunk {
if (this.r && this.world.getTime() != this.lastSaved || this.q) {
return true;
}
@ -24,10 +24,10 @@ index 372d90f..c0e2a50 100644
}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 0ee0c21..bc0c405 100644
index 1fe3014..fbd9b4e 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -634,7 +634,17 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
@@ -655,7 +655,17 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
SpigotTimings.worldSaveTimer.startTiming(); // Spigot
this.methodProfiler.a("save");
this.v.savePlayers();
@ -47,10 +47,10 @@ index 0ee0c21..bc0c405 100644
SpigotTimings.worldSaveTimer.stopTiming(); // Spigot
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 204acdb..660fd07 100644
index 5dc77b1..62ad47d 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -718,12 +718,17 @@ public class CraftWorld implements World {
@@ -726,12 +726,17 @@ public class CraftWorld implements World {
}
public void save() {

View File

@ -1,28 +1,28 @@
From 0c1b7399d0730eb1c33474daf4fa7503f7493085 Mon Sep 17 00:00:00 2001
From 289d597d3a8ae0d0e35fac45c701e4c636baa461 Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Mon, 20 Jan 2014 13:44:07 +1100
Subject: [PATCH] Catch stalling on corrupted map data / NBT arrays.
diff --git a/src/main/java/net/minecraft/server/NBTTagByteArray.java b/src/main/java/net/minecraft/server/NBTTagByteArray.java
index 7525469..7a293eb 100644
index 3eeed3e..4e9b714 100644
--- a/src/main/java/net/minecraft/server/NBTTagByteArray.java
+++ b/src/main/java/net/minecraft/server/NBTTagByteArray.java
@@ -21,6 +21,7 @@ public class NBTTagByteArray extends NBTBase {
@@ -22,6 +22,7 @@ public class NBTTagByteArray extends NBTBase {
void load(DataInput datainput, int i, NBTReadLimiter nbtreadlimiter) throws java.io.IOException {
void load(DataInput datainput, int i, NBTReadLimiter nbtreadlimiter) throws IOException {
int j = datainput.readInt();
+ com.google.common.base.Preconditions.checkArgument( j < 1 << 24);
nbtreadlimiter.a((long) (8 * j));
this.data = new byte[j];
diff --git a/src/main/java/net/minecraft/server/NBTTagIntArray.java b/src/main/java/net/minecraft/server/NBTTagIntArray.java
index f331ef3..17b0c3d 100644
index 63c3bf9..1ff0902 100644
--- a/src/main/java/net/minecraft/server/NBTTagIntArray.java
+++ b/src/main/java/net/minecraft/server/NBTTagIntArray.java
@@ -25,6 +25,7 @@ public class NBTTagIntArray extends NBTBase {
@@ -26,6 +26,7 @@ public class NBTTagIntArray extends NBTBase {
void load(DataInput datainput, int i, NBTReadLimiter nbtreadlimiter) throws java.io.IOException {
void load(DataInput datainput, int i, NBTReadLimiter nbtreadlimiter) throws IOException {
int j = datainput.readInt();
+ com.google.common.base.Preconditions.checkArgument( j < 1 << 24);

View File

@ -1,14 +1,14 @@
From 2c5f50b13981a490c622293f19f956743f301247 Mon Sep 17 00:00:00 2001
From d9bd763503896640fe63b1654de83d47c3ef7bb2 Mon Sep 17 00:00:00 2001
From: Dmck2b <dmck2b+github@gmail.com>
Date: Mon, 20 Jan 2014 20:18:23 +0000
Subject: [PATCH] Allow toggling of ZombiePigmen spawning in portal blocks
diff --git a/src/main/java/net/minecraft/server/BlockPortal.java b/src/main/java/net/minecraft/server/BlockPortal.java
index 7565dfb..368d67c 100644
index 030f4e9..4dc40eb 100644
--- a/src/main/java/net/minecraft/server/BlockPortal.java
+++ b/src/main/java/net/minecraft/server/BlockPortal.java
@@ -16,7 +16,7 @@ public class BlockPortal extends BlockHalfTransparent {
@@ -18,7 +18,7 @@ public class BlockPortal extends BlockHalfTransparent {
public void b(World world, BlockPosition blockposition, IBlockData iblockdata, Random random) {
super.b(world, blockposition, iblockdata, random);

View File

@ -1,14 +1,14 @@
From 1b44d6ca241d06f64df228d26fac47641fe433ce Mon Sep 17 00:00:00 2001
From fdcb23ae30c7e144baba75b1ea021186943d4bf6 Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Sat, 25 Jan 2014 14:08:35 +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 bc0c405..34fb946 100644
index fbd9b4e..c831ce3 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -118,6 +118,12 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
@@ -120,6 +120,12 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
public java.util.Queue<Runnable> processQueue = new java.util.concurrent.ConcurrentLinkedQueue<Runnable>();
public int autosavePeriod;
// CraftBukkit end
@ -20,8 +20,8 @@ index bc0c405..34fb946 100644
+ // Spigot end
public MinecraftServer(OptionSet options, Proxy proxy, File file1) {
this.d = proxy;
@@ -480,6 +486,13 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
this.e = proxy;
@@ -501,6 +507,13 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
this.isRunning = false;
}
@ -35,15 +35,15 @@ index bc0c405..34fb946 100644
public void run() {
try {
if (this.init()) {
@@ -490,38 +503,34 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
this.r.setServerInfo(new ServerPingServerData("1.8", 47));
@@ -511,38 +524,34 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
this.r.setServerInfo(new ServerPing.ServerData("1.8.3", 47));
this.a(this.r);
+ // Spigot start
+ Arrays.fill( recentTps, 20 );
+ long lastTick = System.nanoTime(), catchupTime = 0, curTime, wait, tickSection = lastTick;
while (this.isRunning) {
- long j = ax();
- long j = ay();
- long k = j - this.ab;
-
- if (k > 2000L && this.ab - this.R >= 15000L) {
@ -68,14 +68,14 @@ index bc0c405..34fb946 100644
- i += k;
- this.ab = j;
- if (this.worlds.get(0).everyoneDeeplySleeping()) { // CraftBukkit
- this.y();
- if (this.worlds.get(0).everyoneDeeplySleeping()) {
- this.z();
- i = 0L;
- } else {
- while (i > 50L) {
- MinecraftServer.currentTick = (int) (System.currentTimeMillis() / 50); // CraftBukkit
- i -= 50L;
- this.y();
- this.z();
- }
+ if ( MinecraftServer.currentTick++ % SAMPLE_INTERVAL == 0 )
+ {
@ -88,7 +88,7 @@ index bc0c405..34fb946 100644
+ lastTick = curTime;
- Thread.sleep(Math.max(1L, 50L - i));
+ this.y();
+ this.z();
this.Q = true;
}
+ // Spigot end

View File

@ -1,4 +1,4 @@
From fb40c21776d9184c8c0864c403c0f23c4cac8d9b Mon Sep 17 00:00:00 2001
From 28faf58f9ce67f8ea804ed5c38954b51d81542bc Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Thu, 23 Jan 2014 13:17:35 +1100
Subject: [PATCH] Add Spigot Links

View File

@ -1,17 +1,17 @@
From cedbae210cab866f083ca06211a900f84eb52246 Mon Sep 17 00:00:00 2001
From 02cbdc383eccf55a0263cfd0052d013ff55f831c Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Sun, 26 Jan 2014 21:48:34 +1100
Subject: [PATCH] Configurable Ping Sample Size
diff --git a/src/main/java/net/minecraft/server/PacketStatusListener.java b/src/main/java/net/minecraft/server/PacketStatusListener.java
index 939907b..17d37ac 100644
index 8966bfb..b996558 100644
--- a/src/main/java/net/minecraft/server/PacketStatusListener.java
+++ b/src/main/java/net/minecraft/server/PacketStatusListener.java
@@ -113,6 +113,13 @@ public class PacketStatusListener implements PacketStatusInListener {
}
ServerPingPlayerSample playerSample = new ServerPingPlayerSample(event.getMaxPlayers(), profiles.size());
ServerPing.ServerPingPlayerSample playerSample = new ServerPing.ServerPingPlayerSample(event.getMaxPlayers(), profiles.size());
+ // Spigot Start
+ if ( !profiles.isEmpty() )
+ {

View File

@ -1,4 +1,4 @@
From 8a0501a6c9a5c70cc1a7abebc403f033f4222e6d Mon Sep 17 00:00:00 2001
From 6af0da4859d4348adc3ac9e36f3c84f0df0d29df Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Mon, 27 Jan 2014 08:39:26 +1100
Subject: [PATCH] Add Optional Tick Shuffling
@ -6,21 +6,21 @@ Subject: [PATCH] Add Optional Tick Shuffling
This prevents players from 'gaming' the server, and strategically relogging to increase their position in the tick order.
diff --git a/src/main/java/net/minecraft/server/ServerConnection.java b/src/main/java/net/minecraft/server/ServerConnection.java
index 6508fdf..6c6ffa7 100644
index 42188fa..931ab66 100644
--- a/src/main/java/net/minecraft/server/ServerConnection.java
+++ b/src/main/java/net/minecraft/server/ServerConnection.java
@@ -57,6 +57,13 @@ public class ServerConnection {
List list = this.g;
@@ -123,6 +123,13 @@ public class ServerConnection {
List list = this.h;
synchronized (this.g) {
synchronized (this.h) {
+ // Spigot Start
+ // This prevents players from 'gaming' the server, and strategically relogging to increase their position in the tick order
+ if ( org.spigotmc.SpigotConfig.playerShuffle > 0 && MinecraftServer.currentTick % org.spigotmc.SpigotConfig.playerShuffle == 0 )
+ {
+ Collections.shuffle( this.g );
+ Collections.shuffle( this.h );
+ }
+ // Spigot End
Iterator iterator = this.g.iterator();
Iterator iterator = this.h.iterator();
while (iterator.hasNext()) {
diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java

View File

@ -1,14 +1,14 @@
From 6658e45f4661e3959442f89b3e5c92b1f97c89d6 Mon Sep 17 00:00:00 2001
From 8b80b654e0ea8885fc8b98db6eac1023caaca109 Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Tue, 28 Jan 2014 20:35:35 +1100
Subject: [PATCH] Allow Configuring Chunks per Packet
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
index 5c961ba..c087acc 100644
index 657f3f5..5751844 100644
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -220,7 +220,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
@@ -223,7 +223,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
Chunk chunk;

View File

@ -1,24 +1,24 @@
From 1b98229898a57d63e9bc8cf5448c45dcc358639f Mon Sep 17 00:00:00 2001
From 6731885bf6ad51d1aebc132eabc69c05ce7aca48 Mon Sep 17 00:00:00 2001
From: Smove <jan@lavasurvival.net>
Date: Sat, 1 Feb 2014 18:12:16 +1100
Subject: [PATCH] Implement Locale Getter for Players
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
index c087acc..7719d03 100644
index 5751844..3854edf 100644
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -27,7 +27,7 @@ import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
public class EntityPlayer extends EntityHuman implements ICrafting {
private static final Logger bF = LogManager.getLogger();
private static final Logger bH = LogManager.getLogger();
- private String locale = "en_US";
+ public String locale = "en_US"; // Spigot
public PlayerConnection playerConnection;
public final MinecraftServer server;
public final PlayerInteractManager playerInteractManager;
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 2fc4839..827b8dd 100644
index cbbcfc9..b494159 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1401,6 +1401,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player {

View File

@ -1,4 +1,4 @@
From fc96fff109b53cafa5017dee69d65e8ed08ad022 Mon Sep 17 00:00:00 2001
From 4bae06e72ab3132d8ae68b93f9616c7c7d12cc11 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Fri, 31 Jan 2014 11:18:34 -0500
Subject: [PATCH] Cap Entity Collisions
@ -7,39 +7,38 @@ Limit a single entity to colliding a max of configurable times per tick.
This will alleviate issues where living entities are hoarded in 1x1 pens.
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index a1d51a8..25192f3 100644
index b930c0d..82accf4 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -1059,6 +1059,7 @@ public abstract class Entity implements ICommandListener {
@@ -1052,6 +1052,7 @@ public abstract class Entity implements ICommandListener {
public void d(EntityHuman entityhuman) {}
+ int numCollisions = 0; // Spigot
public void collide(Entity entity) {
if (entity.passenger != this && entity.vehicle != this) {
if (!entity.T && !this.T) {
if (!entity.noclip && !this.noclip) {
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index 5edefa0..7c8f361 100644
index ca0430d..c67f0ee 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -1658,7 +1658,9 @@ public abstract class EntityLiving extends Entity {
List list = this.world.getEntities(this, this.getBoundingBox().grow(0.20000000298023224D, 0.0D, 0.20000000298023224D));
@@ -1671,7 +1671,9 @@ public abstract class EntityLiving extends Entity {
}));
if (this.ad() && list != null && !list.isEmpty()) { // Spigot: Add this.ad() condition
if (this.ad() && !list.isEmpty()) { // Spigot: Add this.ad() condition
+ numCollisions -= world.spigotConfig.maxCollisionsPerEntity; // Spigot
for (int i = 0; i < list.size(); ++i) {
+ if (numCollisions > world.spigotConfig.maxCollisionsPerEntity) { break; } // Spigot
Entity entity = (Entity) list.get(i);
// TODO better check now?
@@ -1669,9 +1671,12 @@ public abstract class EntityLiving extends Entity {
@@ -1681,8 +1683,11 @@ public abstract class EntityLiving extends Entity {
}
// CraftBukkit end
if (entity.ae()) {
+ entity.numCollisions++; // Spigot
+ numCollisions++; // Spigot
this.s(entity);
}
+ entity.numCollisions++; // Spigot
+ numCollisions++; // Spigot
this.s(entity);
}
+ numCollisions = 0; // Spigot
}

View File

@ -1,22 +1,22 @@
From 7bea711b892234d60b8efe3b1d6fec867d7049cb Mon Sep 17 00:00:00 2001
From d36dcb2ae4108a697242904dff0741f918ad4c69 Mon Sep 17 00:00:00 2001
From: Thinkofdeath <thethinkofdeath@gmail.com>
Date: Thu, 6 Feb 2014 21:59:20 +0000
Subject: [PATCH] Fix dispensing bone meal not having the correct data value
diff --git a/src/main/java/net/minecraft/server/DispenseBehaviorBonemeal.java b/src/main/java/net/minecraft/server/DispenseBehaviorBonemeal.java
index 1fb976c..b0ecb35 100644
--- a/src/main/java/net/minecraft/server/DispenseBehaviorBonemeal.java
+++ b/src/main/java/net/minecraft/server/DispenseBehaviorBonemeal.java
@@ -18,7 +18,7 @@ final class DispenseBehaviorBonemeal extends DispenseBehaviorItem {
// CraftBukkit start
org.bukkit.block.Block block = world.getWorld().getBlockAt(isourceblock.getBlockPosition().getX(), isourceblock.getBlockPosition().getY(), isourceblock.getBlockPosition().getZ());
- CraftItemStack craftItem = CraftItemStack.asNewCraftStack(itemstack.getItem());
+ CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack); // Spigot
diff --git a/src/main/java/net/minecraft/server/DispenserRegistry.java b/src/main/java/net/minecraft/server/DispenserRegistry.java
index f730e97..4d1c04e 100644
--- a/src/main/java/net/minecraft/server/DispenserRegistry.java
+++ b/src/main/java/net/minecraft/server/DispenserRegistry.java
@@ -463,7 +463,7 @@ public class DispenserRegistry {
BlockDispenseEvent event = new BlockDispenseEvent(block, craftItem.clone(), new org.bukkit.util.Vector(0, 0, 0));
if (!BlockDispenser.eventFired) {
// CraftBukkit start
org.bukkit.block.Block block = world.getWorld().getBlockAt(isourceblock.getBlockPosition().getX(), isourceblock.getBlockPosition().getY(), isourceblock.getBlockPosition().getZ());
- CraftItemStack craftItem = CraftItemStack.asNewCraftStack(itemstack.getItem());
+ CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack); // Spigot
BlockDispenseEvent event = new BlockDispenseEvent(block, craftItem.clone(), new org.bukkit.util.Vector(0, 0, 0));
if (!BlockDispenser.eventFired) {
--
2.1.0

View File

@ -1,14 +1,14 @@
From 8afc8d7c7c063110343752af6218a01cbf62318b Mon Sep 17 00:00:00 2001
From 89f01f61bc5dd98b3435de3aaaa717cd0680c9b4 Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au>
Date: Sat, 8 Feb 2014 08:13:40 +0000
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 c30e96e..8148371 100644
index 9fa0e67..e62c2f3 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -951,9 +951,20 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
@@ -969,9 +969,20 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
this.minecraftServer.getPlayerList().sendMessage(chatmessage1, false);
}

View File

@ -1,11 +1,11 @@
From ba1d1daf0341129b0fe180b58868057371409611 Mon Sep 17 00:00:00 2001
From 864fe313d03905e3cb0f660fc02b1a6d53b504c0 Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Sun, 9 Feb 2014 14:39:01 +1100
Subject: [PATCH] Add Option to Silence CommandBlock Console
diff --git a/src/main/java/net/minecraft/server/CommandDispatcher.java b/src/main/java/net/minecraft/server/CommandDispatcher.java
index c6032b2..8bd58c9 100644
index 54133a7..53fbc3e 100644
--- a/src/main/java/net/minecraft/server/CommandDispatcher.java
+++ b/src/main/java/net/minecraft/server/CommandDispatcher.java
@@ -95,7 +95,7 @@ public class CommandDispatcher extends CommandHandler implements ICommandDispatc

View File

@ -1,11 +1,11 @@
From 51721b3e27f0775fcb72d536eaeb8a9b201eb70a Mon Sep 17 00:00:00 2001
From 221131d48bf4531fa60cde7877e9ff5f6e5b1939 Mon Sep 17 00:00:00 2001
From: Tux <write@imaginarycode.com>
Date: Sun, 9 Feb 2014 14:03:03 -0500
Subject: [PATCH] Add support for fetching hidden players
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 827b8dd..fd0c2d2 100644
index b494159..c2e87b1 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1407,6 +1407,18 @@ public class CraftPlayer extends CraftHumanEntity implements Player {

View File

@ -1,22 +1,22 @@
From 1be493de51d3d7bd56b4ce6df97a2523f728471c Mon Sep 17 00:00:00 2001
From 9a9500938f601950f1d64ba0248ebb661f2445cd Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Wed, 12 Feb 2014 18:18:01 +1100
Subject: [PATCH] Allow Disabling Creative Item Filter
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index 8148371..0dee302 100644
index e62c2f3..8fff72f 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -1682,7 +1682,7 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
@@ -1699,7 +1699,7 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
boolean flag1 = packetplayinsetcreativeslot.a() >= 1 && packetplayinsetcreativeslot.a() < 36 + PlayerInventory.getHotbarSize();
// CraftBukkit - Add invalidItems check
- boolean flag2 = itemstack == null || itemstack.getItem() != null && !invalidItems.contains(Item.getId(itemstack.getItem()));
+ boolean flag2 = itemstack == null || itemstack.getItem() != null && (!invalidItems.contains(Item.getId(itemstack.getItem())) || !org.spigotmc.SpigotConfig.filterCreativeItems); // Spigot
boolean flag3 = itemstack == null || itemstack.getData() >= 0 && itemstack.count <= 64 && itemstack.count > 0;
// CraftBukkit start - Call click event
if (flag || (flag1 && !ItemStack.matches(this.player.defaultContainer.getSlot(packetplayinsetcreativeslot.a()).getItem(), packetplayinsetcreativeslot.getItemStack()))) { // Insist on valid slot
diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java
index f58208e..86c45c6 100644
--- a/src/main/java/org/spigotmc/SpigotConfig.java

View File

@ -1,11 +1,11 @@
From d948ca461b0bdfe0a46c85c2a8c83b2156f00c61 Mon Sep 17 00:00:00 2001
From e6ce2e83cdc2491641c200c1f860b029fb59bb42 Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Wed, 12 Feb 2014 20:02:58 +1100
Subject: [PATCH] Cap Channel Registrations
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index fd0c2d2..c6caeec 100644
index c2e87b1..0ab028c 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1061,6 +1061,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {

View File

@ -1,11 +1,11 @@
From 4861273a957bfb20cfcaf68d28242a0e89a109bf Mon Sep 17 00:00:00 2001
From 5592d63ffecfc0badf3c17d5863cfa2dc87ffa88 Mon Sep 17 00:00:00 2001
From: Thinkofdeath <thethinkofdeath@gmail.com>
Date: Wed, 12 Feb 2014 20:44:14 +0000
Subject: [PATCH] Allow vanilla commands to be the main version of a command
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index be4a647..36c0f7e 100644
index 46710d8..238e282 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -317,8 +317,11 @@ public final class CraftServer implements Server {

View File

@ -1,4 +1,4 @@
From eba64c36ac125bfb19ab3f8017d535aee822a407 Mon Sep 17 00:00:00 2001
From 81df68f800f262fe65c108319400ec47b91d9c40 Mon Sep 17 00:00:00 2001
From: hcherndon <hcherndon@gmail.com>
Date: Sat, 15 Feb 2014 01:51:20 -0600
Subject: [PATCH] Unfinalize the isDisconnected() method by bukkit.
@ -6,18 +6,18 @@ Subject: [PATCH] Unfinalize the isDisconnected() method by bukkit.
This would literally mean the world to me. You have no idea how much this method being final is fucking me over right now. (Working with NPC's and what not.)
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index 0dee302..cabd1fa 100644
index 8fff72f..b650419 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -2039,7 +2039,7 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
@@ -2060,7 +2060,7 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
}
// CraftBukkit start - Add "isDisconnected" method
- public final boolean isDisconnected() {
+ public boolean isDisconnected() {
return !this.player.joining && !NetworkManager.a(this.networkManager).config().isAutoRead();
+ public boolean isDisconnected() { // Spigot
return !this.player.joining && !this.networkManager.k.config().isAutoRead();
}
}
--
2.1.0

View File

@ -1,11 +1,11 @@
From 1b1517f403c2a3d34c3eddbcb8f78e7d0ce42134 Mon Sep 17 00:00:00 2001
From 4c6fabefb7e61513178c4d93e46d3c5b58434030 Mon Sep 17 00:00:00 2001
From: drXor <mcyoungsota@gmail.com>
Date: Sun, 23 Feb 2014 16:16:59 -0400
Subject: [PATCH] Implement Silenceable Lightning API
diff --git a/src/main/java/net/minecraft/server/EntityLightning.java b/src/main/java/net/minecraft/server/EntityLightning.java
index 5bda5d3..1bbce9b 100644
index d355e68..286fdef 100644
--- a/src/main/java/net/minecraft/server/EntityLightning.java
+++ b/src/main/java/net/minecraft/server/EntityLightning.java
@@ -13,6 +13,8 @@ public class EntityLightning extends EntityWeather {
@ -17,7 +17,7 @@ index 5bda5d3..1bbce9b 100644
public EntityLightning(World world, double d0, double d1, double d2) {
this(world, d0, d1, d2, false);
}
@@ -53,12 +55,19 @@ public class EntityLightning extends EntityWeather {
@@ -52,12 +54,19 @@ public class EntityLightning extends EntityWeather {
}
}
}
@ -31,18 +31,18 @@ index 5bda5d3..1bbce9b 100644
}
+ // Spigot end
public void s_() {
super.s_();
public void t_() {
super.t_();
- if (this.lifeTicks == 2) {
+ if (!isSilent && this.lifeTicks == 2) { // Spigot
// CraftBukkit start - Use relative location for far away sounds
//this.world.makeSound(this.locX, this.locY, this.locZ, "ambient.weather.thunder", 10000.0F, 0.8F + this.random.nextFloat() * 0.2F);
float pitch = 0.8F + this.random.nextFloat() * 0.2F;
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 660fd07..f07d87d 100644
index 62ad47d..6b26c8f 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -1412,6 +1412,22 @@ public class CraftWorld implements World {
@@ -1420,6 +1420,22 @@ public class CraftWorld implements World {
{
CraftWorld.this.playEffect( location, effect, 0 );
}

View File

@ -1,4 +1,4 @@
From ffb7bbd08c48ce8a96f80193e164273203c02ab9 Mon Sep 17 00:00:00 2001
From 768bcde3e79b42a77e37ad7b26ab497e0bc12762 Mon Sep 17 00:00:00 2001
From: FrozenBrain <carstenbamsti@googlemail.com>
Date: Sun, 2 Mar 2014 21:13:46 +0100
Subject: [PATCH] Use one PermissibleBase for all Command Blocks

View File

@ -1,21 +1,21 @@
From 0a2ce284436e4ec54b52915f09433c02544ec922 Mon Sep 17 00:00:00 2001
From 61bbf0df8768aaf437b957eb136ea27f9f083090 Mon Sep 17 00:00:00 2001
From: Thinkofdeath <thethinkofdeath@gmail.com>
Date: Wed, 5 Mar 2014 20:27:27 +0000
Subject: [PATCH] Prevent hoppers from loading chunks
diff --git a/src/main/java/net/minecraft/server/TileEntityHopper.java b/src/main/java/net/minecraft/server/TileEntityHopper.java
index f4dc9c7..280d64f 100644
index b3bf687..4f50a47 100644
--- a/src/main/java/net/minecraft/server/TileEntityHopper.java
+++ b/src/main/java/net/minecraft/server/TileEntityHopper.java
@@ -555,6 +555,7 @@ public class TileEntityHopper extends TileEntityContainer implements IHopper, IU
@@ -556,6 +556,7 @@ public class TileEntityHopper extends TileEntityContainer implements IHopper, IU
int j = MathHelper.floor(d1);
int k = MathHelper.floor(d2);
BlockPosition blockposition = new BlockPosition(i, j, k);
+ if ( !world.isLoaded( blockposition ) ) return null; // Spigot
TileEntity tileentity = world.getTileEntity(new BlockPosition(i, j, k));
Block block = world.getType(blockposition).getBlock();
if (tileentity instanceof IInventory) {
if (block.isTileEntity()) {
--
2.1.0

View File

@ -1,23 +1,23 @@
From 4621df9d2cb409141bc86e08543b51623560ca39 Mon Sep 17 00:00:00 2001
From 3686a1f9bc04251600256dd63e5c90c891cddca6 Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Mon, 10 Mar 2014 09:03:28 +1100
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 248f485..59bd847 100644
index 974fe77..2ea78c2 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -33,7 +33,32 @@ import org.bukkit.event.weather.ThunderChangeEvent;
public abstract class World implements IBlockAccess {
@@ -34,7 +34,32 @@ public abstract class World implements IBlockAccess {
private int a = 63;
protected boolean e;
- public final List entityList = Lists.newArrayList();
- public final List<Entity> entityList = Lists.newArrayList();
+ // Spigot start - guard entity list from removals
+ public List entityList = new java.util.ArrayList()
+ public final List<Entity> entityList = new java.util.ArrayList<Entity>()
+ {
+ @Override
+ public Object remove(int index)
+ public Entity remove(int index)
+ {
+ guard();
+ return super.remove( index );
@ -39,10 +39,10 @@ index 248f485..59bd847 100644
+ }
+ };
+ // Spigot end
protected final List g = Lists.newArrayList();
public final List h = Lists.newArrayList();
public final List tileEntityList = Lists.newArrayList();
@@ -101,6 +126,7 @@ public abstract class World implements IBlockAccess {
protected final List<Entity> g = Lists.newArrayList();
public final List<TileEntity> h = Lists.newArrayList();
public final List<TileEntity> tileEntityList = Lists.newArrayList();
@@ -102,6 +127,7 @@ public abstract class World implements IBlockAccess {
private int tickPosition;
// Spigot start
@ -50,7 +50,7 @@ index 248f485..59bd847 100644
protected final gnu.trove.map.hash.TLongShortHashMap chunkTickList;
protected float growthOdds = 100;
protected float modifiedOdds = 100;
@@ -1295,6 +1321,7 @@ public abstract class World implements IBlockAccess {
@@ -1341,6 +1367,7 @@ public abstract class World implements IBlockAccess {
org.spigotmc.ActivationRange.activateEntities(this); // Spigot
timings.entityTick.startTiming(); // Spigot
@ -58,7 +58,7 @@ index 248f485..59bd847 100644
// CraftBukkit start - Use field for loop variable
for (this.tickPosition = 0; this.tickPosition < this.entityList.size(); ++this.tickPosition) {
entity = (Entity) this.entityList.get(this.tickPosition);
@@ -1331,12 +1358,15 @@ public abstract class World implements IBlockAccess {
@@ -1377,12 +1404,15 @@ public abstract class World implements IBlockAccess {
this.getChunkAt(j, k).b(entity);
}

View File

@ -1,4 +1,4 @@
From f665effb267d8740b909cf1c2c32dae1916b5a2f Mon Sep 17 00:00:00 2001
From 74a9ae442876b923afc2ffee51d06900fc15f166 Mon Sep 17 00:00:00 2001
From: Thinkofdeath <thethinkofdeath@gmail.com>
Date: Tue, 14 Jan 2014 20:11:25 +0000
Subject: [PATCH] Fix ConcurrentModificationException while being idle kicked
@ -6,10 +6,10 @@ Subject: [PATCH] Fix ConcurrentModificationException while being idle kicked
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 59bd847..1fe5cf9 100644
index 2ea78c2..57fda56 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -1046,6 +1046,7 @@ public abstract class World implements IBlockAccess {
@@ -1090,6 +1090,7 @@ public abstract class World implements IBlockAccess {
this.everyoneSleeping();
}
@ -17,7 +17,7 @@ index 59bd847..1fe5cf9 100644
int i = entity.ae;
int j = entity.ag;
@@ -1062,6 +1063,7 @@ public abstract class World implements IBlockAccess {
@@ -1106,6 +1107,7 @@ public abstract class World implements IBlockAccess {
this.entityList.remove(index);
}
// CraftBukkit end

View File

@ -1,16 +1,16 @@
From 77438a1939346d53bed1c6f42498f5070089251e Mon Sep 17 00:00:00 2001
From f6f9ff67f4e3210480843d9d2a3a7e5c74fca239 Mon Sep 17 00:00:00 2001
From: drXor <mcyoungsota@gmail.com>
Date: Tue, 25 Feb 2014 15:15:26 -0400
Subject: [PATCH] Cancellable WitherSkull potion effect
diff --git a/src/main/java/net/minecraft/server/EntityWitherSkull.java b/src/main/java/net/minecraft/server/EntityWitherSkull.java
index a78e84c..e3f26a4 100644
index e169184..f0e627b 100644
--- a/src/main/java/net/minecraft/server/EntityWitherSkull.java
+++ b/src/main/java/net/minecraft/server/EntityWitherSkull.java
@@ -35,8 +35,11 @@ public class EntityWitherSkull extends EntityFireball {
@@ -36,8 +36,11 @@ public class EntityWitherSkull extends EntityFireball {
protected void a(MovingObjectPosition movingobjectposition) {
if (!this.world.isStatic) {
if (!this.world.isClientSide) {
if (movingobjectposition.entity != null) {
+ // Spigot start
+ boolean didDamage = false;
@ -21,7 +21,7 @@ index a78e84c..e3f26a4 100644
if (!movingobjectposition.entity.isAlive()) {
this.shooter.heal(5.0F, org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason.WITHER); // CraftBukkit
} else {
@@ -44,10 +47,11 @@ public class EntityWitherSkull extends EntityFireball {
@@ -45,10 +48,11 @@ public class EntityWitherSkull extends EntityFireball {
}
}
} else {

View File

@ -1,14 +1,14 @@
From 6305a93fd09c6970888d987c81787daa63701e4c Mon Sep 17 00:00:00 2001
From 5366ec74774f139c46dc97f76cedabcf60753a10 Mon Sep 17 00:00:00 2001
From: drXor <mcyoungsota@gmail.com>
Date: Sat, 15 Mar 2014 01:30:05 -0400
Subject: [PATCH] Descriptive kick reasons instead of Nope!
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 25192f3..dfb4299 100644
index 82accf4..d6bef0b 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -208,7 +208,7 @@ public abstract class Entity implements ICommandListener {
@@ -209,7 +209,7 @@ public abstract class Entity implements ICommandListener {
if (f == Float.POSITIVE_INFINITY || f == Float.NEGATIVE_INFINITY) {
if (this instanceof EntityPlayer) {
this.world.getServer().getLogger().warning(this.getName() + " was caught trying to crash the server with an invalid yaw");
@ -17,7 +17,7 @@ index 25192f3..dfb4299 100644
}
f = 0;
}
@@ -221,7 +221,7 @@ public abstract class Entity implements ICommandListener {
@@ -222,7 +222,7 @@ public abstract class Entity implements ICommandListener {
if (f1 == Float.POSITIVE_INFINITY || f1 == Float.NEGATIVE_INFINITY) {
if (this instanceof EntityPlayer) {
this.world.getServer().getLogger().warning(this.getName() + " was caught trying to crash the server with an invalid pitch");
@ -27,10 +27,10 @@ index 25192f3..dfb4299 100644
f1 = 0;
}
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index e8f0167..80e03bc 100644
index b650419..0bcdef4 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -186,7 +186,7 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
@@ -196,7 +196,7 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
// CraftBukkit start - Check for NaN
if (!NumberConversions.isFinite(packetplayinflying.x) || !NumberConversions.isFinite(packetplayinflying.y) || !NumberConversions.isFinite(packetplayinflying.z)) {
c.warn(player.getName() + " was caught trying to crash the server with an invalid position.");
@ -39,7 +39,7 @@ index e8f0167..80e03bc 100644
return;
}
// CraftBukkit end
@@ -874,7 +874,7 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
@@ -892,7 +892,7 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
this.player.z();
} else {
PlayerConnection.c.warn(this.player.getName() + " tried to set an invalid carried item");

View File

@ -1,14 +1,14 @@
From 56599097f688176bf735a8e0134b380443aed751 Mon Sep 17 00:00:00 2001
From 2516216206c3330ccc1057fe4e9bcc11e9fd2760 Mon Sep 17 00:00:00 2001
From: drXor <mcyoungsota@gmail.com>
Date: Sat, 29 Mar 2014 13:44:25 -0400
Subject: [PATCH] Configurable dragon death and wither spawn sounds
diff --git a/src/main/java/net/minecraft/server/EntityEnderDragon.java b/src/main/java/net/minecraft/server/EntityEnderDragon.java
index 51686c4..ec94142 100644
index 253e60b..2b038e0 100644
--- a/src/main/java/net/minecraft/server/EntityEnderDragon.java
+++ b/src/main/java/net/minecraft/server/EntityEnderDragon.java
@@ -572,6 +572,7 @@ public class EntityEnderDragon extends EntityInsentient implements IComplex, IMo
@@ -578,6 +578,7 @@ public class EntityEnderDragon extends EntityInsentient implements IComplex, IMo
double deltaX = this.locX - player.locX;
double deltaZ = this.locZ - player.locZ;
double distanceSquared = deltaX * deltaX + deltaZ * deltaZ;
@ -17,10 +17,10 @@ index 51686c4..ec94142 100644
double deltaLength = Math.sqrt(distanceSquared);
double relativeX = player.locX + (deltaX / deltaLength) * viewDistance;
diff --git a/src/main/java/net/minecraft/server/EntityWither.java b/src/main/java/net/minecraft/server/EntityWither.java
index d21c0e9..8ed2b4b 100644
index 2816af1..d904a3f 100644
--- a/src/main/java/net/minecraft/server/EntityWither.java
+++ b/src/main/java/net/minecraft/server/EntityWither.java
@@ -183,6 +183,7 @@ public class EntityWither extends EntityMonster implements IRangedEntity {
@@ -191,6 +191,7 @@ public class EntityWither extends EntityMonster implements IRangedEntity {
double deltaX = this.locX - player.locX;
double deltaZ = this.locZ - player.locZ;
double distanceSquared = deltaX * deltaX + deltaZ * deltaZ;

View File

@ -1,4 +1,4 @@
From 671c6af2057b601d2ca7efee24fe3c79ed5e687c Mon Sep 17 00:00:00 2001
From 98a6c5b5dc1486fe21610b16ae5e0fea70c6d67e Mon Sep 17 00:00:00 2001
From: Thinkofdeath <thethinkofdeath@gmail.com>
Date: Fri, 11 Apr 2014 11:16:34 +0100
Subject: [PATCH] Display 'Spigot' in client crashes, server lists and Mojang
@ -6,10 +6,10 @@ Subject: [PATCH] Display 'Spigot' in client crashes, server lists and Mojang
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 34fb946..ff98d02 100644
index a5cca2b..b2ad2ca 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1053,7 +1053,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
@@ -1015,7 +1015,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
}
public String getServerModName() {

View File

@ -1,16 +1,16 @@
From 6aef733e905e1ec1c487d21ff858f2f49f4022ec Mon Sep 17 00:00:00 2001
From b505768f38abdcb3d062cd825ebb4ec02422a002 Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Sat, 12 Apr 2014 21:23:58 +1000
Subject: [PATCH] Treat Bungee as Online Mode
diff --git a/src/main/java/net/minecraft/server/NameReferencingFileConverter.java b/src/main/java/net/minecraft/server/NameReferencingFileConverter.java
index 33d0702..3b50d40 100644
index 31aa200..c1f8ff6 100644
--- a/src/main/java/net/minecraft/server/NameReferencingFileConverter.java
+++ b/src/main/java/net/minecraft/server/NameReferencingFileConverter.java
@@ -53,7 +53,7 @@ public class NameReferencingFileConverter {
private static void a(MinecraftServer minecraftserver, Collection collection, ProfileLookupCallback profilelookupcallback) {
String[] astring = (String[]) Iterators.toArray(Iterators.filter(collection.iterator(), new PredicateEmptyList()), String.class);
@@ -63,7 +63,7 @@ public class NameReferencingFileConverter {
}
}), String.class);
- if (minecraftserver.getOnlineMode()) {
+ if (minecraftserver.getOnlineMode() || org.spigotmc.SpigotConfig.bungee) { // Spigot: bungee = online mode, for now.

View File

@ -1,17 +1,17 @@
From 75adf09cba4e053a9918a79a62215cf7fd0233d1 Mon Sep 17 00:00:00 2001
From bcfef4b5882636b74d1535d0bb40df88f4e8bc1f Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Sat, 12 Apr 2014 23:30:44 +1000
Subject: [PATCH] Add Conversion Message
diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java
index ced9efa..80755dd 100644
index 188a094..28135ba 100644
--- a/src/main/java/net/minecraft/server/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/DedicatedServer.java
@@ -453,6 +453,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
@@ -513,6 +513,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
}
protected boolean aP() {
protected boolean aQ() {
+ server.getLogger().info( "**** Beginning UUID conversion, this may take A LONG time ****"); // Spigot, let the user know whats up!
boolean flag = false;

View File

@ -1,4 +1,4 @@
From 294401c8382d6ee3e78a42288a30ff9fb0a626f1 Mon Sep 17 00:00:00 2001
From 2f62f2f27a069a33ffdea27c32ad77d41a45b4a1 Mon Sep 17 00:00:00 2001
From: "gjmcferrin@gmail.com" <gjmcferrin@gmail.com>
Date: Mon, 10 Feb 2014 10:05:11 -0500
Subject: [PATCH] Properly cancel fishing event. Fixes BUKKIT-5396
@ -10,7 +10,7 @@ cleared. This ensures that the player's hooked entity value is set to null so
that the next attempt will result in the proper state being called.
diff --git a/src/main/java/net/minecraft/server/ItemFishingRod.java b/src/main/java/net/minecraft/server/ItemFishingRod.java
index 423a776..c14d261 100644
index 3cf292f..050a504 100644
--- a/src/main/java/net/minecraft/server/ItemFishingRod.java
+++ b/src/main/java/net/minecraft/server/ItemFishingRod.java
@@ -23,6 +23,7 @@ public class ItemFishingRod extends Item {

View File

@ -1,21 +1,21 @@
From 8a26917a0a8b00bcbc5534681dc1d97e96c43bf5 Mon Sep 17 00:00:00 2001
From 7bff30bb6fb6973f318d5108010fd39c2089ce91 Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Sun, 13 Apr 2014 09:00:59 +1000
Subject: [PATCH] Print Stack on InternalException
diff --git a/src/main/java/net/minecraft/server/NetworkManager.java b/src/main/java/net/minecraft/server/NetworkManager.java
index 78d5949..65b66cd 100644
index f7a011a..b62cc5a 100644
--- a/src/main/java/net/minecraft/server/NetworkManager.java
+++ b/src/main/java/net/minecraft/server/NetworkManager.java
@@ -71,6 +71,7 @@ public class NetworkManager extends SimpleChannelInboundHandler {
public void exceptionCaught(ChannelHandlerContext channelhandlercontext, Throwable throwable) {
NetworkManager.f.debug("Disconnecting " + this.getSocketAddress(), throwable);
this.close(new ChatMessage("disconnect.genericReason", new Object[] { "Internal Exception: " + throwable}));
@@ -111,6 +111,7 @@ public class NetworkManager extends SimpleChannelInboundHandler<Packet> {
}
this.close(chatmessage);
+ if (MinecraftServer.getServer().isDebugging()) throwable.printStackTrace(); // Spigot
}
protected void a(ChannelHandlerContext channelhandlercontext, Packet packet) {
protected void a(ChannelHandlerContext channelhandlercontext, Packet packet) throws Exception {
--
2.1.0

Some files were not shown because too many files have changed in this diff Show More