mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-01 17:01:56 +01:00
Update to Minecraft 1.8.3
This commit is contained in:
parent
0d6db011bc
commit
c0638b6ffb
107 changed files with 1670 additions and 2431 deletions
|
@ -16,7 +16,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
- <artifactId>bukkit</artifactId>
|
- <artifactId>bukkit</artifactId>
|
||||||
+ <groupId>org.spigotmc</groupId>
|
+ <groupId>org.spigotmc</groupId>
|
||||||
+ <artifactId>spigot-api</artifactId>
|
+ <artifactId>spigot-api</artifactId>
|
||||||
<version>1.8-R0.1-SNAPSHOT</version>
|
<version>1.8.3-R0.1-SNAPSHOT</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
- <name>Bukkit</name>
|
- <name>Bukkit</name>
|
||||||
|
|
|
@ -18,7 +18,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ <groupId>org.spigotmc</groupId>
|
+ <groupId>org.spigotmc</groupId>
|
||||||
+ <artifactId>spigot</artifactId>
|
+ <artifactId>spigot</artifactId>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
<version>1.8-R0.1-SNAPSHOT</version>
|
<version>1.8.3-R0.1-SNAPSHOT</version>
|
||||||
- <name>CraftBukkit</name>
|
- <name>CraftBukkit</name>
|
||||||
- <url>http://www.bukkit.org</url>
|
- <url>http://www.bukkit.org</url>
|
||||||
+ <name>Spigot</name>
|
+ <name>Spigot</name>
|
||||||
|
@ -41,6 +41,11 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
<dependency>
|
<dependency>
|
||||||
- <groupId>org.bukkit</groupId>
|
- <groupId>org.bukkit</groupId>
|
||||||
- <artifactId>bukkit</artifactId>
|
- <artifactId>bukkit</artifactId>
|
||||||
|
+ <groupId>net.sf.trove4j</groupId>
|
||||||
|
+ <artifactId>trove4j</artifactId>
|
||||||
|
+ <version>3.0.3</version>
|
||||||
|
+ </dependency>
|
||||||
|
+ <dependency>
|
||||||
+ <groupId>org.spigotmc</groupId>
|
+ <groupId>org.spigotmc</groupId>
|
||||||
+ <artifactId>spigot-api</artifactId>
|
+ <artifactId>spigot-api</artifactId>
|
||||||
<version>${project.version}</version>
|
<version>${project.version}</version>
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -9,7 +9,7 @@ diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
|
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ return this.q;
|
+ return this.q;
|
||||||
+ }
|
+ }
|
||||||
+ // Spigot End
|
+ // Spigot End
|
||||||
public ServerConnection ao() {
|
public ServerConnection ap() {
|
||||||
return this.q;
|
return this.q;
|
||||||
}
|
}
|
||||||
--
|
--
|
|
@ -10,14 +10,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
--- a/src/main/java/net/minecraft/server/World.java
|
--- a/src/main/java/net/minecraft/server/World.java
|
||||||
+++ b/src/main/java/net/minecraft/server/World.java
|
+++ b/src/main/java/net/minecraft/server/World.java
|
||||||
@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
|
@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
|
||||||
public Scoreboard scoreboard = new Scoreboard();
|
public Scoreboard scoreboard = new Scoreboard(); // CraftBukkit - public
|
||||||
public final boolean isStatic;
|
public final boolean isClientSide;
|
||||||
// CraftBukkit - longhashset
|
// CraftBukkit - longhashset
|
||||||
- protected LongHashSet chunkTickList = new LongHashSet();
|
- protected LongHashSet chunkTickList = new LongHashSet();
|
||||||
+ // protected LongHashSet chunkTickList = new LongHashSet(); // Spigot
|
+ // protected LongHashSet chunkTickList = new LongHashSet(); // Spigot
|
||||||
private int K;
|
private int L;
|
||||||
public boolean allowMonsters;
|
public boolean allowMonsters; // CraftBukkit - public
|
||||||
public boolean allowAnimals;
|
public boolean allowAnimals; // CraftBukkit - public
|
||||||
@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
|
@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
|
||||||
public long ticksPerMonsterSpawns;
|
public long ticksPerMonsterSpawns;
|
||||||
public boolean populating;
|
public boolean populating;
|
||||||
|
@ -59,9 +59,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ this.chunkTickList = new gnu.trove.map.hash.TLongShortHashMap( spigotConfig.chunksPerTick * 5, 0.7f, Long.MIN_VALUE, Short.MIN_VALUE );
|
+ this.chunkTickList = new gnu.trove.map.hash.TLongShortHashMap( spigotConfig.chunksPerTick * 5, 0.7f, Long.MIN_VALUE, Short.MIN_VALUE );
|
||||||
+ this.chunkTickList.setAutoCompactionFactor( 0 );
|
+ this.chunkTickList.setAutoCompactionFactor( 0 );
|
||||||
+ // Spigot end
|
+ // Spigot end
|
||||||
|
+
|
||||||
this.K = this.random.nextInt(12000);
|
this.L = this.random.nextInt(12000);
|
||||||
this.allowMonsters = true;
|
this.allowMonsters = true;
|
||||||
|
this.allowAnimals = true;
|
||||||
@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
|
@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
|
||||||
int k;
|
int k;
|
||||||
int l;
|
int l;
|
||||||
|
@ -157,7 +158,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ // ChunkCoordIntPair chunkcoordintpair = (ChunkCoordIntPair) iterator.next();
|
+ // ChunkCoordIntPair chunkcoordintpair = (ChunkCoordIntPair) iterator.next();
|
||||||
int k = chunkX * 16;
|
int k = chunkX * 16;
|
||||||
int l = chunkZ * 16;
|
int l = chunkZ * 16;
|
||||||
|
|
||||||
@@ -0,0 +0,0 @@ public class WorldServer extends World implements IAsyncTaskHandler {
|
@@ -0,0 +0,0 @@ public class WorldServer extends World implements IAsyncTaskHandler {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
- // CraftBukkit start
|
- // CraftBukkit start
|
||||||
+ if (random.nextInt((int) (world.growthOdds / world.spigotConfig.wheatModifier * (25.0F / f)) + 1) == 0) { // Spigot // 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));
|
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
|
// CraftBukkit end
|
||||||
diff --git a/src/main/java/net/minecraft/server/BlockGrass.java b/src/main/java/net/minecraft/server/BlockGrass.java
|
diff --git a/src/main/java/net/minecraft/server/BlockGrass.java b/src/main/java/net/minecraft/server/BlockGrass.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
@ -111,7 +111,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+++ b/src/main/java/net/minecraft/server/BlockSapling.java
|
+++ b/src/main/java/net/minecraft/server/BlockSapling.java
|
||||||
@@ -0,0 +0,0 @@ public class BlockSapling extends BlockPlant implements IBlockFragilePlantElemen
|
@@ -0,0 +0,0 @@ public class BlockSapling extends BlockPlant implements IBlockFragilePlantElemen
|
||||||
public void b(World world, BlockPosition blockposition, IBlockData iblockdata, Random random) {
|
public void b(World world, BlockPosition blockposition, IBlockData iblockdata, Random random) {
|
||||||
if (!world.isStatic) {
|
if (!world.isClientSide) {
|
||||||
super.b(world, blockposition, iblockdata, random);
|
super.b(world, blockposition, iblockdata, random);
|
||||||
- if (world.getLightLevel(blockposition.up()) >= 9 && random.nextInt(7) == 0) {
|
- 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) {
|
+ if (world.getLightLevel(blockposition.up()) >= 9 && (random.nextInt(Math.max(2, (int) ((world.growthOdds / world.spigotConfig.saplingModifier * 7) + 0.5F))) == 0)) { // Spigot) {
|
||||||
|
|
|
@ -13,12 +13,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver {
|
public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver {
|
||||||
|
|
||||||
private static final Logger a = LogManager.getLogger();
|
private static final Logger a = LogManager.getLogger();
|
||||||
- private List b = Lists.newArrayList();
|
- private List<ChunkRegionLoader.PendingChunkToSave> b = Lists.newArrayList();
|
||||||
- private Set c = Sets.newHashSet();
|
- private Set<ChunkCoordIntPair> c = Sets.newHashSet();
|
||||||
+ // Spigot start
|
+ // Spigot start
|
||||||
+ private java.util.LinkedHashMap<ChunkCoordIntPair, PendingChunkToSave> pendingSaves = new java.util.LinkedHashMap<ChunkCoordIntPair, PendingChunkToSave>();
|
+ private java.util.LinkedHashMap<ChunkCoordIntPair, PendingChunkToSave> pendingSaves = new java.util.LinkedHashMap<ChunkCoordIntPair, PendingChunkToSave>();
|
||||||
+ // private List b = Lists.newArrayList();
|
+ // private List<ChunkRegionLoader.PendingChunkToSave> b = Lists.newArrayList();
|
||||||
+ // private Set c = Sets.newHashSet();
|
+ // private Set<ChunkCoordIntPair> c = Sets.newHashSet();
|
||||||
+ // Spigot end
|
+ // Spigot end
|
||||||
private Object d = new Object();
|
private Object d = new Object();
|
||||||
private final File e;
|
private final File e;
|
||||||
|
@ -48,8 +48,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
synchronized (this.d) {
|
synchronized (this.d) {
|
||||||
- if (this.c.contains(chunkcoordintpair)) {
|
- if (this.c.contains(chunkcoordintpair)) {
|
||||||
- for (int k = 0; k < this.b.size(); ++k) {
|
- for (int k = 0; k < this.b.size(); ++k) {
|
||||||
- if (((PendingChunkToSave) this.b.get(k)).a.equals(chunkcoordintpair)) {
|
- if (((ChunkRegionLoader.PendingChunkToSave) this.b.get(k)).a.equals(chunkcoordintpair)) {
|
||||||
- nbttagcompound = ((PendingChunkToSave) this.b.get(k)).b;
|
- nbttagcompound = ((ChunkRegionLoader.PendingChunkToSave) this.b.get(k)).b;
|
||||||
- break;
|
- break;
|
||||||
- }
|
- }
|
||||||
- }
|
- }
|
||||||
|
@ -68,8 +68,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
synchronized (this.d) {
|
synchronized (this.d) {
|
||||||
- if (this.c.contains(chunkcoordintpair)) {
|
- if (this.c.contains(chunkcoordintpair)) {
|
||||||
- for (int i = 0; i < this.b.size(); ++i) {
|
- for (int i = 0; i < this.b.size(); ++i) {
|
||||||
- if (((PendingChunkToSave) this.b.get(i)).a.equals(chunkcoordintpair)) {
|
- if (((ChunkRegionLoader.PendingChunkToSave) this.b.get(i)).a.equals(chunkcoordintpair)) {
|
||||||
- this.b.set(i, new PendingChunkToSave(chunkcoordintpair, nbttagcompound));
|
- this.b.set(i, new ChunkRegionLoader.PendingChunkToSave(chunkcoordintpair, nbttagcompound));
|
||||||
- return;
|
- return;
|
||||||
- }
|
- }
|
||||||
- }
|
- }
|
||||||
|
@ -78,9 +78,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ return;
|
+ return;
|
||||||
}
|
}
|
||||||
|
|
||||||
- this.b.add(new PendingChunkToSave(chunkcoordintpair, nbttagcompound));
|
- this.b.add(new ChunkRegionLoader.PendingChunkToSave(chunkcoordintpair, nbttagcompound));
|
||||||
- this.c.add(chunkcoordintpair);
|
- this.c.add(chunkcoordintpair);
|
||||||
+ // this.b.add(new PendingChunkToSave(chunkcoordintpair, nbttagcompound));
|
+ // this.b.add(new ChunkRegionLoader.PendingChunkToSave(chunkcoordintpair, nbttagcompound));
|
||||||
+ // this.c.add(chunkcoordintpair);
|
+ // this.c.add(chunkcoordintpair);
|
||||||
+ // Spigot end
|
+ // Spigot end
|
||||||
FileIOThread.a().a(this);
|
FileIOThread.a().a(this);
|
||||||
|
@ -96,12 +96,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
- pendingchunktosave = (PendingChunkToSave) this.b.remove(0);
|
- chunkregionloader_pendingchunktosave = (ChunkRegionLoader.PendingChunkToSave) this.b.remove(0);
|
||||||
- this.c.remove(pendingchunktosave.a);
|
- this.c.remove(chunkregionloader_pendingchunktosave.a);
|
||||||
+ pendingchunktosave = this.pendingSaves.values().iterator().next();
|
+ chunkregionloader_pendingchunktosave = this.pendingSaves.values().iterator().next();
|
||||||
+ this.pendingSaves.remove(pendingchunktosave.a);
|
+ this.pendingSaves.remove(chunkregionloader_pendingchunktosave.a);
|
||||||
+ // Spigot end
|
+ // Spigot end
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pendingchunktosave != null) {
|
if (chunkregionloader_pendingchunktosave != null) {
|
||||||
--
|
--
|
|
@ -44,7 +44,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
@@ -0,0 +0,0 @@ public class EntityTracker {
|
@@ -0,0 +0,0 @@ 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
|
+ org.spigotmc.AsyncCatcher.catchOp( "entity track"); // Spigot
|
||||||
if (i > this.e) {
|
if (i > this.e) {
|
||||||
i = this.e;
|
i = this.e;
|
||||||
|
@ -68,7 +68,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ org.spigotmc.AsyncCatcher.catchOp( "player tracker update"); // Spigot
|
+ org.spigotmc.AsyncCatcher.catchOp( "player tracker update"); // Spigot
|
||||||
if (entityplayer != this.tracker) {
|
if (entityplayer != this.tracker) {
|
||||||
if (this.c(entityplayer)) {
|
if (this.c(entityplayer)) {
|
||||||
if (!this.trackedPlayers.contains(entityplayer) && (this.e(entityplayer) || this.tracker.attachedToPlayer)) {
|
if (!this.trackedPlayers.contains(entityplayer) && (this.e(entityplayer) || this.tracker.attachedToPlayer)) {
|
||||||
@@ -0,0 +0,0 @@ public class EntityTrackerEntry {
|
@@ -0,0 +0,0 @@ public class EntityTrackerEntry {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,7 +100,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
|
@@ -0,0 +0,0 @@ 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
|
+ org.spigotmc.AsyncCatcher.catchOp( "entity world add"); // Spigot
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
// this.entityList.addAll(collection);
|
// this.entityList.addAll(collection);
|
||||||
|
|
|
@ -16,7 +16,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
- public PlayerChunkMap(WorldServer worldserver) {
|
- public PlayerChunkMap(WorldServer worldserver) {
|
||||||
+ public PlayerChunkMap(WorldServer worldserver, int viewDistance /* Spigot */) {
|
+ public PlayerChunkMap(WorldServer worldserver, int viewDistance /* Spigot */) {
|
||||||
this.world = worldserver;
|
this.world = worldserver;
|
||||||
- this.a(worldserver.getMinecraftServer().getPlayerList().t());
|
- this.a(worldserver.getMinecraftServer().getPlayerList().s());
|
||||||
+ this.a(viewDistance); // Spigot
|
+ this.a(viewDistance); // Spigot
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -38,8 +38,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
if (chunk == null) {
|
if (chunk == null) {
|
||||||
if (this.chunkProvider == null) {
|
if (this.chunkProvider == null) {
|
||||||
@@ -0,0 +0,0 @@ public class ChunkProviderServer implements IChunkProvider {
|
@@ -0,0 +0,0 @@ public class ChunkProviderServer implements IChunkProvider {
|
||||||
|
}
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
|
|
||||||
chunk.loadNearby(this, this, i, j);
|
chunk.loadNearby(this, this, i, j);
|
||||||
+ world.timings.syncChunkLoadTimer.stopTiming(); // Spigot
|
+ world.timings.syncChunkLoadTimer.stopTiming(); // Spigot
|
||||||
}
|
}
|
||||||
|
@ -62,7 +62,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
@@ -0,0 +0,0 @@ public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver {
|
@@ -0,0 +0,0 @@ public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver {
|
||||||
|
|
||||||
// CraftBukkit start - Add async variant, provide compatibility
|
// 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
|
+ world.timings.syncChunkLoadDataTimer.startTiming(); // Spigot
|
||||||
Object[] data = loadChunk(world, i, j);
|
Object[] data = loadChunk(world, i, j);
|
||||||
+ world.timings.syncChunkLoadDataTimer.stopTiming(); // Spigot
|
+ world.timings.syncChunkLoadDataTimer.stopTiming(); // Spigot
|
||||||
|
@ -73,6 +73,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
|
|
||||||
public void loadEntities(Chunk chunk, NBTTagCompound nbttagcompound, World world) {
|
public void loadEntities(Chunk chunk, NBTTagCompound nbttagcompound, World world) {
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
|
-
|
||||||
+ world.timings.syncChunkLoadEntitiesTimer.startTiming(); // Spigot
|
+ world.timings.syncChunkLoadEntitiesTimer.startTiming(); // Spigot
|
||||||
NBTTagList nbttaglist1 = nbttagcompound.getList("Entities", 10);
|
NBTTagList nbttaglist1 = nbttagcompound.getList("Entities", 10);
|
||||||
|
|
||||||
|
@ -102,7 +103,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
}
|
}
|
||||||
+ world.timings.syncChunkLoadTileTicksTimer.stopTiming(); // Spigot
|
+ 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
|
diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
@ -114,15 +115,15 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
import org.bukkit.craftbukkit.LoggerOutputStream;
|
import org.bukkit.craftbukkit.LoggerOutputStream;
|
||||||
+import org.bukkit.craftbukkit.SpigotTimings; // Spigot
|
+import org.bukkit.craftbukkit.SpigotTimings; // Spigot
|
||||||
import org.bukkit.event.server.ServerCommandEvent;
|
import org.bukkit.event.server.ServerCommandEvent;
|
||||||
// CraftBukkit end
|
import org.bukkit.craftbukkit.util.Waitable;
|
||||||
|
import org.bukkit.event.server.RemoteServerCommandEvent;
|
||||||
@@ -0,0 +0,0 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
|
@@ -0,0 +0,0 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
|
||||||
}
|
}
|
||||||
|
|
||||||
public void aM() {
|
public void aN() {
|
||||||
+ SpigotTimings.serverCommandTimer.startTiming(); // Spigot
|
+ SpigotTimings.serverCommandTimer.startTiming(); // Spigot
|
||||||
while (!this.k.isEmpty()) {
|
while (!this.l.isEmpty()) {
|
||||||
ServerCommand servercommand = (ServerCommand) this.k.remove(0);
|
ServerCommand servercommand = (ServerCommand) this.l.remove(0);
|
||||||
|
|
||||||
@@ -0,0 +0,0 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
|
@@ -0,0 +0,0 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
|
@ -158,8 +159,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
|
|
||||||
public void move(double d0, double d1, double d2) {
|
public void move(double d0, double d1, double d2) {
|
||||||
+ org.bukkit.craftbukkit.SpigotTimings.entityMoveTimer.startTiming(); // Spigot
|
+ org.bukkit.craftbukkit.SpigotTimings.entityMoveTimer.startTiming(); // Spigot
|
||||||
+
|
if (this.noclip) {
|
||||||
if (this.T) {
|
|
||||||
this.a(this.getBoundingBox().c(d0, d1, d2));
|
this.a(this.getBoundingBox().c(d0, d1, d2));
|
||||||
this.recalcPosition();
|
this.recalcPosition();
|
||||||
@@ -0,0 +0,0 @@ public abstract class Entity implements ICommandListener {
|
@@ -0,0 +0,0 @@ public abstract class Entity implements ICommandListener {
|
||||||
|
@ -186,11 +186,11 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
@@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity {
|
@@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void s_() {
|
public void t_() {
|
||||||
+ SpigotTimings.timerEntityBaseTick.startTiming(); // Spigot
|
+ SpigotTimings.timerEntityBaseTick.startTiming(); // Spigot
|
||||||
super.s_();
|
super.t_();
|
||||||
if (!this.world.isStatic) {
|
if (!this.world.isClientSide) {
|
||||||
int i = this.bu();
|
int i = this.bv();
|
||||||
@@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity {
|
@@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -204,7 +204,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
@@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity {
|
@@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity {
|
||||||
|
|
||||||
this.world.methodProfiler.b();
|
this.world.methodProfiler.b();
|
||||||
this.aR += f2;
|
this.aT += f2;
|
||||||
+ SpigotTimings.timerEntityTickRest.stopTiming(); // Spigot
|
+ SpigotTimings.timerEntityTickRest.stopTiming(); // Spigot
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -214,9 +214,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
|
|
||||||
this.world.methodProfiler.a("ai");
|
this.world.methodProfiler.a("ai");
|
||||||
+ SpigotTimings.timerEntityAI.startTiming(); // Spigot
|
+ SpigotTimings.timerEntityAI.startTiming(); // Spigot
|
||||||
if (this.bC()) {
|
if (this.bD()) {
|
||||||
this.aW = false;
|
this.aY = false;
|
||||||
this.aX = 0.0F;
|
this.aZ = 0.0F;
|
||||||
@@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity {
|
@@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity {
|
||||||
this.doTick();
|
this.doTick();
|
||||||
this.world.methodProfiler.b();
|
this.world.methodProfiler.b();
|
||||||
|
@ -226,17 +226,17 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
this.world.methodProfiler.b();
|
this.world.methodProfiler.b();
|
||||||
this.world.methodProfiler.a("jump");
|
this.world.methodProfiler.a("jump");
|
||||||
@@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity {
|
@@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity {
|
||||||
this.aX *= 0.98F;
|
this.aZ *= 0.98F;
|
||||||
this.aY *= 0.98F;
|
this.ba *= 0.98F;
|
||||||
this.aZ *= 0.9F;
|
this.bb *= 0.9F;
|
||||||
+ SpigotTimings.timerEntityAIMove.startTiming(); // Spigot
|
+ SpigotTimings.timerEntityAIMove.startTiming(); // Spigot
|
||||||
this.g(this.aX, this.aY);
|
this.g(this.aZ, this.ba);
|
||||||
+ SpigotTimings.timerEntityAIMove.stopTiming(); // Spigot
|
+ SpigotTimings.timerEntityAIMove.stopTiming(); // Spigot
|
||||||
this.world.methodProfiler.b();
|
this.world.methodProfiler.b();
|
||||||
this.world.methodProfiler.a("push");
|
this.world.methodProfiler.a("push");
|
||||||
if (!this.world.isStatic) {
|
if (!this.world.isClientSide) {
|
||||||
+ SpigotTimings.timerEntityAICollision.startTiming(); // Spigot
|
+ SpigotTimings.timerEntityAICollision.startTiming(); // Spigot
|
||||||
this.bK();
|
this.bL();
|
||||||
+ SpigotTimings.timerEntityAICollision.stopTiming(); // Spigot
|
+ SpigotTimings.timerEntityAICollision.stopTiming(); // Spigot
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -253,15 +253,15 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
import org.bukkit.craftbukkit.util.Waitable;
|
import org.bukkit.craftbukkit.util.Waitable;
|
||||||
import org.bukkit.event.server.RemoteServerCommandEvent;
|
import org.bukkit.event.server.RemoteServerCommandEvent;
|
||||||
import org.bukkit.event.world.WorldSaveEvent;
|
import org.bukkit.event.world.WorldSaveEvent;
|
||||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
|
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
|
||||||
protected void x() {}
|
protected void y() {}
|
||||||
|
|
||||||
protected void y() throws ExceptionWorldConflict { // CraftBukkit - added throws
|
protected void z() throws ExceptionWorldConflict { // CraftBukkit - added throws
|
||||||
+ SpigotTimings.serverTickTimer.startTiming(); // Spigot
|
+ SpigotTimings.serverTickTimer.startTiming(); // Spigot
|
||||||
long i = System.nanoTime();
|
long i = System.nanoTime();
|
||||||
|
|
||||||
++this.ticks;
|
++this.ticks;
|
||||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
|
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
|
||||||
}
|
}
|
||||||
|
|
||||||
if (autosavePeriod > 0 && this.ticks % autosavePeriod == 0) { // CraftBukkit
|
if (autosavePeriod > 0 && this.ticks % autosavePeriod == 0) { // CraftBukkit
|
||||||
|
@ -274,7 +274,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
}
|
}
|
||||||
|
|
||||||
this.methodProfiler.a("tallying");
|
this.methodProfiler.a("tallying");
|
||||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
|
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
|
||||||
|
|
||||||
this.methodProfiler.b();
|
this.methodProfiler.b();
|
||||||
this.methodProfiler.b();
|
this.methodProfiler.b();
|
||||||
|
@ -282,8 +282,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ org.spigotmc.CustomTimingsHandler.tick(); // Spigot
|
+ org.spigotmc.CustomTimingsHandler.tick(); // Spigot
|
||||||
}
|
}
|
||||||
|
|
||||||
public void z() {
|
public void A() {
|
||||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
|
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
|
||||||
|
|
||||||
this.methodProfiler.c("levels");
|
this.methodProfiler.c("levels");
|
||||||
|
|
||||||
|
@ -307,7 +307,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
// Send time updates to everyone, it will get the right time from the world the player is in.
|
// Send time updates to everyone, it will get the right time from the world the player is in.
|
||||||
if (this.ticks % 20 == 0) {
|
if (this.ticks % 20 == 0) {
|
||||||
for (int i = 0; i < this.getPlayerList().players.size(); ++i) {
|
for (int i = 0; i < this.getPlayerList().players.size(); ++i) {
|
||||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
|
@@ -0,0 +0,0 @@ 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
|
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 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
|
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
|
||||||
CrashReport crashreport;
|
CrashReport crashreport;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
+ worldserver.timings.doTick.startTiming(); // Spigot
|
+ worldserver.timings.doTick.startTiming(); // Spigot
|
||||||
worldserver.doTick();
|
worldserver.doTick();
|
||||||
+ worldserver.timings.doTick.stopTiming(); // Spigot
|
+ worldserver.timings.doTick.stopTiming(); // Spigot
|
||||||
} catch (Throwable throwable1) {
|
} catch (Throwable throwable) {
|
||||||
crashreport = CrashReport.a(throwable1, "Exception ticking world");
|
crashreport = CrashReport.a(throwable, "Exception ticking world");
|
||||||
worldserver.a(crashreport);
|
worldserver.a(crashreport);
|
||||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
|
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
+ worldserver.timings.tickEntities.startTiming(); // Spigot
|
+ worldserver.timings.tickEntities.startTiming(); // Spigot
|
||||||
worldserver.tickEntities();
|
worldserver.tickEntities();
|
||||||
+ worldserver.timings.tickEntities.stopTiming(); // Spigot
|
+ worldserver.timings.tickEntities.stopTiming(); // Spigot
|
||||||
} catch (Throwable throwable2) {
|
} catch (Throwable throwable1) {
|
||||||
crashreport = CrashReport.a(throwable2, "Exception ticking world entities");
|
crashreport = CrashReport.a(throwable1, "Exception ticking world entities");
|
||||||
worldserver.a(crashreport);
|
worldserver.a(crashreport);
|
||||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
|
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
|
||||||
|
|
||||||
this.methodProfiler.b();
|
this.methodProfiler.b();
|
||||||
this.methodProfiler.a("tracker");
|
this.methodProfiler.a("tracker");
|
||||||
|
@ -345,12 +345,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
this.methodProfiler.b();
|
this.methodProfiler.b();
|
||||||
this.methodProfiler.b();
|
this.methodProfiler.b();
|
||||||
// } // CraftBukkit
|
// } // CraftBukkit
|
||||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
|
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
|
||||||
}
|
}
|
||||||
|
|
||||||
this.methodProfiler.c("connection");
|
this.methodProfiler.c("connection");
|
||||||
+ SpigotTimings.connectionTimer.startTiming(); // Spigot
|
+ SpigotTimings.connectionTimer.startTiming(); // Spigot
|
||||||
this.ao().c();
|
this.ap().c();
|
||||||
+ SpigotTimings.connectionTimer.stopTiming(); // Spigot
|
+ SpigotTimings.connectionTimer.stopTiming(); // Spigot
|
||||||
this.methodProfiler.c("players");
|
this.methodProfiler.c("players");
|
||||||
+ SpigotTimings.playerListTimer.startTiming(); // Spigot
|
+ SpigotTimings.playerListTimer.startTiming(); // Spigot
|
||||||
|
@ -359,8 +359,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
this.methodProfiler.c("tickables");
|
this.methodProfiler.c("tickables");
|
||||||
|
|
||||||
+ SpigotTimings.tickablesTimer.startTiming(); // Spigot
|
+ SpigotTimings.tickablesTimer.startTiming(); // Spigot
|
||||||
for (i = 0; i < this.o.size(); ++i) {
|
for (i = 0; i < this.p.size(); ++i) {
|
||||||
((IUpdatePlayerListBox) this.o.get(i)).c();
|
((IUpdatePlayerListBox) this.p.get(i)).c();
|
||||||
}
|
}
|
||||||
+ SpigotTimings.tickablesTimer.stopTiming(); // Spigot
|
+ SpigotTimings.tickablesTimer.stopTiming(); // Spigot
|
||||||
|
|
||||||
|
@ -373,9 +373,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
@@ -0,0 +0,0 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
|
@@ -0,0 +0,0 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
|
|
||||||
private void handleCommand(String s) {
|
private void handleCommand(String s) {
|
||||||
+ org.bukkit.craftbukkit.SpigotTimings.playerCommandTimer.startTiming(); // Spigot
|
+ org.bukkit.craftbukkit.SpigotTimings.playerCommandTimer.startTiming(); // Spigot
|
||||||
+
|
|
||||||
// CraftBukkit start - whole method
|
// CraftBukkit start - whole method
|
||||||
this.c.info(this.player.getName() + " issued server command: " + s);
|
this.c.info(this.player.getName() + " issued server command: " + s);
|
||||||
|
|
||||||
|
@ -417,8 +416,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
|
|
||||||
+ public CustomTimingsHandler tickTimer = org.bukkit.craftbukkit.SpigotTimings.getTileEntityTimings(this); // Spigot
|
+ public CustomTimingsHandler tickTimer = org.bukkit.craftbukkit.SpigotTimings.getTileEntityTimings(this); // Spigot
|
||||||
private static final Logger a = LogManager.getLogger();
|
private static final Logger a = LogManager.getLogger();
|
||||||
private static Map f = Maps.newHashMap();
|
private static Map<String, Class<? extends TileEntity>> f = Maps.newHashMap();
|
||||||
private static Map g = 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
|
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/World.java
|
--- a/src/main/java/net/minecraft/server/World.java
|
||||||
|
@ -441,10 +440,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
return this.world;
|
return this.world;
|
||||||
}
|
}
|
||||||
@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
|
@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
|
||||||
this.M.a(new WorldBorderListener(((WorldServer) this).getServer().getHandle())); // CraftBukkit
|
});
|
||||||
|
this.getServer().addWorld(this.world);
|
||||||
this.getServer().addWorld(this.world); // CraftBukkit
|
// CraftBukkit end
|
||||||
+ timings = new SpigotTimings.WorldTimingsHandler(this); // Spigot - code below can generate new world and access timings
|
+ timings = new SpigotTimings.WorldTimingsHandler(this); // Spigot - code below can generate new world and access timings
|
||||||
}
|
}
|
||||||
|
|
||||||
public World b() {
|
public World b() {
|
||||||
|
@ -473,12 +472,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ timings.entityTick.stopTiming(); // Spigot
|
+ timings.entityTick.stopTiming(); // Spigot
|
||||||
this.methodProfiler.c("blockEntities");
|
this.methodProfiler.c("blockEntities");
|
||||||
+ timings.tileEntityTick.startTiming(); // Spigot
|
+ timings.tileEntityTick.startTiming(); // Spigot
|
||||||
this.L = true;
|
this.M = true;
|
||||||
// CraftBukkit start - From below, clean up tile entities before ticking them
|
// CraftBukkit start - From below, clean up tile entities before ticking them
|
||||||
if (!this.b.isEmpty()) {
|
if (!this.c.isEmpty()) {
|
||||||
@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
|
@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
|
||||||
|
|
||||||
if (this.isLoaded(blockposition) && this.M.a(blockposition)) {
|
if (this.isLoaded(blockposition) && this.N.a(blockposition)) {
|
||||||
try {
|
try {
|
||||||
+ tileentity.tickTimer.startTiming(); // Spigot
|
+ tileentity.tickTimer.startTiming(); // Spigot
|
||||||
((IUpdatePlayerListBox) tileentity).c();
|
((IUpdatePlayerListBox) tileentity).c();
|
||||||
|
@ -502,11 +501,11 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
|
|
||||||
+ timings.tileEntityTick.stopTiming(); // Spigot
|
+ timings.tileEntityTick.stopTiming(); // Spigot
|
||||||
+ timings.tileEntityPending.startTiming(); // Spigot
|
+ timings.tileEntityPending.startTiming(); // Spigot
|
||||||
this.L = false;
|
this.M = false;
|
||||||
/* CraftBukkit start - Moved up
|
/* CraftBukkit start - Moved up
|
||||||
if (!this.b.isEmpty()) {
|
if (!this.c.isEmpty()) {
|
||||||
@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
|
@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
|
||||||
this.a.clear();
|
this.b.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
+ timings.tileEntityPending.stopTiming(); // Spigot
|
+ timings.tileEntityPending.stopTiming(); // Spigot
|
||||||
|
@ -577,12 +576,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
this.methodProfiler.b();
|
this.methodProfiler.b();
|
||||||
+ timings.doSounds.startTiming(); // Spigot
|
+ timings.doSounds.startTiming(); // Spigot
|
||||||
this.ak();
|
this.ak();
|
||||||
|
|
||||||
this.getWorld().processChunkGC(); // CraftBukkit
|
this.getWorld().processChunkGC(); // CraftBukkit
|
||||||
+ timings.doChunkGC.stopTiming(); // Spigot
|
+ 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
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||||
|
|
|
@ -14,7 +14,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
@@ -0,0 +0,0 @@ public class Chunk {
|
@@ -0,0 +0,0 @@ public class Chunk {
|
||||||
private long u;
|
private long u;
|
||||||
private int v;
|
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
|
+ 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
|
// CraftBukkit start - Neighbor loaded cache for chunk lighting and entity ticking
|
||||||
|
@ -140,7 +140,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ continue label115;
|
+ continue label115;
|
||||||
+ }
|
+ }
|
||||||
+ // Spigot end
|
+ // Spigot end
|
||||||
if (l2 >= entityinsentient.bU()) {
|
if (l2 >= entityinsentient.bV()) {
|
||||||
continue label115;
|
continue label115;
|
||||||
}
|
}
|
||||||
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
|
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
|
||||||
|
|
|
@ -15,17 +15,17 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
@@ -0,0 +0,0 @@ public abstract class Entity implements ICommandListener {
|
@@ -0,0 +0,0 @@ public abstract class Entity implements ICommandListener {
|
||||||
public int ticksLived;
|
public int ticksLived;
|
||||||
public int maxFireTicks;
|
public int maxFireTicks;
|
||||||
public int fireTicks;
|
public int fireTicks; // CraftBukkit - public
|
||||||
- protected boolean inWater;
|
- protected boolean inWater;
|
||||||
+ public boolean inWater; // Spigot - protected -> public
|
+ public boolean inWater; // Spigot - protected -> public
|
||||||
public int noDamageTicks;
|
public int noDamageTicks;
|
||||||
protected boolean justCreated;
|
protected boolean justCreated;
|
||||||
protected boolean fireProof;
|
protected boolean fireProof;
|
||||||
protected DataWatcher datawatcher;
|
protected DataWatcher datawatcher;
|
||||||
private double ap;
|
private double ar;
|
||||||
private double aq;
|
private double as;
|
||||||
- public boolean ad;
|
- 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 ae;
|
||||||
public int af;
|
public int af;
|
||||||
public int ag;
|
public int ag;
|
||||||
|
@ -61,7 +61,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
--- a/src/main/java/net/minecraft/server/EntityAgeable.java
|
--- a/src/main/java/net/minecraft/server/EntityAgeable.java
|
||||||
+++ b/src/main/java/net/minecraft/server/EntityAgeable.java
|
+++ b/src/main/java/net/minecraft/server/EntityAgeable.java
|
||||||
@@ -0,0 +0,0 @@ public abstract class EntityAgeable extends EntityCreature {
|
@@ -0,0 +0,0 @@ public abstract class EntityAgeable extends EntityCreature {
|
||||||
private float bl;
|
private float bn;
|
||||||
public boolean ageLocked = false; // CraftBukkit
|
public boolean ageLocked = false; // CraftBukkit
|
||||||
|
|
||||||
+ // Spigot start
|
+ // Spigot start
|
||||||
|
@ -69,7 +69,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ public void inactiveTick()
|
+ public void inactiveTick()
|
||||||
+ {
|
+ {
|
||||||
+ super.inactiveTick();
|
+ super.inactiveTick();
|
||||||
+ if ( this.world.isStatic || this.ageLocked )
|
+ if ( this.world.isClientSide || this.ageLocked )
|
||||||
+ { // CraftBukkit
|
+ { // CraftBukkit
|
||||||
+ this.a( this.isBaby() );
|
+ this.a( this.isBaby() );
|
||||||
+ } else
|
+ } else
|
||||||
|
@ -107,7 +107,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
public Entity shooter;
|
public Entity shooter;
|
||||||
@@ -0,0 +0,0 @@ public class EntityArrow extends Entity implements IProjectile {
|
@@ -0,0 +0,0 @@ public class EntityArrow extends Entity implements IProjectile {
|
||||||
private double damage = 2.0D;
|
private double damage = 2.0D;
|
||||||
public int knockbackStrength;
|
public int knockbackStrength; // CraftBukkit - public
|
||||||
|
|
||||||
+ // Spigot Start
|
+ // Spigot Start
|
||||||
+ @Override
|
+ @Override
|
||||||
|
@ -115,7 +115,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ {
|
+ {
|
||||||
+ if ( this.inGround )
|
+ if ( this.inGround )
|
||||||
+ {
|
+ {
|
||||||
+ this.ap += 1; // Despawn counter. First int after shooter
|
+ this.ar += 1; // Despawn counter. First int after shooter
|
||||||
+ }
|
+ }
|
||||||
+ super.inactiveTick();
|
+ super.inactiveTick();
|
||||||
+ }
|
+ }
|
||||||
|
@ -130,7 +130,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+++ b/src/main/java/net/minecraft/server/EntityFireworks.java
|
+++ b/src/main/java/net/minecraft/server/EntityFireworks.java
|
||||||
@@ -0,0 +0,0 @@ public class EntityFireworks extends Entity {
|
@@ -0,0 +0,0 @@ public class EntityFireworks extends Entity {
|
||||||
private int ticksFlown;
|
private int ticksFlown;
|
||||||
public int expectedLifespan;
|
public int expectedLifespan; // CraftBukkit - public
|
||||||
|
|
||||||
+ // Spigot Start
|
+ // Spigot Start
|
||||||
+ @Override
|
+ @Override
|
||||||
|
@ -143,7 +143,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+
|
+
|
||||||
public EntityFireworks(World world) {
|
public EntityFireworks(World world) {
|
||||||
super(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
|
diff --git a/src/main/java/net/minecraft/server/EntityItem.java b/src/main/java/net/minecraft/server/EntityItem.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/EntityItem.java
|
--- a/src/main/java/net/minecraft/server/EntityItem.java
|
||||||
|
@ -162,7 +162,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ this.lastTick = MinecraftServer.currentTick;
|
+ this.lastTick = MinecraftServer.currentTick;
|
||||||
+ // CraftBukkit end
|
+ // 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
|
+ // CraftBukkit start - fire ItemDespawnEvent
|
||||||
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callItemDespawnEvent(this).isCancelled()) {
|
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callItemDespawnEvent(this).isCancelled()) {
|
||||||
+ this.age = 0;
|
+ this.age = 0;
|
||||||
|
@ -189,7 +189,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ public void inactiveTick()
|
+ public void inactiveTick()
|
||||||
+ {
|
+ {
|
||||||
+ super.inactiveTick();
|
+ super.inactiveTick();
|
||||||
+ ++this.aO; // Above all the floats
|
+ ++this.ticksFarFromPlayer; // Above all the floats
|
||||||
+ }
|
+ }
|
||||||
+ // Spigot end
|
+ // Spigot end
|
||||||
|
|
||||||
|
|
|
@ -42,8 +42,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
public void damage(int i, EntityLiving entityliving) {
|
public void damage(int i, EntityLiving entityliving) {
|
||||||
if (!(entityliving instanceof EntityHuman) || !((EntityHuman) entityliving).abilities.canInstantlyBuild) {
|
if (!(entityliving instanceof EntityHuman) || !((EntityHuman) entityliving).abilities.canInstantlyBuild) {
|
||||||
if (this.e()) {
|
if (this.e()) {
|
||||||
- if (this.isDamaged(i, entityliving.bb())) {
|
- if (this.isDamaged(i, entityliving.bc())) {
|
||||||
+ if (this.isDamaged(i, entityliving.bb(), entityliving)) { // Spigot
|
+ if (this.isDamaged(i, entityliving.bc(), entityliving)) { // Spigot
|
||||||
entityliving.b(this);
|
entityliving.b(this);
|
||||||
--this.count;
|
--this.count;
|
||||||
if (entityliving instanceof EntityHuman) {
|
if (entityliving instanceof EntityHuman) {
|
||||||
|
|
|
@ -17,12 +17,51 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+++ b/src/main/java/net/minecraft/server/EntityTracker.java
|
+++ b/src/main/java/net/minecraft/server/EntityTracker.java
|
||||||
@@ -0,0 +0,0 @@ public class EntityTracker {
|
@@ -0,0 +0,0 @@ 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
|
org.spigotmc.AsyncCatcher.catchOp( "entity track"); // Spigot
|
||||||
+ i = org.spigotmc.TrackingRange.getEntityTrackingRange(entity, i); // Spigot
|
+ i = org.spigotmc.TrackingRange.getEntityTrackingRange(entity, i); // Spigot
|
||||||
if (i > this.e) {
|
if (i > this.e) {
|
||||||
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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/org/spigotmc/ActivationRange.java
|
||||||
|
+++ b/src/main/java/org/spigotmc/ActivationRange.java
|
||||||
|
@@ -0,0 +0,0 @@ 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;
|
||||||
|
@@ -0,0 +0,0 @@ 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;
|
||||||
|
}
|
||||||
|
@@ -0,0 +0,0 @@ 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
|
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
|
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
|
||||||
|
|
|
@ -12,8 +12,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
|
|
||||||
public class RegionFileCache {
|
public class RegionFileCache {
|
||||||
|
|
||||||
- private static final Map a = Maps.newHashMap();
|
- private static final Map<File, RegionFile> a = Maps.newHashMap();
|
||||||
+ public static final Map a = Maps.newHashMap(); // Spigot - private -> public
|
+ public static final Map<File, RegionFile> a = Maps.newHashMap(); // Spigot - private -> public
|
||||||
|
|
||||||
public static synchronized RegionFile a(File file, int i, int j) {
|
public static synchronized RegionFile a(File file, int i, int j) {
|
||||||
File file1 = new File(file, "region");
|
File file1 = new File(file, "region");
|
||||||
|
|
|
@ -11,7 +11,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+++ b/src/main/java/net/minecraft/server/IRecipe.java
|
+++ b/src/main/java/net/minecraft/server/IRecipe.java
|
||||||
@@ -0,0 +0,0 @@ public interface IRecipe {
|
@@ -0,0 +0,0 @@ public interface IRecipe {
|
||||||
ItemStack[] b(InventoryCrafting inventorycrafting);
|
ItemStack[] b(InventoryCrafting inventorycrafting);
|
||||||
|
|
||||||
org.bukkit.inventory.Recipe toBukkitRecipe(); // CraftBukkit
|
org.bukkit.inventory.Recipe toBukkitRecipe(); // CraftBukkit
|
||||||
+
|
+
|
||||||
+ java.util.List<ItemStack> getIngredients(); // Spigot
|
+ java.util.List<ItemStack> getIngredients(); // Spigot
|
||||||
|
@ -30,8 +30,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
|
|
||||||
public ShapedRecipes(int i, int j, ItemStack[] aitemstack, ItemStack itemstack) {
|
public ShapedRecipes(int i, int j, ItemStack[] aitemstack, ItemStack itemstack) {
|
||||||
@@ -0,0 +0,0 @@ public class ShapedRecipes implements IRecipe {
|
@@ -0,0 +0,0 @@ public class ShapedRecipes implements IRecipe {
|
||||||
this.e = true;
|
public int a() {
|
||||||
return this;
|
return this.width * this.height;
|
||||||
}
|
}
|
||||||
+
|
+
|
||||||
+ // Spigot start
|
+ // Spigot start
|
||||||
|
@ -51,9 +51,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
|
|
||||||
- private final ItemStack result;
|
- private final ItemStack result;
|
||||||
+ public final ItemStack result; // Spigot
|
+ 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) {
|
||||||
@@ -0,0 +0,0 @@ public class ShapelessRecipes implements IRecipe {
|
@@ -0,0 +0,0 @@ public class ShapelessRecipes implements IRecipe {
|
||||||
public int a() {
|
public int a() {
|
||||||
return this.ingredients.size();
|
return this.ingredients.size();
|
||||||
|
|
|
@ -31,7 +31,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
return false;
|
return false;
|
||||||
@@ -0,0 +0,0 @@ public class TileEntityHopper extends TileEntityContainer implements IHopper, IU
|
@@ -0,0 +0,0 @@ public class TileEntityHopper extends TileEntityContainer implements IHopper, IU
|
||||||
// ItemStack itemstack1 = addItem(iinventory, this.splitStack(i, 1), enumdirection);
|
// ItemStack itemstack1 = addItem(iinventory, this.splitStack(i, 1), enumdirection);
|
||||||
|
|
||||||
// CraftBukkit start - Call event when pushing items into other inventories
|
// 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, 1));
|
||||||
+ CraftItemStack oitemstack = CraftItemStack.asCraftMirror(this.splitStack(i, world.spigotConfig.hopperAmount)); // Spigot
|
+ CraftItemStack oitemstack = CraftItemStack.asCraftMirror(this.splitStack(i, world.spigotConfig.hopperAmount)); // Spigot
|
||||||
|
@ -75,10 +75,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
- ((TileEntityHopper) ihopper).d(8); // Delay hopper checks
|
- ((TileEntityHopper) ihopper).d(8); // Delay hopper checks
|
||||||
+ ((TileEntityHopper) ihopper).d(ihopper.getWorld().spigotConfig.hopperTransfer); // Spigot
|
+ ((TileEntityHopper) ihopper).d(ihopper.getWorld().spigotConfig.hopperTransfer); // Spigot
|
||||||
} else if (ihopper instanceof EntityMinecartHopper) {
|
} else if (ihopper instanceof EntityMinecartHopper) {
|
||||||
- ((EntityMinecartHopper) ihopper).l(4); // Delay hopper minecart checks
|
- ((EntityMinecartHopper) ihopper).m(4); // Delay hopper minecart checks
|
||||||
+ ((EntityMinecartHopper) ihopper).l(ihopper.getWorld().spigotConfig.hopperTransfer / 2); // Spigot
|
+ ((EntityMinecartHopper) ihopper).m(ihopper.getWorld().spigotConfig.hopperTransfer / 2); // Spigot
|
||||||
}
|
}
|
||||||
|
-
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
+ int origCount = event.getItem().getAmount(); // Spigot
|
+ int origCount = event.getItem().getAmount(); // Spigot
|
||||||
|
|
|
@ -49,9 +49,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
entity.world.addEntity(entity2, CreatureSpawnEvent.SpawnReason.SPAWNER); // CraftBukkit
|
entity.world.addEntity(entity2, CreatureSpawnEvent.SpawnReason.SPAWNER); // CraftBukkit
|
||||||
}
|
}
|
||||||
@@ -0,0 +0,0 @@ public abstract class MobSpawnerAbstract {
|
@@ -0,0 +0,0 @@ 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
|
- entity.world.addEntity(entity, CreatureSpawnEvent.SpawnReason.SPAWNER); // CraftBukkit
|
||||||
+ // Spigot start - call SpawnerSpawnEvent, abort if cancelled
|
+ // Spigot start - call SpawnerSpawnEvent, abort if cancelled
|
||||||
+ SpawnerSpawnEvent event = CraftEventFactory.callSpawnerSpawnEvent(entity, this.b().getX(), this.b().getY(), this.b().getZ());
|
+ SpawnerSpawnEvent event = CraftEventFactory.callSpawnerSpawnEvent(entity, this.b().getX(), this.b().getY(), this.b().getZ());
|
||||||
|
|
|
@ -9,8 +9,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
|
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
|
||||||
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
|
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
|
||||||
@@ -0,0 +0,0 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
|
@@ -0,0 +0,0 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
|
||||||
|
private void handleCommand(String s) {
|
||||||
org.bukkit.craftbukkit.SpigotTimings.playerCommandTimer.startTiming(); // Spigot
|
org.bukkit.craftbukkit.SpigotTimings.playerCommandTimer.startTiming(); // Spigot
|
||||||
|
|
||||||
// CraftBukkit start - whole method
|
// CraftBukkit start - whole method
|
||||||
+ if ( org.spigotmc.SpigotConfig.logCommands ) // Spigot
|
+ if ( org.spigotmc.SpigotConfig.logCommands ) // Spigot
|
||||||
this.c.info(this.player.getName() + " issued server command: " + s);
|
this.c.info(this.player.getName() + " issued server command: " + s);
|
||||||
|
|
|
@ -12,13 +12,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
|
|
||||||
if (packethandshakinginsetprotocol.b() > 47) {
|
if (packethandshakinginsetprotocol.b() > 47) {
|
||||||
- chatcomponenttext = new ChatComponentText("Outdated server! I\'m still on 1.8");
|
- 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" ) ); // Spigot
|
+ chatcomponenttext = new ChatComponentText( java.text.MessageFormat.format( org.spigotmc.SpigotConfig.outdatedServerMessage, "1.8.3" ) ); // Spigot
|
||||||
this.b.handle(new PacketLoginOutDisconnect(chatcomponenttext));
|
this.b.handle(new PacketLoginOutDisconnect(chatcomponenttext));
|
||||||
this.b.close(chatcomponenttext);
|
this.b.close(chatcomponenttext);
|
||||||
} else if (packethandshakinginsetprotocol.b() < 47) {
|
} else if (packethandshakinginsetprotocol.b() < 47) {
|
||||||
- chatcomponenttext = new ChatComponentText("Outdated client! Please use 1.8");
|
- chatcomponenttext = new ChatComponentText("Outdated client! Please use 1.8.3");
|
||||||
+ chatcomponenttext = new ChatComponentText(java.text.MessageFormat.format( org.spigotmc.SpigotConfig.outdatedClientMessage, "1.8" ) ); // Spigot
|
+ chatcomponenttext = new ChatComponentText( java.text.MessageFormat.format( org.spigotmc.SpigotConfig.outdatedClientMessage, "1.8.3" ) ); // Spigot
|
||||||
this.b.handle(new PacketLoginOutDisconnect(chatcomponenttext));
|
this.b.handle(new PacketLoginOutDisconnect(chatcomponenttext));
|
||||||
this.b.close(chatcomponenttext);
|
this.b.close(chatcomponenttext);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -12,8 +12,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
|
|
||||||
public class BlockRedstoneTorch extends BlockTorch {
|
public class BlockRedstoneTorch extends BlockTorch {
|
||||||
|
|
||||||
- private static Map b = Maps.newHashMap();
|
- private static Map<World, List<BlockRedstoneTorch.RedstoneUpdateInfo>> b = Maps.newHashMap();
|
||||||
+ private static Map b = new java.util.WeakHashMap(); // Spigot
|
+ private static Map<World, List<BlockRedstoneTorch.RedstoneUpdateInfo>> b = new java.util.WeakHashMap(); // Spigot
|
||||||
private final boolean isOn;
|
private final boolean isOn;
|
||||||
|
|
||||||
private boolean a(World world, BlockPosition blockposition, boolean flag) {
|
private boolean a(World world, BlockPosition blockposition, boolean flag) {
|
||||||
|
|
|
@ -29,14 +29,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
--- a/src/main/java/net/minecraft/server/EntityLiving.java
|
--- a/src/main/java/net/minecraft/server/EntityLiving.java
|
||||||
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
|
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
|
||||||
@@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity {
|
@@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity {
|
||||||
protected void bK() {
|
}
|
||||||
List list = this.world.getEntities(this, this.getBoundingBox().grow(0.20000000298023224D, 0.0D, 0.20000000298023224D));
|
}));
|
||||||
|
|
||||||
- if (list != null && !list.isEmpty()) {
|
- if (!list.isEmpty()) {
|
||||||
+ if (this.ad() && list != null && !list.isEmpty()) { // Spigot: Add this.ad() condition
|
+ if (this.ad() && !list.isEmpty()) { // Spigot: Add this.ad() condition
|
||||||
for (int i = 0; i < list.size(); ++i) {
|
for (int i = 0; i < list.size(); ++i) {
|
||||||
Entity entity = (Entity) list.get(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
|
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
|
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||||
|
|
|
@ -8,18 +8,18 @@ diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
|
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
|
||||||
this.g[this.ticks % 100] = System.nanoTime() - i;
|
this.h[this.ticks % 100] = System.nanoTime() - i;
|
||||||
this.methodProfiler.b();
|
this.methodProfiler.b();
|
||||||
this.methodProfiler.a("snooper");
|
this.methodProfiler.a("snooper");
|
||||||
- if (!this.m.d() && this.ticks > 100) {
|
- if (!this.n.d() && this.ticks > 100) {
|
||||||
+ if (getSnooperEnabled() && !this.m.d() && this.ticks > 100) { // Spigot
|
+ if (getSnooperEnabled() && !this.n.d() && this.ticks > 100) { // Spigot
|
||||||
this.m.a();
|
this.n.a();
|
||||||
}
|
}
|
||||||
|
|
||||||
- if (this.ticks % 6000 == 0) {
|
- if (this.ticks % 6000 == 0) {
|
||||||
+ if (getSnooperEnabled() && this.ticks % 6000 == 0) { // Spigot
|
+ if (getSnooperEnabled() && this.ticks % 6000 == 0) { // Spigot
|
||||||
this.m.b();
|
this.n.b();
|
||||||
}
|
}
|
||||||
|
|
||||||
--
|
--
|
|
@ -9,11 +9,11 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
--- a/src/main/java/net/minecraft/server/EntityItem.java
|
--- a/src/main/java/net/minecraft/server/EntityItem.java
|
||||||
+++ b/src/main/java/net/minecraft/server/EntityItem.java
|
+++ b/src/main/java/net/minecraft/server/EntityItem.java
|
||||||
@@ -0,0 +0,0 @@ public class EntityItem extends Entity {
|
@@ -0,0 +0,0 @@ public class EntityItem extends Entity {
|
||||||
// Craftbukkit end */
|
|
||||||
|
|
||||||
this.W();
|
this.W();
|
||||||
- if (!this.world.isStatic && this.age >= 6000) {
|
- if (!this.world.isClientSide && this.age >= 6000) {
|
||||||
+ if (!this.world.isStatic && this.age >= world.spigotConfig.itemDespawnRate) { // Spigot
|
+ if (!this.world.isClientSide && this.age >= world.spigotConfig.itemDespawnRate) { // Spigot
|
||||||
// CraftBukkit start - fire ItemDespawnEvent
|
// CraftBukkit start - fire ItemDespawnEvent
|
||||||
if (org.bukkit.craftbukkit.event.CraftEventFactory.callItemDespawnEvent(this).isCancelled()) {
|
if (org.bukkit.craftbukkit.event.CraftEventFactory.callItemDespawnEvent(this).isCancelled()) {
|
||||||
this.age = 0;
|
this.age = 0;
|
||||||
|
|
|
@ -11,12 +11,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
@@ -0,0 +0,0 @@ public class EntityArrow extends Entity implements IProjectile {
|
@@ -0,0 +0,0 @@ public class EntityArrow extends Entity implements IProjectile {
|
||||||
|
|
||||||
if (block == this.g && i == this.h) {
|
if (block == this.g && i == this.h) {
|
||||||
++this.ap;
|
++this.ar;
|
||||||
- if (this.ap >= 1200) {
|
- if (this.ar >= 1200) {
|
||||||
+ if (this.ap >= world.spigotConfig.arrowDespawnRate) { // Spigot - First int after shooter
|
+ if (this.ar >= world.spigotConfig.arrowDespawnRate) { // Spigot - First int after shooter
|
||||||
this.die();
|
this.die();
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
|
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
|
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
|
||||||
|
|
|
@ -12,14 +12,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
Block block = world.getType(blockposition.a(i1, k, j1)).getBlock();
|
Block block = world.getType(blockposition.a(i1, k, j1)).getBlock();
|
||||||
|
|
||||||
if (block.getMaterial() == Material.AIR || block == Blocks.DIRT || block == Blocks.SNOW || block == Blocks.ICE) {
|
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
|
+ world.setTypeUpdate(blockposition.a(i1, k, j1), Blocks.PACKED_ICE.getBlockData()); // Spigot
|
||||||
}
|
}
|
||||||
|
|
||||||
if (k != 0 && l > 1) {
|
if (k != 0 && l > 1) {
|
||||||
block = world.getType(blockposition.a(i1, -k, j1)).getBlock();
|
block = world.getType(blockposition.a(i1, -k, j1)).getBlock();
|
||||||
if (block.getMaterial() == Material.AIR || block == Blocks.DIRT || block == Blocks.SNOW || block == Blocks.ICE) {
|
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
|
+ world.setTypeUpdate(blockposition.a(i1, -k, j1), Blocks.PACKED_ICE.getBlockData()); // Spigot
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
Block block1 = world.getType(blockposition1).getBlock();
|
Block block1 = world.getType(blockposition1).getBlock();
|
||||||
|
|
||||||
if (block1.getMaterial() == Material.AIR || block1 == Blocks.DIRT || block1 == Blocks.SNOW || block1 == Blocks.ICE || block1 == Blocks.PACKED_ICE) {
|
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
|
+ world.setTypeUpdate(blockposition1, Blocks.PACKED_ICE.getBlockData()); // Spigot
|
||||||
blockposition1 = blockposition1.down();
|
blockposition1 = blockposition1.down();
|
||||||
--l1;
|
--l1;
|
||||||
|
|
|
@ -12,24 +12,24 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
}
|
}
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
|
|
||||||
- if (this.aQ() > 0L) {
|
- if (this.aR() > 0L) {
|
||||||
+ if (false && this.aQ() > 0L) { // Spigot - disable
|
+ if (false && this.aR() > 0L) { // Spigot - disable
|
||||||
Thread thread = new Thread(new ThreadWatchdog(this));
|
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
|
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
|
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
|
||||||
this.a(crashreport);
|
this.a(crashreport);
|
||||||
} finally {
|
} finally {
|
||||||
try {
|
try {
|
||||||
+ org.spigotmc.WatchdogThread.doStop();
|
+ org.spigotmc.WatchdogThread.doStop();
|
||||||
this.stop();
|
|
||||||
this.isStopped = true;
|
this.isStopped = true;
|
||||||
|
this.stop();
|
||||||
} catch (Throwable throwable1) {
|
} catch (Throwable throwable1) {
|
||||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
|
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
|
||||||
|
|
||||||
this.methodProfiler.b();
|
this.methodProfiler.b();
|
||||||
this.methodProfiler.b();
|
this.methodProfiler.b();
|
||||||
|
@ -39,7 +39,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
}
|
}
|
||||||
diff --git a/src/main/java/org/spigotmc/RestartCommand.java b/src/main/java/org/spigotmc/RestartCommand.java
|
diff --git a/src/main/java/org/spigotmc/RestartCommand.java b/src/main/java/org/spigotmc/RestartCommand.java
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
|
index 0000000000000000000000000000000000000000..00000000000000000000000000000000000000000
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/main/java/org/spigotmc/RestartCommand.java
|
+++ b/src/main/java/org/spigotmc/RestartCommand.java
|
||||||
@@ -0,0 +0,0 @@
|
@@ -0,0 +0,0 @@
|
||||||
|
|
|
@ -8,17 +8,15 @@ diff --git a/src/main/java/net/minecraft/server/PacketPlayInChat.java b/src/main
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/PacketPlayInChat.java
|
--- a/src/main/java/net/minecraft/server/PacketPlayInChat.java
|
||||||
+++ b/src/main/java/net/minecraft/server/PacketPlayInChat.java
|
+++ b/src/main/java/net/minecraft/server/PacketPlayInChat.java
|
||||||
@@ -0,0 +0,0 @@ public class PacketPlayInChat implements Packet {
|
@@ -0,0 +0,0 @@ public class PacketPlayInChat implements Packet<PacketListenerPlayIn> {
|
||||||
return this.a;
|
packetdataserializer.a(this.a);
|
||||||
}
|
}
|
||||||
|
|
||||||
- public void a(PacketListener packetlistener) {
|
- public void a(PacketListenerPlayIn packetlistenerplayin) {
|
||||||
+ // Spigot Start
|
+ // Spigot Start
|
||||||
+ private static final java.util.concurrent.ExecutorService executors = java.util.concurrent.Executors.newCachedThreadPool(
|
+ 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() );
|
+ new com.google.common.util.concurrent.ThreadFactoryBuilder().setDaemon( true ).setNameFormat( "Async Chat Thread - #%d" ).build() );
|
||||||
+ @Override
|
+ public void a(final PacketListenerPlayIn packetlistenerplayin) {
|
||||||
+ public void a(final PacketListener packetlistener)
|
|
||||||
+ {
|
|
||||||
+ if ( !a.startsWith("/") )
|
+ if ( !a.startsWith("/") )
|
||||||
+ {
|
+ {
|
||||||
+ executors.submit( new Runnable()
|
+ executors.submit( new Runnable()
|
||||||
|
@ -27,13 +25,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public void run()
|
+ public void run()
|
||||||
+ {
|
+ {
|
||||||
+ PacketPlayInChat.this.a( (PacketListenerPlayIn) packetlistener );
|
+ packetlistenerplayin.a( PacketPlayInChat.this );
|
||||||
+ }
|
+ }
|
||||||
+ } );
|
+ } );
|
||||||
+ return;
|
+ return;
|
||||||
+ }
|
+ }
|
||||||
+ // Spigot End
|
+ // Spigot End
|
||||||
this.a((PacketListenerPlayIn) packetlistener);
|
packetlistenerplayin.a(this);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
--
|
--
|
|
@ -13,17 +13,17 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
if (this.world.getType(blockposition).getBlock() == block && !CraftEventFactory.callEntityChangeBlockEvent(this, blockposition.getX(), blockposition.getY(), blockposition.getZ(), Blocks.AIR, 0).isCancelled()) {
|
if (this.world.getType(blockposition).getBlock() == block && !CraftEventFactory.callEntityChangeBlockEvent(this, blockposition.getX(), blockposition.getY(), blockposition.getZ(), Blocks.AIR, 0).isCancelled()) {
|
||||||
this.world.setAir(blockposition);
|
this.world.setAir(blockposition);
|
||||||
+ world.spigotConfig.antiXrayInstance.updateNearbyBlocks(world, blockposition); // Spigot
|
+ world.spigotConfig.antiXrayInstance.updateNearbyBlocks(world, blockposition); // Spigot
|
||||||
} else if (!this.world.isStatic) {
|
} else if (!this.world.isClientSide) {
|
||||||
this.die();
|
this.die();
|
||||||
return;
|
return;
|
||||||
@@ -0,0 +0,0 @@ public class EntityFallingBlock extends Entity {
|
@@ -0,0 +0,0 @@ public class EntityFallingBlock extends Entity {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.world.setTypeAndData(blockposition, this.block, 3);
|
this.world.setTypeAndData(blockposition, this.block, 3);
|
||||||
+ world.spigotConfig.antiXrayInstance.updateNearbyBlocks(world, blockposition); // Spigot
|
+ world.spigotConfig.antiXrayInstance.updateNearbyBlocks(world, blockposition); // Spigot
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
if (block instanceof BlockFalling) {
|
if (block instanceof BlockFalling) {
|
||||||
((BlockFalling) block).a_(this.world, blockposition);
|
((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
|
diff --git a/src/main/java/net/minecraft/server/Explosion.java b/src/main/java/net/minecraft/server/Explosion.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/Explosion.java
|
--- a/src/main/java/net/minecraft/server/Explosion.java
|
||||||
|
@ -40,37 +40,37 @@ diff --git a/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java b/src
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java
|
--- a/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java
|
||||||
+++ b/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java
|
+++ b/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java
|
||||||
@@ -0,0 +0,0 @@ public class PacketPlayOutMapChunk implements Packet {
|
@@ -0,0 +0,0 @@ public class PacketPlayOutMapChunk implements Packet<PacketListenerPlayOut> {
|
||||||
this.b = chunk.locZ;
|
this.b = chunk.locZ;
|
||||||
this.d = flag;
|
this.d = flag;
|
||||||
this.c = a(chunk, flag, !chunk.getWorld().worldProvider.o(), i);
|
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);
|
+ 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
|
diff --git a/src/main/java/net/minecraft/server/PacketPlayOutMapChunkBulk.java b/src/main/java/net/minecraft/server/PacketPlayOutMapChunkBulk.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/PacketPlayOutMapChunkBulk.java
|
--- a/src/main/java/net/minecraft/server/PacketPlayOutMapChunkBulk.java
|
||||||
+++ b/src/main/java/net/minecraft/server/PacketPlayOutMapChunkBulk.java
|
+++ b/src/main/java/net/minecraft/server/PacketPlayOutMapChunkBulk.java
|
||||||
@@ -0,0 +0,0 @@ public class PacketPlayOutMapChunkBulk implements Packet {
|
@@ -0,0 +0,0 @@ public class PacketPlayOutMapChunkBulk implements Packet<PacketListenerPlayOut>
|
||||||
private int[] b;
|
private int[] b;
|
||||||
private ChunkMap[] c;
|
private PacketPlayOutMapChunk.ChunkMap[] c;
|
||||||
private boolean d;
|
private boolean d;
|
||||||
+ private World world; // Spigot
|
+ private World world; // Spigot
|
||||||
|
|
||||||
public PacketPlayOutMapChunkBulk() {}
|
public PacketPlayOutMapChunkBulk() {}
|
||||||
|
|
||||||
@@ -0,0 +0,0 @@ public class PacketPlayOutMapChunkBulk implements Packet {
|
@@ -0,0 +0,0 @@ public class PacketPlayOutMapChunkBulk implements Packet<PacketListenerPlayOut>
|
||||||
this.b[j] = chunk.locZ;
|
this.b[j] = chunk.locZ;
|
||||||
this.c[j] = chunkmap;
|
this.c[j] = packetplayoutmapchunk_chunkmap;
|
||||||
}
|
}
|
||||||
-
|
-
|
||||||
+
|
+
|
||||||
+ world = ((Chunk) list.get(0)).getWorld(); // Spigot
|
+ world = ((Chunk) list.get(0)).getWorld(); // Spigot
|
||||||
}
|
}
|
||||||
|
|
||||||
public void a(PacketDataSerializer packetdataserializer) {
|
public void a(PacketDataSerializer packetdataserializer) throws IOException {
|
||||||
@@ -0,0 +0,0 @@ public class PacketPlayOutMapChunkBulk implements Packet {
|
@@ -0,0 +0,0 @@ public class PacketPlayOutMapChunkBulk implements Packet<PacketListenerPlayOut>
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < this.a.length; ++i) {
|
for (i = 0; i < this.a.length; ++i) {
|
||||||
|
|
|
@ -13,14 +13,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
|
|
||||||
private final Entity a;
|
private final Entity a;
|
||||||
private boolean b = true;
|
private boolean b = true;
|
||||||
- private static final Map c = Maps.newHashMap();
|
- private static final Map<Class<?>, Integer> c = Maps.newHashMap();
|
||||||
- private final Map d = Maps.newHashMap();
|
- private final Map<Integer, DataWatcher.WatchableObject> d = Maps.newHashMap();
|
||||||
+ // Spigot Start
|
+ // Spigot Start
|
||||||
+ private static final gnu.trove.map.TObjectIntMap classToId = new gnu.trove.map.hash.TObjectIntHashMap( 10, 0.5f, -1 );
|
+ 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 );
|
+ 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
|
+ // These exist as an attempt at backwards compatability for (broken) NMS plugins
|
||||||
+ private static final Map c = gnu.trove.TDecorators.wrap( classToId );
|
+ private static final Map<Class<?>, Integer> c = gnu.trove.TDecorators.wrap( classToId );
|
||||||
+ private final Map d = gnu.trove.TDecorators.wrap( dataValues );
|
+ private final Map<Integer, DataWatcher.WatchableObject> d = gnu.trove.TDecorators.wrap( dataValues );
|
||||||
+ // Spigot End
|
+ // Spigot End
|
||||||
private boolean e;
|
private boolean e;
|
||||||
private ReadWriteLock f = new ReentrantReadWriteLock();
|
private ReadWriteLock f = new ReentrantReadWriteLock();
|
||||||
|
@ -28,43 +28,43 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
@@ -0,0 +0,0 @@ public class DataWatcher {
|
@@ -0,0 +0,0 @@ public class DataWatcher {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void a(int i, Object object) {
|
public <T> void a(int i, T t0) {
|
||||||
- Integer integer = (Integer) DataWatcher.c.get(object.getClass());
|
- Integer integer = (Integer) DataWatcher.c.get(t0.getClass());
|
||||||
+ int integer = classToId.get(object.getClass()); // Spigot
|
+ int integer = classToId.get(t0.getClass()); // Spigot
|
||||||
|
|
||||||
- if (integer == null) {
|
- if (integer == null) {
|
||||||
+ if (integer == -1) { // Spigot
|
+ if (integer == -1) { // Spigot
|
||||||
throw new IllegalArgumentException("Unknown data type: " + object.getClass());
|
throw new IllegalArgumentException("Unknown data type: " + t0.getClass());
|
||||||
} else if (i > 31) {
|
} else if (i > 31) {
|
||||||
throw new IllegalArgumentException("Data value id is too big with " + i + "! (Max is " + 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.d.containsKey(Integer.valueOf(i))) {
|
||||||
+ } else if (this.dataValues.containsKey(i)) { // Spigot
|
+ } else if (this.dataValues.containsKey(i)) { // Spigot
|
||||||
throw new IllegalArgumentException("Duplicate id value for " + i + "!");
|
throw new IllegalArgumentException("Duplicate id value for " + i + "!");
|
||||||
} else {
|
} else {
|
||||||
- WatchableObject watchableobject = new WatchableObject(integer.intValue(), i, object);
|
- DataWatcher.WatchableObject datawatcher_watchableobject = new DataWatcher.WatchableObject(integer.intValue(), i, t0);
|
||||||
+ WatchableObject watchableobject = new WatchableObject(integer, i, object); // Spigot
|
+ DataWatcher.WatchableObject datawatcher_watchableobject = new DataWatcher.WatchableObject(integer, i, t0); // Spigot
|
||||||
|
|
||||||
this.f.writeLock().lock();
|
this.f.writeLock().lock();
|
||||||
- this.d.put(Integer.valueOf(i), watchableobject);
|
- this.d.put(Integer.valueOf(i), datawatcher_watchableobject);
|
||||||
+ this.dataValues.put(i, watchableobject); // Spigot
|
+ this.dataValues.put(i, datawatcher_watchableobject); // Spigot
|
||||||
this.f.writeLock().unlock();
|
this.f.writeLock().unlock();
|
||||||
this.b = false;
|
this.b = false;
|
||||||
}
|
}
|
||||||
@@ -0,0 +0,0 @@ public class DataWatcher {
|
@@ -0,0 +0,0 @@ public class DataWatcher {
|
||||||
WatchableObject watchableobject = new WatchableObject(j, i, (Object) null);
|
DataWatcher.WatchableObject datawatcher_watchableobject = new DataWatcher.WatchableObject(j, i, (Object) null);
|
||||||
|
|
||||||
this.f.writeLock().lock();
|
this.f.writeLock().lock();
|
||||||
- this.d.put(Integer.valueOf(i), watchableobject);
|
- this.d.put(Integer.valueOf(i), datawatcher_watchableobject);
|
||||||
+ this.dataValues.put(i, watchableobject); // Spigot
|
+ this.dataValues.put(i, datawatcher_watchableobject); // Spigot
|
||||||
this.f.writeLock().unlock();
|
this.f.writeLock().unlock();
|
||||||
this.b = false;
|
this.b = false;
|
||||||
}
|
}
|
||||||
@@ -0,0 +0,0 @@ public class DataWatcher {
|
@@ -0,0 +0,0 @@ public class DataWatcher {
|
||||||
WatchableObject watchableobject;
|
DataWatcher.WatchableObject datawatcher_watchableobject;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
- watchableobject = (WatchableObject) this.d.get(Integer.valueOf(i));
|
- datawatcher_watchableobject = (DataWatcher.WatchableObject) this.d.get(Integer.valueOf(i));
|
||||||
+ watchableobject = (WatchableObject) this.dataValues.get(i); // Spigot
|
+ datawatcher_watchableobject = (DataWatcher.WatchableObject) this.dataValues.get(i); // Spigot
|
||||||
} catch (Throwable throwable) {
|
} catch (Throwable throwable) {
|
||||||
CrashReport crashreport = CrashReport.a(throwable, "Getting synched entity data");
|
CrashReport crashreport = CrashReport.a(throwable, "Getting synched entity data");
|
||||||
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Synched entity data");
|
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Synched entity data");
|
||||||
|
@ -76,29 +76,29 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ Iterator iterator = this.dataValues.valueCollection().iterator(); // Spigot
|
+ Iterator iterator = this.dataValues.valueCollection().iterator(); // Spigot
|
||||||
|
|
||||||
while (iterator.hasNext()) {
|
while (iterator.hasNext()) {
|
||||||
WatchableObject watchableobject = (WatchableObject) iterator.next();
|
DataWatcher.WatchableObject datawatcher_watchableobject = (DataWatcher.WatchableObject) iterator.next();
|
||||||
@@ -0,0 +0,0 @@ public class DataWatcher {
|
@@ -0,0 +0,0 @@ public class DataWatcher {
|
||||||
|
|
||||||
public void a(PacketDataSerializer packetdataserializer) {
|
public void a(PacketDataSerializer packetdataserializer) throws IOException {
|
||||||
this.f.readLock().lock();
|
this.f.readLock().lock();
|
||||||
- Iterator iterator = this.d.values().iterator();
|
- Iterator iterator = this.d.values().iterator();
|
||||||
+ Iterator iterator = this.dataValues.valueCollection().iterator(); // Spigot
|
+ Iterator iterator = this.dataValues.valueCollection().iterator(); // Spigot
|
||||||
|
|
||||||
while (iterator.hasNext()) {
|
while (iterator.hasNext()) {
|
||||||
WatchableObject watchableobject = (WatchableObject) iterator.next();
|
DataWatcher.WatchableObject datawatcher_watchableobject = (DataWatcher.WatchableObject) iterator.next();
|
||||||
@@ -0,0 +0,0 @@ public class DataWatcher {
|
@@ -0,0 +0,0 @@ public class DataWatcher {
|
||||||
}
|
}
|
||||||
|
|
||||||
public List c() {
|
public List<DataWatcher.WatchableObject> c() {
|
||||||
- ArrayList arraylist = null;
|
- ArrayList arraylist = null;
|
||||||
+ ArrayList arraylist = Lists.newArrayList(); // Spigot
|
+ ArrayList arraylist = Lists.newArrayList(); // Spigot
|
||||||
|
|
||||||
this.f.readLock().lock();
|
this.f.readLock().lock();
|
||||||
|
|
||||||
- WatchableObject watchableobject;
|
- DataWatcher.WatchableObject datawatcher_watchableobject;
|
||||||
-
|
-
|
||||||
- for (Iterator iterator = this.d.values().iterator(); iterator.hasNext(); arraylist.add(watchableobject)) {
|
- for (Iterator iterator = this.d.values().iterator(); iterator.hasNext(); arraylist.add(datawatcher_watchableobject)) {
|
||||||
- watchableobject = (WatchableObject) iterator.next();
|
- datawatcher_watchableobject = (DataWatcher.WatchableObject) iterator.next();
|
||||||
- if (arraylist == null) {
|
- if (arraylist == null) {
|
||||||
- arraylist = Lists.newArrayList();
|
- arraylist = Lists.newArrayList();
|
||||||
- }
|
- }
|
||||||
|
@ -130,5 +130,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ classToId.put(Vector3f.class, 7);
|
+ classToId.put(Vector3f.class, 7);
|
||||||
+ // Spigot End
|
+ // Spigot End
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
public static class WatchableObject {
|
||||||
--
|
--
|
|
@ -8,6 +8,14 @@ diff --git a/src/main/java/net/minecraft/server/LoginListener.java b/src/main/ja
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/LoginListener.java
|
--- a/src/main/java/net/minecraft/server/LoginListener.java
|
||||||
+++ b/src/main/java/net/minecraft/server/LoginListener.java
|
+++ b/src/main/java/net/minecraft/server/LoginListener.java
|
||||||
|
@@ -0,0 +0,0 @@ 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;
|
||||||
@@ -0,0 +0,0 @@ public class LoginListener implements PacketLoginInListener, IUpdatePlayerListBo
|
@@ -0,0 +0,0 @@ public class LoginListener implements PacketLoginInListener, IUpdatePlayerListBo
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -33,125 +41,96 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
// CraftBukkit start - fire PlayerLoginEvent
|
// CraftBukkit start - fire PlayerLoginEvent
|
||||||
EntityPlayer s = this.server.getPlayerList().attemptLogin(this, this.i, hostname);
|
EntityPlayer s = this.server.getPlayerList().attemptLogin(this, this.i, hostname);
|
||||||
@@ -0,0 +0,0 @@ public class LoginListener implements PacketLoginInListener, IUpdatePlayerListBo
|
@@ -0,0 +0,0 @@ public class LoginListener implements PacketLoginInListener, IUpdatePlayerListBo
|
||||||
this.g = EnumProtocolState.KEY;
|
this.g = LoginListener.EnumProtocolState.KEY;
|
||||||
this.networkManager.handle(new PacketLoginOutEncryptionBegin(this.j, this.server.P().getPublic(), this.e));
|
this.networkManager.handle(new PacketLoginOutEncryptionBegin(this.j, this.server.P().getPublic(), this.e));
|
||||||
} else {
|
} else {
|
||||||
- this.g = EnumProtocolState.READY_TO_ACCEPT;
|
- this.g = LoginListener.EnumProtocolState.READY_TO_ACCEPT;
|
||||||
+ (new ThreadPlayerLookupUUID(this, "User Authenticator #" + b.incrementAndGet())).start(); // Spigot
|
+ // 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
|
@@ -0,0 +0,0 @@ public class LoginListener implements PacketLoginInListener, IUpdatePlayerListBo
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
return;
|
||||||
--- a/src/main/java/net/minecraft/server/ThreadPlayerLookupUUID.java
|
}
|
||||||
+++ b/src/main/java/net/minecraft/server/ThreadPlayerLookupUUID.java
|
|
||||||
@@ -0,0 +0,0 @@ class ThreadPlayerLookupUUID extends Thread {
|
|
||||||
GameProfile gameprofile = LoginListener.b(this.a);
|
|
||||||
|
|
||||||
try {
|
+ new LoginHandler().fireEvents();
|
||||||
+ // Spigot Start
|
+ } else if (LoginListener.this.server.S()) {
|
||||||
+ if ( !LoginListener.a( this.a ).getOnlineMode() )
|
+ LoginListener.c.warn("Failed to verify username but will let them in anyway!");
|
||||||
+ {
|
+ LoginListener.this.i = LoginListener.this.a(gameprofile);
|
||||||
+ a.initUUID();
|
+ LoginListener.this.g = LoginListener.EnumProtocolState.READY_TO_ACCEPT;
|
||||||
+ fireLoginEvents();
|
+ } else {
|
||||||
+ return;
|
+ LoginListener.this.disconnect("Failed to verify username!");
|
||||||
+ }
|
+ LoginListener.c.error("Username \'" + gameprofile.getName() + "\' tried to join with an invalid session"); // CraftBukkit - fix null pointer
|
||||||
+ // Spigot End
|
+ }
|
||||||
String s = (new BigInteger(MinecraftEncryption.a(LoginListener.c(this.a), LoginListener.a(this.a).P().getPublic(), LoginListener.d(this.a)))).toString(16);
|
+ } catch (AuthenticationUnavailableException authenticationunavailableexception) {
|
||||||
|
+ if (LoginListener.this.server.S()) {
|
||||||
LoginListener.a(this.a, LoginListener.a(this.a).aB().hasJoinedServer(new GameProfile((UUID) null, gameprofile.getName()), s));
|
+ LoginListener.c.warn("Authentication servers are down but will let them in anyway!");
|
||||||
if (LoginListener.b(this.a) != null) {
|
+ LoginListener.this.i = LoginListener.this.a(gameprofile);
|
||||||
- // CraftBukkit start - fire PlayerPreLoginEvent
|
+ LoginListener.this.g = LoginListener.EnumProtocolState.READY_TO_ACCEPT;
|
||||||
- if (!this.a.networkManager.g()) {
|
+ } else {
|
||||||
- return;
|
+ LoginListener.this.disconnect("Authentication servers are down. Please try again later, sorry!");
|
||||||
- }
|
+ LoginListener.c.error("Couldn\'t verify username because servers are unavailable");
|
||||||
-
|
+ }
|
||||||
- String playerName = LoginListener.b(this.a).getName();
|
+ // CraftBukkit start - catch all exceptions
|
||||||
- java.net.InetAddress address = ((java.net.InetSocketAddress) a.networkManager.getSocketAddress()).getAddress();
|
+ } catch (Exception exception) {
|
||||||
- java.util.UUID uniqueId = LoginListener.b(this.a).getId();
|
+ disconnect("Failed to verify username!");
|
||||||
- final org.bukkit.craftbukkit.CraftServer server = LoginListener.a(this.a).server;
|
+ server.server.getLogger().log(java.util.logging.Level.WARNING, "Exception verifying " + gameprofile.getName(), exception);
|
||||||
-
|
+ // CraftBukkit end
|
||||||
- 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));
|
|
||||||
@@ -0,0 +0,0 @@ class ThreadPlayerLookupUUID extends Thread {
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
+
|
+
|
||||||
+ private void fireLoginEvents() throws Exception
|
+ }
|
||||||
+ {
|
+ }).start();
|
||||||
+ // 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);
|
|
||||||
+ }
|
+ }
|
||||||
}
|
+
|
||||||
|
+ // 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();
|
||||||
|
@@ -0,0 +0,0 @@ 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));
|
||||||
--
|
--
|
|
@ -10,11 +10,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
--- a/src/main/java/net/minecraft/server/HandshakeListener.java
|
--- a/src/main/java/net/minecraft/server/HandshakeListener.java
|
||||||
+++ b/src/main/java/net/minecraft/server/HandshakeListener.java
|
+++ b/src/main/java/net/minecraft/server/HandshakeListener.java
|
||||||
@@ -0,0 +0,0 @@ import java.util.HashMap;
|
@@ -0,0 +0,0 @@ import java.util.HashMap;
|
||||||
// CraftBukkit end
|
|
||||||
|
|
||||||
public class HandshakeListener implements PacketHandshakingInListener {
|
public class HandshakeListener implements PacketHandshakingInListener {
|
||||||
-
|
|
||||||
+
|
|
||||||
+ private static final com.google.gson.Gson gson = new com.google.gson.Gson(); // Spigot
|
+ private static final com.google.gson.Gson gson = new com.google.gson.Gson(); // Spigot
|
||||||
// CraftBukkit start - add fields
|
// CraftBukkit start - add fields
|
||||||
private static final HashMap<InetAddress, Long> throttleTracker = new HashMap<InetAddress, Long>();
|
private static final HashMap<InetAddress, Long> throttleTracker = new HashMap<InetAddress, Long>();
|
||||||
|
@ -28,7 +26,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ String[] split = packethandshakinginsetprotocol.b.split("\00");
|
+ String[] split = packethandshakinginsetprotocol.b.split("\00");
|
||||||
+ if ( split.length == 3 || split.length == 4 ) {
|
+ if ( split.length == 3 || split.length == 4 ) {
|
||||||
+ packethandshakinginsetprotocol.b = split[0];
|
+ 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] );
|
+ b.spoofedUUID = com.mojang.util.UUIDTypeAdapter.fromString( split[2] );
|
||||||
+ } else
|
+ } else
|
||||||
+ {
|
+ {
|
||||||
|
@ -80,28 +78,28 @@ diff --git a/src/main/java/net/minecraft/server/NetworkManager.java b/src/main/j
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/NetworkManager.java
|
--- a/src/main/java/net/minecraft/server/NetworkManager.java
|
||||||
+++ b/src/main/java/net/minecraft/server/NetworkManager.java
|
+++ b/src/main/java/net/minecraft/server/NetworkManager.java
|
||||||
@@ -0,0 +0,0 @@ public class NetworkManager extends SimpleChannelInboundHandler {
|
@@ -0,0 +0,0 @@ public class NetworkManager extends SimpleChannelInboundHandler<Packet> {
|
||||||
private final EnumProtocolDirection g;
|
private final Queue<NetworkManager.QueuedPacket> i = Queues.newConcurrentLinkedQueue();
|
||||||
private final Queue h = Queues.newConcurrentLinkedQueue();
|
private final ReentrantReadWriteLock j = new ReentrantReadWriteLock();
|
||||||
private Channel i;
|
public Channel k; // CraftBukkit - public, PAIL: rename
|
||||||
- private SocketAddress j;
|
- private SocketAddress l;
|
||||||
+ // Spigot Start
|
+ // Spigot Start
|
||||||
+ public SocketAddress j;
|
+ public SocketAddress l;
|
||||||
+ public java.util.UUID spoofedUUID;
|
+ public java.util.UUID spoofedUUID;
|
||||||
+ public com.mojang.authlib.properties.Property[] spoofedProfile;
|
+ public com.mojang.authlib.properties.Property[] spoofedProfile;
|
||||||
+ // Spigot End
|
+ // Spigot End
|
||||||
private PacketListener k;
|
private PacketListener m;
|
||||||
private IChatBaseComponent l;
|
private IChatBaseComponent n;
|
||||||
private boolean m;
|
private boolean o;
|
||||||
@@ -0,0 +0,0 @@ public class NetworkManager extends SimpleChannelInboundHandler {
|
@@ -0,0 +0,0 @@ public class NetworkManager extends SimpleChannelInboundHandler<Packet> {
|
||||||
static Channel a(NetworkManager networkmanager) {
|
this.b = agenericfuturelistener;
|
||||||
return networkmanager.i;
|
}
|
||||||
}
|
}
|
||||||
+
|
+
|
||||||
+ // Spigot Start
|
+ // Spigot Start
|
||||||
+ public SocketAddress getRawAddress()
|
+ public SocketAddress getRawAddress()
|
||||||
+ {
|
+ {
|
||||||
+ return this.i.remoteAddress();
|
+ return this.k.remoteAddress();
|
||||||
+ }
|
+ }
|
||||||
+ // Spigot End
|
+ // Spigot End
|
||||||
}
|
}
|
||||||
|
@ -109,9 +107,9 @@ diff --git a/src/main/java/net/minecraft/server/PacketHandshakingInSetProtocol.j
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/PacketHandshakingInSetProtocol.java
|
--- a/src/main/java/net/minecraft/server/PacketHandshakingInSetProtocol.java
|
||||||
+++ b/src/main/java/net/minecraft/server/PacketHandshakingInSetProtocol.java
|
+++ b/src/main/java/net/minecraft/server/PacketHandshakingInSetProtocol.java
|
||||||
@@ -0,0 +0,0 @@ public class PacketHandshakingInSetProtocol implements Packet {
|
@@ -0,0 +0,0 @@ public class PacketHandshakingInSetProtocol implements Packet<PacketHandshakingI
|
||||||
|
|
||||||
public void a(PacketDataSerializer packetdataserializer) {
|
public void a(PacketDataSerializer packetdataserializer) throws IOException {
|
||||||
this.a = packetdataserializer.e();
|
this.a = packetdataserializer.e();
|
||||||
- this.b = packetdataserializer.c(255);
|
- this.b = packetdataserializer.c(255);
|
||||||
+ this.b = packetdataserializer.c(Short.MAX_VALUE); // Spigot
|
+ this.b = packetdataserializer.c(Short.MAX_VALUE); // Spigot
|
||||||
|
|
|
@ -9,33 +9,33 @@ diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
|
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
|
||||||
private final List o = Lists.newArrayList();
|
private final List<IUpdatePlayerListBox> p = Lists.newArrayList();
|
||||||
private final ICommandHandler p;
|
protected final ICommandHandler b;
|
||||||
public final MethodProfiler methodProfiler = new MethodProfiler();
|
public final MethodProfiler methodProfiler = new MethodProfiler();
|
||||||
- private final ServerConnection q;
|
- private final ServerConnection q;
|
||||||
+ private ServerConnection q; // Spigot
|
+ private ServerConnection q; // Spigot
|
||||||
private final ServerPing r = new ServerPing();
|
private final ServerPing r = new ServerPing();
|
||||||
private final Random s = new Random();
|
private final Random s = new Random();
|
||||||
private String serverIp;
|
private String serverIp;
|
||||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
|
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
|
||||||
this.d = proxy;
|
this.e = proxy;
|
||||||
MinecraftServer.k = this;
|
MinecraftServer.l = this;
|
||||||
// this.universe = file; // CraftBukkit
|
// this.universe = file; // CraftBukkit
|
||||||
- this.q = new ServerConnection(this);
|
- this.q = new ServerConnection(this);
|
||||||
+ // this.q = new ServerConnection(this); // Spigot
|
+ // this.q = new ServerConnection(this); // Spigot
|
||||||
this.Z = new UserCache(this, file1);
|
this.Z = new UserCache(this, file1);
|
||||||
this.p = this.h();
|
this.b = this.h();
|
||||||
// this.convertable = new WorldLoaderServer(file); // CraftBukkit - moved to DedicatedServer.init
|
// this.convertable = new WorldLoaderServer(file); // CraftBukkit - moved to DedicatedServer.init
|
||||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
|
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
|
||||||
}
|
}
|
||||||
// Spigot End
|
// Spigot End
|
||||||
public ServerConnection ao() {
|
public ServerConnection ap() {
|
||||||
- return this.q;
|
- return this.q;
|
||||||
+ return this.q == null ? this.q = new ServerConnection(this) : this.q; // Spigot
|
+ 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
|
diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/org/spigotmc/SpigotConfig.java
|
--- a/src/main/java/org/spigotmc/SpigotConfig.java
|
||||||
|
|
|
@ -8,7 +8,7 @@ diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
|
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
|
||||||
}
|
}
|
||||||
} catch (Throwable throwable) {
|
} catch (Throwable throwable) {
|
||||||
MinecraftServer.LOGGER.error("Encountered an unexpected exception", throwable);
|
MinecraftServer.LOGGER.error("Encountered an unexpected exception", throwable);
|
||||||
|
|
|
@ -9,22 +9,21 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
--- a/src/main/java/net/minecraft/server/World.java
|
--- a/src/main/java/net/minecraft/server/World.java
|
||||||
+++ b/src/main/java/net/minecraft/server/World.java
|
+++ b/src/main/java/net/minecraft/server/World.java
|
||||||
@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
|
@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
|
||||||
int i1 = MathHelper.floor(axisalignedbb.c);
|
IBlockData iblockdata = Blocks.STONE.getBlockData();
|
||||||
int j1 = MathHelper.floor(axisalignedbb.f + 1.0D);
|
BlockPosition.MutableBlockPosition blockposition_mutableblockposition = new BlockPosition.MutableBlockPosition();
|
||||||
|
|
||||||
- for (int k1 = i; k1 < j; ++k1) {
|
- for (int k1 = i; k1 < j; ++k1) {
|
||||||
- for (int l1 = i1; l1 < j1; ++l1) {
|
- for (int l1 = i1; l1 < j1; ++l1) {
|
||||||
- if (this.isLoaded(new BlockPosition(k1, 64, l1))) {
|
- if (this.isLoaded(blockposition_mutableblockposition.c(k1, 64, l1))) {
|
||||||
- for (int i2 = k - 1; i2 < l; ++i2) {
|
- for (int i2 = k - 1; i2 < l; ++i2) {
|
||||||
- BlockPosition blockposition = new BlockPosition(k1, i2, l1);
|
- blockposition_mutableblockposition.c(k1, i2, l1);
|
||||||
- boolean flag = entity.aS();
|
|
||||||
- boolean flag1 = this.a(this.af(), entity);
|
|
||||||
-
|
|
||||||
- if (flag && flag1) {
|
- if (flag && flag1) {
|
||||||
- entity.h(false);
|
- entity.h(false);
|
||||||
- } else if (!flag && !flag1) {
|
- } else if (!flag && !flag1) {
|
||||||
- entity.h(true);
|
- entity.h(true);
|
||||||
- }
|
- }
|
||||||
|
-
|
||||||
|
- IBlockData iblockdata1 = iblockdata;
|
||||||
+ // Spigot start
|
+ // Spigot start
|
||||||
+ int ystart = ( ( k - 1 ) < 0 ) ? 0 : ( k - 1 );
|
+ int ystart = ( ( k - 1 ) < 0 ) ? 0 : ( k - 1 );
|
||||||
+ for ( int chunkx = ( i >> 4 ); chunkx <= ( ( j - 1 ) >> 4 ); chunkx++ )
|
+ for ( int chunkx = ( i >> 4 ); chunkx <= ( ( j - 1 ) >> 4 ); chunkx++ )
|
||||||
|
@ -51,8 +50,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ for ( int y = ystart; y < l; y++ )
|
+ for ( int y = ystart; y < l; y++ )
|
||||||
+ {
|
+ {
|
||||||
+ BlockPosition blockposition = new BlockPosition( x, y, z );
|
+ BlockPosition blockposition = new BlockPosition( x, y, z );
|
||||||
+ boolean flag = entity.aS();
|
|
||||||
+ boolean flag1 = this.a(this.af(), entity);
|
|
||||||
+
|
+
|
||||||
+ if (flag && flag1) {
|
+ if (flag && flag1) {
|
||||||
+ entity.h(false);
|
+ entity.h(false);
|
||||||
|
@ -60,15 +57,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ entity.h(true);
|
+ entity.h(true);
|
||||||
+ }
|
+ }
|
||||||
|
|
||||||
- IBlockData iblockdata;
|
- if (worldborder.a((BlockPosition) blockposition_mutableblockposition) || !flag1) {
|
||||||
+ IBlockData iblockdata;
|
- iblockdata1 = this.getType(blockposition_mutableblockposition);
|
||||||
|
|
||||||
- if (!this.af().a(blockposition) && flag1) {
|
|
||||||
- iblockdata = Blocks.STONE.getBlockData();
|
|
||||||
- } else {
|
|
||||||
- iblockdata = this.getType(blockposition);
|
|
||||||
+ IBlockData block;
|
+ IBlockData block;
|
||||||
+ if (!this.af().a(blockposition) && flag1) {
|
+ if (!this.getWorldBorder().a(blockposition) && flag1) {
|
||||||
+ block = Blocks.STONE.getBlockData();
|
+ block = Blocks.STONE.getBlockData();
|
||||||
+ } else
|
+ } else
|
||||||
+ {
|
+ {
|
||||||
|
@ -80,7 +72,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ }
|
+ }
|
||||||
}
|
}
|
||||||
-
|
-
|
||||||
- iblockdata.getBlock().a(this, blockposition, iblockdata, axisalignedbb, arraylist, entity);
|
- iblockdata1.getBlock().a(this, blockposition_mutableblockposition, iblockdata1, axisalignedbb, arraylist, entity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ }
|
+ }
|
||||||
+ // Spigot End
|
+ // Spigot End
|
||||||
this.world.methodProfiler.a("sensing");
|
this.world.methodProfiler.a("sensing");
|
||||||
this.bi.a();
|
this.bk.a();
|
||||||
this.world.methodProfiler.b();
|
this.world.methodProfiler.b();
|
||||||
diff --git a/src/main/java/net/minecraft/server/MobSpawnerAbstract.java b/src/main/java/net/minecraft/server/MobSpawnerAbstract.java
|
diff --git a/src/main/java/net/minecraft/server/MobSpawnerAbstract.java b/src/main/java/net/minecraft/server/MobSpawnerAbstract.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
|
|
@ -15,8 +15,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
|
|
||||||
+ if (!org.spigotmc.SpigotConfig.lateBind) {
|
+ if (!org.spigotmc.SpigotConfig.lateBind) {
|
||||||
try {
|
try {
|
||||||
this.ao().a(inetaddress, this.Q());
|
this.ap().a(inetaddress, this.Q());
|
||||||
} catch (Throwable ioexception) { // CraftBukkit - IOException -> Throwable
|
} catch (IOException ioexception) {
|
||||||
@@ -0,0 +0,0 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
|
@@ -0,0 +0,0 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
|
||||||
DedicatedServer.LOGGER.warn("Perhaps a server is already running on that port?");
|
DedicatedServer.LOGGER.warn("Perhaps a server is already running on that port?");
|
||||||
return false;
|
return false;
|
||||||
|
@ -31,8 +31,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
|
|
||||||
+ if (org.spigotmc.SpigotConfig.lateBind) {
|
+ if (org.spigotmc.SpigotConfig.lateBind) {
|
||||||
+ try {
|
+ try {
|
||||||
+ this.ao().a(inetaddress, this.Q());
|
+ this.ap().a(inetaddress, this.Q());
|
||||||
+ } catch (Throwable ioexception) { // CraftBukkit - IOException -> Throwable
|
+ } catch (IOException ioexception) {
|
||||||
+ DedicatedServer.LOGGER.warn("**** FAILED TO BIND TO PORT!");
|
+ DedicatedServer.LOGGER.warn("**** FAILED TO BIND TO PORT!");
|
||||||
+ DedicatedServer.LOGGER.warn("The exception was: {}", new Object[] { ioexception.toString()});
|
+ DedicatedServer.LOGGER.warn("The exception was: {}", new Object[] { ioexception.toString()});
|
||||||
+ DedicatedServer.LOGGER.warn("Perhaps a server is already running on that port?");
|
+ DedicatedServer.LOGGER.warn("Perhaps a server is already running on that port?");
|
||||||
|
@ -40,8 +40,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
if (false && this.aQ() > 0L) { // Spigot - disable
|
if (false && this.aR() > 0L) { // Spigot - disable
|
||||||
Thread thread = new Thread(new ThreadWatchdog(this));
|
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
|
diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
|
|
@ -8,13 +8,13 @@ diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
|
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
|
||||||
worldserver.doTick();
|
worldserver.doTick();
|
||||||
worldserver.timings.doTick.stopTiming(); // Spigot
|
worldserver.timings.doTick.stopTiming(); // Spigot
|
||||||
} catch (Throwable throwable1) {
|
} catch (Throwable throwable) {
|
||||||
+ // Spigot Start
|
+ // Spigot Start
|
||||||
+ try {
|
+ try {
|
||||||
crashreport = CrashReport.a(throwable1, "Exception ticking world");
|
crashreport = CrashReport.a(throwable, "Exception ticking world");
|
||||||
+ } catch (Throwable t){
|
+ } catch (Throwable t){
|
||||||
+ throw new RuntimeException("Error generating crash report", t);
|
+ throw new RuntimeException("Error generating crash report", t);
|
||||||
+ }
|
+ }
|
||||||
|
@ -22,13 +22,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
worldserver.a(crashreport);
|
worldserver.a(crashreport);
|
||||||
throw new ReportedException(crashreport);
|
throw new ReportedException(crashreport);
|
||||||
}
|
}
|
||||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
|
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
|
||||||
worldserver.tickEntities();
|
worldserver.tickEntities();
|
||||||
worldserver.timings.tickEntities.stopTiming(); // Spigot
|
worldserver.timings.tickEntities.stopTiming(); // Spigot
|
||||||
} catch (Throwable throwable2) {
|
} catch (Throwable throwable1) {
|
||||||
+ // Spigot Start
|
+ // Spigot Start
|
||||||
+ try {
|
+ try {
|
||||||
crashreport = CrashReport.a(throwable2, "Exception ticking world entities");
|
crashreport = CrashReport.a(throwable1, "Exception ticking world entities");
|
||||||
+ } catch (Throwable t){
|
+ } catch (Throwable t){
|
||||||
+ throw new RuntimeException("Error generating crash report", t);
|
+ throw new RuntimeException("Error generating crash report", t);
|
||||||
+ }
|
+ }
|
||||||
|
|
|
@ -27,7 +27,7 @@ diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
|
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
|
||||||
SpigotTimings.worldSaveTimer.startTiming(); // Spigot
|
SpigotTimings.worldSaveTimer.startTiming(); // Spigot
|
||||||
this.methodProfiler.a("save");
|
this.methodProfiler.a("save");
|
||||||
this.v.savePlayers();
|
this.v.savePlayers();
|
||||||
|
|
|
@ -10,7 +10,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+++ b/src/main/java/net/minecraft/server/NBTTagByteArray.java
|
+++ b/src/main/java/net/minecraft/server/NBTTagByteArray.java
|
||||||
@@ -0,0 +0,0 @@ public class NBTTagByteArray extends NBTBase {
|
@@ -0,0 +0,0 @@ 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();
|
int j = datainput.readInt();
|
||||||
+ com.google.common.base.Preconditions.checkArgument( j < 1 << 24);
|
+ com.google.common.base.Preconditions.checkArgument( j < 1 << 24);
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+++ b/src/main/java/net/minecraft/server/NBTTagIntArray.java
|
+++ b/src/main/java/net/minecraft/server/NBTTagIntArray.java
|
||||||
@@ -0,0 +0,0 @@ public class NBTTagIntArray extends NBTBase {
|
@@ -0,0 +0,0 @@ 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();
|
int j = datainput.readInt();
|
||||||
+ com.google.common.base.Preconditions.checkArgument( j < 1 << 24);
|
+ com.google.common.base.Preconditions.checkArgument( j < 1 << 24);
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
|
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
|
||||||
public java.util.Queue<Runnable> processQueue = new java.util.concurrent.ConcurrentLinkedQueue<Runnable>();
|
public java.util.Queue<Runnable> processQueue = new java.util.concurrent.ConcurrentLinkedQueue<Runnable>();
|
||||||
public int autosavePeriod;
|
public int autosavePeriod;
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
|
@ -20,8 +20,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ // Spigot end
|
+ // Spigot end
|
||||||
|
|
||||||
public MinecraftServer(OptionSet options, Proxy proxy, File file1) {
|
public MinecraftServer(OptionSet options, Proxy proxy, File file1) {
|
||||||
this.d = proxy;
|
this.e = proxy;
|
||||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
|
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
|
||||||
this.isRunning = false;
|
this.isRunning = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,15 +35,15 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
public void run() {
|
public void run() {
|
||||||
try {
|
try {
|
||||||
if (this.init()) {
|
if (this.init()) {
|
||||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
|
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
|
||||||
this.r.setServerInfo(new ServerPingServerData("1.8", 47));
|
this.r.setServerInfo(new ServerPing.ServerData("1.8.3", 47));
|
||||||
this.a(this.r);
|
this.a(this.r);
|
||||||
|
|
||||||
+ // Spigot start
|
+ // Spigot start
|
||||||
+ Arrays.fill( recentTps, 20 );
|
+ Arrays.fill( recentTps, 20 );
|
||||||
+ long lastTick = System.nanoTime(), catchupTime = 0, curTime, wait, tickSection = lastTick;
|
+ long lastTick = System.nanoTime(), catchupTime = 0, curTime, wait, tickSection = lastTick;
|
||||||
while (this.isRunning) {
|
while (this.isRunning) {
|
||||||
- long j = ax();
|
- long j = ay();
|
||||||
- long k = j - this.ab;
|
- long k = j - this.ab;
|
||||||
-
|
-
|
||||||
- if (k > 2000L && this.ab - this.R >= 15000L) {
|
- if (k > 2000L && this.ab - this.R >= 15000L) {
|
||||||
|
@ -68,14 +68,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
|
|
||||||
- i += k;
|
- i += k;
|
||||||
- this.ab = j;
|
- this.ab = j;
|
||||||
- if (this.worlds.get(0).everyoneDeeplySleeping()) { // CraftBukkit
|
- if (this.worlds.get(0).everyoneDeeplySleeping()) {
|
||||||
- this.y();
|
- this.z();
|
||||||
- i = 0L;
|
- i = 0L;
|
||||||
- } else {
|
- } else {
|
||||||
- while (i > 50L) {
|
- while (i > 50L) {
|
||||||
- MinecraftServer.currentTick = (int) (System.currentTimeMillis() / 50); // CraftBukkit
|
- MinecraftServer.currentTick = (int) (System.currentTimeMillis() / 50); // CraftBukkit
|
||||||
- i -= 50L;
|
- i -= 50L;
|
||||||
- this.y();
|
- this.z();
|
||||||
- }
|
- }
|
||||||
+ if ( MinecraftServer.currentTick++ % SAMPLE_INTERVAL == 0 )
|
+ if ( MinecraftServer.currentTick++ % SAMPLE_INTERVAL == 0 )
|
||||||
+ {
|
+ {
|
||||||
|
@ -88,7 +88,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ lastTick = curTime;
|
+ lastTick = curTime;
|
||||||
|
|
||||||
- Thread.sleep(Math.max(1L, 50L - i));
|
- Thread.sleep(Math.max(1L, 50L - i));
|
||||||
+ this.y();
|
+ this.z();
|
||||||
this.Q = true;
|
this.Q = true;
|
||||||
}
|
}
|
||||||
+ // Spigot end
|
+ // Spigot end
|
||||||
|
|
|
@ -11,7 +11,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
@@ -0,0 +0,0 @@ public class PacketStatusListener implements PacketStatusInListener {
|
@@ -0,0 +0,0 @@ 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
|
+ // Spigot Start
|
||||||
+ if ( !profiles.isEmpty() )
|
+ if ( !profiles.isEmpty() )
|
||||||
+ {
|
+ {
|
||||||
|
|
|
@ -10,17 +10,17 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
--- a/src/main/java/net/minecraft/server/ServerConnection.java
|
--- a/src/main/java/net/minecraft/server/ServerConnection.java
|
||||||
+++ b/src/main/java/net/minecraft/server/ServerConnection.java
|
+++ b/src/main/java/net/minecraft/server/ServerConnection.java
|
||||||
@@ -0,0 +0,0 @@ public class ServerConnection {
|
@@ -0,0 +0,0 @@ public class ServerConnection {
|
||||||
List list = this.g;
|
List list = this.h;
|
||||||
|
|
||||||
synchronized (this.g) {
|
synchronized (this.h) {
|
||||||
+ // Spigot Start
|
+ // Spigot Start
|
||||||
+ // This prevents players from 'gaming' the server, and strategically relogging to increase their position in the tick order
|
+ // 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 )
|
+ if ( org.spigotmc.SpigotConfig.playerShuffle > 0 && MinecraftServer.currentTick % org.spigotmc.SpigotConfig.playerShuffle == 0 )
|
||||||
+ {
|
+ {
|
||||||
+ Collections.shuffle( this.g );
|
+ Collections.shuffle( this.h );
|
||||||
+ }
|
+ }
|
||||||
+ // Spigot End
|
+ // Spigot End
|
||||||
Iterator iterator = this.g.iterator();
|
Iterator iterator = this.h.iterator();
|
||||||
|
|
||||||
while (iterator.hasNext()) {
|
while (iterator.hasNext()) {
|
||||||
diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java
|
diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java
|
||||||
|
|
|
@ -11,7 +11,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
@@ -0,0 +0,0 @@ import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
|
@@ -0,0 +0,0 @@ import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
|
||||||
public class EntityPlayer extends EntityHuman implements ICrafting {
|
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";
|
- private String locale = "en_US";
|
||||||
+ public String locale = "en_US"; // Spigot
|
+ public String locale = "en_US"; // Spigot
|
||||||
public PlayerConnection playerConnection;
|
public PlayerConnection playerConnection;
|
||||||
|
|
|
@ -17,29 +17,28 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ int numCollisions = 0; // Spigot
|
+ int numCollisions = 0; // Spigot
|
||||||
public void collide(Entity entity) {
|
public void collide(Entity entity) {
|
||||||
if (entity.passenger != this && entity.vehicle != this) {
|
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
|
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/EntityLiving.java
|
--- a/src/main/java/net/minecraft/server/EntityLiving.java
|
||||||
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
|
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
|
||||||
@@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity {
|
@@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity {
|
||||||
List list = this.world.getEntities(this, this.getBoundingBox().grow(0.20000000298023224D, 0.0D, 0.20000000298023224D));
|
}));
|
||||||
|
|
||||||
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
|
+ numCollisions -= world.spigotConfig.maxCollisionsPerEntity; // Spigot
|
||||||
for (int i = 0; i < list.size(); ++i) {
|
for (int i = 0; i < list.size(); ++i) {
|
||||||
+ if (numCollisions > world.spigotConfig.maxCollisionsPerEntity) { break; } // Spigot
|
+ if (numCollisions > world.spigotConfig.maxCollisionsPerEntity) { break; } // Spigot
|
||||||
Entity entity = (Entity) list.get(i);
|
Entity entity = (Entity) list.get(i);
|
||||||
|
|
||||||
// TODO better check now?
|
// TODO better check now?
|
||||||
@@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity {
|
@@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity {
|
||||||
|
}
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
|
|
||||||
if (entity.ae()) {
|
+ entity.numCollisions++; // Spigot
|
||||||
+ entity.numCollisions++; // Spigot
|
+ numCollisions++; // Spigot
|
||||||
+ numCollisions++; // Spigot
|
this.s(entity);
|
||||||
this.s(entity);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
+ numCollisions = 0; // Spigot
|
+ numCollisions = 0; // Spigot
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,17 +4,17 @@ Date: Thu, 6 Feb 2014 21:59:20 +0000
|
||||||
Subject: [PATCH] Fix dispensing bone meal not having the correct data value
|
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
|
diff --git a/src/main/java/net/minecraft/server/DispenserRegistry.java b/src/main/java/net/minecraft/server/DispenserRegistry.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/DispenseBehaviorBonemeal.java
|
--- a/src/main/java/net/minecraft/server/DispenserRegistry.java
|
||||||
+++ b/src/main/java/net/minecraft/server/DispenseBehaviorBonemeal.java
|
+++ b/src/main/java/net/minecraft/server/DispenserRegistry.java
|
||||||
@@ -0,0 +0,0 @@ final class DispenseBehaviorBonemeal extends DispenseBehaviorItem {
|
@@ -0,0 +0,0 @@ public class DispenserRegistry {
|
||||||
|
|
||||||
// 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));
|
// CraftBukkit start
|
||||||
if (!BlockDispenser.eventFired) {
|
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) {
|
||||||
--
|
--
|
|
@ -15,8 +15,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
- 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()));
|
||||||
+ boolean flag2 = itemstack == null || itemstack.getItem() != null && (!invalidItems.contains(Item.getId(itemstack.getItem())) || !org.spigotmc.SpigotConfig.filterCreativeItems); // Spigot
|
+ 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;
|
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
|
diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/org/spigotmc/SpigotConfig.java
|
--- a/src/main/java/org/spigotmc/SpigotConfig.java
|
||||||
|
|
|
@ -14,8 +14,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
|
|
||||||
// CraftBukkit start - Add "isDisconnected" method
|
// CraftBukkit start - Add "isDisconnected" method
|
||||||
- public final boolean isDisconnected() {
|
- public final boolean isDisconnected() {
|
||||||
+ public boolean isDisconnected() {
|
+ public boolean isDisconnected() { // Spigot
|
||||||
return !this.player.joining && !NetworkManager.a(this.networkManager).config().isAutoRead();
|
return !this.player.joining && !this.networkManager.k.config().isAutoRead();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
--
|
--
|
|
@ -31,8 +31,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
}
|
}
|
||||||
+ // Spigot end
|
+ // Spigot end
|
||||||
|
|
||||||
public void s_() {
|
public void t_() {
|
||||||
super.s_();
|
super.t_();
|
||||||
- if (this.lifeTicks == 2) {
|
- if (this.lifeTicks == 2) {
|
||||||
+ if (!isSilent && this.lifeTicks == 2) { // Spigot
|
+ if (!isSilent && this.lifeTicks == 2) { // Spigot
|
||||||
// CraftBukkit start - Use relative location for far away sounds
|
// CraftBukkit start - Use relative location for far away sounds
|
||||||
|
|
|
@ -13,7 +13,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
int k = MathHelper.floor(d2);
|
int k = MathHelper.floor(d2);
|
||||||
BlockPosition blockposition = new BlockPosition(i, j, k);
|
BlockPosition blockposition = new BlockPosition(i, j, k);
|
||||||
+ if ( !world.isLoaded( blockposition ) ) return null; // Spigot
|
+ 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()) {
|
||||||
--
|
--
|
|
@ -8,16 +8,16 @@ diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/m
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/World.java
|
--- a/src/main/java/net/minecraft/server/World.java
|
||||||
+++ b/src/main/java/net/minecraft/server/World.java
|
+++ b/src/main/java/net/minecraft/server/World.java
|
||||||
@@ -0,0 +0,0 @@ import org.bukkit.event.weather.ThunderChangeEvent;
|
@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
|
||||||
public abstract class World implements IBlockAccess {
|
|
||||||
|
|
||||||
|
private int a = 63;
|
||||||
protected boolean e;
|
protected boolean e;
|
||||||
- public final List entityList = Lists.newArrayList();
|
- public final List<Entity> entityList = Lists.newArrayList();
|
||||||
+ // Spigot start - guard entity list from removals
|
+ // 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
|
+ @Override
|
||||||
+ public Object remove(int index)
|
+ public Entity remove(int index)
|
||||||
+ {
|
+ {
|
||||||
+ guard();
|
+ guard();
|
||||||
+ return super.remove( index );
|
+ return super.remove( index );
|
||||||
|
@ -39,9 +39,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ }
|
+ }
|
||||||
+ };
|
+ };
|
||||||
+ // Spigot end
|
+ // Spigot end
|
||||||
protected final List g = Lists.newArrayList();
|
protected final List<Entity> g = Lists.newArrayList();
|
||||||
public final List h = Lists.newArrayList();
|
public final List<TileEntity> h = Lists.newArrayList();
|
||||||
public final List tileEntityList = Lists.newArrayList();
|
public final List<TileEntity> tileEntityList = Lists.newArrayList();
|
||||||
@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
|
@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
|
||||||
private int tickPosition;
|
private int tickPosition;
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+++ b/src/main/java/net/minecraft/server/EntityWitherSkull.java
|
+++ b/src/main/java/net/minecraft/server/EntityWitherSkull.java
|
||||||
@@ -0,0 +0,0 @@ public class EntityWitherSkull extends EntityFireball {
|
@@ -0,0 +0,0 @@ public class EntityWitherSkull extends EntityFireball {
|
||||||
protected void a(MovingObjectPosition movingobjectposition) {
|
protected void a(MovingObjectPosition movingobjectposition) {
|
||||||
if (!this.world.isStatic) {
|
if (!this.world.isClientSide) {
|
||||||
if (movingobjectposition.entity != null) {
|
if (movingobjectposition.entity != null) {
|
||||||
+ // Spigot start
|
+ // Spigot start
|
||||||
+ boolean didDamage = false;
|
+ boolean didDamage = false;
|
||||||
|
|
|
@ -9,7 +9,7 @@ diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
|
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getServerModName() {
|
public String getServerModName() {
|
||||||
|
|
|
@ -9,8 +9,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
--- a/src/main/java/net/minecraft/server/NameReferencingFileConverter.java
|
--- a/src/main/java/net/minecraft/server/NameReferencingFileConverter.java
|
||||||
+++ b/src/main/java/net/minecraft/server/NameReferencingFileConverter.java
|
+++ b/src/main/java/net/minecraft/server/NameReferencingFileConverter.java
|
||||||
@@ -0,0 +0,0 @@ public class NameReferencingFileConverter {
|
@@ -0,0 +0,0 @@ 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);
|
}), String.class);
|
||||||
|
|
||||||
- if (minecraftserver.getOnlineMode()) {
|
- if (minecraftserver.getOnlineMode()) {
|
||||||
+ if (minecraftserver.getOnlineMode() || org.spigotmc.SpigotConfig.bungee) { // Spigot: bungee = online mode, for now.
|
+ if (minecraftserver.getOnlineMode() || org.spigotmc.SpigotConfig.bungee) { // Spigot: bungee = online mode, for now.
|
||||||
|
|
|
@ -11,7 +11,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
@@ -0,0 +0,0 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
|
@@ -0,0 +0,0 @@ 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!
|
+ server.getLogger().info( "**** Beginning UUID conversion, this may take A LONG time ****"); // Spigot, let the user know whats up!
|
||||||
boolean flag = false;
|
boolean flag = false;
|
||||||
|
|
||||||
|
|
|
@ -8,12 +8,12 @@ diff --git a/src/main/java/net/minecraft/server/NetworkManager.java b/src/main/j
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/NetworkManager.java
|
--- a/src/main/java/net/minecraft/server/NetworkManager.java
|
||||||
+++ b/src/main/java/net/minecraft/server/NetworkManager.java
|
+++ b/src/main/java/net/minecraft/server/NetworkManager.java
|
||||||
@@ -0,0 +0,0 @@ public class NetworkManager extends SimpleChannelInboundHandler {
|
@@ -0,0 +0,0 @@ public class NetworkManager extends SimpleChannelInboundHandler<Packet> {
|
||||||
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}));
|
this.close(chatmessage);
|
||||||
+ if (MinecraftServer.getServer().isDebugging()) throwable.printStackTrace(); // Spigot
|
+ if (MinecraftServer.getServer().isDebugging()) throwable.printStackTrace(); // Spigot
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void a(ChannelHandlerContext channelhandlercontext, Packet packet) {
|
protected void a(ChannelHandlerContext channelhandlercontext, Packet packet) throws Exception {
|
||||||
--
|
--
|
|
@ -16,5 +16,5 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ gameprofile = a(this.f, s); // Spigot - use correct case for offline players
|
+ gameprofile = a(this.f, s); // Spigot - use correct case for offline players
|
||||||
if (gameprofile != null) {
|
if (gameprofile != null) {
|
||||||
this.a(gameprofile);
|
this.a(gameprofile);
|
||||||
usercacheentry = (UserCacheEntry) this.c.get(s1);
|
usercache_usercacheentry = (UserCache.UserCacheEntry) this.c.get(s1);
|
||||||
--
|
--
|
|
@ -9,7 +9,7 @@ diff --git a/src/main/java/net/minecraft/server/GameProfileBanEntry.java b/src/m
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/GameProfileBanEntry.java
|
--- a/src/main/java/net/minecraft/server/GameProfileBanEntry.java
|
||||||
+++ b/src/main/java/net/minecraft/server/GameProfileBanEntry.java
|
+++ b/src/main/java/net/minecraft/server/GameProfileBanEntry.java
|
||||||
@@ -0,0 +0,0 @@ public class GameProfileBanEntry extends ExpirableListEntry {
|
@@ -0,0 +0,0 @@ public class GameProfileBanEntry extends ExpirableListEntry<GameProfile> {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static GameProfile b(JsonObject jsonobject) {
|
private static GameProfile b(JsonObject jsonobject) {
|
||||||
|
|
|
@ -8,7 +8,7 @@ diff --git a/src/main/java/net/minecraft/server/GameProfileBanEntry.java b/src/m
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/GameProfileBanEntry.java
|
--- a/src/main/java/net/minecraft/server/GameProfileBanEntry.java
|
||||||
+++ b/src/main/java/net/minecraft/server/GameProfileBanEntry.java
|
+++ b/src/main/java/net/minecraft/server/GameProfileBanEntry.java
|
||||||
@@ -0,0 +0,0 @@ public class GameProfileBanEntry extends ExpirableListEntry {
|
@@ -0,0 +0,0 @@ public class GameProfileBanEntry extends ExpirableListEntry<GameProfile> {
|
||||||
}
|
}
|
||||||
|
|
||||||
public GameProfileBanEntry(GameProfile gameprofile, Date date, String s, Date date1, String s1) {
|
public GameProfileBanEntry(GameProfile gameprofile, Date date, String s, Date date1, String s1) {
|
||||||
|
|
|
@ -33,10 +33,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
}
|
|
||||||
-
|
|
||||||
}
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/TileEntitySkull.java b/src/main/java/net/minecraft/server/TileEntitySkull.java
|
diff --git a/src/main/java/net/minecraft/server/TileEntitySkull.java b/src/main/java/net/minecraft/server/TileEntitySkull.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/TileEntitySkull.java
|
--- a/src/main/java/net/minecraft/server/TileEntitySkull.java
|
||||||
|
@ -56,12 +52,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+
|
+
|
||||||
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
||||||
+import com.mojang.authlib.Agent;
|
+import com.mojang.authlib.Agent;
|
||||||
|
+import com.mojang.authlib.ProfileLookupCallback;
|
||||||
+// Spigot end
|
+// Spigot end
|
||||||
+
|
+
|
||||||
public class TileEntitySkull extends TileEntity {
|
public class TileEntitySkull extends TileEntity {
|
||||||
|
|
||||||
private int a;
|
private int a;
|
||||||
public int rotation;
|
private int rotation;
|
||||||
private GameProfile g = null;
|
private GameProfile g = null;
|
||||||
+ // Spigot start
|
+ // Spigot start
|
||||||
+ public static final Executor executor = Executors.newFixedThreadPool(3,
|
+ public static final Executor executor = Executors.newFixedThreadPool(3,
|
||||||
|
@ -77,8 +74,19 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public GameProfile load(String key) throws Exception
|
+ public GameProfile load(String key) throws Exception
|
||||||
+ {
|
+ {
|
||||||
+ GameProfile[] profiles = new GameProfile[1];
|
+ final GameProfile[] profiles = new GameProfile[1];
|
||||||
+ GameProfileLookup gameProfileLookup = new GameProfileLookup(profiles);
|
+ ProfileLookupCallback gameProfileLookup = new ProfileLookupCallback() {
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public void onProfileLookupSucceeded(GameProfile gp) {
|
||||||
|
+ profiles[0] = gp;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public void onProfileLookupFailed(GameProfile gp, Exception excptn) {
|
||||||
|
+ profiles[0] = gp;
|
||||||
|
+ }
|
||||||
|
+ };
|
||||||
+
|
+
|
||||||
+ MinecraftServer.getServer().getGameProfileRepository().findProfilesByNames(new String[] { key }, Agent.MINECRAFT, gameProfileLookup);
|
+ MinecraftServer.getServer().getGameProfileRepository().findProfilesByNames(new String[] { key }, Agent.MINECRAFT, gameProfileLookup);
|
||||||
+
|
+
|
||||||
|
@ -95,7 +103,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+
|
+
|
||||||
+ if ( property == null )
|
+ if ( property == null )
|
||||||
+ {
|
+ {
|
||||||
+ profile = MinecraftServer.getServer().aB().fillProfileProperties( profile, true );
|
+ profile = MinecraftServer.getServer().aC().fillProfileProperties( profile, true );
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
|
@ -153,10 +161,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ callback.apply(profile);
|
+ callback.apply(profile);
|
||||||
} else {
|
} else {
|
||||||
- Property property = (Property) Iterables.getFirst(gameprofile1.getProperties().get("textures"), (Object) null);
|
- Property property = (Property) Iterables.getFirst(gameprofile1.getProperties().get("textures"), (Object) null);
|
||||||
-
|
+ Property property = (Property) Iterables.getFirst(profile.getProperties().get("textures"), (Object) null);
|
||||||
|
|
||||||
- if (property == null) {
|
- if (property == null) {
|
||||||
- gameprofile1 = MinecraftServer.getServer().aB().fillProfileProperties(gameprofile1, true);
|
- gameprofile1 = MinecraftServer.getServer().aC().fillProfileProperties(gameprofile1, true);
|
||||||
- }
|
+ if (property != null) {
|
||||||
|
+ callback.apply(profile);
|
||||||
|
+ return;
|
||||||
|
}
|
||||||
-
|
-
|
||||||
- return gameprofile1;
|
- return gameprofile1;
|
||||||
+ executor.execute(new Runnable() {
|
+ executor.execute(new Runnable() {
|
||||||
|
|
|
@ -11,7 +11,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
@@ -0,0 +0,0 @@ public class ItemSkull extends Item {
|
@@ -0,0 +0,0 @@ public class ItemSkull extends Item {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
if (!world.isStatic) {
|
if (!world.isClientSide) {
|
||||||
+ // Spigot Start
|
+ // Spigot Start
|
||||||
+ if ( !Blocks.SKULL.canPlace( world, blockposition ) )
|
+ if ( !Blocks.SKULL.canPlace( world, blockposition ) )
|
||||||
+ {
|
+ {
|
||||||
|
|
|
@ -1,28 +0,0 @@
|
||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Thinkofdeath <thethinkofdeath@gmail.com>
|
|
||||||
Date: Mon, 20 Jan 2014 20:42:28 +0000
|
|
||||||
Subject: [PATCH] Don't let trees replace any block.
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/WorldGenForestTree.java b/src/main/java/net/minecraft/server/WorldGenForestTree.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/WorldGenForestTree.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/WorldGenForestTree.java
|
|
||||||
@@ -0,0 +0,0 @@ public class WorldGenForestTree extends WorldGenTreeAbstract {
|
|
||||||
int k2;
|
|
||||||
|
|
||||||
for (k2 = 0; k2 < j2; ++k2) {
|
|
||||||
- this.a(world, new BlockPosition(blockposition.getX() + l1, k1 - k2 - 1, blockposition.getZ() + i2), Blocks.LOG2, EnumLogVariant.DARK_OAK.a() - 4);
|
|
||||||
+ // Spigot start
|
|
||||||
+ BlockPosition position = new BlockPosition(blockposition.getX() + l1, k1 - k2 - 1, blockposition.getZ() + i2);
|
|
||||||
+ Block bl = world.getType(position).getBlock();
|
|
||||||
+
|
|
||||||
+ if (bl.getMaterial() == Material.AIR || bl.getMaterial() == Material.LEAVES)
|
|
||||||
+ {
|
|
||||||
+ this.a(world, position, Blocks.LOG2, EnumLogVariant.DARK_OAK.a() - 4);
|
|
||||||
+ }
|
|
||||||
+ // Spigot end
|
|
||||||
}
|
|
||||||
|
|
||||||
int l2;
|
|
||||||
--
|
|
|
@ -15,34 +15,34 @@ diff --git a/src/main/java/net/minecraft/server/NetworkManager.java b/src/main/j
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/NetworkManager.java
|
--- a/src/main/java/net/minecraft/server/NetworkManager.java
|
||||||
+++ b/src/main/java/net/minecraft/server/NetworkManager.java
|
+++ b/src/main/java/net/minecraft/server/NetworkManager.java
|
||||||
@@ -0,0 +0,0 @@ public class NetworkManager extends SimpleChannelInboundHandler {
|
@@ -0,0 +0,0 @@ public class NetworkManager extends SimpleChannelInboundHandler<Packet> {
|
||||||
public SocketAddress j;
|
public SocketAddress l;
|
||||||
public java.util.UUID spoofedUUID;
|
public java.util.UUID spoofedUUID;
|
||||||
public com.mojang.authlib.properties.Property[] spoofedProfile;
|
public com.mojang.authlib.properties.Property[] spoofedProfile;
|
||||||
+ public boolean preparing = true;
|
+ public boolean preparing = true;
|
||||||
// Spigot End
|
// Spigot End
|
||||||
private PacketListener k;
|
private PacketListener m;
|
||||||
private IChatBaseComponent l;
|
private IChatBaseComponent n;
|
||||||
@@ -0,0 +0,0 @@ public class NetworkManager extends SimpleChannelInboundHandler {
|
@@ -0,0 +0,0 @@ public class NetworkManager extends SimpleChannelInboundHandler<Packet> {
|
||||||
super.channelActive(channelhandlercontext);
|
super.channelActive(channelhandlercontext);
|
||||||
this.i = channelhandlercontext.channel();
|
this.k = channelhandlercontext.channel();
|
||||||
this.j = this.i.remoteAddress();
|
this.l = this.k.remoteAddress();
|
||||||
+ // Spigot Start
|
+ // Spigot Start
|
||||||
+ this.preparing = false;
|
+ this.preparing = false;
|
||||||
+ // Spigot End
|
+ // Spigot End
|
||||||
|
|
||||||
try {
|
try {
|
||||||
this.a(EnumProtocol.HANDSHAKING);
|
this.a(EnumProtocol.HANDSHAKING);
|
||||||
@@ -0,0 +0,0 @@ public class NetworkManager extends SimpleChannelInboundHandler {
|
@@ -0,0 +0,0 @@ public class NetworkManager extends SimpleChannelInboundHandler<Packet> {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void close(IChatBaseComponent ichatbasecomponent) {
|
public void close(IChatBaseComponent ichatbasecomponent) {
|
||||||
+ // Spigot Start
|
+ // Spigot Start
|
||||||
+ this.preparing = false;
|
+ this.preparing = false;
|
||||||
+ // Spigot End
|
+ // Spigot End
|
||||||
if (this.i.isOpen()) {
|
if (this.k.isOpen()) {
|
||||||
this.i.close(); // We can't wait as this may be called from an event loop.
|
this.k.close(); // We can't wait as this may be called from an event loop.
|
||||||
this.l = ichatbasecomponent;
|
this.n = ichatbasecomponent;
|
||||||
diff --git a/src/main/java/net/minecraft/server/ServerConnection.java b/src/main/java/net/minecraft/server/ServerConnection.java
|
diff --git a/src/main/java/net/minecraft/server/ServerConnection.java b/src/main/java/net/minecraft/server/ServerConnection.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/ServerConnection.java
|
--- a/src/main/java/net/minecraft/server/ServerConnection.java
|
|
@ -34,6 +34,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ // Spigot end
|
+ // Spigot end
|
||||||
+
|
+
|
||||||
// CraftBukkit - Moved message to after join
|
// CraftBukkit - Moved message to after join
|
||||||
// PlayerList.h.info(entityplayer.getName() + "[" + s1 + "] logged in with entity id " + entityplayer.getId() + " at (" + entityplayer.locX + ", " + entityplayer.locY + ", " + entityplayer.locZ + ")");
|
// PlayerList.f.info(entityplayer.getName() + "[" + s1 + "] logged in with entity id " + entityplayer.getId() + " at (" + entityplayer.locX + ", " + entityplayer.locY + ", " + entityplayer.locZ + ")");
|
||||||
WorldServer worldserver = this.server.getWorldServer(entityplayer.dimension);
|
WorldServer worldserver = this.server.getWorldServer(entityplayer.dimension);
|
||||||
--
|
--
|
|
@ -26,7 +26,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ }
|
+ }
|
||||||
+ } );
|
+ } );
|
||||||
+ // Spigot end
|
+ // Spigot end
|
||||||
} else if (this.player.getChatFlags() == EnumChatVisibility.SYSTEM) { // Re-add "Command Only" flag check
|
} else if (this.player.getChatFlags() == EntityHuman.EnumChatVisibility.SYSTEM) { // Re-add "Command Only" flag check
|
||||||
ChatMessage chatmessage = new ChatMessage("chat.cannotSend", new Object[0]);
|
ChatMessage chatmessage = new ChatMessage("chat.cannotSend", new Object[0]);
|
||||||
|
|
||||||
--
|
--
|
|
@ -8,9 +8,9 @@ diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
|
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
|
||||||
if (this.m.d()) {
|
if (this.n.d()) {
|
||||||
this.m.e();
|
this.n.e();
|
||||||
}
|
}
|
||||||
-
|
-
|
||||||
+ // Spigot start
|
+ // Spigot start
|
||||||
|
@ -33,7 +33,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
|
|
||||||
- this.c();
|
- this.c();
|
||||||
+ if( !org.spigotmc.SpigotConfig.saveUserCacheOnStopOnly ) this.c(); // Spigot - skip saving if disabled
|
+ if( !org.spigotmc.SpigotConfig.saveUserCacheOnStopOnly ) this.c(); // Spigot - skip saving if disabled
|
||||||
return usercacheentry == null ? null : usercacheentry.a();
|
return usercache_usercacheentry == null ? null : usercache_usercacheentry.a();
|
||||||
}
|
}
|
||||||
|
|
||||||
diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java
|
diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java
|
|
@ -19,6 +19,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
public void a(PacketPlayInBlockPlace packetplayinblockplace) {
|
public void a(PacketPlayInBlockPlace packetplayinblockplace) {
|
||||||
PlayerConnectionUtils.ensureMainThread(packetplayinblockplace, this, this.player.u());
|
PlayerConnectionUtils.ensureMainThread(packetplayinblockplace, this, this.player.u());
|
||||||
WorldServer worldserver = this.minecraftServer.getWorldServer(this.player.dimension);
|
WorldServer worldserver = this.minecraftServer.getWorldServer(this.player.dimension);
|
||||||
|
-
|
||||||
+ boolean throttled = false;
|
+ boolean throttled = false;
|
||||||
+ if (lastPlace != -1 && packetplayinblockplace.timestamp - lastPlace < 30 && packets++ >= 4) {
|
+ if (lastPlace != -1 && packetplayinblockplace.timestamp - lastPlace < 30 && packets++ >= 4) {
|
||||||
+ throttled = true;
|
+ throttled = true;
|
||||||
|
@ -28,14 +29,15 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ packets = 0;
|
+ packets = 0;
|
||||||
+ }
|
+ }
|
||||||
+ // Spigot end
|
+ // Spigot end
|
||||||
|
+
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
if (this.player.dead) return;
|
if (this.player.dead) return;
|
||||||
|
|
||||||
@@ -0,0 +0,0 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
|
@@ -0,0 +0,0 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
|
||||||
|
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
int itemstackAmount = itemstack.count;
|
int itemstackAmount = itemstack.count;
|
||||||
-
|
-
|
||||||
+ // Spigot start - skip the event if throttled
|
+ // Spigot start - skip the event if throttled
|
||||||
+ if (!throttled) {
|
+ if (!throttled) {
|
||||||
// Raytrace to look for 'rogue armswings'
|
// Raytrace to look for 'rogue armswings'
|
||||||
|
@ -53,10 +55,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
@@ -0,0 +0,0 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
|
@@ -0,0 +0,0 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.checkMovement && this.player.e((double) blockposition.getX() + 0.5D, (double) blockposition.getY() + 0.5D, (double) blockposition.getZ() + 0.5D) < 64.0D && !this.minecraftServer.a(worldserver, blockposition, this.player) && worldserver.af().a(blockposition)) {
|
if (this.checkMovement && this.player.e((double) blockposition.getX() + 0.5D, (double) blockposition.getY() + 0.5D, (double) blockposition.getZ() + 0.5D) < 64.0D && !this.minecraftServer.a(worldserver, blockposition, this.player) && worldserver.getWorldBorder().a(blockposition)) {
|
||||||
- always = !this.player.playerInteractManager.interact(this.player, worldserver, itemstack, blockposition, enumdirection, packetplayinblockplace.d(), packetplayinblockplace.e(), packetplayinblockplace.f());
|
- always = !this.player.playerInteractManager.interact(this.player, worldserver, itemstack, blockposition, enumdirection, packetplayinblockplace.d(), packetplayinblockplace.e(), packetplayinblockplace.f());
|
||||||
+ always = throttled || !this.player.playerInteractManager.interact(this.player, worldserver, itemstack, blockposition, enumdirection, packetplayinblockplace.d(), packetplayinblockplace.e(), packetplayinblockplace.f());
|
+ always = throttled || !this.player.playerInteractManager.interact(this.player, worldserver, itemstack, blockposition, enumdirection, packetplayinblockplace.d(), packetplayinblockplace.e(), packetplayinblockplace.f());
|
||||||
}
|
}
|
||||||
// CraftBukkit end
|
|
||||||
|
|
||||||
|
flag = true;
|
||||||
--
|
--
|
|
@ -12,18 +12,18 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
arraylist = Lists.newArrayList();
|
arraylist = Lists.newArrayList();
|
||||||
}
|
}
|
||||||
|
|
||||||
+ // Spigot start - copy ItemStacks to prevent ConcurrentModificationExceptions
|
+ // Spigot start - copy ItemStacks to prevent ConcurrentModificationExceptions
|
||||||
+ if ( watchableobject.b() instanceof ItemStack )
|
+ if ( datawatcher_watchableobject.b() instanceof ItemStack )
|
||||||
+ {
|
+ {
|
||||||
+ watchableobject = new WatchableObject(
|
+ datawatcher_watchableobject = new WatchableObject(
|
||||||
+ watchableobject.c(),
|
+ datawatcher_watchableobject.c(),
|
||||||
+ watchableobject.a(),
|
+ datawatcher_watchableobject.a(),
|
||||||
+ ( (ItemStack) watchableobject.b() ).cloneItemStack()
|
+ ( (ItemStack) datawatcher_watchableobject.b() ).cloneItemStack()
|
||||||
+ );
|
+ );
|
||||||
+ }
|
+ }
|
||||||
+ // Spigot end
|
+ // Spigot end
|
||||||
+
|
+
|
||||||
arraylist.add(watchableobject);
|
arraylist.add(datawatcher_watchableobject);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +0,0 @@ public class DataWatcher {
|
@@ -0,0 +0,0 @@ public class DataWatcher {
|
|
@ -9,12 +9,12 @@ diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
|
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
|
||||||
// Spigot end
|
// Spigot end
|
||||||
|
|
||||||
public MinecraftServer(OptionSet options, Proxy proxy, File file1) {
|
public MinecraftServer(OptionSet options, Proxy proxy, File file1) {
|
||||||
+ io.netty.util.ResourceLeakDetector.setEnabled( false ); // Spigot - disable
|
+ io.netty.util.ResourceLeakDetector.setEnabled( false ); // Spigot - disable
|
||||||
this.d = proxy;
|
this.e = proxy;
|
||||||
MinecraftServer.k = this;
|
MinecraftServer.l = this;
|
||||||
// this.universe = file; // CraftBukkit
|
// this.universe = file; // CraftBukkit
|
||||||
--
|
--
|
|
@ -8,7 +8,7 @@ diff --git a/src/main/java/net/minecraft/server/JsonList.java b/src/main/java/ne
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/JsonList.java
|
--- a/src/main/java/net/minecraft/server/JsonList.java
|
||||||
+++ b/src/main/java/net/minecraft/server/JsonList.java
|
+++ b/src/main/java/net/minecraft/server/JsonList.java
|
||||||
@@ -0,0 +0,0 @@ public class JsonList {
|
@@ -0,0 +0,0 @@ public class JsonList<K, V extends JsonListEntry<K>> {
|
||||||
try {
|
try {
|
||||||
bufferedreader = Files.newReader(this.c, Charsets.UTF_8);
|
bufferedreader = Files.newReader(this.c, Charsets.UTF_8);
|
||||||
collection = (Collection) this.b.fromJson(bufferedreader, JsonList.f);
|
collection = (Collection) this.b.fromJson(bufferedreader, JsonList.f);
|
|
@ -14,8 +14,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
@@ -0,0 +0,0 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
|
@@ -0,0 +0,0 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
|
||||||
DedicatedServer.LOGGER.info("Loading properties");
|
DedicatedServer.LOGGER.info("Loading properties");
|
||||||
this.propertyManager = new PropertyManager(this.options); // CraftBukkit - CLI argument support
|
this.propertyManager = new PropertyManager(this.options); // CraftBukkit - CLI argument support
|
||||||
this.o = new EULA(new File("eula.txt"));
|
this.p = new EULA(new File("eula.txt"));
|
||||||
- if (!this.o.a()) {
|
- if (!this.p.a()) {
|
||||||
+ // Spigot Start
|
+ // Spigot Start
|
||||||
+ boolean eulaAgreed = Boolean.getBoolean( "com.mojang.eula.agree" );
|
+ boolean eulaAgreed = Boolean.getBoolean( "com.mojang.eula.agree" );
|
||||||
+ if ( eulaAgreed )
|
+ if ( eulaAgreed )
|
||||||
|
@ -25,8 +25,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ System.err.println( "If you do not agree to the above EULA please stop your server and remove this flag immediately." );
|
+ System.err.println( "If you do not agree to the above EULA please stop your server and remove this flag immediately." );
|
||||||
+ }
|
+ }
|
||||||
+ // Spigot End
|
+ // Spigot End
|
||||||
+ if (!this.o.a() && !eulaAgreed) { // Spigot
|
+ if (!this.p.a() && !eulaAgreed) { // Spigot
|
||||||
DedicatedServer.LOGGER.info("You need to agree to the EULA in order to run the server. Go to eula.txt for more info.");
|
DedicatedServer.LOGGER.info("You need to agree to the EULA in order to run the server. Go to eula.txt for more info.");
|
||||||
this.o.b();
|
this.p.b();
|
||||||
return false;
|
return false;
|
||||||
--
|
--
|
|
@ -10,8 +10,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+++ b/src/main/java/net/minecraft/server/EntityOcelot.java
|
+++ b/src/main/java/net/minecraft/server/EntityOcelot.java
|
||||||
@@ -0,0 +0,0 @@ public class EntityOcelot extends EntityTameableAnimal {
|
@@ -0,0 +0,0 @@ public class EntityOcelot extends EntityTameableAnimal {
|
||||||
|
|
||||||
private PathfinderGoalAvoidTarget bm;
|
private PathfinderGoalAvoidTarget<EntityHuman> bo;
|
||||||
private PathfinderGoalTempt bn;
|
private PathfinderGoalTempt bp;
|
||||||
+ public boolean spawnBonus = true; // Spigot
|
+ public boolean spawnBonus = true; // Spigot
|
||||||
|
|
||||||
public EntityOcelot(World world) {
|
public EntityOcelot(World world) {
|
|
@ -13,7 +13,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
}
|
}
|
||||||
|
|
||||||
+ tileentity.a(this); // Spigot - No null worlds
|
+ tileentity.a(this); // Spigot - No null worlds
|
||||||
this.a.add(tileentity);
|
this.b.add(tileentity);
|
||||||
} else {
|
} else {
|
||||||
this.a(tileentity);
|
this.a(tileentity);
|
||||||
--
|
--
|
|
@ -9,9 +9,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
--- a/src/main/java/net/minecraft/server/NBTCompressedStreamTools.java
|
--- a/src/main/java/net/minecraft/server/NBTCompressedStreamTools.java
|
||||||
+++ b/src/main/java/net/minecraft/server/NBTCompressedStreamTools.java
|
+++ b/src/main/java/net/minecraft/server/NBTCompressedStreamTools.java
|
||||||
@@ -0,0 +0,0 @@ public class NBTCompressedStreamTools {
|
@@ -0,0 +0,0 @@ public class NBTCompressedStreamTools {
|
||||||
|
}
|
||||||
|
|
||||||
public static NBTTagCompound a(DataInput datainput, NBTReadLimiter nbtreadlimiter) {
|
public static NBTTagCompound a(DataInput datainput, NBTReadLimiter nbtreadlimiter) throws IOException {
|
||||||
try {
|
|
||||||
+ // Spigot start
|
+ // Spigot start
|
||||||
+ if ( datainput instanceof io.netty.buffer.ByteBufInputStream )
|
+ if ( datainput instanceof io.netty.buffer.ByteBufInputStream )
|
||||||
+ {
|
+ {
|
|
@ -1,499 +0,0 @@
|
||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Evan A. Haskell" <eah2119@gmail.com>
|
|
||||||
Date: Sat, 19 Apr 2014 16:58:26 -0400
|
|
||||||
Subject: [PATCH] Alternative Hopper Ticking
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/BlockHopper.java b/src/main/java/net/minecraft/server/BlockHopper.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/BlockHopper.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/BlockHopper.java
|
|
||||||
@@ -0,0 +0,0 @@ public class BlockHopper extends BlockContainer {
|
|
||||||
|
|
||||||
if (flag != ((Boolean) iblockdata.get(BlockHopper.ENABLED)).booleanValue()) {
|
|
||||||
world.setTypeAndData(blockposition, iblockdata.set(BlockHopper.ENABLED, Boolean.valueOf(flag)), 4);
|
|
||||||
+ // Spigot start - When this hopper becomes unpowered, make it active.
|
|
||||||
+ // Called when this block's power level changes. flag1 is the current
|
|
||||||
+ // isNotPowered from metadata. flag is the recalculated isNotPowered.
|
|
||||||
+ if (world.spigotConfig.altHopperTicking) {
|
|
||||||
+ // e returns the TileEntityHopper associated with this BlockHopper.
|
|
||||||
+ TileEntityHopper hopper = (TileEntityHopper) world.getTileEntity(blockposition);
|
|
||||||
+ if (flag && hopper != null) {
|
|
||||||
+ hopper.makeTick();
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ // Spigot end
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -0,0 +0,0 @@ public class BlockHopper extends BlockContainer {
|
|
||||||
protected BlockStateList getStateList() {
|
|
||||||
return new BlockStateList(this, new IBlockState[] { BlockHopper.FACING, BlockHopper.ENABLED});
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ // Spigot start - Use random block updates to make hoppers active.
|
|
||||||
+ @Override
|
|
||||||
+ public void a(World world, BlockPosition blockposition, IBlockData iblockdata, java.util.Random random) {
|
|
||||||
+ if (world.spigotConfig.altHopperTicking) {
|
|
||||||
+ // e returns the TileEntityHopper associated with this BlockHopper.
|
|
||||||
+ TileEntityHopper hopper = (TileEntityHopper) world.getTileEntity(blockposition);
|
|
||||||
+ if (hopper != null) {
|
|
||||||
+ hopper.makeTick();
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ // Spigot end
|
|
||||||
}
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/Chunk.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/Chunk.java
|
|
||||||
@@ -0,0 +0,0 @@ public class Chunk {
|
|
||||||
|
|
||||||
tileentity.D();
|
|
||||||
this.tileEntities.put(blockposition, tileentity);
|
|
||||||
+ // Spigot start - The tile entity has a world, now hoppers can be born ticking.
|
|
||||||
+ if (this.world.spigotConfig.altHopperTicking) {
|
|
||||||
+ this.world.triggerHoppersList.add(tileentity);
|
|
||||||
+ }
|
|
||||||
+ // Spigot end
|
|
||||||
// CraftBukkit start
|
|
||||||
} else {
|
|
||||||
System.out.println("Attempted to place a tile entity (" + tileentity + ") at " + tileentity.position.getX() + "," + tileentity.position.getY() + "," + tileentity.position.getZ()
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/EntityItem.java b/src/main/java/net/minecraft/server/EntityItem.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/EntityItem.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/EntityItem.java
|
|
||||||
@@ -0,0 +0,0 @@ public class EntityItem extends Entity {
|
|
||||||
if (this.onGround) {
|
|
||||||
this.motY *= -0.5D;
|
|
||||||
}
|
|
||||||
+ // Spigot start - Make the hopper(s) below this item active.
|
|
||||||
+ // Called each tick on each item entity.
|
|
||||||
+ if (this.world.spigotConfig.altHopperTicking) {
|
|
||||||
+ int xi = MathHelper.floor(this.getBoundingBox().a);
|
|
||||||
+ int yi = MathHelper.floor(this.getBoundingBox().b) - 1;
|
|
||||||
+ int zi = MathHelper.floor(this.getBoundingBox().c);
|
|
||||||
+ int xf = MathHelper.floor(this.getBoundingBox().d);
|
|
||||||
+ int yf = MathHelper.floor(this.getBoundingBox().e) - 1;
|
|
||||||
+ int zf = MathHelper.floor(this.getBoundingBox().f);
|
|
||||||
+ for (int a = xi; a <= xf; a++) {
|
|
||||||
+ for (int c = zi; c <= zf; c++) {
|
|
||||||
+ for (int b = yi; b <= yf; b++) {
|
|
||||||
+ TileEntity tileEntity = this.world.getTileEntity(new BlockPosition(a, b, c));
|
|
||||||
+ if (tileEntity instanceof TileEntityHopper) {
|
|
||||||
+ ((TileEntityHopper) tileEntity).makeTick();
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ // Spigot end
|
|
||||||
|
|
||||||
/* Craftbukkit start - moved up
|
|
||||||
if (this.age != -32768) {
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/EntityMinecartAbstract.java b/src/main/java/net/minecraft/server/EntityMinecartAbstract.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/EntityMinecartAbstract.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/EntityMinecartAbstract.java
|
|
||||||
@@ -0,0 +0,0 @@ public abstract class EntityMinecartAbstract extends Entity implements INamableT
|
|
||||||
this.passenger = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ // Spigot start - Make hoppers around this container minecart active.
|
|
||||||
+ // Called each tick on each minecart.
|
|
||||||
+ if (this.world.spigotConfig.altHopperTicking && this instanceof EntityMinecartContainer) {
|
|
||||||
+ int xi = MathHelper.floor(this.getBoundingBox().a) - 1;
|
|
||||||
+ int yi = MathHelper.floor(this.getBoundingBox().b) - 1;
|
|
||||||
+ int zi = MathHelper.floor(this.getBoundingBox().c) - 1;
|
|
||||||
+ int xf = MathHelper.floor(this.getBoundingBox().d) + 1;
|
|
||||||
+ int yf = MathHelper.floor(this.getBoundingBox().e) + 1;
|
|
||||||
+ int zf = MathHelper.floor(this.getBoundingBox().f) + 1;
|
|
||||||
+ for (int a = xi; a <= xf; a++) {
|
|
||||||
+ for (int b = yi; b <= yf; b++) {
|
|
||||||
+ for (int c = zi; c <= zf; c++) {
|
|
||||||
+ TileEntity tileEntity = this.world.getTileEntity(new BlockPosition(a, b, c));
|
|
||||||
+ if (tileEntity instanceof TileEntityHopper) {
|
|
||||||
+ ((TileEntityHopper) tileEntity).makeTick();
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ // Spigot end
|
|
||||||
+
|
|
||||||
this.W();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/EntityOcelot.java b/src/main/java/net/minecraft/server/EntityOcelot.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/EntityOcelot.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/EntityOcelot.java
|
|
||||||
@@ -0,0 +0,0 @@ public class EntityOcelot extends EntityTameableAnimal {
|
|
||||||
this.datawatcher.a(18, Byte.valueOf((byte) 0));
|
|
||||||
}
|
|
||||||
|
|
||||||
+ // Spigot start - When this ocelot begins standing, chests below this ocelot must be
|
|
||||||
+ // updated as if its contents have changed. We update chests if this ocelot is sitting
|
|
||||||
+ // knowing that it may be dead, gone, or standing after this method returns.
|
|
||||||
+ // Called each tick on each ocelot.
|
|
||||||
+ @Override
|
|
||||||
+ public void s_() {
|
|
||||||
+ if (this.world.spigotConfig.altHopperTicking && this.isSitting()) {
|
|
||||||
+ int xi = MathHelper.floor(this.getBoundingBox().a);
|
|
||||||
+ int yi = MathHelper.floor(this.getBoundingBox().b) - 1;
|
|
||||||
+ int zi = MathHelper.floor(this.getBoundingBox().c);
|
|
||||||
+ int xf = MathHelper.floor(this.getBoundingBox().d);
|
|
||||||
+ int yf = MathHelper.floor(this.getBoundingBox().e) - 1;
|
|
||||||
+ int zf = MathHelper.floor(this.getBoundingBox().f);
|
|
||||||
+ for (int a = xi; a <= xf; a++) {
|
|
||||||
+ for (int c = zi; c <= zf; c++) {
|
|
||||||
+ for (int b = yi; b <= yf; b++) {
|
|
||||||
+ this.world.updateChestAndHoppers(new BlockPosition(a, b, c));
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ super.s_();
|
|
||||||
+ }
|
|
||||||
+ // Spigot end
|
|
||||||
+
|
|
||||||
public void E() {
|
|
||||||
if (this.getControllerMove().a()) {
|
|
||||||
double d0 = this.getControllerMove().b();
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/TileEntity.java b/src/main/java/net/minecraft/server/TileEntity.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/TileEntity.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/TileEntity.java
|
|
||||||
@@ -0,0 +0,0 @@ public abstract class TileEntity {
|
|
||||||
private int h;
|
|
||||||
protected Block e;
|
|
||||||
|
|
||||||
+ // Spigot start
|
|
||||||
+ // Helper method for scheduleTicks. If the hopper at x0, y0, z0 is pointed
|
|
||||||
+ // at this tile entity, then make it active.
|
|
||||||
+ private void scheduleTick(BlockPosition blockposition) {
|
|
||||||
+ TileEntity tileEntity = this.world.getTileEntity(blockposition);
|
|
||||||
+ if (tileEntity instanceof TileEntityHopper && tileEntity.world != null) {
|
|
||||||
+ // i is the metadeta assoiated with the direction the hopper faces.
|
|
||||||
+ EnumDirection dir = BlockHopper.b(tileEntity.u());
|
|
||||||
+
|
|
||||||
+ // Facing class provides arrays for direction offset.
|
|
||||||
+ if (tileEntity.position.shift(dir).equals(position)) {
|
|
||||||
+ ((TileEntityHopper) tileEntity).makeTick();
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ // Called from update when the contents have changed, so hoppers need updates.
|
|
||||||
+ // Check all 6 faces.
|
|
||||||
+ public void scheduleTicks() {
|
|
||||||
+ if (this.world != null && this.world.spigotConfig.altHopperTicking) {
|
|
||||||
+ // Check the top
|
|
||||||
+ this.scheduleTick(position.up());
|
|
||||||
+ // Check the sides
|
|
||||||
+ for (int i = 2; i < 6; i++) {
|
|
||||||
+ this.scheduleTick(position.shift(EnumDirection.fromType1(i)));
|
|
||||||
+ }
|
|
||||||
+ // Check the bottom.
|
|
||||||
+ TileEntity tileEntity = this.world.getTileEntity(position.down());
|
|
||||||
+ if (tileEntity instanceof TileEntityHopper && tileEntity.world != null) {
|
|
||||||
+ ((TileEntityHopper) tileEntity).makeTick();
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ // Spigot end
|
|
||||||
+
|
|
||||||
public TileEntity() {
|
|
||||||
this.position = BlockPosition.ZERO;
|
|
||||||
this.h = -1;
|
|
||||||
@@ -0,0 +0,0 @@ public abstract class TileEntity {
|
|
||||||
if (this.w() != Blocks.AIR) {
|
|
||||||
this.world.updateAdjacentComparators(this.position, this.w());
|
|
||||||
}
|
|
||||||
+ // Spigot start - Called when the contents have changed, so hoppers around this
|
|
||||||
+ // tile need updating.
|
|
||||||
+ this.scheduleTicks();
|
|
||||||
+ // Spigot end
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/TileEntityHopper.java b/src/main/java/net/minecraft/server/TileEntityHopper.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/TileEntityHopper.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/TileEntityHopper.java
|
|
||||||
@@ -0,0 +0,0 @@ public class TileEntityHopper extends TileEntityContainer implements IHopper, IU
|
|
||||||
private ItemStack[] items = new ItemStack[5];
|
|
||||||
private String f;
|
|
||||||
private int g = -1;
|
|
||||||
+
|
|
||||||
+ // Spigot start
|
|
||||||
+ private long nextTick = -1; // Next tick this hopper will be ticked.
|
|
||||||
+ private long lastTick = -1; // Last tick this hopper was polled.
|
|
||||||
+
|
|
||||||
+ // If this hopper is not cooling down, assaign a visible tick for next time.
|
|
||||||
+ public void makeTick() {
|
|
||||||
+ if (!this.n()) {
|
|
||||||
+ this.d(0);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ // Contents changed, so make this hopper active.
|
|
||||||
+ public void scheduleHopperTick() {
|
|
||||||
+ if (this.world != null && this.world.spigotConfig.altHopperTicking) {
|
|
||||||
+ this.makeTick();
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ // Called after this hopper is assaigned a world or when altHopperTicking is turned
|
|
||||||
+ // on from reload.
|
|
||||||
+ public void convertToScheduling() {
|
|
||||||
+ // j is the cooldown in ticks
|
|
||||||
+ this.d(this.g);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ // Called when alt hopper ticking is turned off from the reload command
|
|
||||||
+ public void convertToPolling() {
|
|
||||||
+ long cooldownDiff;
|
|
||||||
+ if (this.lastTick == this.world.getTime()) {
|
|
||||||
+ cooldownDiff = this.nextTick - this.world.getTime();
|
|
||||||
+ } else {
|
|
||||||
+ cooldownDiff = this.nextTick - this.world.getTime() + 1;
|
|
||||||
+ }
|
|
||||||
+ this.d((int) Math.max(0, Math.min(cooldownDiff, Integer.MAX_VALUE)));
|
|
||||||
+ }
|
|
||||||
+ // Spigot end
|
|
||||||
|
|
||||||
// CraftBukkit start - add fields and methods
|
|
||||||
public List<HumanEntity> transaction = new java.util.ArrayList<HumanEntity>();
|
|
||||||
@@ -0,0 +0,0 @@ public class TileEntityHopper extends TileEntityContainer implements IHopper, IU
|
|
||||||
}
|
|
||||||
|
|
||||||
nbttagcompound.set("Items", nbttaglist);
|
|
||||||
- nbttagcompound.setInt("TransferCooldown", this.g);
|
|
||||||
+ // Spigot start - Need to write the correct cooldown to disk. We convert from long to int on saving.
|
|
||||||
+ if (this.world != null && this.world.spigotConfig.altHopperTicking) {
|
|
||||||
+ long cooldownDiff;
|
|
||||||
+ if (this.lastTick == this.world.getTime()) {
|
|
||||||
+ cooldownDiff = this.nextTick - this.world.getTime();
|
|
||||||
+ } else {
|
|
||||||
+ cooldownDiff = this.nextTick - this.world.getTime() + 1;
|
|
||||||
+ }
|
|
||||||
+ nbttagcompound.setInt("TransferCooldown", (int) Math.max(0, Math.min(cooldownDiff, Integer.MAX_VALUE)));
|
|
||||||
+ } else {
|
|
||||||
+ // g is the cooldown in ticks.
|
|
||||||
+ nbttagcompound.setInt("TransferCooldown", this.g);
|
|
||||||
+ }
|
|
||||||
+ // Spigot end
|
|
||||||
if (this.hasCustomName()) {
|
|
||||||
nbttagcompound.setString("CustomName", this.f);
|
|
||||||
}
|
|
||||||
@@ -0,0 +0,0 @@ public class TileEntityHopper extends TileEntityContainer implements IHopper, IU
|
|
||||||
|
|
||||||
public void update() {
|
|
||||||
super.update();
|
|
||||||
+ // Spigot start - The contents have changed, so make this hopper active.
|
|
||||||
+ this.scheduleHopperTick();
|
|
||||||
+ // Spigot end
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getSize() {
|
|
||||||
@@ -0,0 +0,0 @@ public class TileEntityHopper extends TileEntityContainer implements IHopper, IU
|
|
||||||
|
|
||||||
public void c() {
|
|
||||||
if (this.world != null && !this.world.isStatic) {
|
|
||||||
- --this.g;
|
|
||||||
- if (!this.n()) {
|
|
||||||
- this.d(0);
|
|
||||||
- this.m();
|
|
||||||
+ // Spigot start
|
|
||||||
+ if (this.world.spigotConfig.altHopperTicking) {
|
|
||||||
+ this.lastTick = this.world.getTime();
|
|
||||||
+ if (this.nextTick == this.world.getTime()) {
|
|
||||||
+ // Method that does the pushing and pulling.
|
|
||||||
+ this.m();
|
|
||||||
+ }
|
|
||||||
+ } else {
|
|
||||||
+ --this.g;
|
|
||||||
+ if (!this.n()) {
|
|
||||||
+ this.d(0);
|
|
||||||
+ this.m();
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -0,0 +0,0 @@ public class TileEntityHopper extends TileEntityContainer implements IHopper, IU
|
|
||||||
}
|
|
||||||
|
|
||||||
// Spigot start
|
|
||||||
- if ( !this.n() )
|
|
||||||
+ if ( !world.spigotConfig.altHopperTicking && !this.n() )
|
|
||||||
{
|
|
||||||
this.d( world.spigotConfig.hopperCheck );
|
|
||||||
}
|
|
||||||
@@ -0,0 +0,0 @@ public class TileEntityHopper extends TileEntityContainer implements IHopper, IU
|
|
||||||
}
|
|
||||||
|
|
||||||
public void d(int i) {
|
|
||||||
- this.g = i;
|
|
||||||
+ // Spigot start - i is the delay for which this hopper will be ticked next.
|
|
||||||
+ // i of 1 or below implies a tick next tick.
|
|
||||||
+ if (this.world != null && this.world.spigotConfig.altHopperTicking) {
|
|
||||||
+ if (i <= 0) {
|
|
||||||
+ i = 1;
|
|
||||||
+ }
|
|
||||||
+ if (this.lastTick == this.world.getTime()) {
|
|
||||||
+ this.nextTick = this.world.getTime() + i;
|
|
||||||
+ } else {
|
|
||||||
+ this.nextTick = this.world.getTime() + i - 1;
|
|
||||||
+ }
|
|
||||||
+ } else {
|
|
||||||
+ this.g = i;
|
|
||||||
+ }
|
|
||||||
+ // Spigot end
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean n() {
|
|
||||||
- return this.g > 0;
|
|
||||||
+ // Spigot start - Return whether this hopper is cooling down.
|
|
||||||
+ if (this.world != null && this.world.spigotConfig.altHopperTicking) {
|
|
||||||
+ if (this.lastTick == this.world.getTime()) {
|
|
||||||
+ return this.nextTick > this.world.getTime();
|
|
||||||
+ } else {
|
|
||||||
+ return this.nextTick >= this.world.getTime();
|
|
||||||
+ }
|
|
||||||
+ } else {
|
|
||||||
+ return this.g > 0;
|
|
||||||
+ }
|
|
||||||
+ // Spigot end
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean o() {
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/World.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/World.java
|
|
||||||
@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
|
|
||||||
private final byte chunkTickRadius;
|
|
||||||
public static boolean haveWeSilencedAPhysicsCrash;
|
|
||||||
public static String blockLocation;
|
|
||||||
+ public List<TileEntity> triggerHoppersList = new ArrayList<TileEntity>(); // Spigot, When altHopperTicking, tile entities being added go through here.
|
|
||||||
|
|
||||||
public static long chunkToKey(int x, int z)
|
|
||||||
{
|
|
||||||
@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
|
|
||||||
{
|
|
||||||
return (int) ( ( ( k >> 32 ) & 0xFFFF0000L ) | ( ( k >> 16 ) & 0x0000FFFF ) );
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ // Spigot Start - Hoppers need to be born ticking.
|
|
||||||
+ private void initializeHoppers() {
|
|
||||||
+ if (this.spigotConfig.altHopperTicking) {
|
|
||||||
+ for (TileEntity o : this.triggerHoppersList) {
|
|
||||||
+ o.scheduleTicks();
|
|
||||||
+ if (o instanceof TileEntityHopper) {
|
|
||||||
+ ((TileEntityHopper) o).convertToScheduling();
|
|
||||||
+ ((TileEntityHopper) o).scheduleHopperTick();
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ triggerHoppersList.clear();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ // Helper method for altHopperTicking. Updates chests at the specified location,
|
|
||||||
+ // accounting for double chests. Updating the chest will update adjacent hoppers.
|
|
||||||
+ public void updateChestAndHoppers(BlockPosition blockposition) {
|
|
||||||
+ Block block = this.getType(blockposition).getBlock();
|
|
||||||
+ if (block instanceof BlockChest) {
|
|
||||||
+ TileEntity tile = this.getTileEntity(blockposition);
|
|
||||||
+ if (tile instanceof TileEntityChest) {
|
|
||||||
+ tile.scheduleTicks();
|
|
||||||
+ }
|
|
||||||
+ for (int i = 2; i < 6; i++) {
|
|
||||||
+ // Facing class provides arrays for direction offset.
|
|
||||||
+ BlockPosition pos = blockposition.shift(EnumDirection.fromType1(i));
|
|
||||||
+ if (this.getType(pos) == block) {
|
|
||||||
+ tile = this.getTileEntity(pos);
|
|
||||||
+ if (tile instanceof TileEntityChest) {
|
|
||||||
+ tile.scheduleTicks();
|
|
||||||
+ }
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
// Spigot end
|
|
||||||
|
|
||||||
public final org.spigotmc.SpigotWorldConfig spigotConfig; // Spigot
|
|
||||||
@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
|
|
||||||
// Modularize client and physic updates
|
|
||||||
notifyAndUpdatePhysics(blockposition, chunk, block1, block, i);
|
|
||||||
}
|
|
||||||
+ // Spigot start - If this block is changing to that which a chest beneath it
|
|
||||||
+ // becomes able to be opened, then the chest must be updated.
|
|
||||||
+ // block1 is the old block. block is the new block. r returns true if the block type
|
|
||||||
+ // prevents access to a chest.
|
|
||||||
+ if (this.spigotConfig.altHopperTicking && block1 != null && block1.isOccluding()&& !block.isOccluding()) {
|
|
||||||
+ this.updateChestAndHoppers(blockposition.down());
|
|
||||||
+ }
|
|
||||||
+ // Spigot end
|
|
||||||
// CraftBukkit end
|
|
||||||
|
|
||||||
return true;
|
|
||||||
@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
|
|
||||||
}
|
|
||||||
// CraftBukkit end
|
|
||||||
|
|
||||||
+ this.initializeHoppers(); // Spigot - Initializes hoppers which have been added recently.
|
|
||||||
Iterator iterator = this.tileEntityList.iterator();
|
|
||||||
|
|
||||||
while (iterator.hasNext()) {
|
|
||||||
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
|
|
||||||
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
|
|
||||||
@@ -0,0 +0,0 @@ public class SpigotWorldConfig
|
|
||||||
log( "Entity Tracking Range: Pl " + playerTrackingRange + " / An " + animalTrackingRange + " / Mo " + monsterTrackingRange + " / Mi " + miscTrackingRange + " / Other " + otherTrackingRange );
|
|
||||||
}
|
|
||||||
|
|
||||||
+ public boolean altHopperTicking;
|
|
||||||
public int hopperTransfer;
|
|
||||||
public int hopperCheck;
|
|
||||||
public int hopperAmount;
|
|
||||||
private void hoppers()
|
|
||||||
{
|
|
||||||
+ // Alternate ticking method. Uses inventory changes, redstone updates etc.
|
|
||||||
+ // to update hoppers. Hopper-check is disabled when this is true.
|
|
||||||
+ boolean prev = altHopperTicking;
|
|
||||||
+ altHopperTicking = getBoolean( "hopper-alt-ticking", false );
|
|
||||||
+ // Necessary for the reload command
|
|
||||||
+ if (prev != altHopperTicking) {
|
|
||||||
+ net.minecraft.server.World world = (net.minecraft.server.World) Bukkit.getWorld(this.worldName);
|
|
||||||
+ if (world != null) {
|
|
||||||
+ if (altHopperTicking) {
|
|
||||||
+ for (Object o : world.tileEntityList) {
|
|
||||||
+ if (o instanceof net.minecraft.server.TileEntityHopper) {
|
|
||||||
+ ((net.minecraft.server.TileEntityHopper) o).convertToScheduling();
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ } else {
|
|
||||||
+ for (Object o : world.tileEntityList) {
|
|
||||||
+ if (o instanceof net.minecraft.server.TileEntityHopper) {
|
|
||||||
+ ((net.minecraft.server.TileEntityHopper) o).convertToPolling();
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
// Set the tick delay between hopper item movements
|
|
||||||
hopperTransfer = getInt( "ticks-per.hopper-transfer", 8 );
|
|
||||||
// Set the tick delay between checking for items after the associated
|
|
||||||
@@ -0,0 +0,0 @@ public class SpigotWorldConfig
|
|
||||||
// hopper sorting machines from becoming out of sync.
|
|
||||||
hopperCheck = getInt( "ticks-per.hopper-check", hopperTransfer );
|
|
||||||
hopperAmount = getInt( "hopper-amount", 1 );
|
|
||||||
+ log( "Alternative Hopper Ticking: " + altHopperTicking );
|
|
||||||
log( "Hopper Transfer: " + hopperTransfer + " Hopper Check: " + hopperCheck + " Hopper Amount: " + hopperAmount );
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
|
@ -11,10 +11,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
@@ -0,0 +0,0 @@ public class PersistentCollection {
|
@@ -0,0 +0,0 @@ public class PersistentCollection {
|
||||||
|
|
||||||
private IDataManager b;
|
private IDataManager b;
|
||||||
protected Map a = Maps.newHashMap();
|
protected Map<String, PersistentBase> a = Maps.newHashMap();
|
||||||
- private List c = Lists.newArrayList();
|
- private List<PersistentBase> c = Lists.newArrayList();
|
||||||
+ public List c = Lists.newArrayList(); // Spigot
|
+ public List<PersistentBase> c = Lists.newArrayList(); // Spigot
|
||||||
private Map d = Maps.newHashMap();
|
private Map<String, Short> d = Maps.newHashMap();
|
||||||
|
|
||||||
public PersistentCollection(IDataManager idatamanager) {
|
public PersistentCollection(IDataManager idatamanager) {
|
||||||
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
|
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
|
||||||
|
@ -32,7 +32,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ {
|
+ {
|
||||||
+ WorldMap map = (WorldMap) o;
|
+ WorldMap map = (WorldMap) o;
|
||||||
+ map.i.remove( entity );
|
+ map.i.remove( entity );
|
||||||
+ for ( Iterator<WorldMapHumanTracker> iter = (Iterator<WorldMapHumanTracker>) map.g.iterator(); iter.hasNext(); )
|
+ for ( Iterator<WorldMap.WorldMapHumanTracker> iter = (Iterator<WorldMap.WorldMapHumanTracker>) map.g.iterator(); iter.hasNext(); )
|
||||||
+ {
|
+ {
|
||||||
+ if ( iter.next().trackee == entity )
|
+ if ( iter.next().trackee == entity )
|
||||||
+ {
|
+ {
|
||||||
|
@ -52,10 +52,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
@@ -0,0 +0,0 @@ public class WorldMap extends PersistentBase {
|
@@ -0,0 +0,0 @@ public class WorldMap extends PersistentBase {
|
||||||
public byte scale;
|
public byte scale;
|
||||||
public byte[] colors = new byte[16384];
|
public byte[] colors = new byte[16384];
|
||||||
public List g = Lists.newArrayList();
|
public List<WorldMap.WorldMapHumanTracker> g = Lists.newArrayList();
|
||||||
- private Map i = Maps.newHashMap();
|
- private Map<EntityHuman, WorldMap.WorldMapHumanTracker> i = Maps.newHashMap();
|
||||||
+ public Map i = Maps.newHashMap(); // Spigot
|
+ public Map<EntityHuman, WorldMap.WorldMapHumanTracker> i = Maps.newHashMap(); // Spigot
|
||||||
public Map decorations = Maps.newLinkedHashMap();
|
public Map<String, MapIcon> decorations = Maps.newLinkedHashMap();
|
||||||
|
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
--
|
--
|
|
@ -18,7 +18,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
entity.extinguish();
|
entity.extinguish();
|
||||||
}
|
}
|
||||||
@@ -0,0 +0,0 @@ public abstract class EntityHuman extends EntityLiving {
|
@@ -0,0 +0,0 @@ public abstract class EntityHuman extends EntityLiving {
|
||||||
super.bE();
|
super.bF();
|
||||||
this.b(StatisticList.u);
|
this.b(StatisticList.u);
|
||||||
if (this.isSprinting()) {
|
if (this.isSprinting()) {
|
||||||
- this.applyExhaustion(0.8F);
|
- this.applyExhaustion(0.8F);
|
|
@ -13,7 +13,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
@@ -0,0 +0,0 @@ public class EntityTNTPrimed extends Entity {
|
@@ -0,0 +0,0 @@ public class EntityTNTPrimed extends Entity {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void s_() {
|
public void t_() {
|
||||||
+ if (world.spigotConfig.currentPrimedTnt++ > world.spigotConfig.maxTntTicksPerTick) { return; } // Spigot
|
+ if (world.spigotConfig.currentPrimedTnt++ > world.spigotConfig.maxTntTicksPerTick) { return; } // Spigot
|
||||||
this.lastX = this.locX;
|
this.lastX = this.locX;
|
||||||
this.lastY = this.locY;
|
this.lastY = this.locY;
|
|
@ -12,8 +12,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
this.lastX = this.locX;
|
this.lastX = this.locX;
|
||||||
this.lastY = this.locY;
|
this.lastY = this.locY;
|
||||||
this.lastZ = this.locZ;
|
this.lastZ = this.locZ;
|
||||||
- if (this.c++ == 100 && !this.world.isStatic) {
|
- if (this.c++ == 100 && !this.world.isClientSide) {
|
||||||
+ if (this.c++ == this.world.spigotConfig.hangingTickFrequency && !this.world.isStatic) { // Spigot - 100 -> this.world.spigotConfig.hangingTickFrequency
|
+ if (this.c++ == this.world.spigotConfig.hangingTickFrequency && !this.world.isClientSide) {
|
||||||
this.c = 0;
|
this.c = 0;
|
||||||
if (!this.dead && !this.survives()) {
|
if (!this.dead && !this.survives()) {
|
||||||
// CraftBukkit start - fire break events
|
// CraftBukkit start - fire break events
|
|
@ -10,7 +10,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+++ b/src/main/java/net/minecraft/server/EnchantmentManager.java
|
+++ b/src/main/java/net/minecraft/server/EnchantmentManager.java
|
||||||
@@ -0,0 +0,0 @@ public class EnchantmentManager {
|
@@ -0,0 +0,0 @@ public class EnchantmentManager {
|
||||||
if (entity instanceof EntityHuman) {
|
if (entity instanceof EntityHuman) {
|
||||||
a((EnchantmentModifier) EnchantmentManager.d, entityliving.bz());
|
a((EnchantmentManager.EnchantmentModifier) EnchantmentManager.d, entityliving.bA());
|
||||||
}
|
}
|
||||||
-
|
-
|
||||||
+ // Spigot start
|
+ // Spigot start
|
||||||
|
@ -22,7 +22,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
public static void b(EntityLiving entityliving, Entity entity) {
|
public static void b(EntityLiving entityliving, Entity entity) {
|
||||||
@@ -0,0 +0,0 @@ public class EnchantmentManager {
|
@@ -0,0 +0,0 @@ public class EnchantmentManager {
|
||||||
if (entityliving instanceof EntityHuman) {
|
if (entityliving instanceof EntityHuman) {
|
||||||
a((EnchantmentModifier) EnchantmentManager.e, entityliving.bz());
|
a((EnchantmentManager.EnchantmentModifier) EnchantmentManager.e, entityliving.bA());
|
||||||
}
|
}
|
||||||
-
|
-
|
||||||
+ // Spigot start
|
+ // Spigot start
|
||||||
|
@ -45,13 +45,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@@ -0,0 +0,0 @@ public abstract class EntityInsentient extends EntityLiving {
|
@@ -0,0 +0,0 @@ public abstract class EntityInsentient extends EntityLiving {
|
||||||
protected NavigationAbstract navigation;
|
protected NavigationAbstract navigation;
|
||||||
public PathfinderGoalSelector goalSelector; // PAIL protected final to public
|
public PathfinderGoalSelector goalSelector; // CraftBukkit - public
|
||||||
public PathfinderGoalSelector targetSelector; // PAIL protected final to public
|
public PathfinderGoalSelector targetSelector; // CraftBukkit - public
|
||||||
- private EntityLiving goalTarget;
|
- private EntityLiving goalTarget;
|
||||||
+ private WeakReference<EntityLiving> goalTarget = new WeakReference<EntityLiving>(null);
|
+ private WeakReference<EntityLiving> goalTarget = new WeakReference<EntityLiving>(null);
|
||||||
private EntitySenses bi;
|
private EntitySenses bk;
|
||||||
private ItemStack[] equipment = new ItemStack[5];
|
private ItemStack[] equipment = new ItemStack[5];
|
||||||
public float[] dropChances = new float[5];
|
public float[] dropChances = new float[5]; // CraftBukkit - public
|
||||||
@@ -0,0 +0,0 @@ public abstract class EntityInsentient extends EntityLiving {
|
@@ -0,0 +0,0 @@ public abstract class EntityInsentient extends EntityLiving {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,14 +74,14 @@ diff --git a/src/main/java/net/minecraft/server/NetworkManager.java b/src/main/j
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/NetworkManager.java
|
--- a/src/main/java/net/minecraft/server/NetworkManager.java
|
||||||
+++ b/src/main/java/net/minecraft/server/NetworkManager.java
|
+++ b/src/main/java/net/minecraft/server/NetworkManager.java
|
||||||
@@ -0,0 +0,0 @@ public class NetworkManager extends SimpleChannelInboundHandler {
|
@@ -0,0 +0,0 @@ public class NetworkManager extends SimpleChannelInboundHandler<Packet> {
|
||||||
public void close(IChatBaseComponent ichatbasecomponent) {
|
public void close(IChatBaseComponent ichatbasecomponent) {
|
||||||
// Spigot Start
|
// Spigot Start
|
||||||
this.preparing = false;
|
this.preparing = false;
|
||||||
+ this.h.clear();
|
+ this.i.clear();
|
||||||
// Spigot End
|
// Spigot End
|
||||||
if (this.i.isOpen()) {
|
if (this.k.isOpen()) {
|
||||||
this.i.close(); // We can't wait as this may be called from an event loop.
|
this.k.close(); // We can't wait as this may be called from an event loop.
|
||||||
diff --git a/src/main/java/net/minecraft/server/PathfinderGoalSwell.java b/src/main/java/net/minecraft/server/PathfinderGoalSwell.java
|
diff --git a/src/main/java/net/minecraft/server/PathfinderGoalSwell.java b/src/main/java/net/minecraft/server/PathfinderGoalSwell.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/PathfinderGoalSwell.java
|
--- a/src/main/java/net/minecraft/server/PathfinderGoalSwell.java
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue