diff --git a/Spigot-API-Patches/POM-changes.patch b/Spigot-API-Patches/POM-changes.patch index 1a076b3b3..9702f5832 100644 --- a/Spigot-API-Patches/POM-changes.patch +++ b/Spigot-API-Patches/POM-changes.patch @@ -24,7 +24,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 - spigot-api + org.github.paperspigot + paperspigot-api - 1.8-R0.1-SNAPSHOT + 1.8.3-R0.1-SNAPSHOT jar - Spigot-API diff --git a/Spigot-Server-Patches/Ability-to-disable-asynccatcher.patch b/Spigot-Server-Patches/Ability-to-disable-asynccatcher.patch index 6ebf18917..ff1cdd1bf 100644 --- a/Spigot-Server-Patches/Ability-to-disable-asynccatcher.patch +++ b/Spigot-Server-Patches/Ability-to-disable-asynccatcher.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Zach Brown <1254957+zachbr@users.noreply.github.com> -Date: Tue, 5 Aug 2014 17:39:04 -0500 +Date: Sat, 7 Mar 2015 20:46:54 -0600 Subject: [PATCH] Ability to disable asynccatcher @@ -10,15 +10,16 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +++ b/src/main/java/org/github/paperspigot/PaperSpigotConfig.java @@ -0,0 +0,0 @@ public class PaperSpigotConfig { - babyZombieMovementSpeed = getDouble( "settings.baby-zombie-movement-speed", 0.5D); // Player moves at 0.1F, for reference + babyZombieMovementSpeed = getDouble( "settings.baby-zombie-movement-speed", 0.5D ); // Player moves at 0.1F, for reference } + + public static boolean asyncCatcherFeature; + private static void asyncCatcherFeature() + { + asyncCatcherFeature = getBoolean( "settings.async-plugin-bad-magic-catcher", true ); -+ if (!asyncCatcherFeature) { -+ Bukkit.getLogger().log( Level.INFO, "Disabling async plugin bad ju-ju catcher, this may be bad depending on your plugins" ); ++ if ( !asyncCatcherFeature ) ++ { ++ Bukkit.getLogger().log( Level.INFO, "Disabling async plugin bad ju-ju catcher, this is not recommended and may cause issues" ); + } + } } @@ -35,6 +36,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public static void catchOp(String reason) { --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Add-TNT-source-location-API.patch b/Spigot-Server-Patches/Add-TNT-source-location-API.patch index 9d5845d12..2b3670a51 100644 --- a/Spigot-Server-Patches/Add-TNT-source-location-API.patch +++ b/Spigot-Server-Patches/Add-TNT-source-location-API.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Aikar -Date: Sun, 30 Nov 2014 22:57:18 -0600 +Date: Sun, 8 Mar 2015 04:23:41 -0500 Subject: [PATCH] Add TNT source location API @@ -11,8 +11,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public class BlockTNT extends Block { public void wasExploded(World world, BlockPosition blockposition, Explosion explosion) { - if (!world.isStatic) { -- EntityTNTPrimed entitytntprimed = new EntityTNTPrimed(world, (double) ((float) blockposition.getX() + 0.5F), (double) ((float) blockposition.getY() + 0.5F), (double) ((float) blockposition.getZ() + 0.5F), explosion.c()); + if (!world.isClientSide) { +- EntityTNTPrimed entitytntprimed = new EntityTNTPrimed(world, (double) ((float) blockposition.getX() + 0.5F), (double) blockposition.getY(), (double) ((float) blockposition.getZ() + 0.5F), explosion.c()); + org.bukkit.Location loc = explosion.source instanceof EntityTNTPrimed ? ((EntityTNTPrimed) explosion.source).sourceLoc : new org.bukkit.Location(world.getWorld(), blockposition.getX(), blockposition.getY(), blockposition.getZ()); // PaperSpigot + EntityTNTPrimed entitytntprimed = new EntityTNTPrimed(loc, world, (double) ((float) blockposition.getX() + 0.5F), (double) ((float) blockposition.getY() + 0.5F), (double) ((float) blockposition.getZ() + 0.5F), explosion.c()); // PaperSpigot - add loc @@ -20,27 +20,27 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 world.addEntity(entitytntprimed); @@ -0,0 +0,0 @@ public class BlockTNT extends Block { public void a(World world, BlockPosition blockposition, IBlockData iblockdata, EntityLiving entityliving) { - if (!world.isStatic) { + if (!world.isClientSide) { if (((Boolean) iblockdata.get(BlockTNT.EXPLODE)).booleanValue()) { -- EntityTNTPrimed entitytntprimed = new EntityTNTPrimed(world, (double) ((float) blockposition.getX() + 0.5F), (double) ((float) blockposition.getY() + 0.5F), (double) ((float) blockposition.getZ() + 0.5F), entityliving); +- EntityTNTPrimed entitytntprimed = new EntityTNTPrimed(world, (double) ((float) blockposition.getX() + 0.5F), (double) blockposition.getY(), (double) ((float) blockposition.getZ() + 0.5F), entityliving); + org.bukkit.Location loc = new org.bukkit.Location(world.getWorld(), blockposition.getX(), blockposition.getY(), blockposition.getZ()); // PaperSpigot + EntityTNTPrimed entitytntprimed = new EntityTNTPrimed(loc, world, (double) ((float) blockposition.getX() + 0.5F), (double) ((float) blockposition.getY() + 0.5F), (double) ((float) blockposition.getZ() + 0.5F), entityliving); // PaperSpigot - add loc world.addEntity(entitytntprimed); world.makeSound(entitytntprimed, "game.tnt.primed", 1.0F, 1.0F); -diff --git a/src/main/java/net/minecraft/server/DispenseBehaviorTNT.java b/src/main/java/net/minecraft/server/DispenseBehaviorTNT.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 ---- a/src/main/java/net/minecraft/server/DispenseBehaviorTNT.java -+++ b/src/main/java/net/minecraft/server/DispenseBehaviorTNT.java -@@ -0,0 +0,0 @@ final class DispenseBehaviorTNT extends DispenseBehaviorItem { - } - } +--- a/src/main/java/net/minecraft/server/DispenserRegistry.java ++++ b/src/main/java/net/minecraft/server/DispenserRegistry.java +@@ -0,0 +0,0 @@ public class DispenserRegistry { + } + } -- EntityTNTPrimed entitytntprimed = new EntityTNTPrimed(world, event.getVelocity().getX(), event.getVelocity().getY(), event.getVelocity().getZ(), (EntityLiving) null); -+ EntityTNTPrimed entitytntprimed = new EntityTNTPrimed(block.getLocation(), world, event.getVelocity().getX(), event.getVelocity().getY(), event.getVelocity().getZ(), (EntityLiving) null); // PaperSpigot - // CraftBukkit end +- EntityTNTPrimed entitytntprimed = new EntityTNTPrimed(world, event.getVelocity().getX(), event.getVelocity().getY(), event.getVelocity().getZ(), (EntityLiving) null); ++ EntityTNTPrimed entitytntprimed = new EntityTNTPrimed(block.getLocation(), world, event.getVelocity().getX(), event.getVelocity().getY(), event.getVelocity().getZ(), (EntityLiving) null); // PaperSpigot + // CraftBukkit end - world.addEntity(entitytntprimed); + world.addEntity(entitytntprimed); diff --git a/src/main/java/net/minecraft/server/EntityTNTPrimed.java b/src/main/java/net/minecraft/server/EntityTNTPrimed.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/server/EntityTNTPrimed.java @@ -57,11 +57,11 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + } + + public EntityTNTPrimed(org.bukkit.Location loc, World world) { -+ // PaperSpigot end super(world); -+ sourceLoc = loc; // PaperSpigot ++ sourceLoc = loc; ++ // PaperSpigot end this.k = true; - this.a(0.98F, 0.98F); + this.setSize(0.98F, 0.98F); } - public EntityTNTPrimed(World world, double d0, double d1, double d2, EntityLiving entityliving) { @@ -127,6 +127,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + } + // PaperSpigot end } --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Add-a-constructor-for-setting-header-and-footer.patch b/Spigot-Server-Patches/Add-a-constructor-for-setting-header-and-footer.patch deleted file mode 100644 index bc83fc751..000000000 --- a/Spigot-Server-Patches/Add-a-constructor-for-setting-header-and-footer.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Zach Brown <1254957+zachbr@users.noreply.github.com> -Date: Fri, 5 Dec 2014 22:44:50 -0600 -Subject: [PATCH] Add a constructor for setting header and footer - - -diff --git a/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java b/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 ---- a/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java -+++ b/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java -@@ -0,0 +0,0 @@ public class PacketPlayOutPlayerListHeaderFooter implements Packet { - packetdataserializer.a(this.b); - } - -+ // PaperSpigot start - Add a constructor for setting both the header and the footer -+ public PacketPlayOutPlayerListHeaderFooter(IChatBaseComponent header, IChatBaseComponent footer) { -+ this.a = header; -+ this.b = footer; -+ } -+ // PaperSpigot end -+ - public void a(PacketListenerPlayOut packetlistenerplayout) { - packetlistenerplayout.a(this); - } --- -1.9.5.msysgit.0 - diff --git a/Spigot-Server-Patches/Add-async-chunk-load-API.patch b/Spigot-Server-Patches/Add-async-chunk-load-API.patch index 762afd0db..135722692 100644 --- a/Spigot-Server-Patches/Add-async-chunk-load-API.patch +++ b/Spigot-Server-Patches/Add-async-chunk-load-API.patch @@ -33,6 +33,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public Chunk getChunkAt(int x, int z) { return this.world.chunkProviderServer.getChunkAt(x, z).bukkitChunk; } --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Add-configurable-despawn-distances-for-living-entiti.patch b/Spigot-Server-Patches/Add-configurable-despawn-distances-for-living-entiti.patch index b76621166..1acbd48a9 100644 --- a/Spigot-Server-Patches/Add-configurable-despawn-distances-for-living-entiti.patch +++ b/Spigot-Server-Patches/Add-configurable-despawn-distances-for-living-entiti.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Suddenly -Date: Fri, 28 Nov 2014 01:49:53 -0600 +Date: Sat, 7 Mar 2015 21:40:48 -0600 Subject: [PATCH] Add configurable despawn distances for living entities @@ -17,30 +17,21 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.die(); } -- if (this.aO > 600 && this.random.nextInt(800) == 0 && d3 > 1024.0D) { // CraftBukkit - remove isTypeNotPersistent() check -+ if (this.aO > 600 && this.random.nextInt(800) == 0 && d3 > this.world.paperSpigotConfig.softDespawnDistance) { // CraftBukkit - remove isTypeNotPersistent() check // PaperSpigot - custom despawn distances +- if (this.ticksFarFromPlayer > 600 && this.random.nextInt(800) == 0 && d3 > 1024.0D) { // CraftBukkit - remove isTypeNotPersistent() check ++ if (this.ticksFarFromPlayer > 600 && this.random.nextInt(800) == 0 && d3 > this.world.paperSpigotConfig.softDespawnDistance) { // CraftBukkit - remove isTypeNotPersistent() check // PaperSpigot - custom despawn distance this.die(); - } else if (d3 < 1024.0D) { + } else if (d3 < this.world.paperSpigotConfig.softDespawnDistance) { // PaperSpigot - custom despawn distances - this.aO = 0; + this.ticksFarFromPlayer = 0; } } diff --git a/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java b/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java +++ b/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java -@@ -0,0 +0,0 @@ public class PaperSpigotWorldConfig - private void blockGrowthHeight() - { - cactusMaxHeight = getInt( "max-growth-height.cactus", 3 ); -- reedMaxHeight = getInt( "max-growth-height.reeds", 3 ); -+ reedMaxHeight = getInt("max-growth-height.reeds", 3); - log( "Max height for cactus growth " + cactusMaxHeight + ". Max height for reed growth " + reedMaxHeight); - } - @@ -0,0 +0,0 @@ public class PaperSpigotWorldConfig blockBreakExhaustion = getFloat( "player-exhaustion.block-break", 0.025F ); - playerSwimmingExhaustion = getFloat("player-exhaustion.swimming", 0.015F ); + playerSwimmingExhaustion = getFloat( "player-exhaustion.swimming", 0.015F ); } + + public int softDespawnDistance; @@ -50,7 +41,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + softDespawnDistance = getInt( "despawn-ranges.soft", 32 ); // 32^2 = 1024, Minecraft Default + hardDespawnDistance = getInt( "despawn-ranges.hard", 128 ); // 128^2 = 16384, Minecraft Default; + -+ if ( softDespawnDistance > hardDespawnDistance) { ++ if ( softDespawnDistance > hardDespawnDistance ) { + softDespawnDistance = hardDespawnDistance; + } + @@ -60,6 +51,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + hardDespawnDistance = hardDespawnDistance*hardDespawnDistance; + } } --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Allow-for-toggling-of-spawn-chunks.patch b/Spigot-Server-Patches/Allow-for-toggling-of-spawn-chunks.patch index 85463139e..1c140bd92 100644 --- a/Spigot-Server-Patches/Allow-for-toggling-of-spawn-chunks.patch +++ b/Spigot-Server-Patches/Allow-for-toggling-of-spawn-chunks.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dmck2b -Date: Fri, 28 Nov 2014 01:53:14 -0600 +Date: Sat, 7 Mar 2015 21:50:40 -0600 Subject: [PATCH] Allow for toggling of spawn chunks @@ -9,13 +9,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- 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 { - this.ticksPerAnimalSpawns = this.getServer().getTicksPerAnimalSpawns(); // CraftBukkit - this.ticksPerMonsterSpawns = this.getServer().getTicksPerMonsterSpawns(); // CraftBukkit + }); + this.getServer().addWorld(this.world); // CraftBukkit end + this.keepSpawnInMemory = this.paperSpigotConfig.keepSpawnInMemory; // PaperSpigot - // Spigot start - this.chunkTickRadius = (byte) ( ( this.getServer().getViewDistance() < 7 ) ? this.getServer().getViewDistance() : 7 ); - this.chunkTickList = new gnu.trove.map.hash.TLongShortHashMap( spigotConfig.chunksPerTick * 5, 0.7f, Long.MIN_VALUE, Short.MIN_VALUE ); + timings = new SpigotTimings.WorldTimingsHandler(this); // Spigot - code below can generate new world and access timings + this.entityLimiter = new org.spigotmc.TickLimiter(spigotConfig.entityMaxTickTime); + this.tileLimiter = new org.spigotmc.TickLimiter(spigotConfig.tileMaxTickTime); diff --git a/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java b/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java @@ -32,6 +32,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + log( "Keep spawn chunk loaded: " + keepSpawnInMemory ); + } } --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Allow-nerfed-mobs-to-jump.patch b/Spigot-Server-Patches/Allow-nerfed-mobs-to-jump.patch index 460e7e2f3..1b9a87841 100644 --- a/Spigot-Server-Patches/Allow-nerfed-mobs-to-jump.patch +++ b/Spigot-Server-Patches/Allow-nerfed-mobs-to-jump.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Zach Brown <1254957+zachbr@users.noreply.github.com> -Date: Sun, 29 Jun 2014 13:32:36 -0500 +Date: Sat, 7 Mar 2015 21:03:06 -0600 Subject: [PATCH] Allow nerfed mobs to jump @@ -21,6 +21,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 return; } // Spigot End --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Allow-specified-ItemStacks-to-retain-their-invalid-d.patch b/Spigot-Server-Patches/Allow-specified-ItemStacks-to-retain-their-invalid-d.patch index a005148f6..381ada0d9 100644 --- a/Spigot-Server-Patches/Allow-specified-ItemStacks-to-retain-their-invalid-d.patch +++ b/Spigot-Server-Patches/Allow-specified-ItemStacks-to-retain-their-invalid-d.patch @@ -63,6 +63,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + Bukkit.getLogger().info( "Data value allowed items: " + StringUtils.join(dataValueAllowedItems, ", ") ); + } } --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Allow-undead-horse-types-to-be-leashed.patch b/Spigot-Server-Patches/Allow-undead-horse-types-to-be-leashed.patch index ceb8ad325..5bc5c17f6 100644 --- a/Spigot-Server-Patches/Allow-undead-horse-types-to-be-leashed.patch +++ b/Spigot-Server-Patches/Allow-undead-horse-types-to-be-leashed.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Zach Brown <1254957+zachbr@users.noreply.github.com> -Date: Fri, 28 Nov 2014 00:08:37 -0600 +Date: Sat, 7 Mar 2015 19:57:50 -0600 Subject: [PATCH] Allow undead horse types to be leashed @@ -11,18 +11,15 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public class EntityHorse extends EntityAnimal implements IInventoryListener { } - public boolean ca() { -- return !this.cP() && super.ca(); + public boolean cb() { + // PaperSpigot start - Configurable undead horse leashing + if (this.world.paperSpigotConfig.allowUndeadHorseLeashing) { -+ return super.ca(); -+ } else { -+ return !this.cP() && super.ca(); ++ return super.cb(); + } + // PaperSpigot end + return !this.cR() && super.cb(); } - protected void n(float f) { diff --git a/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java b/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java @@ -35,7 +32,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + public boolean allowUndeadHorseLeashing; + private void allowUndeadHorseLeashing() + { -+ allowUndeadHorseLeashing = getBoolean( "allow-undead-horse-leashing", true ); ++ allowUndeadHorseLeashing = getBoolean( "allow-undead-horse-leashing", false ); + log( "Allow undead horse types to be leashed: " + allowUndeadHorseLeashing ); + } } diff --git a/Spigot-Server-Patches/Check-online-mode-before-converting-and-renaming-pla.patch b/Spigot-Server-Patches/Check-online-mode-before-converting-and-renaming-pla.patch index 315e4616b..13f05be0d 100644 --- a/Spigot-Server-Patches/Check-online-mode-before-converting-and-renaming-pla.patch +++ b/Spigot-Server-Patches/Check-online-mode-before-converting-and-renaming-pla.patch @@ -17,6 +17,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 { file = new File( this.playerDir, UUID.nameUUIDFromBytes( ( "OfflinePlayer:" + entityhuman.getName() ).getBytes( "UTF-8" ) ).toString() + ".dat"); if ( file.exists() ) --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Configurable-baby-zombie-movement-speed.patch b/Spigot-Server-Patches/Configurable-baby-zombie-movement-speed.patch index 05ab64f63..c9008594b 100644 --- a/Spigot-Server-Patches/Configurable-baby-zombie-movement-speed.patch +++ b/Spigot-Server-Patches/Configurable-baby-zombie-movement-speed.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Zach Brown <1254957+zachbr@users.noreply.github.com> -Date: Fri, 28 Nov 2014 01:01:51 -0600 +Date: Sat, 7 Mar 2015 20:41:55 -0600 Subject: [PATCH] Configurable baby zombie movement speed @@ -10,14 +10,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +++ b/src/main/java/net/minecraft/server/EntityZombie.java @@ -0,0 +0,0 @@ public class EntityZombie extends EntityMonster { - protected static final IAttribute b = (new AttributeRanged((IAttribute) null, "zombie.spawnReinforcements", 0.0D, 0.0D, 1.0D)).a("Spawn Reinforcements Chance"); - private static final UUID c = UUID.fromString("B9766B59-9566-4402-BC1F-2EE2A276D836"); -- private static final AttributeModifier bk = new AttributeModifier(EntityZombie.c, "Baby speed boost", 0.5D, 1); -+ // PaperSpigot - Configurable baby zombie movement speed -+ private static final AttributeModifier bk = new AttributeModifier(EntityZombie.c, "Baby speed boost", org.github.paperspigot.PaperSpigotConfig.babyZombieMovementSpeed, 1); - private final PathfinderGoalBreakDoor bl = new PathfinderGoalBreakDoor(this); - private int bm; - private boolean bn = false; + protected static final IAttribute a = (new AttributeRanged((IAttribute) null, "zombie.spawnReinforcements", 0.0D, 0.0D, 1.0D)).a("Spawn Reinforcements Chance"); + private static final UUID b = UUID.fromString("B9766B59-9566-4402-BC1F-2EE2A276D836"); +- private static final AttributeModifier c = new AttributeModifier(EntityZombie.b, "Baby speed boost", 0.5D, 1); ++ private static final AttributeModifier c = new AttributeModifier(EntityZombie.b, "Baby speed boost", org.github.paperspigot.PaperSpigotConfig.babyZombieMovementSpeed, 1); // PaperSpigot - Configurable baby zombie movement speed + private final PathfinderGoalBreakDoor bm = new PathfinderGoalBreakDoor(this); + private int bn; + private boolean bo = false; diff --git a/src/main/java/org/github/paperspigot/PaperSpigotConfig.java b/src/main/java/org/github/paperspigot/PaperSpigotConfig.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/github/paperspigot/PaperSpigotConfig.java @@ -30,9 +29,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + public static double babyZombieMovementSpeed; + private static void babyZombieMovementSpeed() + { -+ babyZombieMovementSpeed = getDouble( "settings.baby-zombie-movement-speed", 0.5D); // Player moves at 0.1F, for reference ++ babyZombieMovementSpeed = getDouble( "settings.baby-zombie-movement-speed", 0.5D ); // Player moves at 0.1F, for reference + } } --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Configurable-cactus-and-reed-natural-growth-heights.patch b/Spigot-Server-Patches/Configurable-cactus-and-reed-natural-growth-heights.patch index c50b1fc27..80a71454f 100644 --- a/Spigot-Server-Patches/Configurable-cactus-and-reed-natural-growth-heights.patch +++ b/Spigot-Server-Patches/Configurable-cactus-and-reed-natural-growth-heights.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Zach Brown <1254957+zachbr@users.noreply.github.com> -Date: Fri, 28 Nov 2014 00:55:17 -0600 +Date: Sat, 7 Mar 2015 20:32:13 -0600 Subject: [PATCH] Configurable cactus and reed natural growth heights @@ -13,7 +13,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } - if (i < 3) { -+ if (i < world.paperSpigotConfig.cactusMaxHeight) { // PaperSpigot - Configurable max growth height for cactus blocks ++ if (i < world.paperSpigotConfig.cactusMaxHeight) { // PaperSpigot - Configurable max growth height for cactus blocks) { int j = ((Integer) iblockdata.get(BlockCactus.AGE)).intValue(); if (j >= (byte) range(3, (world.growthOdds / world.spigotConfig.cactusModifier * 15) + 0.5F, 15)) { // Spigot @@ -26,7 +26,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } - if (i < 3) { -+ if (i < world.paperSpigotConfig.reedMaxHeight) { // PaperSpigot - Configurable max growth height for reed blocks ++ if (i < world.paperSpigotConfig.reedMaxHeight) { // PaperSpigot - Configurable max growth height for reed blocks) { int j = ((Integer) iblockdata.get(BlockReed.AGE)).intValue(); if (j >= (byte) range(3, (world.growthOdds / world.spigotConfig.caneModifier * 15) + 0.5F, 15)) { // Spigot @@ -36,7 +36,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +++ b/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java @@ -0,0 +0,0 @@ public class PaperSpigotWorldConfig playerBlockingDamageMultiplier = getFloat( "player-blocking-damage-multiplier", 0.5F ); - log( "Player blocking damage multiplier set to " + playerBlockingDamageMultiplier); + log( "Player blocking damage multiplier set to " + playerBlockingDamageMultiplier ); } + + public int cactusMaxHeight; @@ -45,9 +45,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + { + cactusMaxHeight = getInt( "max-growth-height.cactus", 3 ); + reedMaxHeight = getInt( "max-growth-height.reeds", 3 ); -+ log( "Max height for cactus growth " + cactusMaxHeight + ". Max height for reed growth " + reedMaxHeight); ++ log( "Max height for cactus growth " + cactusMaxHeight + ". Max height for reed growth " + reedMaxHeight ); + } } --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Configurable-damage-multiplier-for-PvP-blocking.patch b/Spigot-Server-Patches/Configurable-damage-multiplier-for-PvP-blocking.patch index 974dae45d..9eb797f21 100644 --- a/Spigot-Server-Patches/Configurable-damage-multiplier-for-PvP-blocking.patch +++ b/Spigot-Server-Patches/Configurable-damage-multiplier-for-PvP-blocking.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Zach Brown <1254957+zachbr@users.noreply.github.com> -Date: Fri, 28 Nov 2014 00:45:14 -0600 +Date: Sat, 7 Mar 2015 20:27:02 -0600 Subject: [PATCH] Configurable damage multiplier for PvP blocking @@ -13,7 +13,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 if (!this.isInvulnerable(damagesource)) { if (!damagesource.ignoresArmor() && this.isBlocking() && f > 0.0F) { - f = (1.0F + f) * 0.5F; -+ f = (1.0F + f) * this.world.paperSpigotConfig.playerBlockingDamageMultiplier; // PaperSpigot - Configurable damage multiplier for blocking ++ f = (1.0F + f) * this.world.paperSpigotConfig.playerBlockingDamageMultiplier; // PaperSpigot - Configurable damage multiplier for blocking; } f = this.applyArmorModifier(damagesource, f); @@ -23,16 +23,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +++ b/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java @@ -0,0 +0,0 @@ public class PaperSpigotWorldConfig squidMaxSpawnHeight = getDouble( "squid-spawn-height.maximum", 63.0D ); - log( "Squids will spawn between Y: " + squidMinSpawnHeight + " and Y: " + squidMaxSpawnHeight); + log( "Squids will spawn between Y: " + squidMinSpawnHeight + " and Y: " + squidMaxSpawnHeight ); } + + public float playerBlockingDamageMultiplier; + private void playerBlockingDamageMultiplier() + { + playerBlockingDamageMultiplier = getFloat( "player-blocking-damage-multiplier", 0.5F ); -+ log( "Player blocking damage multiplier set to " + playerBlockingDamageMultiplier); ++ log( "Player blocking damage multiplier set to " + playerBlockingDamageMultiplier ); + } } --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Configurable-fishing-time-ranges.patch b/Spigot-Server-Patches/Configurable-fishing-time-ranges.patch index 56590980e..a925a039a 100644 --- a/Spigot-Server-Patches/Configurable-fishing-time-ranges.patch +++ b/Spigot-Server-Patches/Configurable-fishing-time-ranges.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Zach Brown <1254957+zachbr@users.noreply.github.com> -Date: Fri, 28 Nov 2014 01:29:35 -0600 +Date: Sat, 7 Mar 2015 21:00:13 -0600 Subject: [PATCH] Configurable fishing time ranges @@ -9,13 +9,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/net/minecraft/server/EntityFishingHook.java +++ b/src/main/java/net/minecraft/server/EntityFishingHook.java @@ -0,0 +0,0 @@ public class EntityFishingHook extends Entity { - this.av = MathHelper.nextInt(this.random, 20, 80); + this.ax = MathHelper.nextInt(this.random, 20, 80); } } else { -- this.au = MathHelper.nextInt(this.random, 100, 900); -+ // PaperSpigot - Configurable fishing tick range -+ this.au = MathHelper.nextInt(this.random, this.world.paperSpigotConfig.fishingMinTicks, this.world.paperSpigotConfig.fishingMaxTicks); - this.au -= EnchantmentManager.h(this.owner) * 20 * 5; +- this.aw = MathHelper.nextInt(this.random, 100, 900); ++ this.aw = MathHelper.nextInt(this.random, this.world.paperSpigotConfig.fishingMinTicks, this.world.paperSpigotConfig.fishingMaxTicks); // PaperSpigot - Configurable fishing tick range + this.aw -= EnchantmentManager.h(this.owner) * 20 * 5; } } diff --git a/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java b/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java @@ -24,7 +23,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +++ b/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java @@ -0,0 +0,0 @@ public class PaperSpigotWorldConfig reedMaxHeight = getInt( "max-growth-height.reeds", 3 ); - log( "Max height for cactus growth " + cactusMaxHeight + ". Max height for reed growth " + reedMaxHeight); + log( "Max height for cactus growth " + cactusMaxHeight + ". Max height for reed growth " + reedMaxHeight ); } + + public int fishingMinTicks; @@ -35,6 +34,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + fishingMaxTicks = getInt( "fishing-time-range.MaximumTicks", 900 ); + } } --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Configurable-game-mechanics-changes.patch b/Spigot-Server-Patches/Configurable-game-mechanics-changes.patch index 45f619a93..51dfa6d50 100644 --- a/Spigot-Server-Patches/Configurable-game-mechanics-changes.patch +++ b/Spigot-Server-Patches/Configurable-game-mechanics-changes.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: gsand -Date: Fri, 28 Nov 2014 13:53:48 -0600 +Date: Sun, 8 Mar 2015 04:10:02 -0500 Subject: [PATCH] Configurable game mechanics changes @@ -10,8 +10,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +++ b/src/main/java/net/minecraft/server/EntityBoat.java @@ -0,0 +0,0 @@ public class EntityBoat extends Entity { if (!destroyEvent.isCancelled()) { - this.die(); - + this.die(); + if (this.world.getGameRules().getBoolean("doEntityDrops")) { - for (k = 0; k < 3; ++k) { - this.a(Item.getItemOf(Blocks.PLANKS), 1, 0.0F); - } @@ -21,12 +21,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 - } + breakNaturally(); // PaperSpigot } - // CraftBukkit end + } // CraftBukkit end } @@ -0,0 +0,0 @@ public class EntityBoat extends Entity { if (!destroyEvent.isCancelled()) { - this.die(); - + this.die(); + if (this.world.getGameRules().getBoolean("doEntityDrops")) { - int i; - - for (i = 0; i < 3; ++i) { @@ -38,7 +38,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 - } + breakNaturally(); // PaperSpigot } - // CraftBukkit end + } // CraftBukkit end } @@ -0,0 +0,0 @@ public class EntityBoat extends Entity { public int m() { @@ -77,6 +77,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + boatsDropBoats = getBoolean( "game-mechanics.boats-drop-boats", false ); + } } --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Configurable-speed-for-water-flowing-over-lava.patch b/Spigot-Server-Patches/Configurable-speed-for-water-flowing-over-lava.patch index d071daaa4..66d97ed0f 100644 --- a/Spigot-Server-Patches/Configurable-speed-for-water-flowing-over-lava.patch +++ b/Spigot-Server-Patches/Configurable-speed-for-water-flowing-over-lava.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Byteflux -Date: Fri, 28 Nov 2014 02:31:02 -0600 +Date: Sat, 7 Mar 2015 22:17:03 -0600 Subject: [PATCH] Configurable speed for water flowing over lava @@ -32,7 +32,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + */ + public int getFlowSpeed(World world, BlockPosition blockposition) { + if (this.getMaterial() == Material.WATER && ( -+ // TODO: Double check that this does what I think it does + world.getType(blockposition.north(1)).getBlock().getMaterial() == Material.LAVA || + world.getType(blockposition.south(1)).getBlock().getMaterial() == Material.LAVA || + world.getType(blockposition.west(1)).getBlock().getMaterial() == Material.LAVA || @@ -47,7 +46,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java +++ b/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java @@ -0,0 +0,0 @@ public class PaperSpigotWorldConfig - log( "Falling Block Height Limit set to Y: " + fallingBlockHeightNerf); + log( "Falling Block Height Limit set to Y: " + fallingBlockHeightNerf ); } } + @@ -58,6 +57,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + log( "Water over lava flow speed: " + waterOverLavaFlowSpeed ); + } } --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Configurable-squid-spawn-ranges.patch b/Spigot-Server-Patches/Configurable-squid-spawn-ranges.patch index f80000aa8..fdd5e2958 100644 --- a/Spigot-Server-Patches/Configurable-squid-spawn-ranges.patch +++ b/Spigot-Server-Patches/Configurable-squid-spawn-ranges.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Zach Brown <1254957+zachbr@users.noreply.github.com> -Date: Fri, 28 Nov 2014 00:41:04 -0600 +Date: Sat, 7 Mar 2015 20:20:29 -0600 Subject: [PATCH] Configurable squid spawn ranges @@ -11,10 +11,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public class EntitySquid extends EntityWaterAnimal { } - public boolean bQ() { -- return this.locY > 45.0D && this.locY < 63.0D && super.bQ(); + public boolean bR() { +- return this.locY > 45.0D && this.locY < (double) this.world.F() && super.bR(); + // PaperSpigot - Configurable squid spawn range -+ return this.locY > this.world.paperSpigotConfig.squidMinSpawnHeight && this.locY < this.world.paperSpigotConfig.squidMaxSpawnHeight && super.bQ(); ++ return this.locY > this.world.paperSpigotConfig.squidMinSpawnHeight && this.locY < (double) this.world.paperSpigotConfig.squidMaxSpawnHeight && super.bR(); } public void b(float f, float f1, float f2) { @@ -23,7 +23,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java +++ b/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java @@ -0,0 +0,0 @@ public class PaperSpigotWorldConfig - allowUndeadHorseLeashing = getBoolean( "allow-undead-horse-leashing", true ); + allowUndeadHorseLeashing = getBoolean( "allow-undead-horse-leashing", false ); log( "Allow undead horse types to be leashed: " + allowUndeadHorseLeashing ); } + @@ -33,9 +33,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + { + squidMinSpawnHeight = getDouble( "squid-spawn-height.minimum", 45.0D ); + squidMaxSpawnHeight = getDouble( "squid-spawn-height.maximum", 63.0D ); -+ log( "Squids will spawn between Y: " + squidMinSpawnHeight + " and Y: " + squidMaxSpawnHeight); ++ log( "Squids will spawn between Y: " + squidMinSpawnHeight + " and Y: " + squidMaxSpawnHeight ); + } } --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Configurable-strength-and-weakness-effect-modifiers.patch b/Spigot-Server-Patches/Configurable-strength-and-weakness-effect-modifiers.patch index 2cfa62cb4..b92d0e1a5 100644 --- a/Spigot-Server-Patches/Configurable-strength-and-weakness-effect-modifiers.patch +++ b/Spigot-Server-Patches/Configurable-strength-and-weakness-effect-modifiers.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: gsand -Date: Fri, 28 Nov 2014 12:23:02 -0600 +Date: Sun, 8 Mar 2015 03:41:33 -0500 Subject: [PATCH] Configurable strength and weakness effect modifiers @@ -14,7 +14,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public double a(int i, AttributeModifier attributemodifier) { - return this.id == MobEffectList.WEAKNESS.id ? (double) (-0.5F * (float) (i + 1)) : 1.3D * (double) (i + 1); + // PaperSpigot - Configurable modifiers for strength and weakness effects -+ return this.id == MobEffectList.WEAKNESS.id ? (double) (org.github.paperspigot.PaperSpigotConfig.weaknessEffectModifier * (float) (i + 1)) : org.github.paperspigot.PaperSpigotConfig.strengthEffectModifier * (double) (i + 1); ++ return this.id == MobEffectList.WEAKNESS.id ? (double) (org.github.paperspigot.PaperSpigotConfig.weaknessEffectModifier * (float) (i + 1)) : org.github.paperspigot.PaperSpigotConfig.strengthEffectModifier * (double) i + 1; } } diff --git a/src/main/java/org/github/paperspigot/PaperSpigotConfig.java b/src/main/java/org/github/paperspigot/PaperSpigotConfig.java @@ -34,6 +34,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + weaknessEffectModifier = getDouble( "effect-modifiers.weakness", -0.5D ); + } } --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Configurable-top-of-nether-void-damage.patch b/Spigot-Server-Patches/Configurable-top-of-nether-void-damage.patch index 155f3cc79..95de84dc8 100644 --- a/Spigot-Server-Patches/Configurable-top-of-nether-void-damage.patch +++ b/Spigot-Server-Patches/Configurable-top-of-nether-void-damage.patch @@ -46,6 +46,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + netherVoidTopDamage = getBoolean( "nether-ceiling-void-damage", false ); + } } --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Do-not-remove-player-in-world-change.patch b/Spigot-Server-Patches/Do-not-remove-player-in-world-change.patch index 7ca843f22..aa0275972 100644 --- a/Spigot-Server-Patches/Do-not-remove-player-in-world-change.patch +++ b/Spigot-Server-Patches/Do-not-remove-player-in-world-change.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: T00thpick1 -Date: Fri, 28 Nov 2014 01:25:45 -0600 +Date: Sat, 7 Mar 2015 20:54:33 -0600 Subject: [PATCH] Do not remove player in world change @@ -13,17 +13,17 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 // entityplayer.u().getTracker().untrackEntity(entityplayer); // CraftBukkit entityplayer.u().getPlayerChunkMap().removePlayer(entityplayer); - this.players.remove(entityplayer); -+ // this.players.remove(entityplayer); // PaperSpigot - Fixes BUKKIT-4561, BUKKIT-4082, and BUKKIT-2094 ++ //this.players.remove(entityplayer); // PaperSpigot - Don't remove player in world change. Fixes BUKKIT-4561, BUKKIT-4082, and BUKKIT-2094 this.server.getWorldServer(entityplayer.dimension).removeEntity(entityplayer); BlockPosition blockposition = entityplayer.getBed(); boolean flag1 = entityplayer.isRespawnForced(); @@ -0,0 +0,0 @@ public abstract class PlayerList { + if (!entityplayer.playerConnection.isDisconnected()) { worldserver.getPlayerChunkMap().addPlayer(entityplayer1); - worldserver.addEntity(entityplayer1); -- this.players.add(entityplayer1); -+ //this.players.add(entityplayer1); // PaperSpigot - Fixes BUKKIT-4561, BUKKIT-4082, and BUKKIT-2094 - this.f.put(entityplayer1.getUniqueID(), entityplayer1); +- worldserver.addEntity(entityplayer1); ++ //worldserver.addEntity(entityplayer1); // PaperSpigot - Don't remove player in world change. Fixes BUKKIT-4561, BUKKIT-4082, and BUKKIT-2094 + this.players.add(entityplayer1); + this.j.put(entityplayer1.getUniqueID(), entityplayer1); } - // Added from changeDimension -- \ No newline at end of file diff --git a/Spigot-Server-Patches/Drop-falling-block-entities-that-are-above-the-speci.patch b/Spigot-Server-Patches/Drop-falling-block-entities-that-are-above-the-speci.patch index 0bfa7f4da..9f57aa703 100644 --- a/Spigot-Server-Patches/Drop-falling-block-entities-that-are-above-the-speci.patch +++ b/Spigot-Server-Patches/Drop-falling-block-entities-that-are-above-the-speci.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Byteflux -Date: Fri, 28 Nov 2014 02:03:43 -0600 +Date: Sat, 7 Mar 2015 22:03:47 -0600 Subject: [PATCH] Drop falling block entities that are above the specified height @@ -40,11 +40,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + private void fallingBlockheightNerf() + { + fallingBlockHeightNerf = getInt( "falling-block-height-nerf", 0 ); -+ if (fallingBlockHeightNerf != 0) { -+ log( "Falling Block Height Limit set to Y: " + fallingBlockHeightNerf); ++ if ( fallingBlockHeightNerf != 0 ) ++ { ++ log( "Falling Block Height Limit set to Y: " + fallingBlockHeightNerf ); + } + } } --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Enderman-drop-the-block-they-re-holding-when-they-di.patch b/Spigot-Server-Patches/Enderman-drop-the-block-they-re-holding-when-they-di.patch index 46e3c6d52..f3e243bab 100644 --- a/Spigot-Server-Patches/Enderman-drop-the-block-they-re-holding-when-they-di.patch +++ b/Spigot-Server-Patches/Enderman-drop-the-block-they-re-holding-when-they-di.patch @@ -22,6 +22,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public void setCarried(IBlockData iblockdata) { --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Fix-redstone-lag-issues.patch b/Spigot-Server-Patches/Fix-redstone-lag-issues.patch index aaf16f858..4c78786d6 100644 --- a/Spigot-Server-Patches/Fix-redstone-lag-issues.patch +++ b/Spigot-Server-Patches/Fix-redstone-lag-issues.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Iceee -Date: Fri, 28 Nov 2014 01:21:27 -0600 +Date: Sat, 7 Mar 2015 20:49:31 -0600 Subject: [PATCH] Fix redstone lag issues @@ -12,7 +12,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 if (i != this.L.size()) { throw new IllegalStateException("TickNextTick list out of synch"); } else { -+ // PaperSpigot start - Fix redstone lag issues ++ // PaperSpigot start - No, stop doing this, it affects things like redstone + /* if (i > 1000) { // CraftBukkit start - If the server has too much to process over time, try to alleviate that @@ -20,9 +20,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public class WorldServer extends World implements IAsyncTaskHandler { i = 1000; } - // CraftBukkit end -+ } */ -+ + // CraftBukkit end ++ */ + if (i > 10000) { + i = 10000; } @@ -30,6 +29,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.methodProfiler.a("cleaning"); --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Further-improve-server-tick-loop.patch b/Spigot-Server-Patches/Further-improve-server-tick-loop.patch index c01459a03..787822137 100644 --- a/Spigot-Server-Patches/Further-improve-server-tick-loop.patch +++ b/Spigot-Server-Patches/Further-improve-server-tick-loop.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Aikar -Date: Fri, 28 Nov 2014 12:48:26 -0600 +Date: Sun, 8 Mar 2015 03:47:32 -0500 Subject: [PATCH] Further improve server tick loop Improves how the catchup buffer is handled, allowing it to roll both ways @@ -15,7 +15,7 @@ diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/ index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/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 org.bukkit.command.ConsoleCommandSender console; public org.bukkit.command.RemoteConsoleCommandSender remoteConsole; public ConsoleReader reader; @@ -34,7 +34,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public MinecraftServer(OptionSet options, Proxy proxy, File file1) { io.netty.util.ResourceLeakDetector.setEnabled( false ); // Spigot - disable -@@ -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; } @@ -93,7 +93,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public void run() { try { -@@ -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(this.r); // Spigot start @@ -211,6 +211,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 { return ( ( tps > 18.0 ) ? ChatColor.GREEN : ( tps > 16.0 ) ? ChatColor.YELLOW : ChatColor.RED ).toString() + ( ( tps > 20.0 ) ? "*" : "" ) + Math.min( Math.round( tps * 100.0 ) / 100.0, 20.0 ); --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Move-sound-handling-out-of-the-chest-tick-loop.patch b/Spigot-Server-Patches/Move-sound-handling-out-of-the-chest-tick-loop.patch index f54054aae..b620413f9 100644 --- a/Spigot-Server-Patches/Move-sound-handling-out-of-the-chest-tick-loop.patch +++ b/Spigot-Server-Patches/Move-sound-handling-out-of-the-chest-tick-loop.patch @@ -1,10 +1,8 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Iceee -Date: Fri, 28 Nov 2014 11:56:55 -0600 +Date: Sun, 8 Mar 2015 03:16:39 -0500 Subject: [PATCH] Move sound handling out of the chest tick loop -This allows us to disable ticking chests and enderchests without any -noticeable difference to players diff --git a/src/main/java/net/minecraft/server/TileEntityChest.java b/src/main/java/net/minecraft/server/TileEntityChest.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 @@ -34,7 +32,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public void c() { -+ // PaperSpigot start - Move chest sounds out of tick loop - TileEntity Tick Improvements ++ // PaperSpigot - Move chest sounds out of the tick loop + /* this.m(); int i = this.position.getX(); @@ -43,28 +41,25 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.j = 0.0F; } } +- + */ + // PaperSpigot end - } + public boolean c(int i, int j) { @@ -0,0 +0,0 @@ public class TileEntityChest extends TileEntityContainer implements IUpdatePlaye ++this.l; if (this.world == null) return; // CraftBukkit + -+ // PaperSpigot - Move chest open sound out of the tick loop ++ // PaperSpigot start - Move chest open sound out of the tick loop + this.m(); + + if (this.l > 0 && this.j == 0.0F && this.f == null && this.h == null) { + this.j = 0.7F; + -+ int locX = this.position.getX(); -+ int locY = this.position.getY(); -+ int locZ = this.position.getZ(); -+ -+ double d0 = (double) locZ + 0.5D; -+ double d1 = (double) locX + 0.5D; ++ double d0 = (double) this.position.getZ() + 0.5D; ++ double d1 = (double) this.position.getX() + 0.5D; + + if (this.i != null) { + d0 += 0.5D; @@ -74,7 +69,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + d1 += 0.5D; + } + -+ this.world.makeSound(d1, (double) locY + 0.5D, d0, "random.chestopen", 0.5F, this.world.random.nextFloat() * 0.1F + 0.9F); ++ this.world.makeSound(d1, (double) this.position.getY() + 0.5D, d0, "random.chestopen", 0.5F, this.world.random.nextFloat() * 0.1F + 0.9F); + } + // PaperSpigot end + @@ -82,17 +77,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 // CraftBukkit start - Call redstone event @@ -0,0 +0,0 @@ public class TileEntityChest extends TileEntityContainer implements IUpdatePlaye - + int oldPower = Math.max(0, Math.min(15, this.l)); // CraftBukkit - Get power before new viewer is added --this.l; if (this.world == null) return; // CraftBukkit + + // PaperSpigot start - Move chest close sound handling out of the tick loop + if (this.l == 0 && this.j > 0.0F || this.l > 0 && this.j < 1.0F) { -+ int locX = this.position.getX(); -+ int locY = this.position.getY(); -+ int locZ = this.position.getZ(); -+ float f1 = this.j; -+ + float f = 0.1F; + + if (this.l > 0) { @@ -101,8 +91,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + this.j -= f; + } + -+ double d0 = (double) locX + 0.5D; -+ double d2 = (double) locZ + 0.5D; ++ double d0 = (double) this.getPosition().getX() + 0.5D; ++ double d2 = (double) this.getPosition().getZ() + 0.5D; + + if (this.i != null) { + d2 += 0.5D; @@ -112,14 +102,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + d0 += 0.5D; + } + -+ this.world.makeSound(d0, (double) locY + 0.5D, d2, "random.chestclosed", 0.5F, this.world.random.nextFloat() * 0.1F + 0.9F); -+ ++ this.world.makeSound(d0, (double) this.getPosition().getY() + 0.5D, d2, "random.chestclosed", 0.5F, this.world.random.nextFloat() * 0.1F + 0.9F); + this.j = 0.0F; + } + // PaperSpigot end + this.world.playBlockAction(this.position, this.w(), 1, this.l); - + // CraftBukkit start - Call redstone event diff --git a/src/main/java/net/minecraft/server/TileEntityEnderChest.java b/src/main/java/net/minecraft/server/TileEntityEnderChest.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 @@ -139,20 +128,21 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public TileEntityEnderChest() {} public void c() { -+ // PaperSpigot - Move enderchest sound handling out of the tick loop ++ // PaperSpigot start - Move enderchest sound handling out of the tick loop + /* - if (++this.h % 4 == 0) { // PaperSpigot Reduced (20 * 4) -> 4 interval due to reduced tick rate from Improved Tick Handling + if (++this.h % 4 == 0) { // PaperSpigot - Reduced (20 * 4) -> 4 interval due to reduced tick rate from improved tick handling this.world.playBlockAction(this.position, Blocks.ENDER_CHEST, 1, this.g); } @@ -0,0 +0,0 @@ public class TileEntityEnderChest extends TileEntity implements IUpdatePlayerLis this.a = 0.0F; } } +- + */ + // PaperSpigot end - } + public boolean c(int i, int j) { @@ -0,0 +0,0 @@ public class TileEntityEnderChest extends TileEntity implements IUpdatePlayerLis public void b() { @@ -162,14 +152,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + if (this.g > 0 && this.a == 0.0F) { + this.a = 0.7F; + -+ int locX = this.position.getX(); -+ int locY = this.position.getY(); -+ int locZ = this.position.getZ(); ++ double d1 = (double) this.getPosition().getX() + 0.5D; ++ double d0 = (double) this.getPosition().getZ() + 0.5D; + -+ double d1 = (double) locX + 0.5D; -+ double d0 = (double) locZ + 0.5D; -+ -+ this.world.makeSound(d1, (double) locY + 0.5D, d0, "random.chestopen", 0.5F, this.world.random.nextFloat() * 0.1F + 0.9F); ++ this.world.makeSound(d1, (double) this.getPosition().getY() + 0.5D, d0, "random.chestopen", 0.5F, this.world.random.nextFloat() * 0.1F + 0.9F); + } + // PaperSpigot end + @@ -181,15 +167,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + + // PaperSpigot start - Move enderchest close sounds out of the tick loop + if (this.g == 0 && this.a > 0.0F || this.g > 0 && this.a < 1.0F) { -+ int locX = this.position.getX(); -+ int locY = this.position.getY(); -+ int locZ = this.position.getZ(); -+ -+ double d0 = (double) locX + 0.5D; -+ double d2 = (double) locZ + 0.5D; -+ -+ this.world.makeSound(d0, (double) locY + 0.5D, d2, "random.chestclosed", 0.5F, this.world.random.nextFloat() * 0.1F + 0.9F); ++ double d0 = (double) this.getPosition().getX() + 0.5D; ++ double d2 = (double) this.getPosition().getZ() + 0.5D; + ++ this.world.makeSound(d0, (double) this.getPosition().getY() + 0.5D, d2, "random.chestclosed", 0.5F, this.world.random.nextFloat() * 0.1F + 0.9F); + this.a = 0.0F; + } + // PaperSpigot end @@ -197,6 +178,19 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.world.playBlockAction(this.position, Blocks.ENDER_CHEST, 1, this.g); } --- -1.9.5.msysgit.0 - +diff --git a/src/main/java/org/github/paperspigot/WorldTileEntityList.java b/src/main/java/org/github/paperspigot/WorldTileEntityList.java +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/org/github/paperspigot/WorldTileEntityList.java ++++ b/src/main/java/org/github/paperspigot/WorldTileEntityList.java +@@ -0,0 +0,0 @@ public class WorldTileEntityList extends HashSet { + TileEntityCommand.class, + TileEntitySkull.class, + TileEntityComparator.class, +- TileEntityFlowerPot.class ++ TileEntityFlowerPot.class, ++ TileEntityChest.class, ++ TileEntityEnderChest.class + }) { + put(ignored, -1); + } +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Only-refresh-abilities-if-needed.patch b/Spigot-Server-Patches/Only-refresh-abilities-if-needed.patch index 0a89c3547..f9a19daca 100644 --- a/Spigot-Server-Patches/Only-refresh-abilities-if-needed.patch +++ b/Spigot-Server-Patches/Only-refresh-abilities-if-needed.patch @@ -23,6 +23,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } @Override --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Optimize-TileEntity-Ticking.patch b/Spigot-Server-Patches/Optimize-TileEntity-Ticking.patch index c076670ca..a95545515 100644 --- a/Spigot-Server-Patches/Optimize-TileEntity-Ticking.patch +++ b/Spigot-Server-Patches/Optimize-TileEntity-Ticking.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Aikar -Date: Fri, 28 Nov 2014 04:14:14 -0600 +Date: Sun, 8 Mar 2015 01:56:22 -0600 Subject: [PATCH] Optimize TileEntity Ticking @@ -9,10 +9,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- 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 { - } - // Spigot end + private int h; + protected Block e; -+ // PaperSpigot start - Optimized TileEntity Tick changes ++ // PaperSpigot start - Optimized TileEntity tick changes + private static int tileEntityCounter = 0; + public boolean isAdded = false; + public int tileId = tileEntityCounter++; @@ -30,7 +30,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public void c() { - if (this.world.getTime() % 80L == 0L) { -+ if (true || this.world.getTime() % 80L == 0L) { // PaperSpigot - controlled by Improved Tick Handling ++ if (true || this.world.getTime() % 80L == 0L) { // PaperSpigot - Controlled by improved tick handling this.m(); } @@ -42,8 +42,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 ++this.n; float f; -- if (!this.world.isStatic && this.l != 0 && (this.n + i + j + k) % 200 == 0) { -+ if (!this.world.isStatic && this.l != 0 && (this.n + i + j + k) % 10 == 0) { // PaperSpigot Reduced 200 -> 10 interval due to reduced tick rate from Improved Tick Handling +- if (!this.world.isClientSide && this.l != 0 && (this.n + i + j + k) % 200 == 0) { ++ if (!this.world.isClientSide && this.l != 0 && (this.n + i + j + k) % 10 == 0) { // PaperSpigot - Reduced 200 -> 10 due to reduced interval from improved tick handling this.l = 0; f = 5.0F; List list = this.world.a(EntityHuman.class, new AxisAlignedBB((double) ((float) i - f), (double) ((float) j - f), (double) ((float) k - f), (double) ((float) (i + 1) + f), (double) ((float) (j + 1) + f), (double) ((float) (k + 1) + f))); @@ -56,7 +56,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public void c() { - if (++this.h % 20 * 4 == 0) { -+ if (++this.h % 4 == 0) { // PaperSpigot Reduced (20 * 4) -> 4 interval due to reduced tick rate from Improved Tick Handling ++ if (++this.h % 4 == 0) { // PaperSpigot - Reduced (20 * 4) -> 4 interval due to reduced tick rate from improved tick handling this.world.playBlockAction(this.position, Blocks.ENDER_CHEST, 1, this.g); } @@ -68,53 +68,40 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public TileEntityLightDetector() {} public void c() { -- if (this.world != null && !this.world.isStatic && this.world.getTime() % 20L == 0L) { -+ if (this.world != null && !this.world.isStatic /*&& this.world.getTime() % 20L == 0L*/) { // PaperSpigot - interval controlled by Improved Tick Handling +- if (this.world != null && !this.world.isClientSide && this.world.getTime() % 20L == 0L) { ++ if (this.world != null && !this.world.isClientSide /*&& this.world.getTime() % 20L == 0L*/) { // PaperSpigot - interval controlled by improved tick handling this.e = this.w(); if (this.e instanceof BlockDaylightDetector) { - ((BlockDaylightDetector) this.e).d(this.world, this.position); + ((BlockDaylightDetector) this.e).f(this.world, this.position); 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 @@ package net.minecraft.server; - import com.google.common.base.Predicate; - import com.google.common.collect.Lists; - --import java.util.ArrayList; --import java.util.Calendar; --import java.util.Collection; --import java.util.Iterator; --import java.util.List; --import java.util.Random; --import java.util.UUID; -+import java.util.*; - import java.util.concurrent.Callable; - - // CraftBukkit start @@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess { // Spigot end - protected final List g = Lists.newArrayList(); - public final List h = Lists.newArrayList(); -- public final List tileEntityList = Lists.newArrayList(); -+ public final Set tileEntityList = new org.github.paperspigot.WorldTileEntityList(this); // PaperSpigot - private final List a = Lists.newArrayList(); - private final List b = Lists.newArrayList(); - public final List players = Lists.newArrayList(); + protected final List g = Lists.newArrayList(); + public final List h = Lists.newArrayList(); +- public final List tileEntityList = Lists.newArrayList(); ++ public final Set tileEntityList = new org.github.paperspigot.WorldTileEntityList(this); // PaperSpigot + private final List b = Lists.newArrayList(); + private final List c = Lists.newArrayList(); + public final List players = Lists.newArrayList(); @@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess { + public static boolean haveWeSilencedAPhysicsCrash; public static String blockLocation; - public List triggerHoppersList = new ArrayList(); // Spigot, When altHopperTicking, tile entities being added go through here. private org.spigotmc.TickLimiter entityLimiter; - private org.spigotmc.TickLimiter tileLimiter; - private int tileTickPosition; -+ //private org.spigotmc.TickLimiter tileLimiter; // PaperSpigot - Disable Spigot's TE handling in favor of our own -+ //private int tileTickPosition; // PaperSpigot - Disable Spigot's TE handling in favor of our own ++ // PaperSpigot start - Disable Spigot's TE handling in favor of our own ++ //private org.spigotmc.TickLimiter tileLimiter; ++ //private int tileTickPosition; ++ // PaperSpigot end public static long chunkToKey(int x, int z) { @@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess { - this.getServer().addWorld(this.world); // CraftBukkit - timings = new SpigotTimings.WorldTimingsHandler(this); // Spigot - code below can generate new world and access timings + this.keepSpawnInMemory = this.paperSpigotConfig.keepSpawnInMemory; // PaperSpigot + timings = new SpigotTimings.WorldTimingsHandler(this); // Spigot - code below can generate new world and access timings this.entityLimiter = new org.spigotmc.TickLimiter(spigotConfig.entityMaxTickTime); - this.tileLimiter = new org.spigotmc.TickLimiter(spigotConfig.tileMaxTickTime); + //this.tileLimiter = new org.spigotmc.TickLimiter(spigotConfig.tileMaxTickTime); // PaperSpigot - Disable Spigot's TE handling in favor of our own @@ -122,12 +109,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public World b() { @@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess { + } // CraftBukkit end - this.initializeHoppers(); // Spigot - Initializes hoppers which have been added recently. -+ // PaperSpigot Start - Return to previous behavior, theoretically tile entity ticks should no longer be long enough for this to be an issue ++ // PaperSpigot start - Return to previous behavior, theoretically tile entity ticks should no longer be long enough for this to be an issue + Iterator iterator = this.tileEntityList.iterator(); - ++ + while (iterator.hasNext()) { + TileEntity tileentity = (TileEntity) iterator.next(); + /* @@ -182,9 +169,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + // Use -1 for no ticking + // These TE's have empty tick methods, doing nothing. Never bother ticking them. + for (Class ignored : new Class[]{ -+ TileEntityChest.class, // PaperSpigot - Don't tick chests either -+ TileEntityEnderChest.class, // PaperSpigot - Don't tick chests either -+ TileEntityRecordPlayer.class, ++ BlockJukeBox.TileEntityRecordPlayer.class, + TileEntityDispenser.class, + TileEntityDropper.class, + TileEntitySign.class, @@ -201,11 +186,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + // does findPlayer lookup, so this helps performance to slow down + put(TileEntityEnchantTable.class, 20); + -+ // Slow things down that players won't notice due to craftbukkit "wall time" patches. -+ // These need to be investigated further before they can be safely used here -+ //put(TileEntityFurnace.class, 20); -+ //put(TileEntityBrewingStand.class, 10); -+ + // Vanilla controlled values - These are checks already done in vanilla, so don't tick on ticks we know + // won't do anything anyways + put(TileEntityBeacon.class, 80); @@ -339,6 +319,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + } +} \ No newline at end of file --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/POM-changes.patch b/Spigot-Server-Patches/POM-Changes.patch similarity index 95% rename from Spigot-Server-Patches/POM-changes.patch rename to Spigot-Server-Patches/POM-Changes.patch index 0e73fa077..50c8d8ca1 100644 --- a/Spigot-Server-Patches/POM-changes.patch +++ b/Spigot-Server-Patches/POM-Changes.patch @@ -1,7 +1,7 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Zach Brown <1254957+zachbr@users.noreply.github.com> -Date: Mon, 12 Jan 2015 11:21:04 -0600 -Subject: [PATCH] POM changes +Date: Sat, 7 Mar 2015 19:16:09 -0600 +Subject: [PATCH] POM Changes diff --git a/pom.xml b/pom.xml @@ -17,7 +17,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + org.github.paperspigot + paperspigot jar - 1.8-R0.1-SNAPSHOT + 1.8.3-R0.1-SNAPSHOT - Spigot - http://www.spigotmc.org + PaperSpigot @@ -36,8 +36,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 dev-SNAPSHOT ../pom.xml - - +@@ -0,0 +0,0 @@ + 3.0.3 + - org.spigotmc - spigot-api diff --git a/Spigot-Server-Patches/PaperSpigot-TNT-Changes.patch b/Spigot-Server-Patches/PaperSpigot-TNT-Changes.patch index efb0365d0..5c3d4af8e 100644 --- a/Spigot-Server-Patches/PaperSpigot-TNT-Changes.patch +++ b/Spigot-Server-Patches/PaperSpigot-TNT-Changes.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Zach Brown <1254957+zachbr@users.noreply.github.com> -Date: Mon, 23 Feb 2015 15:54:17 -0600 +Date: Sun, 8 Mar 2015 04:52:37 -0500 Subject: [PATCH] PaperSpigot TNT Changes PaperSpigot communal TNT modification patch @@ -62,44 +62,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + * PaperSpigot - Configurable TNT water movement + */ + @Override -+ public boolean aK() { ++ public boolean aL() { + return world.paperSpigotConfig.tntMovesInWater; + } } -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 { - double d1 = 1.0D / ((axisalignedbb.e - axisalignedbb.b) * 2.0D + 1.0D); - double d2 = 1.0D / ((axisalignedbb.f - axisalignedbb.c) * 2.0D + 1.0D); - -+ // PaperSpigot start - Fix TNT directional bias -+ double xOffset = (1.0 - Math.floor(1.0 / d0) * d0) / 2.0; -+ double zOffset = (1.0 - Math.floor(1.0 / d2) * d2) / 2.0; -+ // PaperSpigot end -+ - if (d0 >= 0.0D && d1 >= 0.0D && d2 >= 0.0D) { - int i = 0; - int j = 0; -@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess { - double d4 = axisalignedbb.b + (axisalignedbb.e - axisalignedbb.b) * (double) f1; - double d5 = axisalignedbb.c + (axisalignedbb.f - axisalignedbb.c) * (double) f2; - -- if (this.rayTrace(new Vec3D(d3, d4, d5), vec3d) == null) { -+ // PaperSpigot start - Fix TNT directional bias -+ Vec3D vec3d1; -+ if (this.paperSpigotConfig.fixTNTDirectionBias) { -+ vec3d1 = new Vec3D(xOffset, d4, zOffset + d5); -+ } else { -+ vec3d1 = new Vec3D(d3, d4, d5); -+ } -+ -+ if (this.rayTrace(vec3d1, vec3d) == null) { -+ // PaperSpigot end - ++i; - } - diff --git a/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java b/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java @@ -115,7 +81,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + public int tntHeightLimit; + private void tntChanges() + { -+ // Original Authors: Iceee and Jedediah Smith ++ // Original Authors: Iceee + fixTNTDirectionBias = getBoolean( "tnt-gameplay.fix-directional-bias", false ); + // Original Author: Byteflux + tntMovesInWater = getBoolean( "tnt-gameplay.moves-in-water", true ); @@ -132,15 +98,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + } else { + log( "TNT height limit disabled" ); + } -+ + if (PaperSpigotConfig.version < 7) { + System.err.println( "==========================================" ); + System.err.println( " Many TNT Related Settings Have Moved " ); + System.err.println( " Please check your config in paper.yml! " ); + System.err.println( "==========================================" ); ++ } + } -+ } } --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/PaperSpigot-config-files.patch b/Spigot-Server-Patches/PaperSpigot-config-files.patch index 4e8ecf25e..b4c24e100 100644 --- a/Spigot-Server-Patches/PaperSpigot-config-files.patch +++ b/Spigot-Server-Patches/PaperSpigot-config-files.patch @@ -39,7 +39,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + this.paperSpigotConfig = new org.github.paperspigot.PaperSpigotWorldConfig( worlddata.getName() ); // PaperSpigot this.generator = gen; this.world = new CraftWorld((WorldServer) this, gen, env); - this.ticksPerAnimalSpawns = this.getServer().getTicksPerAnimalSpawns(); // CraftBukkit + if (gen != null) { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java diff --git a/Spigot-Server-Patches/Player-Exhaustion-Multipliers.patch b/Spigot-Server-Patches/Player-Exhaustion-Multipliers.patch index 479a915a0..186157aa3 100644 --- a/Spigot-Server-Patches/Player-Exhaustion-Multipliers.patch +++ b/Spigot-Server-Patches/Player-Exhaustion-Multipliers.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: gsand -Date: Fri, 28 Nov 2014 01:41:54 -0600 +Date: Sat, 7 Mar 2015 21:35:14 -0600 Subject: [PATCH] Player Exhaustion Multipliers @@ -14,7 +14,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 entityhuman.b(StatisticList.MINE_BLOCK_COUNT[getId(this)]); - entityhuman.applyExhaustion(0.025F); + entityhuman.applyExhaustion(world.paperSpigotConfig.blockBreakExhaustion); // PaperSpigot - Configurable block break exhaustion - if (this.G() && EnchantmentManager.hasSilkTouchEnchantment(entityhuman)) { + if (this.I() && EnchantmentManager.hasSilkTouchEnchantment(entityhuman)) { ItemStack itemstack = this.i(iblockdata); diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java @@ -35,7 +35,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 - this.applyExhaustion(0.015F * (float) i * 0.01F); + this.applyExhaustion(world.paperSpigotConfig.playerSwimmingExhaustion * (float) i * 0.01F); // PaperSpigot - Configurable swimming (diving) exhaustion } - } else if (this.j_()) { + } else if (this.k_()) { if (d1 > 0.0D) { diff --git a/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java b/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 @@ -48,12 +48,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + + public float blockBreakExhaustion; + public float playerSwimmingExhaustion; -+ private void exhaustionValues () ++ private void exhaustionValues() + { + blockBreakExhaustion = getFloat( "player-exhaustion.block-break", 0.025F ); -+ playerSwimmingExhaustion = getFloat("player-exhaustion.swimming", 0.015F ); ++ playerSwimmingExhaustion = getFloat( "player-exhaustion.swimming", 0.015F ); + } } --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Player-affects-spawning-API.patch b/Spigot-Server-Patches/Player-affects-spawning-API.patch index 354002064..f83260c84 100644 --- a/Spigot-Server-Patches/Player-affects-spawning-API.patch +++ b/Spigot-Server-Patches/Player-affects-spawning-API.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jedediah Smith -Date: Fri, 28 Nov 2014 03:31:21 -0600 +Date: Sat, 7 Mar 2015 22:52:21 -0600 Subject: [PATCH] Player affects spawning API @@ -9,11 +9,11 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/net/minecraft/server/EntityHuman.java +++ b/src/main/java/net/minecraft/server/EntityHuman.java @@ -0,0 +0,0 @@ public abstract class EntityHuman extends EntityLiving { - private final GameProfile bF; - private boolean bG = false; + private final GameProfile bH; + private boolean bI = false; public EntityFishingHook hookedFish; + public boolean affectsSpawning = true; // PaperSpigot - + // CraftBukkit start public boolean fauxSleeping; diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java @@ -22,7 +22,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +++ b/src/main/java/net/minecraft/server/EntityInsentient.java @@ -0,0 +0,0 @@ public abstract class EntityInsentient extends EntityLiving { if (this.persistent) { - this.aO = 0; + this.ticksFarFromPlayer = 0; } else { - EntityHuman entityhuman = this.world.findNearbyPlayer(this, -1.0D); + EntityHuman entityhuman = this.world.findNearbyPlayerWhoAffectsSpawning(this, -1.0D); // PaperSpigot - Affects Spawning API @@ -38,8 +38,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 BlockPosition blockposition = this.b(); - return this.a().isPlayerNearby((double) blockposition.getX() + 0.5D, (double) blockposition.getY() + 0.5D, (double) blockposition.getZ() + 0.5D, (double) this.requiredPlayerRange); -+ // PaperSpigot - Affects Spawning API -+ return this.a().isPlayerNearbyWhoAffectsSpawning((double) blockposition.getX() + 0.5D, (double) blockposition.getY() + 0.5D, (double) blockposition.getZ() + 0.5D, (double) this.requiredPlayerRange); ++ return this.a().isPlayerNearbyWhoAffectsSpawning((double) blockposition.getX() + 0.5D, (double) blockposition.getY() + 0.5D, (double) blockposition.getZ() + 0.5D, (double) this.requiredPlayerRange); // PaperSpigot - Affects Spawning API } public void c() { @@ -61,44 +60,49 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 float f1 = (float) l3 + 0.5F; - if (!worldserver.isPlayerNearby((double) f, (double) k3, (double) f1, 24.0D) && blockposition.c((double) f, (double) k3, (double) f1) >= 576.0D) { -+ // PaperSpigot - Affects Spawning API -+ if (!worldserver.isPlayerNearbyWhoAffectsSpawning((double) f, (double) k3, (double) f1, 24.0D) && blockposition.c((double) f, (double) k3, (double) f1) >= 576.0D) { - if (biomemeta == null) { - biomemeta = worldserver.a(enumcreaturetype, blockposition2); - if (biomemeta == null) { ++ if (!worldserver.isPlayerNearbyWhoAffectsSpawning((double) f, (double) k3, (double) f1, 24.0D) && blockposition.c((double) f, (double) k3, (double) f1) >= 576.0D) { // PaperSpigot - Affects Spawning API + if (biomebase_biomemeta == null) { + biomebase_biomemeta = worldserver.a(enumcreaturetype, blockposition2); + if (biomebase_biomemeta == null) { 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 @@ package net.minecraft.server; - - import com.google.common.base.Predicate; - import com.google.common.collect.Lists; --import com.google.common.collect.Sets; -+ - import java.util.ArrayList; - import java.util.Calendar; - import java.util.Collection; - import java.util.Iterator; - import java.util.List; - import java.util.Random; --import java.util.Set; - import java.util.UUID; - import java.util.concurrent.Callable; - -@@ -0,0 +0,0 @@ import java.util.concurrent.Callable; - import org.bukkit.Bukkit; - import org.bukkit.block.BlockState; - import org.bukkit.craftbukkit.util.CraftMagicNumbers; --import org.bukkit.craftbukkit.util.LongHashSet; - import org.bukkit.craftbukkit.SpigotTimings; // Spigot - import org.bukkit.generator.ChunkGenerator; - import org.bukkit.craftbukkit.CraftServer; @@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess { - return false; - } -+ // PaperSpigot start - Affects spawning API + return k >= -short0 && k <= short0 && l >= -short0 && l <= short0 && this.keepSpawnInMemory; // CraftBukkit - Added 'this.keepSpawnInMemory' + } ++ ++ // PaperSpigot start - Modified methods for affects spawning ++ public EntityHuman findNearbyPlayerWhoAffectsSpawning(Entity entity, double d0) { ++ return this.findNearbyPlayerWhoAffectsSpawning(entity.locX, entity.locY, entity.locZ, d0); ++ } ++ ++ public EntityHuman findNearbyPlayerWhoAffectsSpawning(double d0, double d1, double d2, double d3) { ++ double d4 = -1.0D; ++ EntityHuman entityhuman = null; ++ ++ for (int i = 0; i < this.players.size(); ++i) { ++ EntityHuman entityhuman1 = (EntityHuman) this.players.get(i); ++ // CraftBukkit start - Fixed an NPE ++ if (entityhuman1 == null || entityhuman1.dead || !entityhuman1.affectsSpawning) { ++ continue; ++ } ++ // CraftBukkit end ++ ++ if (IEntitySelector.d.apply(entityhuman1)) { ++ double d5 = entityhuman1.e(d0, d1, d2); ++ ++ if ((d3 < 0.0D || d5 < d3 * d3) && (d4 == -1.0D || d5 < d4)) { ++ d4 = d5; ++ entityhuman = entityhuman1; ++ } ++ } ++ } ++ ++ return entityhuman; ++ } ++ + public boolean isPlayerNearbyWhoAffectsSpawning(double d0, double d1, double d2, double d3) { + for (int i = 0; i < this.players.size(); ++i) { + EntityHuman entityhuman = (EntityHuman) this.players.get(i); @@ -114,37 +118,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + + return false; + } -+ -+ public EntityHuman findNearbyPlayerWhoAffectsSpawning(Entity entity, double radius) { -+ return this.findNearbyPlayerWhoAffectsSpawning(entity.locX, entity.locY, entity.locZ, radius); -+ } -+ -+ public EntityHuman findNearbyPlayerWhoAffectsSpawning(double x, double y, double z, double radius) { -+ double nearestRadius = - 1.0D; -+ EntityHuman entityHuman = null; -+ -+ for (int i = 0; i < this.players.size(); ++i) { -+ EntityHuman nearestPlayer = (EntityHuman) this.players.get(i); -+ -+ if (nearestPlayer == null || nearestPlayer.dead || !nearestPlayer.affectsSpawning) { -+ continue; -+ } -+ -+ double distance = nearestPlayer.e(x, y, z); -+ -+ if ((radius < 0.0D || distance < radius * radius) && (nearestRadius == -1.0D || distance < nearestRadius)) { -+ nearestRadius = distance; -+ entityHuman = nearestPlayer; -+ } -+ } -+ -+ return entityHuman; -+ } -+ // PaperSpigot end -+ - public EntityHuman a(String s) { - for (int i = 0; i < this.players.size(); ++i) { - EntityHuman entityhuman = (EntityHuman) this.players.get(i); + } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -154,18 +128,18 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 getHandle().playerConnection.sendPacket(packet); } + -+ // PaperSpigot start - Add affects spawning API -+ public void setAffectsSpawning(boolean affects) { -+ getHandle().affectsSpawning = affects; -+ } -+ ++ // PaperSpigot start - Implement affects spawning API ++ @Override + public boolean getAffectsSpawning() { + return getHandle().affectsSpawning; + } ++ ++ @Override ++ public void setAffectsSpawning(boolean affects) { ++ getHandle().affectsSpawning = affects; ++ } + // PaperSpigot end }; public Player.Spigot spigot() --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Player-lookup-improvements.patch b/Spigot-Server-Patches/Player-lookup-improvements.patch index e40b1b112..5aecbd5e4 100644 --- a/Spigot-Server-Patches/Player-lookup-improvements.patch +++ b/Spigot-Server-Patches/Player-lookup-improvements.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Aikar -Date: Fri, 28 Nov 2014 13:43:11 -0600 +Date: Sun, 8 Mar 2015 04:03:56 -0500 Subject: [PATCH] Player lookup improvements Minecraft and CraftBukkit both use Arrays to store online players, @@ -17,9 +17,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java @@ -0,0 +0,0 @@ public abstract class PlayerList { - private static final SimpleDateFormat i = new SimpleDateFormat("yyyy-MM-dd \'at\' HH:mm:ss z"); + private static final SimpleDateFormat g = new SimpleDateFormat("yyyy-MM-dd \'at\' HH:mm:ss z"); private final MinecraftServer server; - public final List players = new java.util.concurrent.CopyOnWriteArrayList(); // CraftBukkit - ArrayList -> CopyOnWriteArrayList: Iterator safety + public final List players = new java.util.concurrent.CopyOnWriteArrayList(); // CraftBukkit - ArrayList -> CopyOnWriteArrayList: Iterator safety, public + // PaperSpigot start - Player lookup improvements + public final Map playerMap = new java.util.HashMap() { + @Override @@ -45,7 +45,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + } + }; + // PaperSpigot end - public final Map f = Maps.newHashMap(); + private final Map j = Maps.newHashMap(); private final GameProfileBanList k; private final IpBanList l; @@ -0,0 +0,0 @@ public abstract class PlayerList { @@ -53,22 +53,22 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public void onPlayerJoin(EntityPlayer entityplayer, String joinMessage) { // CraftBukkit added param this.players.add(entityplayer); + this.playerMap.put(entityplayer.getName(), entityplayer); // PaperSpigot - this.f.put(entityplayer.getUniqueID(), entityplayer); - // this.sendAll(new PacketPlayOutPlayerInfo(EnumPlayerInfoAction.ADD_PLAYER, new EntityPlayer[] { entityplayer})); // CraftBukkit - replaced with loop below + this.j.put(entityplayer.getUniqueID(), entityplayer); + // this.sendAll(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER, new EntityPlayer[] { entityplayer})); // CraftBukkit - replaced with loop below WorldServer worldserver = this.server.getWorldServer(entityplayer.dimension); @@ -0,0 +0,0 @@ public abstract class PlayerList { worldserver.kill(entityplayer); worldserver.getPlayerChunkMap().removePlayer(entityplayer); this.players.remove(entityplayer); + this.playerMap.remove(entityplayer.getName()); // PaperSpigot - this.f.remove(entityplayer.getUniqueID()); - this.o.remove(entityplayer.getUniqueID()); - // CraftBukkit start + UUID uuid = entityplayer.getUniqueID(); + EntityPlayer entityplayer1 = (EntityPlayer) this.j.get(uuid); + @@ -0,0 +0,0 @@ public abstract class PlayerList { EntityPlayer entityplayer; -+ // PaperSpigot - Use exact lookup below ++ // PaperSpigot start - Use exact lookup below + /* for (int i = 0; i < this.players.size(); ++i) { entityplayer = (EntityPlayer) this.players.get(i); @@ -79,6 +79,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 entityplayer = (EntityPlayer) iterator.next(); + */ + if ((entityplayer = this.a(uuid)) != null) { ++ // PaperSpigot end savePlayerFile(entityplayer); // CraftBukkit - Force the player's inventory to be saved entityplayer.playerConnection.disconnect("You logged in from another location"); } @@ -147,7 +148,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + // PaperSpigot start - Improved player lookup, replace whole method + EntityPlayer player = playerList.playerMap.get(name); + return player != null ? player.getBukkitEntity() : null; -+ // PaperSpigot end ++ // PaperSpigot end } @Override @@ -170,6 +171,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public InetSocketAddress getAddress() { --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Prevent-tile-entity-and-entity-crashes.patch b/Spigot-Server-Patches/Prevent-tile-entity-and-entity-crashes.patch index c06683fa6..0c656539e 100644 --- a/Spigot-Server-Patches/Prevent-tile-entity-and-entity-crashes.patch +++ b/Spigot-Server-Patches/Prevent-tile-entity-and-entity-crashes.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Aikar -Date: Wed, 3 Jul 2013 08:29:26 -0400 +Date: Sun, 8 Mar 2015 04:37:23 -0500 Subject: [PATCH] Prevent tile entity and entity crashes @@ -9,20 +9,19 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- 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 { - public void a(CrashReportSystemDetails crashreportsystemdetails) { - crashreportsystemdetails.a("Name", (Callable) (new CrashReportTileEntityName(this))); + } + }); if (this.world != null) { - CrashReportSystemDetails.a(crashreportsystemdetails, this.position, this.w(), this.u()); + // PaperSpigot start - Prevent tile entity and entity crashes + Block block = this.w(); -+ if ( block != null ) -+ { ++ if (block != null) { + CrashReportSystemDetails.a(crashreportsystemdetails, this.position, this.w(), this.u()); + } + // PaperSpigot end - crashreportsystemdetails.a("Actual block type", (Callable) (new CrashReportTileEntityType(this))); - crashreportsystemdetails.a("Actual block data value", (Callable) (new CrashReportTileEntityData(this))); - } + crashreportsystemdetails.a("Actual block type", new Callable() { + public String a() throws Exception { + int i = Block.getId(TileEntity.this.world.getType(TileEntity.this.position).getBlock()); 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 @@ -64,6 +63,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } // Spigot start finally { --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/RIP-metrics.patch b/Spigot-Server-Patches/RIP-metrics.patch index 7ba2ff7d3..a2b48c2da 100644 --- a/Spigot-Server-Patches/RIP-metrics.patch +++ b/Spigot-Server-Patches/RIP-metrics.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Zach Brown <1254957+zachbr@users.noreply.github.com> -Date: Tue, 19 Aug 2014 14:25:40 -0500 +Date: Sat, 7 Mar 2015 22:57:07 -0600 Subject: [PATCH] RIP metrics @@ -686,6 +686,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } static void readConfig(Class clazz, Object instance) --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Remove-CraftBukkit-Feature-of-ItemStack-s-having-inf.patch b/Spigot-Server-Patches/Remove-CraftBukkit-Feature-of-ItemStack-s-having-inf.patch deleted file mode 100644 index 0f9847a18..000000000 --- a/Spigot-Server-Patches/Remove-CraftBukkit-Feature-of-ItemStack-s-having-inf.patch +++ /dev/null @@ -1,154 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Aikar -Date: Fri, 19 Dec 2014 16:28:22 -0600 -Subject: [PATCH] Remove CraftBukkit "Feature" of ItemStack's having infinite - use if less than 0 stack size - - -diff --git a/src/main/java/net/minecraft/server/DispenseBehaviorItem.java b/src/main/java/net/minecraft/server/DispenseBehaviorItem.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 ---- a/src/main/java/net/minecraft/server/DispenseBehaviorItem.java -+++ b/src/main/java/net/minecraft/server/DispenseBehaviorItem.java -@@ -0,0 +0,0 @@ public class DispenseBehaviorItem implements IDispenseBehavior { - public DispenseBehaviorItem() {} - - public final ItemStack a(ISourceBlock isourceblock, ItemStack itemstack) { -+ if (itemstack != null && itemstack.count < 0) itemstack.count = 0; // PaperSpigot - Remove CB 'feature' of infinite items - ItemStack itemstack1 = this.b(isourceblock, itemstack); - - this.a(isourceblock); -diff --git a/src/main/java/net/minecraft/server/EntityAgeable.java b/src/main/java/net/minecraft/server/EntityAgeable.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 ---- a/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 { - - if (!entityhuman.abilities.canInstantlyBuild) { - --itemstack.count; -- if (itemstack.count == 0) { // CraftBukkit - allow less than 0 stacks as "infinite" -+ if (itemstack.count <= 0) { // PaperSpigot - Remove CB 'feature' of infinite items - entityhuman.inventory.setItem(entityhuman.inventory.itemInHandIndex, (ItemStack) null); - } - } -diff --git a/src/main/java/net/minecraft/server/EntityHorse.java b/src/main/java/net/minecraft/server/EntityHorse.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 ---- a/src/main/java/net/minecraft/server/EntityHorse.java -+++ b/src/main/java/net/minecraft/server/EntityHorse.java -@@ -0,0 +0,0 @@ public class EntityHorse extends EntityAnimal implements IInventoryListener { - } - - if (flag) { -- if (!entityhuman.abilities.canInstantlyBuild && --itemstack.count == 0) { -+ if (!entityhuman.abilities.canInstantlyBuild && --itemstack.count <= 0) { // PaperSpigot - Remove CB 'feature' of infinite items - entityhuman.inventory.setItem(entityhuman.inventory.itemInHandIndex, (ItemStack) null); - } - -diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 ---- a/src/main/java/net/minecraft/server/EntityHuman.java -+++ b/src/main/java/net/minecraft/server/EntityHuman.java -@@ -0,0 +0,0 @@ public abstract class EntityHuman extends EntityLiving { - public EntityItem a(ItemStack itemstack, boolean flag, boolean flag1) { - if (itemstack == null) { - return null; -- } else if (itemstack.count == 0) { -+ } else if (itemstack.count <= 0) { // PaperSpigot - Remove CB 'feature' of infinite items - return null; - } else { - double d0 = this.locY - 0.30000001192092896D + (double) this.getHeadHeight(); -@@ -0,0 +0,0 @@ public abstract class EntityHuman extends EntityLiving { - - if (itemstack.a(this, (EntityLiving) entity)) { - // CraftBukkit - bypass infinite items; <= 0 -> == 0 -- if (itemstack.count == 0 && !this.abilities.canInstantlyBuild) { -+ if (itemstack.count <= 0 && !this.abilities.canInstantlyBuild) { // PaperSpigot - Remove CB 'feature' of infinite items - this.bZ(); - } - -diff --git a/src/main/java/net/minecraft/server/ItemStack.java b/src/main/java/net/minecraft/server/ItemStack.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 ---- a/src/main/java/net/minecraft/server/ItemStack.java -+++ b/src/main/java/net/minecraft/server/ItemStack.java -@@ -0,0 +0,0 @@ public final class ItemStack { - ItemStack itemstack = new ItemStack(); - - itemstack.c(nbttagcompound); -+ if (itemstack.count < 0) itemstack.count = 0; // PaperSpigot - Remove CB 'feature' of infinite items - return itemstack.getItem() != null ? itemstack : null; - } - -diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 ---- a/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 - } - - itemstack = this.player.inventory.getItemInHand(); -- if (itemstack != null && itemstack.count == 0) { -+ if (itemstack != null && itemstack.count <= 0) { // PaperSpigot - Remove CB 'feature' of infinite items - this.player.inventory.items[this.player.inventory.itemInHandIndex] = null; - itemstack = null; - } -diff --git a/src/main/java/net/minecraft/server/PlayerInteractManager.java b/src/main/java/net/minecraft/server/PlayerInteractManager.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 ---- a/src/main/java/net/minecraft/server/PlayerInteractManager.java -+++ b/src/main/java/net/minecraft/server/PlayerInteractManager.java -@@ -0,0 +0,0 @@ public class PlayerInteractManager { - - if (itemstack1 != null) { - itemstack1.a(this.world, iblockdata.getBlock(), blockposition, this.player); -- if (itemstack1.count == 0) { -+ if (itemstack1.count <= 0) { // PaperSpigot - Remove CB 'feature' of infinite items - this.player.bZ(); - } - } -@@ -0,0 +0,0 @@ public class PlayerInteractManager { - } - } - -- if (itemstack1.count == 0) { -+ if (itemstack1.count <= 0) { // PaperSpigot - Remove CB 'feature' of infinite items - entityhuman.inventory.items[entityhuman.inventory.itemInHandIndex] = null; - } - -diff --git a/src/main/java/net/minecraft/server/PlayerInventory.java b/src/main/java/net/minecraft/server/PlayerInventory.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 ---- a/src/main/java/net/minecraft/server/PlayerInventory.java -+++ b/src/main/java/net/minecraft/server/PlayerInventory.java -@@ -0,0 +0,0 @@ public class PlayerInventory implements IInventory { - - public ItemStack getCarried() { - // CraftBukkit start -- if (this.f != null && this.f.count == 0) { -+ if (this.f != null && this.f.count <= 0) { // PaperSpigot - Remove CB 'feature' of infinite items - this.setCarried(null); - } - // CraftBukkit end -diff --git a/src/main/java/net/minecraft/server/Slot.java b/src/main/java/net/minecraft/server/Slot.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 ---- a/src/main/java/net/minecraft/server/Slot.java -+++ b/src/main/java/net/minecraft/server/Slot.java -@@ -0,0 +0,0 @@ public class Slot { - } - - public void set(ItemStack itemstack) { -+ if (itemstack != null && itemstack.count < 0) itemstack.count = 0; // PaperSpigot - Remove CB 'feature' of infinite items - this.inventory.setItem(this.index, itemstack); - this.f(); - } -diff --git a/src/main/java/net/minecraft/server/TileEntityDispenser.java b/src/main/java/net/minecraft/server/TileEntityDispenser.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 ---- a/src/main/java/net/minecraft/server/TileEntityDispenser.java -+++ b/src/main/java/net/minecraft/server/TileEntityDispenser.java -@@ -0,0 +0,0 @@ public class TileEntityDispenser extends TileEntityContainer implements IInvento - - public void setItem(int i, ItemStack itemstack) { - this.items[i] = itemstack; -+ if (itemstack != null && itemstack.count < 0) itemstack.count = 0; // PaperSpigot - Remove CB 'feature' of infinite items - if (itemstack != null && itemstack.count > this.getMaxStackSize()) { - itemstack.count = this.getMaxStackSize(); - } --- -1.9.5.msysgit.0 - diff --git a/Spigot-Server-Patches/Remove-specific-entities-that-fly-through-an-unloade.patch b/Spigot-Server-Patches/Remove-certain-entities-that-fly-through-unloaded-ch.patch similarity index 94% rename from Spigot-Server-Patches/Remove-specific-entities-that-fly-through-an-unloade.patch rename to Spigot-Server-Patches/Remove-certain-entities-that-fly-through-unloaded-ch.patch index 9ebc6eab7..3ab0e17f8 100644 --- a/Spigot-Server-Patches/Remove-specific-entities-that-fly-through-an-unloade.patch +++ b/Spigot-Server-Patches/Remove-certain-entities-that-fly-through-unloaded-ch.patch @@ -1,7 +1,7 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Iceee -Date: Fri, 28 Nov 2014 12:11:03 -0600 -Subject: [PATCH] Remove specific entities that fly through an unloaded chunk +Date: Sun, 8 Mar 2015 03:34:15 -0500 +Subject: [PATCH] Remove certain entities that fly through unloaded chunks diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java @@ -9,7 +9,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -0,0 +0,0 @@ public abstract class Entity implements ICommandListener { - private final CommandObjectiveExecutor as; + private final CommandObjectiveExecutor au; public boolean valid; // CraftBukkit public org.bukkit.projectiles.ProjectileSource projectileSource; // CraftBukkit - For projectiles only + public boolean inUnloadedChunk = false; // PaperSpigot - Remove entities in unloaded chunks @@ -25,8 +25,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } + // PaperSpigot start - Remove entities in unloaded chunks -+ if (inUnloadedChunk && world.paperSpigotConfig.removeUnloadedEnderPearls) { -+ die(); ++ if (this.inUnloadedChunk && world.paperSpigotConfig.removeUnloadedEnderPearls) { ++ this.die(); + } + // PaperSpigot end + @@ -89,7 +89,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + if (entity instanceof EntityEnderPearl || (!this.isChunkLoaded(i, j, true) && + (entity instanceof EntityFallingBlock && this.paperSpigotConfig.removeUnloadedFallingBlocks) || + (entity instanceof EntityTNTPrimed && this.paperSpigotConfig.removeUnloadedTNTEntities))) { -+ entity.inUnloadedChunk = true; ++ entity.inUnloadedChunk = true; + entity.die(); + } + // PaperSpigot end @@ -115,6 +115,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + removeUnloadedFallingBlocks = getBoolean( "remove-unloaded.falling-blocks", true ); + } } --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Remove-invalid-mob-spawner-tile-entities.patch b/Spigot-Server-Patches/Remove-invalid-mob-spawner-tile-entities.patch index ea9f4bf47..0cb626088 100644 --- a/Spigot-Server-Patches/Remove-invalid-mob-spawner-tile-entities.patch +++ b/Spigot-Server-Patches/Remove-invalid-mob-spawner-tile-entities.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Byteflux -Date: Fri, 28 Nov 2014 03:43:14 -0600 +Date: Sun, 8 Mar 2015 01:06:14 -0600 Subject: [PATCH] Remove invalid mob spawner tile entities @@ -9,17 +9,17 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- 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 { - this.world.triggerHoppersList.add(tileentity); - } - // Spigot end -+ // PaperSpigot start - Remove invalid mob spawner Tile Entities + tileentity.D(); + this.tileEntities.put(blockposition, tileentity); + // CraftBukkit start ++ // PaperSpigot start - Remove invalid mob spawner tile entities + } else if (this.world.paperSpigotConfig.removeInvalidMobSpawnerTEs && tileentity instanceof TileEntityMobSpawner && -+ org.bukkit.craftbukkit.util.CraftMagicNumbers.getMaterial(getType(blockposition)) != org.bukkit.Material.MOB_SPAWNER) { ++ org.bukkit.craftbukkit.util.CraftMagicNumbers.getMaterial(getType(blockposition)) != org.bukkit.Material.MOB_SPAWNER) { + this.tileEntities.remove(blockposition); + // PaperSpigot end - // CraftBukkit start } else { System.out.println("Attempted to place a tile entity (" + tileentity + ") at " + tileentity.position.getX() + "," + tileentity.position.getY() + "," + tileentity.position.getZ() + + " (" + org.bukkit.craftbukkit.util.CraftMagicNumbers.getMaterial(getType(blockposition)) + ") where there was no entity tile!"); diff --git a/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java b/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java @@ -36,6 +36,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + log( "Remove invalid mob spawner tile entities: " + removeInvalidMobSpawnerTEs ); + } } --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Show-PaperSpigot-in-client-crashes-server-lists-and-.patch b/Spigot-Server-Patches/Show-PaperSpigot-in-client-crashes-server-lists-and-.patch index 92c6dcbc9..e758aedcb 100644 --- a/Spigot-Server-Patches/Show-PaperSpigot-in-client-crashes-server-lists-and-.patch +++ b/Spigot-Server-Patches/Show-PaperSpigot-in-client-crashes-server-lists-and-.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Zach Brown <1254957+zachbr@users.noreply.github.com> -Date: Tue, 19 Aug 2014 14:21:37 -0500 +Date: Sat, 7 Mar 2015 22:55:25 -0600 Subject: [PATCH] Show 'PaperSpigot' in client crashes, server lists, and Mojang stats @@ -9,7 +9,7 @@ diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/ index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/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() { @@ -18,6 +18,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public CrashReport b(CrashReport crashreport) { --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Temporary-fix-for-rails-dupe.patch b/Spigot-Server-Patches/Temporary-fix-for-rails-dupe.patch index 297580708..3d15ef652 100644 --- a/Spigot-Server-Patches/Temporary-fix-for-rails-dupe.patch +++ b/Spigot-Server-Patches/Temporary-fix-for-rails-dupe.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dmck2b -Date: Fri, 28 Nov 2014 12:30:47 -0600 +Date: Sun, 8 Mar 2015 03:45:49 -0500 Subject: [PATCH] Temporary fix for rails dupe @@ -23,6 +23,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } else { this.b(world, blockposition, iblockdata, block); } --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Toggle-for-player-interact-limiter.patch b/Spigot-Server-Patches/Toggle-for-player-interact-limiter.patch index d693179a3..bb12f1c93 100644 --- a/Spigot-Server-Patches/Toggle-for-player-interact-limiter.patch +++ b/Spigot-Server-Patches/Toggle-for-player-interact-limiter.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Zach Brown <1254957+zachbr@users.noreply.github.com> -Date: Fri, 28 Nov 2014 01:33:25 -0600 +Date: Sat, 7 Mar 2015 21:07:10 -0600 Subject: [PATCH] Toggle for player interact limiter @@ -23,7 +23,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/org/github/paperspigot/PaperSpigotConfig.java +++ b/src/main/java/org/github/paperspigot/PaperSpigotConfig.java @@ -0,0 +0,0 @@ public class PaperSpigotConfig - Bukkit.getLogger().log( Level.INFO, "Disabling async plugin bad ju-ju catcher, this may be bad depending on your plugins" ); + Bukkit.getLogger().log( Level.INFO, "Disabling async plugin bad ju-ju catcher, this is not recommended and may cause issues" ); } } + @@ -31,11 +31,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + private static void interactLimitEnabled() + { + interactLimitEnabled = getBoolean( "settings.limit-player-interactions", true ); -+ if (!interactLimitEnabled) { ++ if ( !interactLimitEnabled ) ++ { + Bukkit.getLogger().log( Level.INFO, "Disabling player interaction limiter, your server may be more vulnerable to malicious users" ); + } + } } --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Vanished-players-don-t-have-rights.patch b/Spigot-Server-Patches/Vanished-players-don-t-have-rights.patch index 84723cdfc..85df93205 100644 --- a/Spigot-Server-Patches/Vanished-players-don-t-have-rights.patch +++ b/Spigot-Server-Patches/Vanished-players-don-t-have-rights.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Zach Brown <1254957+zachbr@users.noreply.github.com> -Date: Fri, 28 Nov 2014 00:35:56 -0600 +Date: Sat, 7 Mar 2015 19:50:01 -0600 Subject: [PATCH] Vanished players don't have rights @@ -9,8 +9,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/net/minecraft/server/EntityArrow.java +++ b/src/main/java/net/minecraft/server/EntityArrow.java @@ -0,0 +0,0 @@ public class EntityArrow extends Entity implements IProjectile { + float f2; float f3; - float f4; + // PaperSpigot start - Allow arrows to fly through vanished players the shooter can't see + if (movingobjectposition != null && movingobjectposition.entity instanceof EntityPlayer && shooter != null && shooter instanceof EntityPlayer) { @@ -22,7 +22,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + if (movingobjectposition != null) { org.bukkit.craftbukkit.event.CraftEventFactory.callProjectileHitEvent(this); // CraftBukkit - Call event - + if (movingobjectposition.entity != null) { diff --git a/src/main/java/net/minecraft/server/EntityProjectile.java b/src/main/java/net/minecraft/server/EntityProjectile.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/server/EntityProjectile.java @@ -40,15 +40,15 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + // PaperSpigot end + if (movingobjectposition != null) { - if (movingobjectposition.type == EnumMovingObjectType.BLOCK && this.world.getType(movingobjectposition.a()).getBlock() == Blocks.PORTAL) { - this.aq(); + if (movingobjectposition.type == MovingObjectPosition.EnumMovingObjectType.BLOCK && this.world.getType(movingobjectposition.a()).getBlock() == Blocks.PORTAL) { + this.d(movingobjectposition.a()); diff --git a/src/main/java/net/minecraft/server/ItemBlock.java b/src/main/java/net/minecraft/server/ItemBlock.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/server/ItemBlock.java +++ b/src/main/java/net/minecraft/server/ItemBlock.java @@ -0,0 +0,0 @@ public class ItemBlock extends Item { return false; - } else if (blockposition.getY() == 255 && this.a.getMaterial().isBuildable()) { + } else if (!entityhuman.a(blockposition, enumdirection, itemstack)) { return false; - } else if (world.a(this.a, blockposition, false, enumdirection, (Entity) null, itemstack)) { + } else if (world.a(this.a, blockposition, false, enumdirection, entityhuman, itemstack)) { // PaperSpigot - Pass entityhuman instead of null @@ -69,11 +69,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + continue; + } + } -+ // PaperSpigot end + if (!entity1.dead && entity1.k && entity1 != entity && (entity == null || entity.vehicle != entity1 && entity.passenger != entity1)) { return false; } --- -1.9.5.msysgit.0 - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/mc-dev-imports.patch b/Spigot-Server-Patches/mc-dev-imports.patch index c22401a44..288215f28 100644 --- a/Spigot-Server-Patches/mc-dev-imports.patch +++ b/Spigot-Server-Patches/mc-dev-imports.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Zach Brown <1254957+zachbr@users.noreply.github.com> -Date: Thu, 27 Nov 2014 23:53:56 -0600 +Date: Sat, 7 Mar 2015 19:44:29 -0600 Subject: [PATCH] mc-dev imports @@ -12,11 +12,15 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ +package net.minecraft.server; + ++import com.google.common.collect.Lists; ++import java.util.Iterator; ++import java.util.List; ++ +public abstract class BlockMinecartTrackAbstract extends Block { + + protected final boolean a; + -+ public static boolean d(World world, BlockPosition blockposition) { ++ public static boolean e(World world, BlockPosition blockposition) { + return d(world.getType(blockposition)); + } + @@ -48,9 +52,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + + public void updateShape(IBlockAccess iblockaccess, BlockPosition blockposition) { + IBlockData iblockdata = iblockaccess.getType(blockposition); -+ EnumTrackPosition enumtrackposition = iblockdata.getBlock() == this ? (EnumTrackPosition) iblockdata.get(this.l()) : null; ++ EnumTrackPosition blockminecarttrackabstract_enumtrackposition = iblockdata.getBlock() == this ? (EnumTrackPosition) iblockdata.get(this.n()) : null; + -+ if (enumtrackposition != null && enumtrackposition.c()) { ++ if (blockminecarttrackabstract_enumtrackposition != null && blockminecarttrackabstract_enumtrackposition.c()) { + this.a(0.0F, 0.0F, 0.0F, 1.0F, 0.625F, 1.0F); + } else { + this.a(0.0F, 0.0F, 0.0F, 1.0F, 0.125F, 1.0F); @@ -67,7 +71,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + } + + public void onPlace(World world, BlockPosition blockposition, IBlockData iblockdata) { -+ if (!world.isStatic) { ++ if (!world.isClientSide) { + iblockdata = this.a(world, blockposition, iblockdata, true); + if (this.a) { + this.doPhysics(world, blockposition, iblockdata, this); @@ -77,21 +81,21 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + } + + public void doPhysics(World world, BlockPosition blockposition, IBlockData iblockdata, Block block) { -+ if (!world.isStatic) { -+ EnumTrackPosition enumtrackposition = (EnumTrackPosition) iblockdata.get(this.l()); ++ if (!world.isClientSide) { ++ EnumTrackPosition blockminecarttrackabstract_enumtrackposition = (EnumTrackPosition) iblockdata.get(this.n()); + boolean flag = false; + + if (!World.a((IBlockAccess) world, blockposition.down())) { + flag = true; + } + -+ if (enumtrackposition == EnumTrackPosition.ASCENDING_EAST && !World.a((IBlockAccess) world, blockposition.east())) { ++ if (blockminecarttrackabstract_enumtrackposition == EnumTrackPosition.ASCENDING_EAST && !World.a((IBlockAccess) world, blockposition.east())) { + flag = true; -+ } else if (enumtrackposition == EnumTrackPosition.ASCENDING_WEST && !World.a((IBlockAccess) world, blockposition.west())) { ++ } else if (blockminecarttrackabstract_enumtrackposition == EnumTrackPosition.ASCENDING_WEST && !World.a((IBlockAccess) world, blockposition.west())) { + flag = true; -+ } else if (enumtrackposition == EnumTrackPosition.ASCENDING_NORTH && !World.a((IBlockAccess) world, blockposition.north())) { ++ } else if (blockminecarttrackabstract_enumtrackposition == EnumTrackPosition.ASCENDING_NORTH && !World.a((IBlockAccess) world, blockposition.north())) { + flag = true; -+ } else if (enumtrackposition == EnumTrackPosition.ASCENDING_SOUTH && !World.a((IBlockAccess) world, blockposition.south())) { ++ } else if (blockminecarttrackabstract_enumtrackposition == EnumTrackPosition.ASCENDING_SOUTH && !World.a((IBlockAccess) world, blockposition.south())) { + flag = true; + } + @@ -108,16 +112,16 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + protected void b(World world, BlockPosition blockposition, IBlockData iblockdata, Block block) {} + + protected IBlockData a(World world, BlockPosition blockposition, IBlockData iblockdata, boolean flag) { -+ return world.isStatic ? iblockdata : (new MinecartTrackLogic(this, world, blockposition, iblockdata)).a(world.isBlockIndirectlyPowered(blockposition), flag).b(); ++ return world.isClientSide ? iblockdata : (new MinecartTrackLogic(world, blockposition, iblockdata)).a(world.isBlockIndirectlyPowered(blockposition), flag).b(); + } + -+ public int i() { ++ public int k() { + return 0; + } + + public void remove(World world, BlockPosition blockposition, IBlockData iblockdata) { + super.remove(world, blockposition, iblockdata); -+ if (((EnumTrackPosition) iblockdata.get(this.l())).c()) { ++ if (((EnumTrackPosition) iblockdata.get(this.n())).c()) { + world.applyPhysics(blockposition.up(), this); + } + @@ -128,7 +132,480 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + + } + -+ public abstract IBlockState l(); ++ public abstract IBlockState n(); ++ ++ static class SyntheticClass_1 { ++ ++ static final int[] a = new int[EnumTrackPosition.values().length]; ++ ++ static { ++ try { ++ SyntheticClass_1.a[EnumTrackPosition.NORTH_SOUTH.ordinal()] = 1; ++ } catch (NoSuchFieldError nosuchfielderror) { ++ ; ++ } ++ ++ try { ++ SyntheticClass_1.a[EnumTrackPosition.EAST_WEST.ordinal()] = 2; ++ } catch (NoSuchFieldError nosuchfielderror1) { ++ ; ++ } ++ ++ try { ++ SyntheticClass_1.a[EnumTrackPosition.ASCENDING_EAST.ordinal()] = 3; ++ } catch (NoSuchFieldError nosuchfielderror2) { ++ ; ++ } ++ ++ try { ++ SyntheticClass_1.a[EnumTrackPosition.ASCENDING_WEST.ordinal()] = 4; ++ } catch (NoSuchFieldError nosuchfielderror3) { ++ ; ++ } ++ ++ try { ++ SyntheticClass_1.a[EnumTrackPosition.ASCENDING_NORTH.ordinal()] = 5; ++ } catch (NoSuchFieldError nosuchfielderror4) { ++ ; ++ } ++ ++ try { ++ SyntheticClass_1.a[EnumTrackPosition.ASCENDING_SOUTH.ordinal()] = 6; ++ } catch (NoSuchFieldError nosuchfielderror5) { ++ ; ++ } ++ ++ try { ++ SyntheticClass_1.a[EnumTrackPosition.SOUTH_EAST.ordinal()] = 7; ++ } catch (NoSuchFieldError nosuchfielderror6) { ++ ; ++ } ++ ++ try { ++ SyntheticClass_1.a[EnumTrackPosition.SOUTH_WEST.ordinal()] = 8; ++ } catch (NoSuchFieldError nosuchfielderror7) { ++ ; ++ } ++ ++ try { ++ SyntheticClass_1.a[EnumTrackPosition.NORTH_WEST.ordinal()] = 9; ++ } catch (NoSuchFieldError nosuchfielderror8) { ++ ; ++ } ++ ++ try { ++ SyntheticClass_1.a[EnumTrackPosition.NORTH_EAST.ordinal()] = 10; ++ } catch (NoSuchFieldError nosuchfielderror9) { ++ ; ++ } ++ ++ } ++ } ++ ++ public static enum EnumTrackPosition implements INamable { ++ ++ NORTH_SOUTH(0, "north_south"), EAST_WEST(1, "east_west"), ASCENDING_EAST(2, "ascending_east"), ASCENDING_WEST(3, "ascending_west"), ASCENDING_NORTH(4, "ascending_north"), ASCENDING_SOUTH(5, "ascending_south"), SOUTH_EAST(6, "south_east"), SOUTH_WEST(7, "south_west"), NORTH_WEST(8, "north_west"), NORTH_EAST(9, "north_east"); ++ ++ private static final EnumTrackPosition[] k = new EnumTrackPosition[values().length]; ++ private final int l; ++ private final String m; ++ ++ private EnumTrackPosition(int i, String s) { ++ this.l = i; ++ this.m = s; ++ } ++ ++ public int a() { ++ return this.l; ++ } ++ ++ public String toString() { ++ return this.m; ++ } ++ ++ public boolean c() { ++ return this == EnumTrackPosition.ASCENDING_NORTH || this == EnumTrackPosition.ASCENDING_EAST || this == EnumTrackPosition.ASCENDING_SOUTH || this == EnumTrackPosition.ASCENDING_WEST; ++ } ++ ++ public static EnumTrackPosition a(int i) { ++ if (i < 0 || i >= EnumTrackPosition.k.length) { ++ i = 0; ++ } ++ ++ return EnumTrackPosition.k[i]; ++ } ++ ++ public String getName() { ++ return this.m; ++ } ++ ++ static { ++ EnumTrackPosition[] ablockminecarttrackabstract_enumtrackposition = values(); ++ int i = ablockminecarttrackabstract_enumtrackposition.length; ++ ++ for (int j = 0; j < i; ++j) { ++ EnumTrackPosition blockminecarttrackabstract_enumtrackposition = ablockminecarttrackabstract_enumtrackposition[j]; ++ ++ EnumTrackPosition.k[blockminecarttrackabstract_enumtrackposition.a()] = blockminecarttrackabstract_enumtrackposition; ++ } ++ ++ } ++ } ++ ++ public class MinecartTrackLogic { ++ ++ private final World b; ++ private final BlockPosition c; ++ private final BlockMinecartTrackAbstract d; ++ private IBlockData e; ++ private final boolean f; ++ private final List g = Lists.newArrayList(); ++ ++ public MinecartTrackLogic(World world, BlockPosition blockposition, IBlockData iblockdata) { ++ this.b = world; ++ this.c = blockposition; ++ this.e = iblockdata; ++ this.d = (BlockMinecartTrackAbstract) iblockdata.getBlock(); ++ EnumTrackPosition blockminecarttrackabstract_enumtrackposition = (EnumTrackPosition) iblockdata.get(BlockMinecartTrackAbstract.this.n()); ++ ++ this.f = this.d.a; ++ this.a(blockminecarttrackabstract_enumtrackposition); ++ } ++ ++ private void a(EnumTrackPosition blockminecarttrackabstract_enumtrackposition) { ++ this.g.clear(); ++ switch (SyntheticClass_1.a[blockminecarttrackabstract_enumtrackposition.ordinal()]) { ++ case 1: ++ this.g.add(this.c.north()); ++ this.g.add(this.c.south()); ++ break; ++ ++ case 2: ++ this.g.add(this.c.west()); ++ this.g.add(this.c.east()); ++ break; ++ ++ case 3: ++ this.g.add(this.c.west()); ++ this.g.add(this.c.east().up()); ++ break; ++ ++ case 4: ++ this.g.add(this.c.west().up()); ++ this.g.add(this.c.east()); ++ break; ++ ++ case 5: ++ this.g.add(this.c.north().up()); ++ this.g.add(this.c.south()); ++ break; ++ ++ case 6: ++ this.g.add(this.c.north()); ++ this.g.add(this.c.south().up()); ++ break; ++ ++ case 7: ++ this.g.add(this.c.east()); ++ this.g.add(this.c.south()); ++ break; ++ ++ case 8: ++ this.g.add(this.c.west()); ++ this.g.add(this.c.south()); ++ break; ++ ++ case 9: ++ this.g.add(this.c.west()); ++ this.g.add(this.c.north()); ++ break; ++ ++ case 10: ++ this.g.add(this.c.east()); ++ this.g.add(this.c.north()); ++ } ++ ++ } ++ ++ private void c() { ++ for (int i = 0; i < this.g.size(); ++i) { ++ MinecartTrackLogic blockminecarttrackabstract_minecarttracklogic = this.b((BlockPosition) this.g.get(i)); ++ ++ if (blockminecarttrackabstract_minecarttracklogic != null && blockminecarttrackabstract_minecarttracklogic.a(this)) { ++ this.g.set(i, blockminecarttrackabstract_minecarttracklogic.c); ++ } else { ++ this.g.remove(i--); ++ } ++ } ++ ++ } ++ ++ private boolean a(BlockPosition blockposition) { ++ return BlockMinecartTrackAbstract.e(this.b, blockposition) || BlockMinecartTrackAbstract.e(this.b, blockposition.up()) || BlockMinecartTrackAbstract.e(this.b, blockposition.down()); ++ } ++ ++ private MinecartTrackLogic b(BlockPosition blockposition) { ++ IBlockData iblockdata = this.b.getType(blockposition); ++ ++ if (BlockMinecartTrackAbstract.d(iblockdata)) { ++ return BlockMinecartTrackAbstract.this.new MinecartTrackLogic(this.b, blockposition, iblockdata); ++ } else { ++ BlockPosition blockposition1 = blockposition.up(); ++ ++ iblockdata = this.b.getType(blockposition1); ++ if (BlockMinecartTrackAbstract.d(iblockdata)) { ++ return BlockMinecartTrackAbstract.this.new MinecartTrackLogic(this.b, blockposition1, iblockdata); ++ } else { ++ blockposition1 = blockposition.down(); ++ iblockdata = this.b.getType(blockposition1); ++ return BlockMinecartTrackAbstract.d(iblockdata) ? BlockMinecartTrackAbstract.this.new MinecartTrackLogic(this.b, blockposition1, iblockdata) : null; ++ } ++ } ++ } ++ ++ private boolean a(MinecartTrackLogic blockminecarttrackabstract_minecarttracklogic) { ++ return this.c(blockminecarttrackabstract_minecarttracklogic.c); ++ } ++ ++ private boolean c(BlockPosition blockposition) { ++ for (int i = 0; i < this.g.size(); ++i) { ++ BlockPosition blockposition1 = (BlockPosition) this.g.get(i); ++ ++ if (blockposition1.getX() == blockposition.getX() && blockposition1.getZ() == blockposition.getZ()) { ++ return true; ++ } ++ } ++ ++ return false; ++ } ++ ++ protected int a() { ++ int i = 0; ++ Iterator iterator = EnumDirection.EnumDirectionLimit.HORIZONTAL.iterator(); ++ ++ while (iterator.hasNext()) { ++ EnumDirection enumdirection = (EnumDirection) iterator.next(); ++ ++ if (this.a(this.c.shift(enumdirection))) { ++ ++i; ++ } ++ } ++ ++ return i; ++ } ++ ++ private boolean b(MinecartTrackLogic blockminecarttrackabstract_minecarttracklogic) { ++ return this.a(blockminecarttrackabstract_minecarttracklogic) || this.g.size() != 2; ++ } ++ ++ private void c(MinecartTrackLogic blockminecarttrackabstract_minecarttracklogic) { ++ this.g.add(blockminecarttrackabstract_minecarttracklogic.c); ++ BlockPosition blockposition = this.c.north(); ++ BlockPosition blockposition1 = this.c.south(); ++ BlockPosition blockposition2 = this.c.west(); ++ BlockPosition blockposition3 = this.c.east(); ++ boolean flag = this.c(blockposition); ++ boolean flag1 = this.c(blockposition1); ++ boolean flag2 = this.c(blockposition2); ++ boolean flag3 = this.c(blockposition3); ++ EnumTrackPosition blockminecarttrackabstract_enumtrackposition = null; ++ ++ if (flag || flag1) { ++ blockminecarttrackabstract_enumtrackposition = EnumTrackPosition.NORTH_SOUTH; ++ } ++ ++ if (flag2 || flag3) { ++ blockminecarttrackabstract_enumtrackposition = EnumTrackPosition.EAST_WEST; ++ } ++ ++ if (!this.f) { ++ if (flag1 && flag3 && !flag && !flag2) { ++ blockminecarttrackabstract_enumtrackposition = EnumTrackPosition.SOUTH_EAST; ++ } ++ ++ if (flag1 && flag2 && !flag && !flag3) { ++ blockminecarttrackabstract_enumtrackposition = EnumTrackPosition.SOUTH_WEST; ++ } ++ ++ if (flag && flag2 && !flag1 && !flag3) { ++ blockminecarttrackabstract_enumtrackposition = EnumTrackPosition.NORTH_WEST; ++ } ++ ++ if (flag && flag3 && !flag1 && !flag2) { ++ blockminecarttrackabstract_enumtrackposition = EnumTrackPosition.NORTH_EAST; ++ } ++ } ++ ++ if (blockminecarttrackabstract_enumtrackposition == EnumTrackPosition.NORTH_SOUTH) { ++ if (BlockMinecartTrackAbstract.e(this.b, blockposition.up())) { ++ blockminecarttrackabstract_enumtrackposition = EnumTrackPosition.ASCENDING_NORTH; ++ } ++ ++ if (BlockMinecartTrackAbstract.e(this.b, blockposition1.up())) { ++ blockminecarttrackabstract_enumtrackposition = EnumTrackPosition.ASCENDING_SOUTH; ++ } ++ } ++ ++ if (blockminecarttrackabstract_enumtrackposition == EnumTrackPosition.EAST_WEST) { ++ if (BlockMinecartTrackAbstract.e(this.b, blockposition3.up())) { ++ blockminecarttrackabstract_enumtrackposition = EnumTrackPosition.ASCENDING_EAST; ++ } ++ ++ if (BlockMinecartTrackAbstract.e(this.b, blockposition2.up())) { ++ blockminecarttrackabstract_enumtrackposition = EnumTrackPosition.ASCENDING_WEST; ++ } ++ } ++ ++ if (blockminecarttrackabstract_enumtrackposition == null) { ++ blockminecarttrackabstract_enumtrackposition = EnumTrackPosition.NORTH_SOUTH; ++ } ++ ++ this.e = this.e.set(this.d.n(), blockminecarttrackabstract_enumtrackposition); ++ this.b.setTypeAndData(this.c, this.e, 3); ++ } ++ ++ private boolean d(BlockPosition blockposition) { ++ MinecartTrackLogic blockminecarttrackabstract_minecarttracklogic = this.b(blockposition); ++ ++ if (blockminecarttrackabstract_minecarttracklogic == null) { ++ return false; ++ } else { ++ blockminecarttrackabstract_minecarttracklogic.c(); ++ return blockminecarttrackabstract_minecarttracklogic.b(this); ++ } ++ } ++ ++ public MinecartTrackLogic a(boolean flag, boolean flag1) { ++ BlockPosition blockposition = this.c.north(); ++ BlockPosition blockposition1 = this.c.south(); ++ BlockPosition blockposition2 = this.c.west(); ++ BlockPosition blockposition3 = this.c.east(); ++ boolean flag2 = this.d(blockposition); ++ boolean flag3 = this.d(blockposition1); ++ boolean flag4 = this.d(blockposition2); ++ boolean flag5 = this.d(blockposition3); ++ EnumTrackPosition blockminecarttrackabstract_enumtrackposition = null; ++ ++ if ((flag2 || flag3) && !flag4 && !flag5) { ++ blockminecarttrackabstract_enumtrackposition = EnumTrackPosition.NORTH_SOUTH; ++ } ++ ++ if ((flag4 || flag5) && !flag2 && !flag3) { ++ blockminecarttrackabstract_enumtrackposition = EnumTrackPosition.EAST_WEST; ++ } ++ ++ if (!this.f) { ++ if (flag3 && flag5 && !flag2 && !flag4) { ++ blockminecarttrackabstract_enumtrackposition = EnumTrackPosition.SOUTH_EAST; ++ } ++ ++ if (flag3 && flag4 && !flag2 && !flag5) { ++ blockminecarttrackabstract_enumtrackposition = EnumTrackPosition.SOUTH_WEST; ++ } ++ ++ if (flag2 && flag4 && !flag3 && !flag5) { ++ blockminecarttrackabstract_enumtrackposition = EnumTrackPosition.NORTH_WEST; ++ } ++ ++ if (flag2 && flag5 && !flag3 && !flag4) { ++ blockminecarttrackabstract_enumtrackposition = EnumTrackPosition.NORTH_EAST; ++ } ++ } ++ ++ if (blockminecarttrackabstract_enumtrackposition == null) { ++ if (flag2 || flag3) { ++ blockminecarttrackabstract_enumtrackposition = EnumTrackPosition.NORTH_SOUTH; ++ } ++ ++ if (flag4 || flag5) { ++ blockminecarttrackabstract_enumtrackposition = EnumTrackPosition.EAST_WEST; ++ } ++ ++ if (!this.f) { ++ if (flag) { ++ if (flag3 && flag5) { ++ blockminecarttrackabstract_enumtrackposition = EnumTrackPosition.SOUTH_EAST; ++ } ++ ++ if (flag4 && flag3) { ++ blockminecarttrackabstract_enumtrackposition = EnumTrackPosition.SOUTH_WEST; ++ } ++ ++ if (flag5 && flag2) { ++ blockminecarttrackabstract_enumtrackposition = EnumTrackPosition.NORTH_EAST; ++ } ++ ++ if (flag2 && flag4) { ++ blockminecarttrackabstract_enumtrackposition = EnumTrackPosition.NORTH_WEST; ++ } ++ } else { ++ if (flag2 && flag4) { ++ blockminecarttrackabstract_enumtrackposition = EnumTrackPosition.NORTH_WEST; ++ } ++ ++ if (flag5 && flag2) { ++ blockminecarttrackabstract_enumtrackposition = EnumTrackPosition.NORTH_EAST; ++ } ++ ++ if (flag4 && flag3) { ++ blockminecarttrackabstract_enumtrackposition = EnumTrackPosition.SOUTH_WEST; ++ } ++ ++ if (flag3 && flag5) { ++ blockminecarttrackabstract_enumtrackposition = EnumTrackPosition.SOUTH_EAST; ++ } ++ } ++ } ++ } ++ ++ if (blockminecarttrackabstract_enumtrackposition == EnumTrackPosition.NORTH_SOUTH) { ++ if (BlockMinecartTrackAbstract.e(this.b, blockposition.up())) { ++ blockminecarttrackabstract_enumtrackposition = EnumTrackPosition.ASCENDING_NORTH; ++ } ++ ++ if (BlockMinecartTrackAbstract.e(this.b, blockposition1.up())) { ++ blockminecarttrackabstract_enumtrackposition = EnumTrackPosition.ASCENDING_SOUTH; ++ } ++ } ++ ++ if (blockminecarttrackabstract_enumtrackposition == EnumTrackPosition.EAST_WEST) { ++ if (BlockMinecartTrackAbstract.e(this.b, blockposition3.up())) { ++ blockminecarttrackabstract_enumtrackposition = EnumTrackPosition.ASCENDING_EAST; ++ } ++ ++ if (BlockMinecartTrackAbstract.e(this.b, blockposition2.up())) { ++ blockminecarttrackabstract_enumtrackposition = EnumTrackPosition.ASCENDING_WEST; ++ } ++ } ++ ++ if (blockminecarttrackabstract_enumtrackposition == null) { ++ blockminecarttrackabstract_enumtrackposition = EnumTrackPosition.NORTH_SOUTH; ++ } ++ ++ this.a(blockminecarttrackabstract_enumtrackposition); ++ this.e = this.e.set(this.d.n(), blockminecarttrackabstract_enumtrackposition); ++ if (flag1 || this.b.getType(this.c) != this.e) { ++ this.b.setTypeAndData(this.c, this.e, 3); ++ ++ for (int i = 0; i < this.g.size(); ++i) { ++ MinecartTrackLogic blockminecarttrackabstract_minecarttracklogic = this.b((BlockPosition) this.g.get(i)); ++ ++ if (blockminecarttrackabstract_minecarttracklogic != null) { ++ blockminecarttrackabstract_minecarttracklogic.c(); ++ if (blockminecarttrackabstract_minecarttracklogic.b(this)) { ++ blockminecarttrackabstract_minecarttracklogic.c(this); ++ } ++ } ++ } ++ } ++ ++ return this; ++ } ++ ++ public IBlockData b() { ++ return this.e; ++ } ++ } +} diff --git a/src/main/java/net/minecraft/server/ItemBlock.java b/src/main/java/net/minecraft/server/ItemBlock.java new file mode 100644 @@ -155,9 +632,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + IBlockData iblockdata = world.getType(blockposition); + Block block = iblockdata.getBlock(); + -+ if (block == Blocks.SNOW_LAYER && ((Integer) iblockdata.get(BlockSnow.LAYERS)).intValue() < 1) { -+ enumdirection = EnumDirection.UP; -+ } else if (!block.f(world, blockposition)) { ++ if (!block.a(world, blockposition)) { + blockposition = blockposition.shift(enumdirection); + } + @@ -165,8 +640,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + return false; + } else if (!entityhuman.a(blockposition, enumdirection, itemstack)) { + return false; -+ } else if (blockposition.getY() == 255 && this.a.getMaterial().isBuildable()) { -+ return false; + } else if (world.a(this.a, blockposition, false, enumdirection, (Entity) null, itemstack)) { + int i = this.filterData(itemstack.getData()); + IBlockData iblockdata1 = this.a.getPlacedState(world, blockposition, enumdirection, f, f1, f2, i, entityhuman); @@ -248,43 +721,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + return this.id == MobEffectList.WEAKNESS.id ? (double) (-0.5F * (float) (i + 1)) : 1.3D * (double) (i + 1); + } +} -diff --git a/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java b/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java -new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 ---- /dev/null -+++ b/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java -@@ -0,0 +0,0 @@ -+package net.minecraft.server; -+ -+public class PacketPlayOutPlayerListHeaderFooter implements Packet { -+ -+ private IChatBaseComponent a; -+ private IChatBaseComponent b; -+ -+ public PacketPlayOutPlayerListHeaderFooter() {} -+ -+ public PacketPlayOutPlayerListHeaderFooter(IChatBaseComponent ichatbasecomponent) { -+ this.a = ichatbasecomponent; -+ } -+ -+ public void a(PacketDataSerializer packetdataserializer) { -+ this.a = packetdataserializer.d(); -+ this.b = packetdataserializer.d(); -+ } -+ -+ public void b(PacketDataSerializer packetdataserializer) { -+ packetdataserializer.a(this.a); -+ packetdataserializer.a(this.b); -+ } -+ -+ public void a(PacketListenerPlayOut packetlistenerplayout) { -+ packetlistenerplayout.a(this); -+ } -+ -+ public void a(PacketListener packetlistener) { -+ this.a((PacketListenerPlayOut) packetlistener); -+ } -+} diff --git a/src/main/java/net/minecraft/server/TileEntityEnderChest.java b/src/main/java/net/minecraft/server/TileEntityEnderChest.java new file mode 100644 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 @@ -391,10 +827,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + public TileEntityLightDetector() {} + + public void c() { -+ if (this.world != null && !this.world.isStatic && this.world.getTime() % 20L == 0L) { ++ if (this.world != null && !this.world.isClientSide && this.world.getTime() % 20L == 0L) { + this.e = this.w(); + if (this.e instanceof BlockDaylightDetector) { -+ ((BlockDaylightDetector) this.e).d(this.world, this.position); ++ ((BlockDaylightDetector) this.e).f(this.world, this.position); + } + } +