diff --git a/Spigot-API-Patches/0128-Allow-disabling-armour-stand-ticking.patch b/Spigot-API-Patches/0128-Allow-disabling-armour-stand-ticking.patch new file mode 100644 index 0000000000..71a6b707b7 --- /dev/null +++ b/Spigot-API-Patches/0128-Allow-disabling-armour-stand-ticking.patch @@ -0,0 +1,35 @@ +From 800083976a454caf39f0a2019df51e3af314b022 Mon Sep 17 00:00:00 2001 +From: kashike +Date: Wed, 15 Aug 2018 01:26:03 -0700 +Subject: [PATCH] Allow disabling armour stand ticking + + +diff --git a/src/main/java/org/bukkit/entity/ArmorStand.java b/src/main/java/org/bukkit/entity/ArmorStand.java +index 099da6ce..859f166f 100644 +--- a/src/main/java/org/bukkit/entity/ArmorStand.java ++++ b/src/main/java/org/bukkit/entity/ArmorStand.java +@@ -275,5 +275,21 @@ public interface ArmorStand extends LivingEntity { + * @param move {@code true} if this armour stand can move, {@code false} otherwise + */ + void setCanMove(boolean move); ++ ++ /** ++ * Tests if this armor stand can tick. ++ * ++ *

The default value is defined in {@code paper.yml}.

++ * ++ * @return {@code true} if this armour stand can tick, {@code false} otherwise ++ */ ++ boolean canTick(); ++ ++ /** ++ * Sets if this armor stand can tick. ++ * ++ * @param tick {@code true} if this armour stand can tick, {@code false} otherwise ++ */ ++ void setCanTick(final boolean tick); + // Paper end + } +-- +2.18.0 + diff --git a/Spigot-API-Patches/0128-SkeletonHorse-Additions.patch b/Spigot-API-Patches/0129-SkeletonHorse-Additions.patch similarity index 94% rename from Spigot-API-Patches/0128-SkeletonHorse-Additions.patch rename to Spigot-API-Patches/0129-SkeletonHorse-Additions.patch index 8f2b0a25c7..5f818af3b9 100644 --- a/Spigot-API-Patches/0128-SkeletonHorse-Additions.patch +++ b/Spigot-API-Patches/0129-SkeletonHorse-Additions.patch @@ -1,4 +1,4 @@ -From a8ee859d2eaaefabf9f95aad32589825cfb68981 Mon Sep 17 00:00:00 2001 +From 7ac4f5cdd7d311561825b74a6b6d229e84b68f2d Mon Sep 17 00:00:00 2001 From: BillyGalbreath Date: Fri, 27 Jul 2018 22:36:17 -0500 Subject: [PATCH] SkeletonHorse Additions @@ -6,7 +6,7 @@ Subject: [PATCH] SkeletonHorse Additions diff --git a/src/main/java/com/destroystokyo/paper/event/entity/SkeletonHorseTrapEvent.java b/src/main/java/com/destroystokyo/paper/event/entity/SkeletonHorseTrapEvent.java new file mode 100644 -index 00000000..55bae018 +index 000000000..55bae018e --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/event/entity/SkeletonHorseTrapEvent.java @@ -0,0 +1,43 @@ @@ -54,7 +54,7 @@ index 00000000..55bae018 +} + diff --git a/src/main/java/org/bukkit/entity/SkeletonHorse.java b/src/main/java/org/bukkit/entity/SkeletonHorse.java -index b2c6b6a8..ba998346 100644 +index b2c6b6a86..ba9983463 100644 --- a/src/main/java/org/bukkit/entity/SkeletonHorse.java +++ b/src/main/java/org/bukkit/entity/SkeletonHorse.java @@ -3,4 +3,12 @@ package org.bukkit.entity; diff --git a/Spigot-API-Patches/0129-Expand-Location-Manipulation-API.patch b/Spigot-API-Patches/0130-Expand-Location-Manipulation-API.patch similarity index 95% rename from Spigot-API-Patches/0129-Expand-Location-Manipulation-API.patch rename to Spigot-API-Patches/0130-Expand-Location-Manipulation-API.patch index b9604e5895..906fdc833d 100644 --- a/Spigot-API-Patches/0129-Expand-Location-Manipulation-API.patch +++ b/Spigot-API-Patches/0130-Expand-Location-Manipulation-API.patch @@ -1,4 +1,4 @@ -From c099f3364056fc23f1394a1cfcba17e229b1f082 Mon Sep 17 00:00:00 2001 +From ef1b3e51447d82944f9f1b57d1656f6b0f8aca10 Mon Sep 17 00:00:00 2001 From: Aikar Date: Wed, 25 Jul 2018 01:36:07 -0400 Subject: [PATCH] Expand Location Manipulation API @@ -6,7 +6,7 @@ Subject: [PATCH] Expand Location Manipulation API Adds set(x, y, z), add(base, x, y, z), subtract(base, x, y, z); diff --git a/src/main/java/org/bukkit/Location.java b/src/main/java/org/bukkit/Location.java -index d0d86e1a..253f0c2d 100644 +index d0d86e1a4..253f0c2d5 100644 --- a/src/main/java/org/bukkit/Location.java +++ b/src/main/java/org/bukkit/Location.java @@ -503,6 +503,51 @@ public class Location implements Cloneable, ConfigurationSerializable { diff --git a/Spigot-API-Patches/0130-Expand-ArmorStand-API.patch b/Spigot-API-Patches/0131-Expand-ArmorStand-API.patch similarity index 93% rename from Spigot-API-Patches/0130-Expand-ArmorStand-API.patch rename to Spigot-API-Patches/0131-Expand-ArmorStand-API.patch index 35d8a404ba..adec42030c 100644 --- a/Spigot-API-Patches/0130-Expand-ArmorStand-API.patch +++ b/Spigot-API-Patches/0131-Expand-ArmorStand-API.patch @@ -1,4 +1,4 @@ -From 5a23a70f98ba4d43a2a3ea02a6265bcbb5cb11c7 Mon Sep 17 00:00:00 2001 +From 252df7b3e431a46b2c623727bb2b2e74671a7a07 Mon Sep 17 00:00:00 2001 From: willies952002 Date: Thu, 26 Jul 2018 02:22:44 -0400 Subject: [PATCH] Expand ArmorStand API @@ -8,7 +8,7 @@ Add the following: - Enable/Disable slot interactions diff --git a/src/main/java/org/bukkit/entity/ArmorStand.java b/src/main/java/org/bukkit/entity/ArmorStand.java -index 099da6ce..7a8f4eb7 100644 +index 859f166fb..4285f67fe 100644 --- a/src/main/java/org/bukkit/entity/ArmorStand.java +++ b/src/main/java/org/bukkit/entity/ArmorStand.java @@ -1,5 +1,6 @@ @@ -44,10 +44,10 @@ index 099da6ce..7a8f4eb7 100644 void setItemInHand(ItemStack item); /** -@@ -275,5 +286,67 @@ public interface ArmorStand extends LivingEntity { - * @param move {@code true} if this armour stand can move, {@code false} otherwise +@@ -291,5 +302,67 @@ public interface ArmorStand extends LivingEntity { + * @param tick {@code true} if this armour stand can tick, {@code false} otherwise */ - void setCanMove(boolean move); + void setCanTick(final boolean tick); + + /** + * Returns the item the armor stand has diff --git a/Spigot-API-Patches/0131-AnvilDamageEvent.patch b/Spigot-API-Patches/0132-AnvilDamageEvent.patch similarity index 97% rename from Spigot-API-Patches/0131-AnvilDamageEvent.patch rename to Spigot-API-Patches/0132-AnvilDamageEvent.patch index 3604aa8d23..9e473f5924 100644 --- a/Spigot-API-Patches/0131-AnvilDamageEvent.patch +++ b/Spigot-API-Patches/0132-AnvilDamageEvent.patch @@ -1,4 +1,4 @@ -From 8a3a59da5ab19bd6129293e325dd0ba039947628 Mon Sep 17 00:00:00 2001 +From 15b281e9cf37ea9d4b929f459664d0a731ad4f45 Mon Sep 17 00:00:00 2001 From: BillyGalbreath Date: Fri, 20 Jul 2018 23:36:55 -0500 Subject: [PATCH] AnvilDamageEvent @@ -6,7 +6,7 @@ Subject: [PATCH] AnvilDamageEvent diff --git a/src/main/java/com/destroystokyo/paper/event/block/AnvilDamagedEvent.java b/src/main/java/com/destroystokyo/paper/event/block/AnvilDamagedEvent.java new file mode 100644 -index 00000000..fd3c5c02 +index 000000000..fd3c5c02e --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/event/block/AnvilDamagedEvent.java @@ -0,0 +1,139 @@ diff --git a/Spigot-API-Patches/0132-Add-hand-to-bucket-events.patch b/Spigot-API-Patches/0133-Add-hand-to-bucket-events.patch similarity index 96% rename from Spigot-API-Patches/0132-Add-hand-to-bucket-events.patch rename to Spigot-API-Patches/0133-Add-hand-to-bucket-events.patch index eb3327a240..a8e2b134d8 100644 --- a/Spigot-API-Patches/0132-Add-hand-to-bucket-events.patch +++ b/Spigot-API-Patches/0133-Add-hand-to-bucket-events.patch @@ -1,11 +1,11 @@ -From 71a62262e3b7a417bb316b0067d86744556662a4 Mon Sep 17 00:00:00 2001 +From 67165721579587b8aa2da9db575fa501970e1bdb Mon Sep 17 00:00:00 2001 From: BillyGalbreath Date: Thu, 2 Aug 2018 08:44:20 -0500 Subject: [PATCH] Add hand to bucket events diff --git a/src/main/java/org/bukkit/event/player/PlayerBucketEmptyEvent.java b/src/main/java/org/bukkit/event/player/PlayerBucketEmptyEvent.java -index 8fb121a9..7b9596f3 100644 +index 8fb121a91..7b9596f30 100644 --- a/src/main/java/org/bukkit/event/player/PlayerBucketEmptyEvent.java +++ b/src/main/java/org/bukkit/event/player/PlayerBucketEmptyEvent.java @@ -5,6 +5,7 @@ import org.bukkit.block.Block; @@ -30,7 +30,7 @@ index 8fb121a9..7b9596f3 100644 public HandlerList getHandlers() { return handlers; diff --git a/src/main/java/org/bukkit/event/player/PlayerBucketEvent.java b/src/main/java/org/bukkit/event/player/PlayerBucketEvent.java -index 56584687..3dbe428b 100644 +index 56584687f..3dbe428ba 100644 --- a/src/main/java/org/bukkit/event/player/PlayerBucketEvent.java +++ b/src/main/java/org/bukkit/event/player/PlayerBucketEvent.java @@ -5,6 +5,7 @@ import org.bukkit.block.Block; @@ -82,7 +82,7 @@ index 56584687..3dbe428b 100644 return cancelled; } diff --git a/src/main/java/org/bukkit/event/player/PlayerBucketFillEvent.java b/src/main/java/org/bukkit/event/player/PlayerBucketFillEvent.java -index 94e042a3..884b9240 100644 +index 94e042a36..884b9240b 100644 --- a/src/main/java/org/bukkit/event/player/PlayerBucketFillEvent.java +++ b/src/main/java/org/bukkit/event/player/PlayerBucketFillEvent.java @@ -5,6 +5,7 @@ import org.bukkit.block.Block; @@ -107,5 +107,5 @@ index 94e042a3..884b9240 100644 public HandlerList getHandlers() { return handlers; -- -2.11.0 +2.18.0 diff --git a/Spigot-API-Patches/0133-Add-TNTPrimeEvent.patch b/Spigot-API-Patches/0134-Add-TNTPrimeEvent.patch similarity index 97% rename from Spigot-API-Patches/0133-Add-TNTPrimeEvent.patch rename to Spigot-API-Patches/0134-Add-TNTPrimeEvent.patch index 38f48a51f4..b6ca593b21 100644 --- a/Spigot-API-Patches/0133-Add-TNTPrimeEvent.patch +++ b/Spigot-API-Patches/0134-Add-TNTPrimeEvent.patch @@ -1,4 +1,4 @@ -From de75e8ea0d047e0bf404ca6131f2aa21c6d46cd5 Mon Sep 17 00:00:00 2001 +From 1b88f97354ecb14699543f01215e47280d963f32 Mon Sep 17 00:00:00 2001 From: Mark Vainomaa Date: Sun, 15 Jul 2018 22:17:55 +0300 Subject: [PATCH] Add TNTPrimeEvent @@ -6,7 +6,7 @@ Subject: [PATCH] Add TNTPrimeEvent diff --git a/src/main/java/com/destroystokyo/paper/event/block/TNTPrimeEvent.java b/src/main/java/com/destroystokyo/paper/event/block/TNTPrimeEvent.java new file mode 100644 -index 00000000..4f8d5d2d +index 000000000..4f8d5d2db --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/event/block/TNTPrimeEvent.java @@ -0,0 +1,108 @@ diff --git a/Spigot-API-Patches/0134-Provide-Chunk-Coordinates-as-a-Long-API.patch b/Spigot-API-Patches/0135-Provide-Chunk-Coordinates-as-a-Long-API.patch similarity index 93% rename from Spigot-API-Patches/0134-Provide-Chunk-Coordinates-as-a-Long-API.patch rename to Spigot-API-Patches/0135-Provide-Chunk-Coordinates-as-a-Long-API.patch index 9002b6fc30..a90e1dd357 100644 --- a/Spigot-API-Patches/0134-Provide-Chunk-Coordinates-as-a-Long-API.patch +++ b/Spigot-API-Patches/0135-Provide-Chunk-Coordinates-as-a-Long-API.patch @@ -1,4 +1,4 @@ -From 264867ed8aaad89877a3934ff8c8bcd6e226f3ef Mon Sep 17 00:00:00 2001 +From 3db6552e5028e2772b82d8eed338b5819f65f4ad Mon Sep 17 00:00:00 2001 From: Aikar Date: Sat, 4 Aug 2018 19:37:35 -0400 Subject: [PATCH] Provide Chunk Coordinates as a Long API @@ -7,7 +7,7 @@ Allows you to easily access the chunks X/z as a long, and a method to look up by the long key too. diff --git a/src/main/java/org/bukkit/Chunk.java b/src/main/java/org/bukkit/Chunk.java -index 079b9feb..c75bce07 100644 +index 079b9febe..c75bce07a 100644 --- a/src/main/java/org/bukkit/Chunk.java +++ b/src/main/java/org/bukkit/Chunk.java @@ -23,6 +23,15 @@ public interface Chunk { @@ -27,7 +27,7 @@ index 079b9feb..c75bce07 100644 * Gets the world containing this chunk * diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index b8381d2e..73825a37 100644 +index a9054d8f5..53517dab1 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java @@ -137,6 +137,21 @@ public interface World extends PluginMessageRecipient, Metadatable { diff --git a/Spigot-API-Patches/0135-Make-EnderDragon-extend-Mob.patch b/Spigot-API-Patches/0136-Make-EnderDragon-extend-Mob.patch similarity index 92% rename from Spigot-API-Patches/0135-Make-EnderDragon-extend-Mob.patch rename to Spigot-API-Patches/0136-Make-EnderDragon-extend-Mob.patch index 3a1ca3dfc4..3808f02213 100644 --- a/Spigot-API-Patches/0135-Make-EnderDragon-extend-Mob.patch +++ b/Spigot-API-Patches/0136-Make-EnderDragon-extend-Mob.patch @@ -1,4 +1,4 @@ -From de1ddd9370ca64acffbc01d5346ccc1ec13d720d Mon Sep 17 00:00:00 2001 +From 72a734adf9e87b7f06a82916aca7b02c09020ffc Mon Sep 17 00:00:00 2001 From: Aikar Date: Fri, 10 Aug 2018 22:08:34 -0400 Subject: [PATCH] Make EnderDragon extend Mob diff --git a/Spigot-API-Patches/0136-Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch b/Spigot-API-Patches/0137-Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch similarity index 94% rename from Spigot-API-Patches/0136-Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch rename to Spigot-API-Patches/0137-Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch index 2a0262739e..1c10d24bdc 100644 --- a/Spigot-API-Patches/0136-Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch +++ b/Spigot-API-Patches/0137-Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch @@ -1,4 +1,4 @@ -From cf321e2bc3a1fdb44194e62e0976849571f04387 Mon Sep 17 00:00:00 2001 +From be69af0fbbb28f65f3bbbc30ab647010cf0bc0d4 Mon Sep 17 00:00:00 2001 From: Aikar Date: Wed, 15 Aug 2018 01:04:58 -0400 Subject: [PATCH] Ability to get Tile Entities from a chunk without snapshots diff --git a/Spigot-API-Patches/0137-Don-t-use-snapshots-for-Timings-Tile-Entity-reports.patch b/Spigot-API-Patches/0138-Don-t-use-snapshots-for-Timings-Tile-Entity-reports.patch similarity index 93% rename from Spigot-API-Patches/0137-Don-t-use-snapshots-for-Timings-Tile-Entity-reports.patch rename to Spigot-API-Patches/0138-Don-t-use-snapshots-for-Timings-Tile-Entity-reports.patch index feaba9ddfb..ebcf21842f 100644 --- a/Spigot-API-Patches/0137-Don-t-use-snapshots-for-Timings-Tile-Entity-reports.patch +++ b/Spigot-API-Patches/0138-Don-t-use-snapshots-for-Timings-Tile-Entity-reports.patch @@ -1,4 +1,4 @@ -From 65a6244ec0d4bddeda62628e2edc621f0f448ed9 Mon Sep 17 00:00:00 2001 +From 33e6d2fc56ffb361eafe4a240cad4529d548b7e8 Mon Sep 17 00:00:00 2001 From: Aikar Date: Wed, 15 Aug 2018 01:19:37 -0400 Subject: [PATCH] Don't use snapshots for Timings Tile Entity reports diff --git a/Spigot-Server-Patches/0332-Add-Early-Warning-Feature-to-WatchDog.patch b/Spigot-Server-Patches/0332-Add-Early-Warning-Feature-to-WatchDog.patch index 7228a53533..22a6bf4d46 100644 --- a/Spigot-Server-Patches/0332-Add-Early-Warning-Feature-to-WatchDog.patch +++ b/Spigot-Server-Patches/0332-Add-Early-Warning-Feature-to-WatchDog.patch @@ -1,4 +1,4 @@ -From b232efe9bd3523537d680cca1176dc07cc4adc8c Mon Sep 17 00:00:00 2001 +From 28c2b63fee54568b70849d02503af0f619c70fc1 Mon Sep 17 00:00:00 2001 From: miclebrick Date: Wed, 8 Aug 2018 15:30:52 -0400 Subject: [PATCH] Add Early Warning Feature to WatchDog @@ -9,7 +9,7 @@ thread dumps at an interval until the point of crash. This will help diagnose what was going on in that time before the crash. diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java -index 046bf33f66..8f12ad850b 100644 +index 046bf33f66..b23d45f7df 100644 --- a/src/main/java/com/destroystokyo/paper/PaperConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java @@ -24,6 +24,8 @@ import org.bukkit.configuration.InvalidConfigurationException; @@ -21,11 +21,10 @@ index 046bf33f66..8f12ad850b 100644 public class PaperConfig { -@@ -341,4 +343,12 @@ public class PaperConfig { +@@ -328,6 +330,14 @@ public class PaperConfig { } - tabSpamLimit = getInt("settings.spam-limiter.tab-spam-limit", tabSpamLimit); } -+ + + public static int watchdogPrintEarlyWarningEvery = 5000; + public static int watchdogPrintEarlyWarningDelay = 10000; + private static void watchdogEarlyWarning() { @@ -33,16 +32,19 @@ index 046bf33f66..8f12ad850b 100644 + watchdogPrintEarlyWarningDelay = getInt("settings.watchdog.early-warning-delay", 10000); + WatchdogThread.doStart(SpigotConfig.timeoutTime, SpigotConfig.restartOnCrash ); + } - } ++ + public static int tabSpamIncrement = 2; + public static int tabSpamLimit = 500; + private static void tabSpamLimiters() { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 74c97b5db6..da2e84c6b8 100644 +index 74c97b5db6..5fdd65b083 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -768,6 +768,7 @@ public abstract class MinecraftServer implements IAsyncTaskHandler, IMojangStati this.a(this.n); // Spigot start -+ org.spigotmc.WatchdogThread.hasStarted = true; ++ org.spigotmc.WatchdogThread.hasStarted = true; // Paper Arrays.fill( recentTps, 20 ); long start = System.nanoTime(), lastTick = start - TICK_TIME, catchupTime = 0, curTime, wait, tickSection = start; // Paper - Further improve server tick loop while (this.isRunning) { @@ -60,7 +62,7 @@ index 4ac0ab9974..0c45d75adf 100644 public static boolean bungee; diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java -index 57a4748a30..2aff1039ad 100644 +index 57a4748a30..ac6aeb875a 100644 --- a/src/main/java/org/spigotmc/WatchdogThread.java +++ b/src/main/java/org/spigotmc/WatchdogThread.java @@ -5,6 +5,7 @@ import java.lang.management.MonitorInfo; @@ -91,17 +93,18 @@ index 57a4748a30..2aff1039ad 100644 } public static void doStart(int timeoutTime, boolean restart) -@@ -52,9 +59,19 @@ public class WatchdogThread extends Thread +@@ -51,10 +58,19 @@ public class WatchdogThread extends Thread + { while ( !stopping ) { - // +- // - if ( lastTick != 0 && System.currentTimeMillis() > lastTick + timeoutTime && !Boolean.getBoolean("disable.watchdog")) // Paper - Add property to disable -+ long currentTime = System.currentTimeMillis(); // Paper - do we REALLY need to call this method multiple times? -+ if ( lastTick != 0 && currentTime > lastTick + earlyWarningEvery && !Boolean.getBoolean("disable.watchdog") ) // Paper - Add property to disable and short timeout ++ // Paper start ++ long currentTime = System.currentTimeMillis(); ++ if ( lastTick != 0 && currentTime > lastTick + earlyWarningEvery && !Boolean.getBoolean("disable.watchdog") ) { -+ // Paper start + boolean isLongTimeout = currentTime > lastTick + timeoutTime; -+ // Don't spam short dumps ++ // Don't spam early warning dumps + if ( !isLongTimeout && (earlyWarningEvery <= 0 || !hasStarted || currentTime < lastEarlyWarning + earlyWarningEvery || currentTime < lastTick + earlyWarningDelay)) continue; + lastEarlyWarning = currentTime; + // Paper end @@ -112,13 +115,14 @@ index 57a4748a30..2aff1039ad 100644 log.log( Level.SEVERE, "The server has stopped responding!" ); log.log( Level.SEVERE, "Please report this to https://github.com/PaperMC/Paper/issues" ); log.log( Level.SEVERE, "Be sure to include ALL relevant console errors and Minecraft crash reports" ); -@@ -79,11 +96,19 @@ public class WatchdogThread extends Thread +@@ -79,29 +95,45 @@ public class WatchdogThread extends Thread } } // Paper end + } else + { -+ log.log( Level.SEVERE, "The server has not responded for " + earlyWarningEvery / 1000 + " seconds! Creating thread dump"); ++ log.log(Level.SEVERE, "--- DO NOT REPORT THIS TO PAPER - THIS IS NOT A BUG OR A CRASH ---"); ++ log.log(Level.SEVERE, "The server has not responded for " + (currentTime - lastTick) / 1000 + " seconds! Creating thread dump"); + } + // Paper end - Different message for short timeout log.log( Level.SEVERE, "------------------------------" ); @@ -132,9 +136,21 @@ index 57a4748a30..2aff1039ad 100644 log.log( Level.SEVERE, "Entire Thread Dump:" ); ThreadInfo[] threads = ManagementFactory.getThreadMXBean().dumpAllThreads( true, true ); for ( ThreadInfo thread : threads ) -@@ -97,11 +122,12 @@ public class WatchdogThread extends Thread + { + dumpThread( thread, log ); + } ++ } else { ++ log.log(Level.SEVERE, "--- DO NOT REPORT THIS TO PAPER - THIS IS NOT A BUG OR A CRASH ---"); ++ } ++ ++ + log.log( Level.SEVERE, "------------------------------" ); + + if ( restart ) + { RestartCommand.restart(); } ++ if (isLongTimeout) { break; + } // Paper end } diff --git a/Spigot-Server-Patches/0340-Allow-disabling-armour-stand-ticking.patch b/Spigot-Server-Patches/0340-Allow-disabling-armour-stand-ticking.patch new file mode 100644 index 0000000000..40237fd49d --- /dev/null +++ b/Spigot-Server-Patches/0340-Allow-disabling-armour-stand-ticking.patch @@ -0,0 +1,72 @@ +From 8088becc75a9d4d1ef01cbf85ff0445d06cf0215 Mon Sep 17 00:00:00 2001 +From: kashike +Date: Wed, 15 Aug 2018 01:26:09 -0700 +Subject: [PATCH] Allow disabling armour stand ticking + + +diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +index 61c8b58b16..458baf4442 100644 +--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java ++++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +@@ -483,4 +483,10 @@ public class PaperWorldConfig { + allowPermaChunkLoaders = getBoolean("game-mechanics.allow-permanent-chunk-loaders", allowPermaChunkLoaders); + log("Allow Perma Chunk Loaders: " + (allowPermaChunkLoaders ? "enabled" : "disabled")); + } ++ ++ public boolean armorStandTick = true; ++ private void armorStandTick() { ++ this.armorStandTick = this.getBoolean("armor-stands-tick", this.armorStandTick); ++ log("ArmorStand ticking is " + (this.armorStandTick ? "enabled" : "disabled") + " by default"); ++ } + } +diff --git a/src/main/java/net/minecraft/server/EntityArmorStand.java b/src/main/java/net/minecraft/server/EntityArmorStand.java +index 3b2b94d8c6..7edeb9bb0e 100644 +--- a/src/main/java/net/minecraft/server/EntityArmorStand.java ++++ b/src/main/java/net/minecraft/server/EntityArmorStand.java +@@ -45,6 +45,7 @@ public class EntityArmorStand extends EntityLiving { + public Vector3f leftLegPose; + public Vector3f rightLegPose; + public boolean canMove = true; // Paper ++ public boolean canTick = true; // Paper - armour stand ticking + + public EntityArmorStand(World world) { + super(EntityTypes.ARMOR_STAND, world); +@@ -57,6 +58,7 @@ public class EntityArmorStand extends EntityLiving { + this.leftLegPose = EntityArmorStand.bB; + this.rightLegPose = EntityArmorStand.bC; + this.noclip = this.isNoGravity(); ++ if (world != null) this.canTick = world.paperConfig.armorStandTick; // Paper - armour stand ticking + this.setSize(0.5F, 1.975F); + this.Q = 0.0F; + } +@@ -554,6 +556,7 @@ public class EntityArmorStand extends EntityLiving { + } + + public void tick() { ++ if (!this.canTick) return;// Paper + super.tick(); + Vector3f vector3f = (Vector3f) this.datawatcher.get(EntityArmorStand.b); + +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java +index 9f5c3b92e3..07ce93f17c 100644 +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java +@@ -297,5 +297,15 @@ public class CraftArmorStand extends CraftLivingEntity implements ArmorStand { + public boolean isSlotDisabled(org.bukkit.inventory.EquipmentSlot slot) { + return getHandle().isSlotDisabled(org.bukkit.craftbukkit.CraftEquipmentSlot.getNMS(slot)); + } ++ ++ @Override ++ public boolean canTick() { ++ return this.getHandle().canTick; ++ } ++ ++ @Override ++ public void setCanTick(final boolean tick) { ++ this.getHandle().canTick = tick; ++ } + // Paper end + } +-- +2.18.0 + diff --git a/Spigot-Server-Patches/0341-Ensure-chunks-are-always-loaded-on-hard-position-set.patch b/Spigot-Server-Patches/0341-Ensure-chunks-are-always-loaded-on-hard-position-set.patch new file mode 100644 index 0000000000..4161bc6c23 --- /dev/null +++ b/Spigot-Server-Patches/0341-Ensure-chunks-are-always-loaded-on-hard-position-set.patch @@ -0,0 +1,33 @@ +From ee27ea20d00895926b5fe61aad162123283de3e4 Mon Sep 17 00:00:00 2001 +From: Aikar +Date: Thu, 16 Aug 2018 17:36:41 -0400 +Subject: [PATCH] Ensure chunks are always loaded on hard position sets + +Player Movement, Entity Creation and Teleportation move +entities with a very "You are here, no debate" change, making +the server register them as there, regardless if that chunk was +loaded or not. + +It appears possible that with hack clients and lag, a player +may be able to move fast enough to move into an unloaded +chunk and get into a buggy state. + +To prevent this, we will ensure a chunk is always loaded, +guaranteeing that the entity will be properly registered +into its new home comfortably. + +diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java +index ce33cd5b83..41a951d580 100644 +--- a/src/main/java/net/minecraft/server/Entity.java ++++ b/src/main/java/net/minecraft/server/Entity.java +@@ -1367,6 +1367,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke + this.lastYaw -= 360.0F; + } + ++ world.getChunkAt((int) Math.floor(this.locX) >> 4, (int) Math.floor(this.locZ) >> 4); // Paper - ensure chunk is always loaded + this.setPosition(this.locX, this.locY, this.locZ); + this.setYawPitch(f, f1); + } +-- +2.18.0 +