diff --git a/Spigot-API-Patches/0001-POM-changes.patch b/Spigot-API-Patches/0001-POM-changes.patch index 5354846e91..3b91071dfd 100644 --- a/Spigot-API-Patches/0001-POM-changes.patch +++ b/Spigot-API-Patches/0001-POM-changes.patch @@ -1,11 +1,11 @@ -From f90b7c9822f8711fafde9773238ec4703aaf9b35 Mon Sep 17 00:00:00 2001 +From 6c376546c6b7ad08a3b414f705e54015f4b0200f Mon Sep 17 00:00:00 2001 From: Zach Brown Date: Tue, 1 Mar 2016 00:16:08 +0100 Subject: [PATCH] POM changes diff --git a/pom.xml b/pom.xml -index 0d4ef897..69866193 100644 +index 5ddf33938..2a2abac96 100644 --- a/pom.xml +++ b/pom.xml @@ -2,34 +2,29 @@ @@ -22,7 +22,7 @@ index 0d4ef897..69866193 100644 - spigot-api + com.destroystokyo.paper + paper-api - 1.14.1-R0.1-SNAPSHOT + 1.14.2-R0.1-SNAPSHOT jar - Spigot-API diff --git a/Spigot-Server-Patches/0001-POM-Changes.patch b/Spigot-Server-Patches/0001-POM-Changes.patch index 99cfe2cbf0..727b0b458c 100644 --- a/Spigot-Server-Patches/0001-POM-Changes.patch +++ b/Spigot-Server-Patches/0001-POM-Changes.patch @@ -1,11 +1,11 @@ -From 4bbae6ad58eb4e2328787bc1bc4eaf98bee9d13b Mon Sep 17 00:00:00 2001 +From a96c56c3980dd2a55c41139b1033fae3a8aaaeca Mon Sep 17 00:00:00 2001 From: Zach Brown Date: Mon, 29 Feb 2016 20:40:33 -0600 Subject: [PATCH] POM Changes diff --git a/pom.xml b/pom.xml -index 6a1ba9149..7b9fcb2c0 100644 +index 4a2d58d574..251fa0bc36 100644 --- a/pom.xml +++ b/pom.xml @@ -1,15 +1,14 @@ @@ -16,7 +16,7 @@ index 6a1ba9149..7b9fcb2c0 100644 - spigot + paper jar - 1.14.1-R0.1-SNAPSHOT + 1.14.2-R0.1-SNAPSHOT - Spigot - https://www.spigotmc.org/ + Paper @@ -27,7 +27,7 @@ index 6a1ba9149..7b9fcb2c0 100644 + UTF-8 unknown - 1.14.1 + 1.14.2 @@ -22,16 +21,16 @@ @@ -146,7 +146,7 @@ index 6a1ba9149..7b9fcb2c0 100644 diff --git a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java -index 93046379d..674096cab 100644 +index 93046379d0..674096cab1 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java +++ b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java @@ -11,7 +11,7 @@ public final class Versioning { diff --git a/Spigot-Server-Patches/0003-MC-Dev-fixes.patch b/Spigot-Server-Patches/0003-MC-Dev-fixes.patch index 6dd059bd68..96dca2e5b1 100644 --- a/Spigot-Server-Patches/0003-MC-Dev-fixes.patch +++ b/Spigot-Server-Patches/0003-MC-Dev-fixes.patch @@ -1,4 +1,4 @@ -From 53952ace87eec73c1b221d705a5d92c7ab7d560b Mon Sep 17 00:00:00 2001 +From 6608e2ef74ee495cca724bfe80cc943c33981653 Mon Sep 17 00:00:00 2001 From: Aikar Date: Wed, 30 Mar 2016 19:36:20 -0400 Subject: [PATCH] MC Dev fixes @@ -72,7 +72,7 @@ index adc9981868..b370316574 100644 S s0 = this.f.get(iblockstate, v0); diff --git a/src/main/java/net/minecraft/server/BlockPosition.java b/src/main/java/net/minecraft/server/BlockPosition.java -index f0ff70980d..dd47e9cbe4 100644 +index 123a9bb210..70d9342422 100644 --- a/src/main/java/net/minecraft/server/BlockPosition.java +++ b/src/main/java/net/minecraft/server/BlockPosition.java @@ -57,12 +57,12 @@ public class BlockPosition extends BaseBlockPosition implements MinecraftSeriali @@ -121,7 +121,7 @@ index c973ab6076..30701fd7f3 100644 } } diff --git a/src/main/java/net/minecraft/server/EntityFox.java b/src/main/java/net/minecraft/server/EntityFox.java -index 199f674905..c7a744355a 100644 +index 0e6626096b..85b32a8ac9 100644 --- a/src/main/java/net/minecraft/server/EntityFox.java +++ b/src/main/java/net/minecraft/server/EntityFox.java @@ -97,7 +97,7 @@ public class EntityFox extends EntityAnimal { @@ -134,15 +134,15 @@ index 199f674905..c7a744355a 100644 } diff --git a/src/main/java/net/minecraft/server/EntityVindicator.java b/src/main/java/net/minecraft/server/EntityVindicator.java -index 1692e6b47e..dbd189afe6 100644 +index 219bc2e741..54c1b7c878 100644 --- a/src/main/java/net/minecraft/server/EntityVindicator.java +++ b/src/main/java/net/minecraft/server/EntityVindicator.java @@ -25,7 +25,7 @@ public class EntityVindicator extends EntityIllagerAbstract { this.goalSelector.a(2, new EntityIllagerAbstract.b(this)); this.goalSelector.a(3, new EntityRaider.a(this, 10.0F)); this.goalSelector.a(4, new EntityVindicator.c(this)); -- this.targetSelector.a(1, (new PathfinderGoalHurtByTarget(this, new Class[] { EntityRaider.class})).a()); -+ this.targetSelector.a(1, (new PathfinderGoalHurtByTarget(this, new Class[] { EntityRaider.class})).a(new Class[0])); // Paper - decompile fix +- this.targetSelector.a(1, (new PathfinderGoalHurtByTarget(this, new Class[]{EntityRaider.class})).a()); ++ this.targetSelector.a(1, (new PathfinderGoalHurtByTarget(this, new Class[]{EntityRaider.class})).a(new Class[0])); // Paper - decompile fix this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true)); this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget<>(this, EntityVillagerAbstract.class, true)); this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget<>(this, EntityIronGolem.class, true)); @@ -320,7 +320,7 @@ index 9290534917..1016325bd7 100644 } diff --git a/src/main/java/net/minecraft/server/NBTBase.java b/src/main/java/net/minecraft/server/NBTBase.java -index cb0c08a144..9aabcb630f 100644 +index eab34088a6..7a987c6be3 100644 --- a/src/main/java/net/minecraft/server/NBTBase.java +++ b/src/main/java/net/minecraft/server/NBTBase.java @@ -88,7 +88,7 @@ public interface NBTBase { @@ -431,7 +431,7 @@ index 41a5d1dc29..b3799ab564 100644 if (throwable != null) { completablefuture.completeExceptionally(throwable); diff --git a/src/main/java/net/minecraft/server/VillagerTrades.java b/src/main/java/net/minecraft/server/VillagerTrades.java -index b0d44e3778..ff3f15eac0 100644 +index 73f9da1fdb..2a4e4f7859 100644 --- a/src/main/java/net/minecraft/server/VillagerTrades.java +++ b/src/main/java/net/minecraft/server/VillagerTrades.java @@ -15,12 +15,12 @@ import javax.annotation.Nullable; @@ -440,16 +440,16 @@ index b0d44e3778..ff3f15eac0 100644 - public static final Map> a = (Map) SystemUtils.a((Object) Maps.newHashMap(), (hashmap) -> { + public static final Map> a = SystemUtils.a(Maps.newHashMap(), (hashmap) -> { // Paper - decompile fix - hashmap.put(VillagerProfession.FARMER, a(ImmutableMap.of(1, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.WHEAT, 20, 8, 2), new VillagerTrades.b(Items.POTATO, 26, 8, 2), new VillagerTrades.b(Items.CARROT, 22, 8, 2), new VillagerTrades.b(Items.BEETROOT, 15, 8, 2), new VillagerTrades.h(Items.BREAD, 1, 6, 8, 1)}, 2, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Blocks.PUMPKIN, 6, 6, 10), new VillagerTrades.h(Items.PUMPKIN_PIE, 1, 4, 5), new VillagerTrades.h(Items.APPLE, 1, 4, 8, 5)}, 3, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.h(Items.COOKIE, 3, 18, 10), new VillagerTrades.b(Blocks.MELON, 4, 6, 20)}, 4, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.h(Blocks.CAKE, 1, 1, 6, 15), new VillagerTrades.i(MobEffects.FASTER_MOVEMENT, 160, 15), new VillagerTrades.i(MobEffects.JUMP, 160, 15), new VillagerTrades.i(MobEffects.WEAKNESS, 140, 15), new VillagerTrades.i(MobEffects.BLINDNESS, 120, 15), new VillagerTrades.i(MobEffects.POISON, 280, 15), new VillagerTrades.i(MobEffects.SATURATION, 7, 15)}, 5, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.h(Items.GOLDEN_CARROT, 3, 3, 30), new VillagerTrades.h(Items.GLISTERING_MELON_SLICE, 4, 3, 30)}))); -- hashmap.put(VillagerProfession.FISHERMAN, a(ImmutableMap.of(1, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.STRING, 20, 8, 2), new VillagerTrades.b(Items.COAL, 10, 8, 2), new VillagerTrades.g(Items.COD, 6, Items.COOKED_COD, 6, 8, 1), new VillagerTrades.h(Items.COD_BUCKET, 3, 1, 8, 1)}, 2, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.COD, 15, 8, 10), new VillagerTrades.g(Items.SALMON, 6, Items.COOKED_SALMON, 6, 8, 5), new VillagerTrades.h(Items.pS, 2, 1, 5)}, 3, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.SALMON, 13, 8, 20), new VillagerTrades.e(Items.FISHING_ROD, 3, 2, 10, 0.2F)}, 4, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.TROPICAL_FISH, 6, 6, 30)}, 5, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.PUFFERFISH, 4, 6, 30), new VillagerTrades.c(1, 6, 30, ImmutableMap.builder().put(VillagerType.PLAINS, Items.OAK_BOAT).put(VillagerType.TAIGA, Items.SPRUCE_BOAT).put(VillagerType.SNOW, Items.SPRUCE_BOAT).put(VillagerType.DESERT, Items.JUNGLE_BOAT).put(VillagerType.JUNGLE, Items.JUNGLE_BOAT).put(VillagerType.SAVANNA, Items.ACACIA_BOAT).put(VillagerType.SWAMP, Items.DARK_OAK_BOAT).build())}))); -+ hashmap.put(VillagerProfession.FISHERMAN, a(ImmutableMap.of(1, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.STRING, 20, 8, 2), new VillagerTrades.b(Items.COAL, 10, 8, 2), new VillagerTrades.g(Items.COD, 6, Items.COOKED_COD, 6, 8, 1), new VillagerTrades.h(Items.COD_BUCKET, 3, 1, 8, 1)}, 2, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.COD, 15, 8, 10), new VillagerTrades.g(Items.SALMON, 6, Items.COOKED_SALMON, 6, 8, 5), new VillagerTrades.h(Items.pS, 2, 1, 5)}, 3, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.SALMON, 13, 8, 20), new VillagerTrades.e(Items.FISHING_ROD, 3, 2, 10, 0.2F)}, 4, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.TROPICAL_FISH, 6, 6, 30)}, 5, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.PUFFERFISH, 4, 6, 30), new VillagerTrades.c(1, 6, 30, ImmutableMap.builder().put(VillagerType.PLAINS, Items.OAK_BOAT).put(VillagerType.TAIGA, Items.SPRUCE_BOAT).put(VillagerType.SNOW, Items.SPRUCE_BOAT).put(VillagerType.DESERT, Items.JUNGLE_BOAT).put(VillagerType.JUNGLE, Items.JUNGLE_BOAT).put(VillagerType.SAVANNA, Items.ACACIA_BOAT).put(VillagerType.SWAMP, Items.DARK_OAK_BOAT).build())}))); // Paper - decompile fix - hashmap.put(VillagerProfession.SHEPHERD, a(ImmutableMap.of(1, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Blocks.WHITE_WOOL, 18, 8, 2), new VillagerTrades.b(Blocks.BROWN_WOOL, 18, 8, 2), new VillagerTrades.b(Blocks.BLACK_WOOL, 18, 8, 2), new VillagerTrades.b(Blocks.GRAY_WOOL, 18, 8, 2), new VillagerTrades.h(Items.SHEARS, 2, 1, 1)}, 2, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.WHITE_DYE, 12, 8, 10), new VillagerTrades.b(Items.GRAY_DYE, 12, 8, 10), new VillagerTrades.b(Items.BLACK_DYE, 12, 8, 10), new VillagerTrades.b(Items.LIGHT_BLUE_DYE, 12, 8, 10), new VillagerTrades.b(Items.LIME_DYE, 12, 8, 10), new VillagerTrades.h(Blocks.WHITE_WOOL, 1, 1, 8, 5), new VillagerTrades.h(Blocks.ORANGE_WOOL, 1, 1, 8, 5), new VillagerTrades.h(Blocks.MAGENTA_WOOL, 1, 1, 8, 5), new VillagerTrades.h(Blocks.LIGHT_BLUE_WOOL, 1, 1, 8, 5), new VillagerTrades.h(Blocks.YELLOW_WOOL, 1, 1, 8, 5), new VillagerTrades.h(Blocks.LIME_WOOL, 1, 1, 8, 5), new VillagerTrades.h(Blocks.PINK_WOOL, 1, 1, 8, 5), new VillagerTrades.h(Blocks.GRAY_WOOL, 1, 1, 8, 5), new VillagerTrades.h(Blocks.LIGHT_GRAY_WOOL, 1, 1, 8, 5), new VillagerTrades.h(Blocks.CYAN_WOOL, 1, 1, 8, 5), new VillagerTrades.h(Blocks.PURPLE_WOOL, 1, 1, 8, 5), new VillagerTrades.h(Blocks.BLUE_WOOL, 1, 1, 8, 5), new VillagerTrades.h(Blocks.BROWN_WOOL, 1, 1, 8, 5), new VillagerTrades.h(Blocks.GREEN_WOOL, 1, 1, 8, 5), new VillagerTrades.h(Blocks.RED_WOOL, 1, 1, 8, 5), new VillagerTrades.h(Blocks.BLACK_WOOL, 1, 1, 8, 5), new VillagerTrades.h(Blocks.WHITE_CARPET, 1, 4, 8, 5), new VillagerTrades.h(Blocks.ORANGE_CARPET, 1, 4, 8, 5), new VillagerTrades.h(Blocks.MAGENTA_CARPET, 1, 4, 8, 5), new VillagerTrades.h(Blocks.LIGHT_BLUE_CARPET, 1, 4, 8, 5), new VillagerTrades.h(Blocks.YELLOW_CARPET, 1, 4, 8, 5), new VillagerTrades.h(Blocks.LIME_CARPET, 1, 4, 8, 5), new VillagerTrades.h(Blocks.PINK_CARPET, 1, 4, 8, 5), new VillagerTrades.h(Blocks.GRAY_CARPET, 1, 4, 8, 5), new VillagerTrades.h(Blocks.LIGHT_GRAY_CARPET, 1, 4, 8, 5), new VillagerTrades.h(Blocks.CYAN_CARPET, 1, 4, 8, 5), new VillagerTrades.h(Blocks.PURPLE_CARPET, 1, 4, 8, 5), new VillagerTrades.h(Blocks.BLUE_CARPET, 1, 4, 8, 5), new VillagerTrades.h(Blocks.BROWN_CARPET, 1, 4, 8, 5), new VillagerTrades.h(Blocks.GREEN_CARPET, 1, 4, 8, 5), new VillagerTrades.h(Blocks.RED_CARPET, 1, 4, 8, 5), new VillagerTrades.h(Blocks.BLACK_CARPET, 1, 4, 8, 5)}, 3, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.YELLOW_DYE, 12, 8, 20), new VillagerTrades.b(Items.LIGHT_GRAY_DYE, 12, 8, 20), new VillagerTrades.b(Items.ORANGE_DYE, 12, 8, 20), new VillagerTrades.b(Items.RED_DYE, 12, 8, 20), new VillagerTrades.b(Items.PINK_DYE, 12, 8, 20), new VillagerTrades.h(Blocks.WHITE_BED, 3, 1, 6, 10), new VillagerTrades.h(Blocks.YELLOW_BED, 3, 1, 6, 10), new VillagerTrades.h(Blocks.RED_BED, 3, 1, 6, 10), new VillagerTrades.h(Blocks.BLACK_BED, 3, 1, 6, 10), new VillagerTrades.h(Blocks.BLUE_BED, 3, 1, 6, 10), new VillagerTrades.h(Blocks.BROWN_BED, 3, 1, 6, 10), new VillagerTrades.h(Blocks.CYAN_BED, 3, 1, 6, 10), new VillagerTrades.h(Blocks.GRAY_BED, 3, 1, 6, 10), new VillagerTrades.h(Blocks.GREEN_BED, 3, 1, 6, 10), new VillagerTrades.h(Blocks.LIGHT_BLUE_BED, 3, 1, 6, 10), new VillagerTrades.h(Blocks.LIGHT_GRAY_BED, 3, 1, 6, 10), new VillagerTrades.h(Blocks.LIME_BED, 3, 1, 6, 10), new VillagerTrades.h(Blocks.MAGENTA_BED, 3, 1, 6, 10), new VillagerTrades.h(Blocks.ORANGE_BED, 3, 1, 6, 10), new VillagerTrades.h(Blocks.PINK_BED, 3, 1, 6, 10), new VillagerTrades.h(Blocks.PURPLE_BED, 3, 1, 6, 10)}, 4, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.BROWN_DYE, 12, 8, 30), new VillagerTrades.b(Items.PURPLE_DYE, 12, 8, 30), new VillagerTrades.b(Items.BLUE_DYE, 12, 8, 30), new VillagerTrades.b(Items.GREEN_DYE, 12, 8, 30), new VillagerTrades.b(Items.MAGENTA_DYE, 12, 8, 30), new VillagerTrades.b(Items.CYAN_DYE, 12, 8, 30), new VillagerTrades.h(Items.WHITE_BANNER, 3, 1, 6, 15), new VillagerTrades.h(Items.BLUE_BANNER, 3, 1, 6, 15), new VillagerTrades.h(Items.LIGHT_BLUE_BANNER, 3, 1, 6, 15), new VillagerTrades.h(Items.RED_BANNER, 3, 1, 6, 15), new VillagerTrades.h(Items.PINK_BANNER, 3, 1, 6, 15), new VillagerTrades.h(Items.GREEN_BANNER, 3, 1, 6, 15), new VillagerTrades.h(Items.LIME_BANNER, 3, 1, 6, 15), new VillagerTrades.h(Items.GRAY_BANNER, 3, 1, 6, 15), new VillagerTrades.h(Items.BLACK_BANNER, 3, 1, 6, 15), new VillagerTrades.h(Items.PURPLE_BANNER, 3, 1, 6, 15), new VillagerTrades.h(Items.MAGENTA_BANNER, 3, 1, 6, 15), new VillagerTrades.h(Items.CYAN_BANNER, 3, 1, 6, 15), new VillagerTrades.h(Items.BROWN_BANNER, 3, 1, 6, 15), new VillagerTrades.h(Items.YELLOW_BANNER, 3, 1, 6, 15), new VillagerTrades.h(Items.ORANGE_BANNER, 3, 1, 6, 15), new VillagerTrades.h(Items.LIGHT_GRAY_BANNER, 3, 1, 6, 15)}, 5, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.h(Items.PAINTING, 2, 3, 30)}))); - hashmap.put(VillagerProfession.FLETCHER, a(ImmutableMap.of(1, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.STICK, 32, 8, 2), new VillagerTrades.h(Items.ARROW, 1, 16, 1), new VillagerTrades.g(Blocks.GRAVEL, 10, Items.FLINT, 10, 6, 1)}, 2, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.FLINT, 26, 6, 10), new VillagerTrades.h(Items.BOW, 2, 1, 5)}, 3, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.STRING, 14, 8, 20), new VillagerTrades.h(Items.CROSSBOW, 3, 1, 10)}, 4, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.FEATHER, 24, 8, 30), new VillagerTrades.e(Items.BOW, 2, 2, 15)}, 5, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.dE, 8, 6, 30), new VillagerTrades.e(Items.CROSSBOW, 3, 2, 15), new VillagerTrades.j(Items.ARROW, 5, Items.TIPPED_ARROW, 5, 2, 6, 30)}))); -- hashmap.put(VillagerProfession.LIBRARIAN, a(ImmutableMap.builder().put(1, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.PAPER, 24, 8, 2), new VillagerTrades.d(1), new VillagerTrades.h(Blocks.BOOKSHELF, 6, 3, 6, 1)}).put(2, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.BOOK, 4, 6, 10), new VillagerTrades.d(5), new VillagerTrades.h(Items.pQ, 1, 1, 5)}).put(3, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.INK_SAC, 5, 6, 20), new VillagerTrades.d(10), new VillagerTrades.h(Items.am, 1, 4, 10)}).put(4, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.WRITABLE_BOOK, 2, 6, 30), new VillagerTrades.d(15), new VillagerTrades.h(Items.CLOCK, 5, 1, 15), new VillagerTrades.h(Items.COMPASS, 4, 1, 15)}).put(5, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.h(Items.NAME_TAG, 20, 1, 30)}).build())); -+ hashmap.put(VillagerProfession.LIBRARIAN, a(ImmutableMap.builder().put(1, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.PAPER, 24, 8, 2), new VillagerTrades.d(1), new VillagerTrades.h(Blocks.BOOKSHELF, 6, 3, 6, 1)}).put(2, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.BOOK, 4, 6, 10), new VillagerTrades.d(5), new VillagerTrades.h(Items.pQ, 1, 1, 5)}).put(3, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.INK_SAC, 5, 6, 20), new VillagerTrades.d(10), new VillagerTrades.h(Items.am, 1, 4, 10)}).put(4, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.WRITABLE_BOOK, 2, 6, 30), new VillagerTrades.d(15), new VillagerTrades.h(Items.CLOCK, 5, 1, 15), new VillagerTrades.h(Items.COMPASS, 4, 1, 15)}).put(5, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.h(Items.NAME_TAG, 20, 1, 30)}).build())); // Paper - decompile fix - hashmap.put(VillagerProfession.CARTOGRAPHER, a(ImmutableMap.of(1, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.PAPER, 24, 8, 2), new VillagerTrades.h(Items.MAP, 7, 1, 1)}, 2, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.df, 11, 8, 10), new VillagerTrades.k(13, "Monument", MapIcon.Type.MONUMENT, 6, 5)}, 3, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.COMPASS, 1, 6, 20), new VillagerTrades.k(14, "Mansion", MapIcon.Type.MANSION, 6, 10)}, 4, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.h(Items.ITEM_FRAME, 7, 1, 15), new VillagerTrades.h(Items.WHITE_BANNER, 3, 1, 15), new VillagerTrades.h(Items.BLUE_BANNER, 3, 1, 15), new VillagerTrades.h(Items.LIGHT_BLUE_BANNER, 3, 1, 15), new VillagerTrades.h(Items.RED_BANNER, 3, 1, 15), new VillagerTrades.h(Items.PINK_BANNER, 3, 1, 15), new VillagerTrades.h(Items.GREEN_BANNER, 3, 1, 15), new VillagerTrades.h(Items.LIME_BANNER, 3, 1, 15), new VillagerTrades.h(Items.GRAY_BANNER, 3, 1, 15), new VillagerTrades.h(Items.BLACK_BANNER, 3, 1, 15), new VillagerTrades.h(Items.PURPLE_BANNER, 3, 1, 15), new VillagerTrades.h(Items.MAGENTA_BANNER, 3, 1, 15), new VillagerTrades.h(Items.CYAN_BANNER, 3, 1, 15), new VillagerTrades.h(Items.BROWN_BANNER, 3, 1, 15), new VillagerTrades.h(Items.YELLOW_BANNER, 3, 1, 15), new VillagerTrades.h(Items.ORANGE_BANNER, 3, 1, 15), new VillagerTrades.h(Items.LIGHT_GRAY_BANNER, 3, 1, 15)}, 5, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.h(Items.GLOBE_BANNER_PATTERN, 8, 1, 30)}))); - hashmap.put(VillagerProfession.CLERIC, a(ImmutableMap.of(1, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.ROTTEN_FLESH, 32, 8, 2), new VillagerTrades.h(Items.REDSTONE, 1, 2, 1)}, 2, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.GOLD_INGOT, 3, 6, 10), new VillagerTrades.h(Items.LAPIS_LAZULI, 1, 1, 5)}, 3, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.RABBIT_FOOT, 2, 6, 20), new VillagerTrades.h(Blocks.GLOWSTONE, 4, 1, 6, 10)}, 4, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.SCUTE, 4, 6, 30), new VillagerTrades.b(Items.GLASS_BOTTLE, 9, 6, 30), new VillagerTrades.h(Items.ENDER_PEARL, 5, 1, 15)}, 5, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.NETHER_WART, 22, 6, 30), new VillagerTrades.h(Items.EXPERIENCE_BOTTLE, 3, 1, 30)}))); - hashmap.put(VillagerProfession.ARMORER, a(ImmutableMap.of(1, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.COAL, 15, 8, 2), new VillagerTrades.h(new ItemStack(Items.IRON_LEGGINGS), 7, 1, 6, 1, 0.2F), new VillagerTrades.h(new ItemStack(Items.IRON_BOOTS), 4, 1, 6, 1, 0.2F), new VillagerTrades.h(new ItemStack(Items.IRON_HELMET), 5, 1, 6, 1, 0.2F), new VillagerTrades.h(new ItemStack(Items.IRON_CHESTPLATE), 9, 1, 6, 1, 0.2F)}, 2, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.IRON_INGOT, 4, 6, 10), new VillagerTrades.h(new ItemStack(Items.pP), 36, 1, 6, 5, 0.2F), new VillagerTrades.h(new ItemStack(Items.CHAINMAIL_BOOTS), 1, 1, 6, 5, 0.2F), new VillagerTrades.h(new ItemStack(Items.CHAINMAIL_LEGGINGS), 3, 1, 6, 5, 0.2F)}, 3, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.b(Items.LAVA_BUCKET, 1, 6, 20), new VillagerTrades.b(Items.DIAMOND, 1, 6, 20), new VillagerTrades.h(new ItemStack(Items.CHAINMAIL_HELMET), 1, 1, 6, 10, 0.2F), new VillagerTrades.h(new ItemStack(Items.CHAINMAIL_CHESTPLATE), 4, 1, 6, 10, 0.2F), new VillagerTrades.h(new ItemStack(Items.SHIELD), 5, 1, 6, 10, 0.2F)}, 4, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.e(Items.DIAMOND_LEGGINGS, 14, 2, 15, 0.2F), new VillagerTrades.e(Items.DIAMOND_BOOTS, 8, 2, 15, 0.2F)}, 5, new VillagerTrades.IMerchantRecipeOption[] { new VillagerTrades.e(Items.DIAMOND_HELMET, 8, 2, 30, 0.2F), new VillagerTrades.e(Items.DIAMOND_CHESTPLATE, 16, 2, 30, 0.2F)}))); + hashmap.put(VillagerProfession.FARMER, a(ImmutableMap.of(1, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.WHEAT, 20, 8, 2), new VillagerTrades.b(Items.POTATO, 26, 8, 2), new VillagerTrades.b(Items.CARROT, 22, 8, 2), new VillagerTrades.b(Items.BEETROOT, 15, 8, 2), new VillagerTrades.h(Items.BREAD, 1, 6, 8, 1)}, 2, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Blocks.PUMPKIN, 6, 6, 10), new VillagerTrades.h(Items.PUMPKIN_PIE, 1, 4, 5), new VillagerTrades.h(Items.APPLE, 1, 4, 8, 5)}, 3, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.h(Items.COOKIE, 3, 18, 10), new VillagerTrades.b(Blocks.MELON, 4, 6, 20)}, 4, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.h(Blocks.CAKE, 1, 1, 6, 15), new VillagerTrades.i(MobEffects.FASTER_MOVEMENT, 160, 15), new VillagerTrades.i(MobEffects.JUMP, 160, 15), new VillagerTrades.i(MobEffects.WEAKNESS, 140, 15), new VillagerTrades.i(MobEffects.BLINDNESS, 120, 15), new VillagerTrades.i(MobEffects.POISON, 280, 15), new VillagerTrades.i(MobEffects.SATURATION, 7, 15)}, 5, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.h(Items.GOLDEN_CARROT, 3, 3, 30), new VillagerTrades.h(Items.GLISTERING_MELON_SLICE, 4, 3, 30)}))); +- hashmap.put(VillagerProfession.FISHERMAN, a(ImmutableMap.of(1, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.STRING, 20, 8, 2), new VillagerTrades.b(Items.COAL, 10, 8, 2), new VillagerTrades.g(Items.COD, 6, Items.COOKED_COD, 6, 8, 1), new VillagerTrades.h(Items.COD_BUCKET, 3, 1, 8, 1)}, 2, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.COD, 15, 8, 10), new VillagerTrades.g(Items.SALMON, 6, Items.COOKED_SALMON, 6, 8, 5), new VillagerTrades.h(Items.pS, 2, 1, 5)}, 3, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.SALMON, 13, 8, 20), new VillagerTrades.e(Items.FISHING_ROD, 3, 2, 10, 0.2F)}, 4, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.TROPICAL_FISH, 6, 6, 30)}, 5, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.PUFFERFISH, 4, 6, 30), new VillagerTrades.c(1, 6, 30, ImmutableMap.builder().put(VillagerType.PLAINS, Items.OAK_BOAT).put(VillagerType.TAIGA, Items.SPRUCE_BOAT).put(VillagerType.SNOW, Items.SPRUCE_BOAT).put(VillagerType.DESERT, Items.JUNGLE_BOAT).put(VillagerType.JUNGLE, Items.JUNGLE_BOAT).put(VillagerType.SAVANNA, Items.ACACIA_BOAT).put(VillagerType.SWAMP, Items.DARK_OAK_BOAT).build())}))); ++ hashmap.put(VillagerProfession.FISHERMAN, a(ImmutableMap.of(1, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.STRING, 20, 8, 2), new VillagerTrades.b(Items.COAL, 10, 8, 2), new VillagerTrades.g(Items.COD, 6, Items.COOKED_COD, 6, 8, 1), new VillagerTrades.h(Items.COD_BUCKET, 3, 1, 8, 1)}, 2, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.COD, 15, 8, 10), new VillagerTrades.g(Items.SALMON, 6, Items.COOKED_SALMON, 6, 8, 5), new VillagerTrades.h(Items.pS, 2, 1, 5)}, 3, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.SALMON, 13, 8, 20), new VillagerTrades.e(Items.FISHING_ROD, 3, 2, 10, 0.2F)}, 4, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.TROPICAL_FISH, 6, 6, 30)}, 5, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.PUFFERFISH, 4, 6, 30), new VillagerTrades.c(1, 6, 30, ImmutableMap.builder().put(VillagerType.PLAINS, Items.OAK_BOAT).put(VillagerType.TAIGA, Items.SPRUCE_BOAT).put(VillagerType.SNOW, Items.SPRUCE_BOAT).put(VillagerType.DESERT, Items.JUNGLE_BOAT).put(VillagerType.JUNGLE, Items.JUNGLE_BOAT).put(VillagerType.SAVANNA, Items.ACACIA_BOAT).put(VillagerType.SWAMP, Items.DARK_OAK_BOAT).build())}))); // Paper - decompile fix + hashmap.put(VillagerProfession.SHEPHERD, a(ImmutableMap.of(1, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Blocks.WHITE_WOOL, 18, 8, 2), new VillagerTrades.b(Blocks.BROWN_WOOL, 18, 8, 2), new VillagerTrades.b(Blocks.BLACK_WOOL, 18, 8, 2), new VillagerTrades.b(Blocks.GRAY_WOOL, 18, 8, 2), new VillagerTrades.h(Items.SHEARS, 2, 1, 1)}, 2, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.WHITE_DYE, 12, 8, 10), new VillagerTrades.b(Items.GRAY_DYE, 12, 8, 10), new VillagerTrades.b(Items.BLACK_DYE, 12, 8, 10), new VillagerTrades.b(Items.LIGHT_BLUE_DYE, 12, 8, 10), new VillagerTrades.b(Items.LIME_DYE, 12, 8, 10), new VillagerTrades.h(Blocks.WHITE_WOOL, 1, 1, 8, 5), new VillagerTrades.h(Blocks.ORANGE_WOOL, 1, 1, 8, 5), new VillagerTrades.h(Blocks.MAGENTA_WOOL, 1, 1, 8, 5), new VillagerTrades.h(Blocks.LIGHT_BLUE_WOOL, 1, 1, 8, 5), new VillagerTrades.h(Blocks.YELLOW_WOOL, 1, 1, 8, 5), new VillagerTrades.h(Blocks.LIME_WOOL, 1, 1, 8, 5), new VillagerTrades.h(Blocks.PINK_WOOL, 1, 1, 8, 5), new VillagerTrades.h(Blocks.GRAY_WOOL, 1, 1, 8, 5), new VillagerTrades.h(Blocks.LIGHT_GRAY_WOOL, 1, 1, 8, 5), new VillagerTrades.h(Blocks.CYAN_WOOL, 1, 1, 8, 5), new VillagerTrades.h(Blocks.PURPLE_WOOL, 1, 1, 8, 5), new VillagerTrades.h(Blocks.BLUE_WOOL, 1, 1, 8, 5), new VillagerTrades.h(Blocks.BROWN_WOOL, 1, 1, 8, 5), new VillagerTrades.h(Blocks.GREEN_WOOL, 1, 1, 8, 5), new VillagerTrades.h(Blocks.RED_WOOL, 1, 1, 8, 5), new VillagerTrades.h(Blocks.BLACK_WOOL, 1, 1, 8, 5), new VillagerTrades.h(Blocks.WHITE_CARPET, 1, 4, 8, 5), new VillagerTrades.h(Blocks.ORANGE_CARPET, 1, 4, 8, 5), new VillagerTrades.h(Blocks.MAGENTA_CARPET, 1, 4, 8, 5), new VillagerTrades.h(Blocks.LIGHT_BLUE_CARPET, 1, 4, 8, 5), new VillagerTrades.h(Blocks.YELLOW_CARPET, 1, 4, 8, 5), new VillagerTrades.h(Blocks.LIME_CARPET, 1, 4, 8, 5), new VillagerTrades.h(Blocks.PINK_CARPET, 1, 4, 8, 5), new VillagerTrades.h(Blocks.GRAY_CARPET, 1, 4, 8, 5), new VillagerTrades.h(Blocks.LIGHT_GRAY_CARPET, 1, 4, 8, 5), new VillagerTrades.h(Blocks.CYAN_CARPET, 1, 4, 8, 5), new VillagerTrades.h(Blocks.PURPLE_CARPET, 1, 4, 8, 5), new VillagerTrades.h(Blocks.BLUE_CARPET, 1, 4, 8, 5), new VillagerTrades.h(Blocks.BROWN_CARPET, 1, 4, 8, 5), new VillagerTrades.h(Blocks.GREEN_CARPET, 1, 4, 8, 5), new VillagerTrades.h(Blocks.RED_CARPET, 1, 4, 8, 5), new VillagerTrades.h(Blocks.BLACK_CARPET, 1, 4, 8, 5)}, 3, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.YELLOW_DYE, 12, 8, 20), new VillagerTrades.b(Items.LIGHT_GRAY_DYE, 12, 8, 20), new VillagerTrades.b(Items.ORANGE_DYE, 12, 8, 20), new VillagerTrades.b(Items.RED_DYE, 12, 8, 20), new VillagerTrades.b(Items.PINK_DYE, 12, 8, 20), new VillagerTrades.h(Blocks.WHITE_BED, 3, 1, 6, 10), new VillagerTrades.h(Blocks.YELLOW_BED, 3, 1, 6, 10), new VillagerTrades.h(Blocks.RED_BED, 3, 1, 6, 10), new VillagerTrades.h(Blocks.BLACK_BED, 3, 1, 6, 10), new VillagerTrades.h(Blocks.BLUE_BED, 3, 1, 6, 10), new VillagerTrades.h(Blocks.BROWN_BED, 3, 1, 6, 10), new VillagerTrades.h(Blocks.CYAN_BED, 3, 1, 6, 10), new VillagerTrades.h(Blocks.GRAY_BED, 3, 1, 6, 10), new VillagerTrades.h(Blocks.GREEN_BED, 3, 1, 6, 10), new VillagerTrades.h(Blocks.LIGHT_BLUE_BED, 3, 1, 6, 10), new VillagerTrades.h(Blocks.LIGHT_GRAY_BED, 3, 1, 6, 10), new VillagerTrades.h(Blocks.LIME_BED, 3, 1, 6, 10), new VillagerTrades.h(Blocks.MAGENTA_BED, 3, 1, 6, 10), new VillagerTrades.h(Blocks.ORANGE_BED, 3, 1, 6, 10), new VillagerTrades.h(Blocks.PINK_BED, 3, 1, 6, 10), new VillagerTrades.h(Blocks.PURPLE_BED, 3, 1, 6, 10)}, 4, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.BROWN_DYE, 12, 8, 30), new VillagerTrades.b(Items.PURPLE_DYE, 12, 8, 30), new VillagerTrades.b(Items.BLUE_DYE, 12, 8, 30), new VillagerTrades.b(Items.GREEN_DYE, 12, 8, 30), new VillagerTrades.b(Items.MAGENTA_DYE, 12, 8, 30), new VillagerTrades.b(Items.CYAN_DYE, 12, 8, 30), new VillagerTrades.h(Items.WHITE_BANNER, 3, 1, 6, 15), new VillagerTrades.h(Items.BLUE_BANNER, 3, 1, 6, 15), new VillagerTrades.h(Items.LIGHT_BLUE_BANNER, 3, 1, 6, 15), new VillagerTrades.h(Items.RED_BANNER, 3, 1, 6, 15), new VillagerTrades.h(Items.PINK_BANNER, 3, 1, 6, 15), new VillagerTrades.h(Items.GREEN_BANNER, 3, 1, 6, 15), new VillagerTrades.h(Items.LIME_BANNER, 3, 1, 6, 15), new VillagerTrades.h(Items.GRAY_BANNER, 3, 1, 6, 15), new VillagerTrades.h(Items.BLACK_BANNER, 3, 1, 6, 15), new VillagerTrades.h(Items.PURPLE_BANNER, 3, 1, 6, 15), new VillagerTrades.h(Items.MAGENTA_BANNER, 3, 1, 6, 15), new VillagerTrades.h(Items.CYAN_BANNER, 3, 1, 6, 15), new VillagerTrades.h(Items.BROWN_BANNER, 3, 1, 6, 15), new VillagerTrades.h(Items.YELLOW_BANNER, 3, 1, 6, 15), new VillagerTrades.h(Items.ORANGE_BANNER, 3, 1, 6, 15), new VillagerTrades.h(Items.LIGHT_GRAY_BANNER, 3, 1, 6, 15)}, 5, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.h(Items.PAINTING, 2, 3, 30)}))); + hashmap.put(VillagerProfession.FLETCHER, a(ImmutableMap.of(1, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.STICK, 32, 8, 2), new VillagerTrades.h(Items.ARROW, 1, 16, 1), new VillagerTrades.g(Blocks.GRAVEL, 10, Items.FLINT, 10, 6, 1)}, 2, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.FLINT, 26, 6, 10), new VillagerTrades.h(Items.BOW, 2, 1, 5)}, 3, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.STRING, 14, 8, 20), new VillagerTrades.h(Items.CROSSBOW, 3, 1, 10)}, 4, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.FEATHER, 24, 8, 30), new VillagerTrades.e(Items.BOW, 2, 2, 15)}, 5, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.dE, 8, 6, 30), new VillagerTrades.e(Items.CROSSBOW, 3, 2, 15), new VillagerTrades.j(Items.ARROW, 5, Items.TIPPED_ARROW, 5, 2, 6, 30)}))); +- hashmap.put(VillagerProfession.LIBRARIAN, a(ImmutableMap.builder().put(1, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.PAPER, 24, 8, 2), new VillagerTrades.d(1), new VillagerTrades.h(Blocks.BOOKSHELF, 6, 3, 6, 1)}).put(2, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.BOOK, 4, 6, 10), new VillagerTrades.d(5), new VillagerTrades.h(Items.pQ, 1, 1, 5)}).put(3, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.INK_SAC, 5, 6, 20), new VillagerTrades.d(10), new VillagerTrades.h(Items.am, 1, 4, 10)}).put(4, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.WRITABLE_BOOK, 2, 6, 30), new VillagerTrades.d(15), new VillagerTrades.h(Items.CLOCK, 5, 1, 15), new VillagerTrades.h(Items.COMPASS, 4, 1, 15)}).put(5, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.h(Items.NAME_TAG, 20, 1, 30)}).build())); ++ hashmap.put(VillagerProfession.LIBRARIAN, a(ImmutableMap.builder().put(1, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.PAPER, 24, 8, 2), new VillagerTrades.d(1), new VillagerTrades.h(Blocks.BOOKSHELF, 6, 3, 6, 1)}).put(2, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.BOOK, 4, 6, 10), new VillagerTrades.d(5), new VillagerTrades.h(Items.pQ, 1, 1, 5)}).put(3, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.INK_SAC, 5, 6, 20), new VillagerTrades.d(10), new VillagerTrades.h(Items.am, 1, 4, 10)}).put(4, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.WRITABLE_BOOK, 2, 6, 30), new VillagerTrades.d(15), new VillagerTrades.h(Items.CLOCK, 5, 1, 15), new VillagerTrades.h(Items.COMPASS, 4, 1, 15)}).put(5, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.h(Items.NAME_TAG, 20, 1, 30)}).build())); // Paper - decompile fix + hashmap.put(VillagerProfession.CARTOGRAPHER, a(ImmutableMap.of(1, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.PAPER, 24, 8, 2), new VillagerTrades.h(Items.MAP, 7, 1, 1)}, 2, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.df, 11, 8, 10), new VillagerTrades.k(13, "Monument", MapIcon.Type.MONUMENT, 6, 5)}, 3, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.COMPASS, 1, 6, 20), new VillagerTrades.k(14, "Mansion", MapIcon.Type.MANSION, 6, 10)}, 4, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.h(Items.ITEM_FRAME, 7, 1, 15), new VillagerTrades.h(Items.WHITE_BANNER, 3, 1, 15), new VillagerTrades.h(Items.BLUE_BANNER, 3, 1, 15), new VillagerTrades.h(Items.LIGHT_BLUE_BANNER, 3, 1, 15), new VillagerTrades.h(Items.RED_BANNER, 3, 1, 15), new VillagerTrades.h(Items.PINK_BANNER, 3, 1, 15), new VillagerTrades.h(Items.GREEN_BANNER, 3, 1, 15), new VillagerTrades.h(Items.LIME_BANNER, 3, 1, 15), new VillagerTrades.h(Items.GRAY_BANNER, 3, 1, 15), new VillagerTrades.h(Items.BLACK_BANNER, 3, 1, 15), new VillagerTrades.h(Items.PURPLE_BANNER, 3, 1, 15), new VillagerTrades.h(Items.MAGENTA_BANNER, 3, 1, 15), new VillagerTrades.h(Items.CYAN_BANNER, 3, 1, 15), new VillagerTrades.h(Items.BROWN_BANNER, 3, 1, 15), new VillagerTrades.h(Items.YELLOW_BANNER, 3, 1, 15), new VillagerTrades.h(Items.ORANGE_BANNER, 3, 1, 15), new VillagerTrades.h(Items.LIGHT_GRAY_BANNER, 3, 1, 15)}, 5, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.h(Items.GLOBE_BANNER_PATTERN, 8, 1, 30)}))); + hashmap.put(VillagerProfession.CLERIC, a(ImmutableMap.of(1, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.ROTTEN_FLESH, 32, 8, 2), new VillagerTrades.h(Items.REDSTONE, 1, 2, 1)}, 2, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.GOLD_INGOT, 3, 6, 10), new VillagerTrades.h(Items.LAPIS_LAZULI, 1, 1, 5)}, 3, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.RABBIT_FOOT, 2, 6, 20), new VillagerTrades.h(Blocks.GLOWSTONE, 4, 1, 6, 10)}, 4, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.SCUTE, 4, 6, 30), new VillagerTrades.b(Items.GLASS_BOTTLE, 9, 6, 30), new VillagerTrades.h(Items.ENDER_PEARL, 5, 1, 15)}, 5, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.NETHER_WART, 22, 6, 30), new VillagerTrades.h(Items.EXPERIENCE_BOTTLE, 3, 1, 30)}))); + hashmap.put(VillagerProfession.ARMORER, a(ImmutableMap.of(1, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.COAL, 15, 8, 2), new VillagerTrades.h(new ItemStack(Items.IRON_LEGGINGS), 7, 1, 6, 1, 0.2F), new VillagerTrades.h(new ItemStack(Items.IRON_BOOTS), 4, 1, 6, 1, 0.2F), new VillagerTrades.h(new ItemStack(Items.IRON_HELMET), 5, 1, 6, 1, 0.2F), new VillagerTrades.h(new ItemStack(Items.IRON_CHESTPLATE), 9, 1, 6, 1, 0.2F)}, 2, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.IRON_INGOT, 4, 6, 10), new VillagerTrades.h(new ItemStack(Items.pP), 36, 1, 6, 5, 0.2F), new VillagerTrades.h(new ItemStack(Items.CHAINMAIL_BOOTS), 1, 1, 6, 5, 0.2F), new VillagerTrades.h(new ItemStack(Items.CHAINMAIL_LEGGINGS), 3, 1, 6, 5, 0.2F)}, 3, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.b(Items.LAVA_BUCKET, 1, 6, 20), new VillagerTrades.b(Items.DIAMOND, 1, 6, 20), new VillagerTrades.h(new ItemStack(Items.CHAINMAIL_HELMET), 1, 1, 6, 10, 0.2F), new VillagerTrades.h(new ItemStack(Items.CHAINMAIL_CHESTPLATE), 4, 1, 6, 10, 0.2F), new VillagerTrades.h(new ItemStack(Items.SHIELD), 5, 1, 6, 10, 0.2F)}, 4, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.e(Items.DIAMOND_LEGGINGS, 14, 2, 15, 0.2F), new VillagerTrades.e(Items.DIAMOND_BOOTS, 8, 2, 15, 0.2F)}, 5, new VillagerTrades.IMerchantRecipeOption[]{new VillagerTrades.e(Items.DIAMOND_HELMET, 8, 2, 30, 0.2F), new VillagerTrades.e(Items.DIAMOND_CHESTPLATE, 16, 2, 30, 0.2F)}))); diff --git a/src/main/java/net/minecraft/server/WorldPersistentData.java b/src/main/java/net/minecraft/server/WorldPersistentData.java index b251a1d7d9..3c5b3fe101 100644 --- a/src/main/java/net/minecraft/server/WorldPersistentData.java diff --git a/Spigot-Server-Patches/0009-Timings-v2.patch b/Spigot-Server-Patches/0009-Timings-v2.patch index 90edc170ed..ee1b138861 100644 --- a/Spigot-Server-Patches/0009-Timings-v2.patch +++ b/Spigot-Server-Patches/0009-Timings-v2.patch @@ -1,4 +1,4 @@ -From f32a46fdeb9d66f009b8a0c10935e60632bebcd5 Mon Sep 17 00:00:00 2001 +From 240f6462bb931964a95582e3e71a7b008507afef Mon Sep 17 00:00:00 2001 From: Aikar Date: Thu, 3 Mar 2016 04:00:11 -0600 Subject: [PATCH] Timings v2 @@ -302,10 +302,10 @@ index 5518ec1e54..0c65afccfd 100644 + } } diff --git a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java -index afa9f0c1e6..85a5776b04 100644 +index b2e5bcf57c..78b0e78474 100644 --- a/src/main/java/net/minecraft/server/Block.java +++ b/src/main/java/net/minecraft/server/Block.java -@@ -32,6 +32,15 @@ public class Block implements IMaterial { +@@ -31,6 +31,15 @@ public class Block implements IMaterial { protected final boolean q; protected final SoundEffectType stepSound; protected final Material material; @@ -322,10 +322,10 @@ index afa9f0c1e6..85a5776b04 100644 private final float frictionFactor; protected final BlockStateList blockStateList; diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index 787490faac..4ec0c22233 100644 +index 8075cc4827..3de0f69758 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java -@@ -552,6 +552,7 @@ public class Chunk implements IChunkAccess { +@@ -573,6 +573,7 @@ public class Chunk implements IChunkAccess { server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkLoadEvent(this.bukkitChunk, this.needsDecoration)); if (this.needsDecoration) { @@ -333,7 +333,7 @@ index 787490faac..4ec0c22233 100644 this.needsDecoration = false; java.util.Random random = new java.util.Random(); random.setSeed(world.getSeed()); -@@ -571,6 +572,7 @@ public class Chunk implements IChunkAccess { +@@ -592,6 +593,7 @@ public class Chunk implements IChunkAccess { } } server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkPopulateEvent(bukkitChunk)); @@ -342,20 +342,20 @@ index 787490faac..4ec0c22233 100644 } } diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java -index fff428c128..7a93c8eca8 100644 +index e278dc6366..8d183de2fc 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java -@@ -242,7 +242,9 @@ public class ChunkProviderServer extends IChunkProvider { - } +@@ -245,7 +245,9 @@ public class ChunkProviderServer extends IChunkProvider { public void save(boolean flag) { + this.tickDistanceManager(); + try (co.aikar.timings.Timing timed = world.timings.chunkSaveData.startTiming()) { // Paper - Timings this.playerChunkMap.save(flag); + } // Paper - Timings } @Override -@@ -361,9 +363,9 @@ public class ChunkProviderServer extends IChunkProvider { +@@ -365,9 +367,9 @@ public class ChunkProviderServer extends IChunkProvider { this.world.getMethodProfiler().exit(); } @@ -367,7 +367,7 @@ index fff428c128..7a93c8eca8 100644 } } } -@@ -377,9 +379,7 @@ public class ChunkProviderServer extends IChunkProvider { +@@ -381,9 +383,7 @@ public class ChunkProviderServer extends IChunkProvider { this.world.getMethodProfiler().exit(); } @@ -378,7 +378,7 @@ index fff428c128..7a93c8eca8 100644 @Override diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java -index e4c021a454..2b8148fbda 100644 +index 2e09900f45..1ebb16f0f6 100644 --- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java +++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java @@ -1,5 +1,6 @@ @@ -388,7 +388,7 @@ index e4c021a454..2b8148fbda 100644 import com.google.common.collect.Maps; import it.unimi.dsi.fastutil.longs.LongOpenHashSet; import it.unimi.dsi.fastutil.longs.LongSet; -@@ -435,7 +436,7 @@ public class ChunkRegionLoader { +@@ -406,7 +407,7 @@ public class ChunkRegionLoader { private static void loadEntities(NBTTagCompound nbttagcompound, Chunk chunk) { NBTTagList nbttaglist = nbttagcompound.getList("Entities", 10); World world = chunk.getWorld(); @@ -397,7 +397,7 @@ index e4c021a454..2b8148fbda 100644 for (int i = 0; i < nbttaglist.size(); ++i) { NBTTagCompound nbttagcompound1 = nbttaglist.getCompound(i); -@@ -447,8 +448,6 @@ public class ChunkRegionLoader { +@@ -418,8 +419,6 @@ public class ChunkRegionLoader { chunk.d(true); } @@ -406,7 +406,7 @@ index e4c021a454..2b8148fbda 100644 NBTTagList nbttaglist1 = nbttagcompound.getList("TileEntities", 10); for (int j = 0; j < nbttaglist1.size(); ++j) { -@@ -465,7 +464,7 @@ public class ChunkRegionLoader { +@@ -436,7 +435,7 @@ public class ChunkRegionLoader { } } } @@ -509,7 +509,7 @@ index b60956218d..19e2df3098 100644 return waitable.get(); } catch (java.util.concurrent.ExecutionException e) { diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 8936bbbeef..510ebc72d8 100644 +index 947469217e..dedcce4c2c 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -29,7 +29,8 @@ import org.bukkit.command.CommandSender; @@ -548,7 +548,7 @@ index 8936bbbeef..510ebc72d8 100644 protected Vec3D a(Vec3D vec3d, EnumMoveType enummovetype) { diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index d5ffa9f0f7..d630b1be10 100644 +index cca9da1746..4830c0bd73 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -35,7 +35,7 @@ import org.bukkit.event.entity.EntityTeleportEvent; @@ -560,7 +560,7 @@ index d5ffa9f0f7..d630b1be10 100644 public abstract class EntityLiving extends Entity { -@@ -2208,7 +2208,6 @@ public abstract class EntityLiving extends Entity { +@@ -2214,7 +2214,6 @@ public abstract class EntityLiving extends Entity { @Override public void tick() { @@ -568,7 +568,7 @@ index d5ffa9f0f7..d630b1be10 100644 super.tick(); this.dk(); this.o(); -@@ -2283,9 +2282,7 @@ public abstract class EntityLiving extends Entity { +@@ -2289,9 +2288,7 @@ public abstract class EntityLiving extends Entity { } } @@ -578,7 +578,7 @@ index d5ffa9f0f7..d630b1be10 100644 double d0 = this.locX - this.lastX; double d1 = this.locZ - this.lastZ; float f = (float) (d0 * d0 + d1 * d1); -@@ -2365,8 +2362,6 @@ public abstract class EntityLiving extends Entity { +@@ -2371,8 +2368,6 @@ public abstract class EntityLiving extends Entity { if (this.isSleeping()) { this.pitch = 0.0F; } @@ -587,7 +587,7 @@ index d5ffa9f0f7..d630b1be10 100644 } protected float e(float f, float f1) { -@@ -2440,7 +2435,6 @@ public abstract class EntityLiving extends Entity { +@@ -2446,7 +2441,6 @@ public abstract class EntityLiving extends Entity { this.setMot(d4, d5, d6); this.world.getMethodProfiler().enter("ai"); @@ -595,7 +595,7 @@ index d5ffa9f0f7..d630b1be10 100644 if (this.isFrozen()) { this.jumping = false; this.bb = 0.0F; -@@ -2451,7 +2445,6 @@ public abstract class EntityLiving extends Entity { +@@ -2457,7 +2451,6 @@ public abstract class EntityLiving extends Entity { this.doTick(); this.world.getMethodProfiler().exit(); } @@ -603,7 +603,7 @@ index d5ffa9f0f7..d630b1be10 100644 this.world.getMethodProfiler().exit(); this.world.getMethodProfiler().enter("jump"); -@@ -2476,9 +2469,7 @@ public abstract class EntityLiving extends Entity { +@@ -2482,9 +2475,7 @@ public abstract class EntityLiving extends Entity { this.n(); AxisAlignedBB axisalignedbb = this.getBoundingBox(); @@ -613,7 +613,7 @@ index d5ffa9f0f7..d630b1be10 100644 this.world.getMethodProfiler().exit(); this.world.getMethodProfiler().enter("push"); if (this.bq > 0) { -@@ -2486,9 +2477,7 @@ public abstract class EntityLiving extends Entity { +@@ -2492,9 +2483,7 @@ public abstract class EntityLiving extends Entity { this.a(axisalignedbb, this.getBoundingBox()); } @@ -752,7 +752,7 @@ index 64318e6e78..c76620f2b3 100644 this.methodProfiler.exit(); } diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index 3644b730ba..b52809e13e 100644 +index c186d27786..44e3340773 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java @@ -1,6 +1,8 @@ @@ -762,18 +762,18 @@ index 3644b730ba..b52809e13e 100644 +import co.aikar.timings.Timing; +import com.google.common.collect.ComparisonChain; import com.google.common.collect.Lists; + import com.google.common.collect.Queues; import com.google.common.collect.Sets; - import com.mojang.datafixers.DataFixer; -@@ -410,7 +412,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { - }); +@@ -479,7 +481,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { + }); - return completablefuture.thenComposeAsync((either) -> { -- return (CompletableFuture) either.map((list) -> { -+ return either.map((list) -> { // Paper - Shut up. - try { - CompletableFuture> completablefuture1 = chunkstatus.a(this.world, this.chunkGenerator, this.definedStructureManager, this.lightEngine, (ichunkaccess) -> { - return this.c(playerchunk); -@@ -897,6 +899,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { + return completablefuture.thenComposeAsync((either) -> { +- return (CompletableFuture) either.map((list) -> { ++ return either.map((list) -> { // Paper - Shut up. + try { + CompletableFuture> completablefuture1 = chunkstatus.a(this.world, this.chunkGenerator, this.definedStructureManager, this.lightEngine, (ichunkaccess) -> { + return this.c(playerchunk); +@@ -965,6 +967,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { PlayerChunkMap.EntityTracker playerchunkmap_entitytracker; ObjectIterator objectiterator; @@ -781,7 +781,7 @@ index 3644b730ba..b52809e13e 100644 for (objectiterator = this.trackedEntities.values().iterator(); objectiterator.hasNext(); playerchunkmap_entitytracker.trackerEntry.a()) { playerchunkmap_entitytracker = (PlayerChunkMap.EntityTracker) objectiterator.next(); -@@ -914,13 +917,16 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -982,13 +985,16 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { playerchunkmap_entitytracker.e = sectionposition1; } } @@ -799,7 +799,7 @@ index 3644b730ba..b52809e13e 100644 } diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 5757dd6fb3..a7104e966d 100644 +index ae194b981f..d20037bd00 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -58,6 +58,7 @@ import org.bukkit.inventory.CraftingInventory; @@ -826,7 +826,7 @@ index 5757dd6fb3..a7104e966d 100644 } -@@ -1647,7 +1646,7 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -1651,7 +1650,7 @@ public class PlayerConnection implements PacketListenerPlayIn { // CraftBukkit end private void handleCommand(String s) { @@ -835,7 +835,7 @@ index 5757dd6fb3..a7104e966d 100644 // CraftBukkit start - whole method if ( org.spigotmc.SpigotConfig.logCommands ) // Spigot this.LOGGER.info(this.player.getName() + " issued server command: " + s); -@@ -1658,7 +1657,7 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -1662,7 +1661,7 @@ public class PlayerConnection implements PacketListenerPlayIn { this.server.getPluginManager().callEvent(event); if (event.isCancelled()) { @@ -844,7 +844,7 @@ index 5757dd6fb3..a7104e966d 100644 return; } -@@ -1671,7 +1670,7 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -1675,7 +1674,7 @@ public class PlayerConnection implements PacketListenerPlayIn { java.util.logging.Logger.getLogger(PlayerConnection.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); return; } finally { @@ -880,7 +880,7 @@ index cb6d50ea70..9ba03f8ed0 100644 throw CancelledPacketHandleException.INSTANCE; } diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index 6171b369c6..bab32af469 100644 +index 59752dcd47..1ee1df0757 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java @@ -1,5 +1,6 @@ @@ -904,57 +904,57 @@ index 6171b369c6..bab32af469 100644 public WhiteList getWhitelist() { diff --git a/src/main/java/net/minecraft/server/TickListServer.java b/src/main/java/net/minecraft/server/TickListServer.java -index a99618099b..972b1c0d2c 100644 +index 061730c560..c5890f5dcc 100644 --- a/src/main/java/net/minecraft/server/TickListServer.java +++ b/src/main/java/net/minecraft/server/TickListServer.java -@@ -25,13 +25,18 @@ public class TickListServer implements TickList { - private final List> i = Lists.newArrayList(); - private final Consumer> j; +@@ -28,13 +28,18 @@ public class TickListServer implements TickList { + private final List> h = Lists.newArrayList(); + private final Consumer> i; - public TickListServer(WorldServer worldserver, Predicate predicate, Function function, Function function1, Consumer> consumer) { + public TickListServer(WorldServer worldserver, Predicate predicate, Function function, Function function1, Consumer> consumer, String timingsType) { // Paper this.a = predicate; this.b = function; this.c = function1; - this.h = worldserver; - this.j = consumer; -+ timingCleanup = co.aikar.timings.WorldTimingsHandler.getTickList(worldserver, timingsType + " - Cleanup"); -+ timingTicking = co.aikar.timings.WorldTimingsHandler.getTickList(worldserver, timingsType + " - Ticking"); + this.f = worldserver; + this.i = consumer; ++ this.timingCleanup = co.aikar.timings.WorldTimingsHandler.getTickList(worldserver, timingsType + " - Cleanup"); ++ this.timingTicking = co.aikar.timings.WorldTimingsHandler.getTickList(worldserver, timingsType + " - Ticking"); } + private final co.aikar.timings.Timing timingCleanup; // Paper + private final co.aikar.timings.Timing timingTicking; // Paper + // Paper end public void a() { - this.b(); -@@ -53,6 +58,7 @@ public class TickListServer implements TickList { - this.h.getMethodProfiler().enter("selecting"); - Iterator iterator = this.nextTickList.iterator(); + int i = this.nextTickList.size(); +@@ -57,6 +62,7 @@ public class TickListServer implements TickList { -+ timingCleanup.startTiming(); // Paper + this.f.getMethodProfiler().enter("cleaning"); + ++ this.timingCleanup.startTiming(); // Paper NextTickListEntry nextticklistentry; - while (iterator.hasNext()) { -@@ -66,7 +72,9 @@ public class TickListServer implements TickList { + while (i > 0 && iterator.hasNext()) { +@@ -72,7 +78,9 @@ public class TickListServer implements TickList { --i; } } -+ timingCleanup.stopTiming(); // Paper ++ this.timingCleanup.stopTiming(); // Paper -+ timingTicking.startTiming(); // Paper - this.h.getMethodProfiler().exitEnter("ticking"); - iterator = this.i.iterator(); ++ this.timingTicking.startTiming(); // Paper + this.f.getMethodProfiler().exitEnter("ticking"); -@@ -94,6 +102,7 @@ public class TickListServer implements TickList { - this.i.clear(); + while ((nextticklistentry = (NextTickListEntry) this.g.poll()) != null) { +@@ -93,6 +101,7 @@ public class TickListServer implements TickList { + } + + this.f.getMethodProfiler().exit(); ++ this.timingTicking.stopTiming(); // Paper + this.h.clear(); this.g.clear(); - this.h.getMethodProfiler().exit(); -+ timingTicking.stopTiming(); // Paper } - } - diff --git a/src/main/java/net/minecraft/server/TileEntity.java b/src/main/java/net/minecraft/server/TileEntity.java -index 7546f6690b..095ef9ba51 100644 +index 382498d193..a833781e59 100644 --- a/src/main/java/net/minecraft/server/TileEntity.java +++ b/src/main/java/net/minecraft/server/TileEntity.java @@ -9,11 +9,12 @@ import org.bukkit.craftbukkit.persistence.CraftPersistentDataContainer; @@ -973,7 +973,7 @@ index 7546f6690b..095ef9ba51 100644 private static final CraftPersistentDataTypeRegistry DATA_TYPE_REGISTRY = new CraftPersistentDataTypeRegistry(); public final CraftPersistentDataContainer persistentDataContainer = new CraftPersistentDataContainer(DATA_TYPE_REGISTRY); diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 541fc0cf94..ecf334e535 100644 +index 69c704a429..d7b3b4b8c8 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -1,5 +1,7 @@ @@ -1040,7 +1040,7 @@ index 541fc0cf94..ecf334e535 100644 } diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 36c517d8f6..5a0d940bee 100644 +index 508cdc6a0c..089468835b 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -1,5 +1,7 @@ @@ -1522,7 +1522,7 @@ index e52ef47b78..3d90b34268 100644 this.value = value; } diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index bed9719216..6775bf043a 100644 +index 7fa66d338f..667cbb500b 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java @@ -271,6 +271,13 @@ public final class CraftMagicNumbers implements UnsafeValues { diff --git a/Spigot-Server-Patches/0022-Optimize-TileEntity-Ticking.patch b/Spigot-Server-Patches/0022-Optimize-TileEntity-Ticking.patch index 64af3a4bb0..d652a5d594 100644 --- a/Spigot-Server-Patches/0022-Optimize-TileEntity-Ticking.patch +++ b/Spigot-Server-Patches/0022-Optimize-TileEntity-Ticking.patch @@ -1,11 +1,11 @@ -From 04b87f60ac11d2b82bb3ae15c16685042d298c6f Mon Sep 17 00:00:00 2001 +From 195dfa8d4c59b64e7d1b039bf9c127b5d879f080 Mon Sep 17 00:00:00 2001 From: Aikar Date: Sun, 8 Mar 2015 22:55:25 -0600 Subject: [PATCH] Optimize TileEntity Ticking diff --git a/src/main/java/net/minecraft/server/TileEntityChest.java b/src/main/java/net/minecraft/server/TileEntityChest.java -index 271406f8b..85b450c05 100644 +index 271406f8bb..85b450c054 100644 --- a/src/main/java/net/minecraft/server/TileEntityChest.java +++ b/src/main/java/net/minecraft/server/TileEntityChest.java @@ -7,7 +7,7 @@ import org.bukkit.craftbukkit.entity.CraftHumanEntity; @@ -90,7 +90,7 @@ index 271406f8b..85b450c05 100644 int newPower = Math.max(0, Math.min(15, this.viewingCount)); diff --git a/src/main/java/net/minecraft/server/TileEntityEnderChest.java b/src/main/java/net/minecraft/server/TileEntityEnderChest.java -index 6908f5003..ed5cdf177 100644 +index 340dd1dafe..422b124a6c 100644 --- a/src/main/java/net/minecraft/server/TileEntityEnderChest.java +++ b/src/main/java/net/minecraft/server/TileEntityEnderChest.java @@ -1,6 +1,6 @@ @@ -148,13 +148,13 @@ index 6908f5003..ed5cdf177 100644 float f1 = this.a; @@ -79,11 +97,13 @@ public class TileEntityEnderChest extends TileEntity implements ITickable { - public void c() { + public void d() { ++this.c; this.world.playBlockAction(this.position, Blocks.ENDER_CHEST, 1, this.c); + doOpenLogic(); // Paper } - public void d() { + public void f() { --this.c; this.world.playBlockAction(this.position, Blocks.ENDER_CHEST, 1, this.c); + doCloseLogic(); // Paper diff --git a/Spigot-Server-Patches/0033-Disable-explosion-knockback.patch b/Spigot-Server-Patches/0033-Disable-explosion-knockback.patch index c0eb1e3248..cec89b0a0e 100644 --- a/Spigot-Server-Patches/0033-Disable-explosion-knockback.patch +++ b/Spigot-Server-Patches/0033-Disable-explosion-knockback.patch @@ -1,11 +1,11 @@ -From 7111287522a84789636c89dcc2eace0dc4bb2814 Mon Sep 17 00:00:00 2001 +From 7068ab6fb715ad800f76b74878bcf74daaf51841 Mon Sep 17 00:00:00 2001 From: Sudzzy Date: Wed, 2 Mar 2016 14:48:03 -0600 Subject: [PATCH] Disable explosion knockback diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -index a5ec0bc0e..6a307d5dd 100644 +index a5ec0bc0e0..6a307d5dd6 100644 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java @@ -151,4 +151,9 @@ public class PaperWorldConfig { @@ -19,10 +19,10 @@ index a5ec0bc0e..6a307d5dd 100644 + } } diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index d630b1be1..2212f3198 100644 +index 4830c0bd73..cb23417ffa 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java -@@ -1112,6 +1112,7 @@ public abstract class EntityLiving extends Entity { +@@ -1118,6 +1118,7 @@ public abstract class EntityLiving extends Entity { } } @@ -30,7 +30,7 @@ index d630b1be1..2212f3198 100644 if (flag1) { if (flag) { this.world.broadcastEntityEffect(this, (byte) 29); -@@ -1130,6 +1131,7 @@ public abstract class EntityLiving extends Entity { +@@ -1136,6 +1137,7 @@ public abstract class EntityLiving extends Entity { b0 = 2; } @@ -38,7 +38,7 @@ index d630b1be1..2212f3198 100644 this.world.broadcastEntityEffect(this, b0); } -@@ -1153,6 +1155,8 @@ public abstract class EntityLiving extends Entity { +@@ -1159,6 +1161,8 @@ public abstract class EntityLiving extends Entity { } } @@ -48,7 +48,7 @@ index d630b1be1..2212f3198 100644 if (!this.f(damagesource)) { SoundEffect soundeffect = this.getSoundDeath(); diff --git a/src/main/java/net/minecraft/server/Explosion.java b/src/main/java/net/minecraft/server/Explosion.java -index bcff11761..6eeff4ce5 100644 +index bcff117619..6eeff4ce59 100644 --- a/src/main/java/net/minecraft/server/Explosion.java +++ b/src/main/java/net/minecraft/server/Explosion.java @@ -188,14 +188,14 @@ public class Explosion { diff --git a/Spigot-Server-Patches/0037-Send-absolute-position-the-first-time-an-entity-is-s.patch b/Spigot-Server-Patches/0037-Send-absolute-position-the-first-time-an-entity-is-s.patch index b6cf0edce0..855e4937d7 100644 --- a/Spigot-Server-Patches/0037-Send-absolute-position-the-first-time-an-entity-is-s.patch +++ b/Spigot-Server-Patches/0037-Send-absolute-position-the-first-time-an-entity-is-s.patch @@ -1,11 +1,11 @@ -From 7e48e573bfe3e61492bcb527101c2ad6515fc570 Mon Sep 17 00:00:00 2001 +From ca539db6550e6555be046ed3e53f541e62d76dfb Mon Sep 17 00:00:00 2001 From: Jedediah Smith Date: Wed, 2 Mar 2016 23:13:07 -0600 Subject: [PATCH] Send absolute position the first time an entity is seen diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java -index 315c3d916..aaf3a54b0 100644 +index 315c3d9165..aaf3a54b08 100644 --- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java +++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java @@ -2,6 +2,7 @@ package net.minecraft.server; @@ -77,10 +77,10 @@ index 315c3d916..aaf3a54b0 100644 this.c(); diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index b52809e13..cf20da168 100644 +index 44e3340773..6c904968d7 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java -@@ -1015,10 +1015,14 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1083,10 +1083,14 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { private final Entity tracker; private final int trackingDistance; private SectionPosition e; @@ -97,7 +97,7 @@ index b52809e13..cf20da168 100644 this.tracker = entity; this.trackingDistance = i; this.e = SectionPosition.a(entity); -@@ -1100,7 +1104,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1168,7 +1172,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { entityplayer.removeQueue.remove(Integer.valueOf(this.tracker.getId())); // CraftBukkit end diff --git a/Spigot-Server-Patches/0038-Add-BeaconEffectEvent.patch b/Spigot-Server-Patches/0038-Add-BeaconEffectEvent.patch index 727ddef1f5..afec31b175 100644 --- a/Spigot-Server-Patches/0038-Add-BeaconEffectEvent.patch +++ b/Spigot-Server-Patches/0038-Add-BeaconEffectEvent.patch @@ -1,11 +1,11 @@ -From 41c3aa292936f2d523dfbd56f40d3a82262cde95 Mon Sep 17 00:00:00 2001 +From 28757030f4069ac3ae421cf13c6d932ab01383f9 Mon Sep 17 00:00:00 2001 From: Byteflux Date: Wed, 2 Mar 2016 23:30:53 -0600 Subject: [PATCH] Add BeaconEffectEvent diff --git a/src/main/java/net/minecraft/server/TileEntityBeacon.java b/src/main/java/net/minecraft/server/TileEntityBeacon.java -index 8fd4f4bf7..0612a446a 100644 +index d8aec700dc..d8612de074 100644 --- a/src/main/java/net/minecraft/server/TileEntityBeacon.java +++ b/src/main/java/net/minecraft/server/TileEntityBeacon.java @@ -14,6 +14,11 @@ import org.bukkit.craftbukkit.potion.CraftPotionUtil; @@ -20,7 +20,7 @@ index 8fd4f4bf7..0612a446a 100644 public class TileEntityBeacon extends TileEntity implements ITileInventory, ITickable { -@@ -235,14 +240,31 @@ public class TileEntityBeacon extends TileEntity implements ITileInventory, ITic +@@ -240,14 +245,31 @@ public class TileEntityBeacon extends TileEntity implements ITileInventory, ITic } private void applyEffect(List list, MobEffectList effects, int i, int b0) { @@ -53,7 +53,7 @@ index 8fd4f4bf7..0612a446a 100644 } } } -@@ -265,10 +287,10 @@ public class TileEntityBeacon extends TileEntity implements ITileInventory, ITic +@@ -270,10 +292,10 @@ public class TileEntityBeacon extends TileEntity implements ITileInventory, ITic int i = getLevel(); List list = getHumansInRange(); diff --git a/Spigot-Server-Patches/0044-Ensure-commands-are-not-ran-async.patch b/Spigot-Server-Patches/0044-Ensure-commands-are-not-ran-async.patch index a73e0d4abf..ebba31302b 100644 --- a/Spigot-Server-Patches/0044-Ensure-commands-are-not-ran-async.patch +++ b/Spigot-Server-Patches/0044-Ensure-commands-are-not-ran-async.patch @@ -1,4 +1,4 @@ -From 193308e8db069bec82d2856cce908670e58ea31a Mon Sep 17 00:00:00 2001 +From d3dc4c1f0dc202a099646722fdb1c6bde878cc74 Mon Sep 17 00:00:00 2001 From: Aikar Date: Thu, 3 Mar 2016 01:17:12 -0600 Subject: [PATCH] Ensure commands are not ran async @@ -14,10 +14,10 @@ big slowdown in execution but throwing an exception at same time to raise awaren that it is happening so that plugin authors can fix their code to stop executing commands async. diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index a7104e966..f2e96da81 100644 +index d20037bd00..def713f495 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -1578,6 +1578,29 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -1582,6 +1582,29 @@ public class PlayerConnection implements PacketListenerPlayIn { } if (!async && s.startsWith("/")) { @@ -48,7 +48,7 @@ index a7104e966..f2e96da81 100644 } else if (this.player.getChatFlags() == EnumChatVisibility.SYSTEM) { // Do nothing, this is coming from a plugin diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index d97cba9c0..a29b7b792 100644 +index d97cba9c04..a29b7b7927 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -704,6 +704,29 @@ public final class CraftServer implements Server { @@ -82,7 +82,7 @@ index d97cba9c0..a29b7b792 100644 return true; } diff --git a/src/main/java/org/bukkit/craftbukkit/util/ServerShutdownThread.java b/src/main/java/org/bukkit/craftbukkit/util/ServerShutdownThread.java -index ddef523ea..70f8d4299 100644 +index ddef523ea8..70f8d42992 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/ServerShutdownThread.java +++ b/src/main/java/org/bukkit/craftbukkit/util/ServerShutdownThread.java @@ -13,6 +13,7 @@ public class ServerShutdownThread extends Thread { @@ -94,7 +94,7 @@ index ddef523ea..70f8d4299 100644 } finally { try { diff --git a/src/main/java/org/spigotmc/AsyncCatcher.java b/src/main/java/org/spigotmc/AsyncCatcher.java -index aeed76972..9f7d2ef93 100644 +index aeed769725..9f7d2ef932 100644 --- a/src/main/java/org/spigotmc/AsyncCatcher.java +++ b/src/main/java/org/spigotmc/AsyncCatcher.java @@ -6,6 +6,7 @@ public class AsyncCatcher @@ -106,7 +106,7 @@ index aeed76972..9f7d2ef93 100644 public static void catchOp(String reason) { diff --git a/src/main/java/org/spigotmc/RestartCommand.java b/src/main/java/org/spigotmc/RestartCommand.java -index e7b953ca3..ccea803f5 100644 +index e7b953ca31..ccea803f58 100644 --- a/src/main/java/org/spigotmc/RestartCommand.java +++ b/src/main/java/org/spigotmc/RestartCommand.java @@ -43,6 +43,7 @@ public class RestartCommand extends Command diff --git a/Spigot-Server-Patches/0055-Add-exception-reporting-event.patch b/Spigot-Server-Patches/0055-Add-exception-reporting-event.patch index 2d131f2c41..7dcaeebf70 100644 --- a/Spigot-Server-Patches/0055-Add-exception-reporting-event.patch +++ b/Spigot-Server-Patches/0055-Add-exception-reporting-event.patch @@ -1,4 +1,4 @@ -From 1d08ce42eb8d7e6ed4444f43f381302b251ac0e1 Mon Sep 17 00:00:00 2001 +From 7d15159724fb5e8c37ec67c019172a20da38230b Mon Sep 17 00:00:00 2001 From: Joseph Hirschfeld Date: Thu, 3 Mar 2016 03:15:41 -0600 Subject: [PATCH] Add exception reporting event @@ -6,7 +6,7 @@ Subject: [PATCH] Add exception reporting event diff --git a/src/main/java/com/destroystokyo/paper/ServerSchedulerReportingWrapper.java b/src/main/java/com/destroystokyo/paper/ServerSchedulerReportingWrapper.java new file mode 100644 -index 000000000..f699ce18c +index 0000000000..f699ce18ca --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/ServerSchedulerReportingWrapper.java @@ -0,0 +1,38 @@ @@ -49,7 +49,7 @@ index 000000000..f699ce18c + } +} diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index 318035a48..879a49192 100644 +index e990445196..9b65972569 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -1,5 +1,6 @@ @@ -80,7 +80,7 @@ index 318035a48..879a49192 100644 } } diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java -index 7a93c8eca..c3320e3c4 100644 +index 8d183de2fc..417b8eab8e 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java @@ -16,6 +16,9 @@ import java.util.function.BooleanSupplier; @@ -94,7 +94,7 @@ index 7a93c8eca..c3320e3c4 100644 public class ChunkProviderServer extends IChunkProvider { diff --git a/src/main/java/net/minecraft/server/NameReferencingFileConverter.java b/src/main/java/net/minecraft/server/NameReferencingFileConverter.java -index 1dd793d2f..61ea2818b 100644 +index 2cb0962ff1..21a8ed3231 100644 --- a/src/main/java/net/minecraft/server/NameReferencingFileConverter.java +++ b/src/main/java/net/minecraft/server/NameReferencingFileConverter.java @@ -1,5 +1,6 @@ @@ -121,10 +121,10 @@ index 1dd793d2f..61ea2818b 100644 } // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index cf20da168..7ee32d492 100644 +index 6c904968d7..ba59c561e8 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java -@@ -578,6 +578,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -646,6 +646,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { this.world.checkSession(); } catch (ExceptionWorldConflict exceptionworldconflict) { PlayerChunkMap.LOGGER.error("Couldn't save chunk; already in use by another instance of Minecraft?", exceptionworldconflict); @@ -132,7 +132,7 @@ index cf20da168..7ee32d492 100644 return false; } -@@ -605,6 +606,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -673,6 +674,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { return true; } catch (Exception exception) { PlayerChunkMap.LOGGER.error("Failed to save chunk {},{}", chunkcoordintpair.x, chunkcoordintpair.z, exception); @@ -141,7 +141,7 @@ index cf20da168..7ee32d492 100644 } } diff --git a/src/main/java/net/minecraft/server/RegionFile.java b/src/main/java/net/minecraft/server/RegionFile.java -index d4a9af975..88b5aa3a5 100644 +index d4a9af975d..88b5aa3a51 100644 --- a/src/main/java/net/minecraft/server/RegionFile.java +++ b/src/main/java/net/minecraft/server/RegionFile.java @@ -1,5 +1,6 @@ @@ -168,7 +168,7 @@ index d4a9af975..88b5aa3a5 100644 } diff --git a/src/main/java/net/minecraft/server/SpawnerCreature.java b/src/main/java/net/minecraft/server/SpawnerCreature.java -index 90f891bea..cbf05926a 100644 +index 82f9ad7f0c..f4f842b863 100644 --- a/src/main/java/net/minecraft/server/SpawnerCreature.java +++ b/src/main/java/net/minecraft/server/SpawnerCreature.java @@ -8,6 +8,7 @@ import org.apache.logging.log4j.LogManager; @@ -196,7 +196,7 @@ index 90f891bea..cbf05926a 100644 } diff --git a/src/main/java/net/minecraft/server/VillageSiege.java b/src/main/java/net/minecraft/server/VillageSiege.java -index beeb9ccb8..bb3aa4a37 100644 +index beeb9ccb8d..bb3aa4a376 100644 --- a/src/main/java/net/minecraft/server/VillageSiege.java +++ b/src/main/java/net/minecraft/server/VillageSiege.java @@ -1,5 +1,7 @@ @@ -216,7 +216,7 @@ index beeb9ccb8..bb3aa4a37 100644 } diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 72435a2c0..373d08b23 100644 +index d44cf6164b..9d10caea4a 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -2,6 +2,9 @@ package net.minecraft.server; @@ -255,7 +255,7 @@ index 72435a2c0..373d08b23 100644 return; // Paper end diff --git a/src/main/java/net/minecraft/server/WorldPersistentData.java b/src/main/java/net/minecraft/server/WorldPersistentData.java -index 3c5b3fe10..47a4ea998 100644 +index 3c5b3fe101..47a4ea9985 100644 --- a/src/main/java/net/minecraft/server/WorldPersistentData.java +++ b/src/main/java/net/minecraft/server/WorldPersistentData.java @@ -113,6 +113,7 @@ public class WorldPersistentData { @@ -267,7 +267,7 @@ index 3c5b3fe10..47a4ea998 100644 } finally { if (pushbackinputstream != null) { diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java -index 8823f94f7..552daf437 100644 +index 8823f94f7b..552daf4376 100644 --- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java +++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java @@ -16,6 +16,9 @@ import java.util.concurrent.atomic.AtomicInteger; diff --git a/Spigot-Server-Patches/0057-Disable-Scoreboards-for-non-players-by-default.patch b/Spigot-Server-Patches/0057-Disable-Scoreboards-for-non-players-by-default.patch index 319bd50b90..e074a7d652 100644 --- a/Spigot-Server-Patches/0057-Disable-Scoreboards-for-non-players-by-default.patch +++ b/Spigot-Server-Patches/0057-Disable-Scoreboards-for-non-players-by-default.patch @@ -1,4 +1,4 @@ -From 86502886d45b0f486ce2ffa05f003251afa0ed62 Mon Sep 17 00:00:00 2001 +From 5611fa13eb727dbe8ff7621e52566d7208458ef5 Mon Sep 17 00:00:00 2001 From: Aikar Date: Tue, 8 Mar 2016 23:25:45 -0500 Subject: [PATCH] Disable Scoreboards for non players by default @@ -11,7 +11,7 @@ So avoid looking up scoreboards and short circuit to the "not on a team" logic which is most likely to be true. diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -index 94f5c90b3..30f0dcfd5 100644 +index 94f5c90b3c..30f0dcfd51 100644 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java @@ -196,4 +196,9 @@ public class PaperWorldConfig { @@ -25,7 +25,7 @@ index 94f5c90b3..30f0dcfd5 100644 + } } diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index fef69c7c3..da9971445 100644 +index e1b24a7517..bb293825d5 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -2213,6 +2213,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke @@ -37,10 +37,10 @@ index fef69c7c3..da9971445 100644 } diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 2212f3198..2fd9ebe7e 100644 +index cb23417ffa..0c771aec2a 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java -@@ -578,6 +578,7 @@ public abstract class EntityLiving extends Entity { +@@ -582,6 +582,7 @@ public abstract class EntityLiving extends Entity { if (nbttagcompound.hasKeyOfType("Team", 8)) { String s = nbttagcompound.getString("Team"); ScoreboardTeam scoreboardteam = this.world.getScoreboard().getTeam(s); diff --git a/Spigot-Server-Patches/0059-Complete-resource-pack-API.patch b/Spigot-Server-Patches/0059-Complete-resource-pack-API.patch index fcdad739b2..e24b1468e0 100644 --- a/Spigot-Server-Patches/0059-Complete-resource-pack-API.patch +++ b/Spigot-Server-Patches/0059-Complete-resource-pack-API.patch @@ -1,14 +1,14 @@ -From 0b94d796699403daf18f18e33b59b39b9f9ede1f Mon Sep 17 00:00:00 2001 +From ce75e47a009d18655e59df12ebc07d1868890bdd Mon Sep 17 00:00:00 2001 From: Jedediah Smith Date: Sat, 4 Apr 2015 23:17:52 -0400 Subject: [PATCH] Complete resource pack API diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index f2e96da81..669566f4c 100644 +index def713f495..f8aa8b1405 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -1343,7 +1343,11 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -1347,7 +1347,11 @@ public class PlayerConnection implements PacketListenerPlayIn { // CraftBukkit start public void a(PacketPlayInResourcePackStatus packetplayinresourcepackstatus) { PlayerConnectionUtils.ensureMainThread(packetplayinresourcepackstatus, this, this.player.getWorldServer()); @@ -22,7 +22,7 @@ index f2e96da81..669566f4c 100644 // CraftBukkit end diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index f4dde31e9..b410b7460 100644 +index f4dde31e99..b410b74603 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -131,6 +131,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/Spigot-Server-Patches/0068-Custom-replacement-for-eaten-items.patch b/Spigot-Server-Patches/0068-Custom-replacement-for-eaten-items.patch index 8f43e38981..abdd77258e 100644 --- a/Spigot-Server-Patches/0068-Custom-replacement-for-eaten-items.patch +++ b/Spigot-Server-Patches/0068-Custom-replacement-for-eaten-items.patch @@ -1,14 +1,14 @@ -From 49ca30b4a9012aef4bce4e3116dfe2146ea37132 Mon Sep 17 00:00:00 2001 +From 0d0e34bbb0282b8bb7f911eedf00ba9a1caf768e Mon Sep 17 00:00:00 2001 From: Jedediah Smith Date: Sun, 21 Jun 2015 15:07:20 -0400 Subject: [PATCH] Custom replacement for eaten items diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 2fd9ebe7e..a3ee253b6 100644 +index 0c771aec2a..ba218dd3a0 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java -@@ -2811,12 +2811,13 @@ public abstract class EntityLiving extends Entity { +@@ -2817,12 +2817,13 @@ public abstract class EntityLiving extends Entity { protected void q() { if (!this.activeItem.isEmpty() && this.isHandRaised()) { @@ -23,7 +23,7 @@ index 2fd9ebe7e..a3ee253b6 100644 world.getServer().getPluginManager().callEvent(event); if (event.isCancelled()) { -@@ -2831,9 +2832,20 @@ public abstract class EntityLiving extends Entity { +@@ -2837,9 +2838,20 @@ public abstract class EntityLiving extends Entity { itemstack = this.activeItem.a(this.world, this); } diff --git a/Spigot-Server-Patches/0069-handle-NaN-health-absorb-values-and-repair-bad-data.patch b/Spigot-Server-Patches/0069-handle-NaN-health-absorb-values-and-repair-bad-data.patch index 11428bd9a0..db92d7bd4b 100644 --- a/Spigot-Server-Patches/0069-handle-NaN-health-absorb-values-and-repair-bad-data.patch +++ b/Spigot-Server-Patches/0069-handle-NaN-health-absorb-values-and-repair-bad-data.patch @@ -1,14 +1,14 @@ -From d2f0bbd9969223ed296013cd62c99712cbfb9216 Mon Sep 17 00:00:00 2001 +From dcc2fe3577794119848a6ed896e8ce5fa4634558 Mon Sep 17 00:00:00 2001 From: Aikar Date: Sun, 27 Sep 2015 01:18:02 -0400 Subject: [PATCH] handle NaN health/absorb values and repair bad data diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index a3ee253b6..9717e8575 100644 +index ba218dd3a0..0349554fc3 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java -@@ -539,7 +539,13 @@ public abstract class EntityLiving extends Entity { +@@ -543,7 +543,13 @@ public abstract class EntityLiving extends Entity { @Override public void a(NBTTagCompound nbttagcompound) { @@ -23,7 +23,7 @@ index a3ee253b6..9717e8575 100644 if (nbttagcompound.hasKeyOfType("Attributes", 9) && this.world != null && !this.world.isClientSide) { GenericAttributes.a(this.getAttributeMap(), nbttagcompound.getList("Attributes", 10)); } -@@ -984,6 +990,10 @@ public abstract class EntityLiving extends Entity { +@@ -990,6 +996,10 @@ public abstract class EntityLiving extends Entity { } public void setHealth(float f) { @@ -34,7 +34,7 @@ index a3ee253b6..9717e8575 100644 // CraftBukkit start - Handle scaled health if (this instanceof EntityPlayer) { org.bukkit.craftbukkit.entity.CraftPlayer player = ((EntityPlayer) this).getBukkitEntity(); -@@ -2669,7 +2679,7 @@ public abstract class EntityLiving extends Entity { +@@ -2675,7 +2685,7 @@ public abstract class EntityLiving extends Entity { } public void setAbsorptionHearts(float f) { @@ -44,7 +44,7 @@ index a3ee253b6..9717e8575 100644 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index b410b7460..3e1a7be6f 100644 +index b410b74603..3e1a7be6f3 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -1564,6 +1564,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/Spigot-Server-Patches/0077-Configurable-Chunk-Inhabited-Time.patch b/Spigot-Server-Patches/0077-Configurable-Chunk-Inhabited-Time.patch index 53994207d9..0ef7c21b74 100644 --- a/Spigot-Server-Patches/0077-Configurable-Chunk-Inhabited-Time.patch +++ b/Spigot-Server-Patches/0077-Configurable-Chunk-Inhabited-Time.patch @@ -1,4 +1,4 @@ -From 46d5f243c09e94472ccb5c04592cd4ebdaed7404 Mon Sep 17 00:00:00 2001 +From 9650da6eae43cdd50b0fb1086daeb4df3587d5e4 Mon Sep 17 00:00:00 2001 From: Aikar Date: Mon, 28 Mar 2016 20:46:14 -0400 Subject: [PATCH] Configurable Chunk Inhabited Time @@ -11,7 +11,7 @@ For people who want all chunks to be treated equally, you can chose a fixed valu This allows to fine-tune vanilla gameplay. diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -index 2a71381da..e43866991 100644 +index 2a71381dae..e43866991c 100644 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java @@ -229,4 +229,19 @@ public class PaperWorldConfig { @@ -35,10 +35,10 @@ index 2a71381da..e43866991 100644 + } } diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index c211f8a43..2da7c4531 100644 +index d06e8dbc11..f9b6970ae6 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java -@@ -818,7 +818,7 @@ public class Chunk implements IChunkAccess { +@@ -839,7 +839,7 @@ public class Chunk implements IChunkAccess { @Override public long q() { diff --git a/Spigot-Server-Patches/0080-Sanitise-RegionFileCache-and-make-configurable.patch b/Spigot-Server-Patches/0080-Sanitise-RegionFileCache-and-make-configurable.patch index f901caa1da..9071845d8d 100644 --- a/Spigot-Server-Patches/0080-Sanitise-RegionFileCache-and-make-configurable.patch +++ b/Spigot-Server-Patches/0080-Sanitise-RegionFileCache-and-make-configurable.patch @@ -1,4 +1,4 @@ -From 07f9a49c8b099dcde0098e3aa7c4665f260ffc75 Mon Sep 17 00:00:00 2001 +From a2f127354ee26af4318bd046748e69dc6caa3d94 Mon Sep 17 00:00:00 2001 From: Antony Riley Date: Tue, 29 Mar 2016 08:22:55 +0300 Subject: [PATCH] Sanitise RegionFileCache and make configurable. @@ -11,7 +11,7 @@ The implementation uses a LinkedHashMap as an LRU cache (modified from HashMap). The maximum size of the RegionFileCache is also made configurable. diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java -index 6cc99ffe4..4424f7ef1 100644 +index 6cc99ffe43..4424f7ef18 100644 --- a/src/main/java/com/destroystokyo/paper/PaperConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java @@ -218,4 +218,9 @@ public class PaperConfig { @@ -25,7 +25,7 @@ index 6cc99ffe4..4424f7ef1 100644 + } } diff --git a/src/main/java/net/minecraft/server/RegionFileCache.java b/src/main/java/net/minecraft/server/RegionFileCache.java -index 20f563144..6425b14f2 100644 +index 1ea9e5bb43..21b3b06f53 100644 --- a/src/main/java/net/minecraft/server/RegionFileCache.java +++ b/src/main/java/net/minecraft/server/RegionFileCache.java @@ -8,6 +8,7 @@ import java.io.DataOutputStream; @@ -41,8 +41,8 @@ index 20f563144..6425b14f2 100644 return regionfile; } else { - if (this.cache.size() >= 256) { -+ if (this.cache.size() >= PaperConfig.regionFileCacheSize) { - this.cache.removeLast(); ++ if (this.cache.size() >= PaperConfig.regionFileCacheSize) { // Paper - configurable + ((RegionFile) this.cache.removeLast()).close(); } -- diff --git a/Spigot-Server-Patches/0084-Add-PlayerUseUnknownEntityEvent.patch b/Spigot-Server-Patches/0084-Add-PlayerUseUnknownEntityEvent.patch index 1e4d8572c2..149fa3c35b 100644 --- a/Spigot-Server-Patches/0084-Add-PlayerUseUnknownEntityEvent.patch +++ b/Spigot-Server-Patches/0084-Add-PlayerUseUnknownEntityEvent.patch @@ -1,11 +1,11 @@ -From 5197c88754e7f356278768f8625b07606102f140 Mon Sep 17 00:00:00 2001 +From 7b55abf7aa63e8eec74cb9f7c07747630e64cca3 Mon Sep 17 00:00:00 2001 From: Jedediah Smith Date: Sat, 2 Apr 2016 05:09:16 -0400 Subject: [PATCH] Add PlayerUseUnknownEntityEvent diff --git a/src/main/java/net/minecraft/server/PacketPlayInUseEntity.java b/src/main/java/net/minecraft/server/PacketPlayInUseEntity.java -index 680adbdeb..3f7697b39 100644 +index 680adbdeb0..3f7697b39c 100644 --- a/src/main/java/net/minecraft/server/PacketPlayInUseEntity.java +++ b/src/main/java/net/minecraft/server/PacketPlayInUseEntity.java @@ -5,7 +5,7 @@ import javax.annotation.Nullable; @@ -18,10 +18,10 @@ index 680adbdeb..3f7697b39 100644 private Vec3D c; private EnumHand d; diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 669566f4c..86de93275 100644 +index f8aa8b1405..545e18b8f3 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -1922,6 +1922,16 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -1926,6 +1926,16 @@ public class PlayerConnection implements PacketListenerPlayIn { } } } diff --git a/Spigot-Server-Patches/0089-Option-to-use-vanilla-per-world-scoreboard-coloring-.patch b/Spigot-Server-Patches/0089-Option-to-use-vanilla-per-world-scoreboard-coloring-.patch index 44d6c32c54..5eb1897783 100644 --- a/Spigot-Server-Patches/0089-Option-to-use-vanilla-per-world-scoreboard-coloring-.patch +++ b/Spigot-Server-Patches/0089-Option-to-use-vanilla-per-world-scoreboard-coloring-.patch @@ -1,4 +1,4 @@ -From 1cdcbb68ac7e32ebd2e8ff842cfa7b0dca28fdbd Mon Sep 17 00:00:00 2001 +From 5b423d4184ce9e20835e17744e6915e204dab4da Mon Sep 17 00:00:00 2001 From: Zach Brown Date: Wed, 6 Apr 2016 01:04:23 -0500 Subject: [PATCH] Option to use vanilla per-world scoreboard coloring on names @@ -12,7 +12,7 @@ for this on CB at one point but I can't find it. We may need to do this ourselves at some point in the future. diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -index 59d11e68c..1da7ffab5 100644 +index 59d11e68c9..1da7ffab5d 100644 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java @@ -250,4 +250,9 @@ public class PaperWorldConfig { @@ -26,10 +26,10 @@ index 59d11e68c..1da7ffab5 100644 + } } diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 86de93275..bc11a9162 100644 +index 545e18b8f3..e88abe1d05 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -1656,7 +1656,16 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -1660,7 +1660,16 @@ public class PlayerConnection implements PacketListenerPlayIn { return; } @@ -48,7 +48,7 @@ index 86de93275..bc11a9162 100644 if (((LazyPlayerSet) event.getRecipients()).isLazy()) { for (Object recipient : minecraftServer.getPlayerList().players) { diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index 5745b4762..eadbf0ee0 100644 +index 25ef32dc92..eb37fdbde1 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java @@ -177,7 +177,7 @@ public abstract class PlayerList { diff --git a/Spigot-Server-Patches/0094-Add-handshake-event-to-allow-plugins-to-handle-clien.patch b/Spigot-Server-Patches/0094-Add-handshake-event-to-allow-plugins-to-handle-clien.patch index 6edf5f0f13..cafb6e9444 100644 --- a/Spigot-Server-Patches/0094-Add-handshake-event-to-allow-plugins-to-handle-clien.patch +++ b/Spigot-Server-Patches/0094-Add-handshake-event-to-allow-plugins-to-handle-clien.patch @@ -1,4 +1,4 @@ -From 92ecc9dec534968a8dde134cb40b2d9f56ddfbb0 Mon Sep 17 00:00:00 2001 +From 655d2fb7f8706a448a26104f9f3585510bd8714b Mon Sep 17 00:00:00 2001 From: kashike Date: Wed, 13 Apr 2016 20:21:38 -0700 Subject: [PATCH] Add handshake event to allow plugins to handle client @@ -6,13 +6,13 @@ Subject: [PATCH] Add handshake event to allow plugins to handle client diff --git a/src/main/java/net/minecraft/server/HandshakeListener.java b/src/main/java/net/minecraft/server/HandshakeListener.java -index 1ef8e8653..60be2fa99 100644 +index 756330a6ca..66dda900b6 100644 --- a/src/main/java/net/minecraft/server/HandshakeListener.java +++ b/src/main/java/net/minecraft/server/HandshakeListener.java @@ -73,8 +73,33 @@ public class HandshakeListener implements PacketHandshakingInListener { - this.b.close(chatmessage); - } else { - this.b.setPacketListener(new LoginListener(this.a, this.b)); + this.b.close(chatmessage); + } else { + this.b.setPacketListener(new LoginListener(this.a, this.b)); + // Paper start - handshake event + boolean proxyLogicEnabled = org.spigotmc.SpigotConfig.bungee; + boolean handledByEvent = false; @@ -38,12 +38,12 @@ index 1ef8e8653..60be2fa99 100644 + // Don't try and handle default logic if it's been handled by the event. + if (!handledByEvent && proxyLogicEnabled) { + // Paper end - // Spigot Start -- if (org.spigotmc.SpigotConfig.bungee) { + // Spigot Start +- if (org.spigotmc.SpigotConfig.bungee) { + //if (org.spigotmc.SpigotConfig.bungee) { // Paper - comment out, we check above! - String[] split = packethandshakinginsetprotocol.hostname.split("\00"); - if ( split.length == 3 || split.length == 4 ) { - packethandshakinginsetprotocol.hostname = split[0]; + String[] split = packethandshakinginsetprotocol.hostname.split("\00"); + if ( split.length == 3 || split.length == 4 ) { + packethandshakinginsetprotocol.hostname = split[0]; -- 2.21.0 diff --git a/Spigot-Server-Patches/0098-EntityRegainHealthEvent-isFastRegen-API.patch b/Spigot-Server-Patches/0098-EntityRegainHealthEvent-isFastRegen-API.patch index cef690a6c2..7889749701 100644 --- a/Spigot-Server-Patches/0098-EntityRegainHealthEvent-isFastRegen-API.patch +++ b/Spigot-Server-Patches/0098-EntityRegainHealthEvent-isFastRegen-API.patch @@ -1,4 +1,4 @@ -From 2650d28542a72d8d1789484fa0ad77b1f14406ab Mon Sep 17 00:00:00 2001 +From ef8955e4430de17f8d1836abe4eef3f446da957e Mon Sep 17 00:00:00 2001 From: Zach Brown Date: Fri, 22 Apr 2016 01:43:11 -0500 Subject: [PATCH] EntityRegainHealthEvent isFastRegen API @@ -6,10 +6,10 @@ Subject: [PATCH] EntityRegainHealthEvent isFastRegen API Don't even get me started diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 9717e8575..223032e1e 100644 +index 0349554fc3..12286beda9 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java -@@ -963,10 +963,16 @@ public abstract class EntityLiving extends Entity { +@@ -969,10 +969,16 @@ public abstract class EntityLiving extends Entity { } public void heal(float f, EntityRegainHealthEvent.RegainReason regainReason) { @@ -28,7 +28,7 @@ index 9717e8575..223032e1e 100644 if (this.valid) { this.world.getServer().getPluginManager().callEvent(event); diff --git a/src/main/java/net/minecraft/server/FoodMetaData.java b/src/main/java/net/minecraft/server/FoodMetaData.java -index da07530d9..d184422fb 100644 +index da07530d99..d184422fbe 100644 --- a/src/main/java/net/minecraft/server/FoodMetaData.java +++ b/src/main/java/net/minecraft/server/FoodMetaData.java @@ -69,7 +69,7 @@ public class FoodMetaData { diff --git a/Spigot-Server-Patches/0113-Don-t-lookup-game-profiles-that-have-no-UUID-and-no-.patch b/Spigot-Server-Patches/0113-Don-t-lookup-game-profiles-that-have-no-UUID-and-no-.patch index 9648ca9ffa..2d68dd1041 100644 --- a/Spigot-Server-Patches/0113-Don-t-lookup-game-profiles-that-have-no-UUID-and-no-.patch +++ b/Spigot-Server-Patches/0113-Don-t-lookup-game-profiles-that-have-no-UUID-and-no-.patch @@ -1,17 +1,17 @@ -From f11ec050ce775670004b79fc9cd6ad75db672a4e Mon Sep 17 00:00:00 2001 +From db2d448fb90f6e5a39f6f465553944f4bf4bc8a0 Mon Sep 17 00:00:00 2001 From: Zach Brown Date: Sat, 16 Jul 2016 19:11:17 -0500 Subject: [PATCH] Don't lookup game profiles that have no UUID and no name diff --git a/src/main/java/net/minecraft/server/UserCache.java b/src/main/java/net/minecraft/server/UserCache.java -index dc5c0afab..fd17a3e93 100644 +index ea02567554..b0d883d493 100644 --- a/src/main/java/net/minecraft/server/UserCache.java +++ b/src/main/java/net/minecraft/server/UserCache.java @@ -86,7 +86,7 @@ public class UserCache { }; - gameprofilerepository.findProfilesByNames(new String[] { s}, Agent.MINECRAFT, profilelookupcallback); + gameprofilerepository.findProfilesByNames(new String[]{s}, Agent.MINECRAFT, profilelookupcallback); - if (!d() && agameprofile[0] == null) { + if (!d() && agameprofile[0] == null && !org.apache.commons.lang3.StringUtils.isBlank(s)) { // Paper - Don't lookup a profile with a blank name UUID uuid = EntityHuman.a(new GameProfile((UUID) null, s)); diff --git a/Spigot-Server-Patches/0118-Configurable-packet-in-spam-threshold.patch b/Spigot-Server-Patches/0118-Configurable-packet-in-spam-threshold.patch index c9200893a9..ba56db5301 100644 --- a/Spigot-Server-Patches/0118-Configurable-packet-in-spam-threshold.patch +++ b/Spigot-Server-Patches/0118-Configurable-packet-in-spam-threshold.patch @@ -1,11 +1,11 @@ -From 94a3653af3730965a639215163c102294a0eb793 Mon Sep 17 00:00:00 2001 +From cb713b852dbd0b6765dc4c9276b466f8113329a2 Mon Sep 17 00:00:00 2001 From: Zach Brown Date: Sun, 11 Sep 2016 14:30:57 -0500 Subject: [PATCH] Configurable packet in spam threshold diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java -index 3d9dba769..5c7f17090 100644 +index 3d9dba7696..5c7f170907 100644 --- a/src/main/java/com/destroystokyo/paper/PaperConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java @@ -243,4 +243,13 @@ public class PaperConfig { @@ -23,10 +23,10 @@ index 3d9dba769..5c7f17090 100644 + } } diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index be870d97a..8d33eb25e 100644 +index 630059246f..fd990e703c 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -1216,13 +1216,14 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -1220,13 +1220,14 @@ public class PlayerConnection implements PacketListenerPlayIn { // Spigot start - limit place/interactions private int limitedPackets; private long lastLimitedPacket = -1; diff --git a/Spigot-Server-Patches/0124-Add-EntityZapEvent.patch b/Spigot-Server-Patches/0124-Add-EntityZapEvent.patch index 617e2a9a1e..5cb2aabb9f 100644 --- a/Spigot-Server-Patches/0124-Add-EntityZapEvent.patch +++ b/Spigot-Server-Patches/0124-Add-EntityZapEvent.patch @@ -1,4 +1,4 @@ -From af1a9fc237a515545168decf69757434f9b176aa Mon Sep 17 00:00:00 2001 +From f695990b7b9ad58234ab33396e27100ad1bd0803 Mon Sep 17 00:00:00 2001 From: AlphaBlend Date: Sun, 16 Oct 2016 23:19:30 -0700 Subject: [PATCH] Add EntityZapEvent @@ -22,10 +22,10 @@ index 01202e4d53..616075569f 100644 if (CraftEventFactory.callPigZapEvent(this, entitylightning, entitypigzombie).isCancelled()) { return; diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java -index 512d18a2b7..9ac9d499d5 100644 +index 1400b3f44b..4119709cb8 100644 --- a/src/main/java/net/minecraft/server/EntityVillager.java +++ b/src/main/java/net/minecraft/server/EntityVillager.java -@@ -578,6 +578,12 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation +@@ -584,6 +584,12 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation public void onLightningStrike(EntityLightning entitylightning) { EntityWitch entitywitch = (EntityWitch) EntityTypes.WITCH.a(this.world); diff --git a/Spigot-Server-Patches/0139-Properly-fix-item-duplication-bug.patch b/Spigot-Server-Patches/0139-Properly-fix-item-duplication-bug.patch index 59ce453949..860dea4413 100644 --- a/Spigot-Server-Patches/0139-Properly-fix-item-duplication-bug.patch +++ b/Spigot-Server-Patches/0139-Properly-fix-item-duplication-bug.patch @@ -1,4 +1,4 @@ -From b1fcecc9782a86c510957e4df7f27fda452187dc Mon Sep 17 00:00:00 2001 +From 3a4cfaef071d0d7865b2e3b1fcb5cdac7dd0d648 Mon Sep 17 00:00:00 2001 From: Alfie Cleveland Date: Tue, 27 Dec 2016 01:57:57 +0000 Subject: [PATCH] Properly fix item duplication bug @@ -6,7 +6,7 @@ Subject: [PATCH] Properly fix item duplication bug Credit to prplz for figuring out the real issue diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index 46d1dddca..c3026530d 100644 +index 7352ec5bb9..607042a41c 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -1791,7 +1791,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { @@ -19,10 +19,10 @@ index 46d1dddca..c3026530d 100644 @Override diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 3788cc37e..a7e082246 100644 +index d2c178429d..f88ec07835 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -2540,7 +2540,7 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -2544,7 +2544,7 @@ public class PlayerConnection implements PacketListenerPlayIn { } public final boolean isDisconnected() { diff --git a/Spigot-Server-Patches/0146-Fix-block-break-desync.patch b/Spigot-Server-Patches/0146-Fix-block-break-desync.patch index 3fa30b3724..0224e571df 100644 --- a/Spigot-Server-Patches/0146-Fix-block-break-desync.patch +++ b/Spigot-Server-Patches/0146-Fix-block-break-desync.patch @@ -1,22 +1,22 @@ -From 305bd26f4fb649b9bd9ff43b049802ebdc95b078 Mon Sep 17 00:00:00 2001 +From 9116d90f1a852980bbb8a81522a86b000bef214d Mon Sep 17 00:00:00 2001 From: Michael Himing Date: Sun, 8 Jan 2017 18:50:35 +1100 Subject: [PATCH] Fix block break desync diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index a7e082246..cb9a7b68c 100644 +index f88ec07835..20ecb9ef05 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -1175,6 +1175,8 @@ public class PlayerConnection implements PacketListenerPlayIn { - double d3 = d0 * d0 + d1 * d1 + d2 * d2; +@@ -1179,6 +1179,8 @@ public class PlayerConnection implements PacketListenerPlayIn { + double d3 = d0 * d0 + d1 * d1 + d2 * d2; - if (d3 > 36.0D) { + if (d3 > 36.0D) { + if (worldserver.isChunkLoaded(blockposition.getX() >> 4, blockposition.getZ() >> 4)) // Paper - Fix block break desync - Don't send for unloaded chunks + this.sendPacket(new PacketPlayOutBlockChange(worldserver, blockposition)); // Paper - Fix block break desync - return; - } else if (blockposition.getY() >= this.minecraftServer.getMaxBuildHeight()) { - return; + return; + } else if (blockposition.getY() >= this.minecraftServer.getMaxBuildHeight()) { + return; -- 2.21.0 diff --git a/Spigot-Server-Patches/0147-ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch b/Spigot-Server-Patches/0147-ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch index 018688de65..b380a84f54 100644 --- a/Spigot-Server-Patches/0147-ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch +++ b/Spigot-Server-Patches/0147-ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch @@ -1,4 +1,4 @@ -From dedca964454457d3535ca67893daf3c4718ce427 Mon Sep 17 00:00:00 2001 +From 42663b4aeb5047b0dee9d5469cccf48aa3eb7bf4 Mon Sep 17 00:00:00 2001 From: Aikar Date: Tue, 19 Dec 2017 16:31:46 -0500 Subject: [PATCH] ExperienceOrbs API for Reason/Source/Triggering player @@ -8,10 +8,10 @@ Adds lots of information about why this orb exists. Replaces isFromBottle() with logic that persists entity reloads too. diff --git a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java -index 85a5776b0..dedb063de 100644 +index 78b0e78474..03d3090b3f 100644 --- a/src/main/java/net/minecraft/server/Block.java +++ b/src/main/java/net/minecraft/server/Block.java -@@ -512,13 +512,13 @@ public class Block implements IMaterial { +@@ -511,13 +511,13 @@ public class Block implements IMaterial { } } @@ -28,7 +28,7 @@ index 85a5776b0..dedb063de 100644 } diff --git a/src/main/java/net/minecraft/server/ContainerGrindstone.java b/src/main/java/net/minecraft/server/ContainerGrindstone.java -index 4144a4757..8a9c81ad6 100644 +index 2d2cd09ad1..ed88e208d0 100644 --- a/src/main/java/net/minecraft/server/ContainerGrindstone.java +++ b/src/main/java/net/minecraft/server/ContainerGrindstone.java @@ -81,7 +81,7 @@ public class ContainerGrindstone extends Container { @@ -41,7 +41,7 @@ index 4144a4757..8a9c81ad6 100644 world.triggerEffect(1042, blockposition, 0); diff --git a/src/main/java/net/minecraft/server/EntityEnderDragon.java b/src/main/java/net/minecraft/server/EntityEnderDragon.java -index b3010bee5..d42d4e83e 100644 +index 6ac0546029..0baec5e119 100644 --- a/src/main/java/net/minecraft/server/EntityEnderDragon.java +++ b/src/main/java/net/minecraft/server/EntityEnderDragon.java @@ -607,7 +607,7 @@ public class EntityEnderDragon extends EntityInsentient implements IMonster { @@ -54,7 +54,7 @@ index b3010bee5..d42d4e83e 100644 } diff --git a/src/main/java/net/minecraft/server/EntityExperienceOrb.java b/src/main/java/net/minecraft/server/EntityExperienceOrb.java -index bfba08fb2..49668f2c2 100644 +index bfba08fb24..49668f2c21 100644 --- a/src/main/java/net/minecraft/server/EntityExperienceOrb.java +++ b/src/main/java/net/minecraft/server/EntityExperienceOrb.java @@ -16,9 +16,59 @@ public class EntityExperienceOrb extends Entity { @@ -134,7 +134,7 @@ index bfba08fb2..49668f2c2 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityFishingHook.java b/src/main/java/net/minecraft/server/EntityFishingHook.java -index bdd2a39f8..67f8b6841 100644 +index bdd2a39f89..67f8b68413 100644 --- a/src/main/java/net/minecraft/server/EntityFishingHook.java +++ b/src/main/java/net/minecraft/server/EntityFishingHook.java @@ -404,7 +404,7 @@ public class EntityFishingHook extends Entity { @@ -147,10 +147,10 @@ index bdd2a39f8..67f8b6841 100644 // CraftBukkit end if (itemstack1.getItem().a(TagsItem.FISHES)) { diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 223032e1e..6df98f845 100644 +index 12286beda9..ece2608389 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java -@@ -381,7 +381,8 @@ public abstract class EntityLiving extends Entity { +@@ -385,7 +385,8 @@ public abstract class EntityLiving extends Entity { int j = EntityExperienceOrb.getOrbValue(i); i -= j; @@ -161,7 +161,7 @@ index 223032e1e..6df98f845 100644 this.expToDrop = 0; // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/EntityThrownExpBottle.java b/src/main/java/net/minecraft/server/EntityThrownExpBottle.java -index 77dd4c99a..398b499bb 100644 +index 4ac5cce062..05970c5644 100644 --- a/src/main/java/net/minecraft/server/EntityThrownExpBottle.java +++ b/src/main/java/net/minecraft/server/EntityThrownExpBottle.java @@ -43,7 +43,7 @@ public class EntityThrownExpBottle extends EntityProjectileThrowable { @@ -174,7 +174,7 @@ index 77dd4c99a..398b499bb 100644 this.die(); diff --git a/src/main/java/net/minecraft/server/EntityTurtle.java b/src/main/java/net/minecraft/server/EntityTurtle.java -index 7c6506a91..1b4933c07 100644 +index a18bd29fe8..89792eec45 100644 --- a/src/main/java/net/minecraft/server/EntityTurtle.java +++ b/src/main/java/net/minecraft/server/EntityTurtle.java @@ -512,7 +512,7 @@ public class EntityTurtle extends EntityAnimal { @@ -187,7 +187,7 @@ index 7c6506a91..1b4933c07 100644 } diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java -index 9ac9d499d..53e2266a9 100644 +index 4119709cb8..b25f3d1592 100644 --- a/src/main/java/net/minecraft/server/EntityVillager.java +++ b/src/main/java/net/minecraft/server/EntityVillager.java @@ -426,7 +426,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation @@ -200,7 +200,7 @@ index 9ac9d499d..53e2266a9 100644 } diff --git a/src/main/java/net/minecraft/server/EntityVillagerTrader.java b/src/main/java/net/minecraft/server/EntityVillagerTrader.java -index fee8f97d8..8ced8722a 100644 +index f39de1131f..46a349e73a 100644 --- a/src/main/java/net/minecraft/server/EntityVillagerTrader.java +++ b/src/main/java/net/minecraft/server/EntityVillagerTrader.java @@ -147,7 +147,7 @@ public class EntityVillagerTrader extends EntityVillagerAbstract { @@ -213,7 +213,7 @@ index fee8f97d8..8ced8722a 100644 } diff --git a/src/main/java/net/minecraft/server/PathfinderGoalBreed.java b/src/main/java/net/minecraft/server/PathfinderGoalBreed.java -index d25a05736..9d0b1ffef 100644 +index d25a05736e..9d0b1ffefa 100644 --- a/src/main/java/net/minecraft/server/PathfinderGoalBreed.java +++ b/src/main/java/net/minecraft/server/PathfinderGoalBreed.java @@ -117,7 +117,7 @@ public class PathfinderGoalBreed extends PathfinderGoal { @@ -226,7 +226,7 @@ index d25a05736..9d0b1ffef 100644 // CraftBukkit end } diff --git a/src/main/java/net/minecraft/server/PlayerInteractManager.java b/src/main/java/net/minecraft/server/PlayerInteractManager.java -index 6e90f21ea..a7411c75a 100644 +index 23f64ad001..ff8b11e7ea 100644 --- a/src/main/java/net/minecraft/server/PlayerInteractManager.java +++ b/src/main/java/net/minecraft/server/PlayerInteractManager.java @@ -367,7 +367,7 @@ public class PlayerInteractManager { @@ -239,7 +239,7 @@ index 6e90f21ea..a7411c75a 100644 // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/SlotFurnaceResult.java b/src/main/java/net/minecraft/server/SlotFurnaceResult.java -index d2698e847..edc4a5c34 100644 +index d2698e847c..edc4a5c34e 100644 --- a/src/main/java/net/minecraft/server/SlotFurnaceResult.java +++ b/src/main/java/net/minecraft/server/SlotFurnaceResult.java @@ -2,7 +2,7 @@ package net.minecraft.server; @@ -252,7 +252,7 @@ index d2698e847..edc4a5c34 100644 public SlotFurnaceResult(EntityHuman entityhuman, IInventory iinventory, int i, int j, int k) { diff --git a/src/main/java/net/minecraft/server/TileEntityFurnace.java b/src/main/java/net/minecraft/server/TileEntityFurnace.java -index adb1a0913..be16fe9a9 100644 +index d68826aa7b..0f6cd246ae 100644 --- a/src/main/java/net/minecraft/server/TileEntityFurnace.java +++ b/src/main/java/net/minecraft/server/TileEntityFurnace.java @@ -554,7 +554,7 @@ public abstract class TileEntityFurnace extends TileEntityContainer implements I @@ -265,7 +265,7 @@ index adb1a0913..be16fe9a9 100644 } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 38e10017d..842c28f31 100644 +index 38e10017d8..842c28f311 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -1608,7 +1608,7 @@ public class CraftWorld implements World { @@ -278,7 +278,7 @@ index 38e10017d..842c28f31 100644 entity = new EntityLightning(world, x, y, z, false); } else if (Firework.class.isAssignableFrom(clazz)) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftExperienceOrb.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftExperienceOrb.java -index 1b512cc45..fbad04567 100644 +index 1b512cc45c..fbad045675 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftExperienceOrb.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftExperienceOrb.java @@ -20,6 +20,18 @@ public class CraftExperienceOrb extends CraftEntity implements ExperienceOrb { diff --git a/Spigot-Server-Patches/0148-Cap-Entity-Collisions.patch b/Spigot-Server-Patches/0148-Cap-Entity-Collisions.patch index 9c5a07f670..d85f03e4a1 100644 --- a/Spigot-Server-Patches/0148-Cap-Entity-Collisions.patch +++ b/Spigot-Server-Patches/0148-Cap-Entity-Collisions.patch @@ -1,4 +1,4 @@ -From a81213ba21250a6959d78fa7412104ac7291492e Mon Sep 17 00:00:00 2001 +From b5d2a35c1f26a4a219b34d9deafec60cdbf2ee0c Mon Sep 17 00:00:00 2001 From: Aikar Date: Sun, 22 Jan 2017 18:07:56 -0500 Subject: [PATCH] Cap Entity Collisions @@ -12,7 +12,7 @@ just as it does in Vanilla, but entity pushing logic will be capped. You can set this to 0 to disable collisions. diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -index 406bc611c..58fe5a8c4 100644 +index 406bc611c1..58fe5a8c4d 100644 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java @@ -320,4 +320,10 @@ public class PaperWorldConfig { @@ -27,7 +27,7 @@ index 406bc611c..58fe5a8c4 100644 + } } diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index c649507c8..596804637 100644 +index 50f130e1e4..7de73bf4cb 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -184,6 +184,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke @@ -39,10 +39,10 @@ index c649507c8..596804637 100644 // Spigot end diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 6df98f845..1603a9b5e 100644 +index ece2608389..fdb0934a88 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java -@@ -2553,8 +2553,11 @@ public abstract class EntityLiving extends Entity { +@@ -2559,8 +2559,11 @@ public abstract class EntityLiving extends Entity { } } diff --git a/Spigot-Server-Patches/0150-Make-targetSize-more-aggressive-in-the-chunk-unload-.patch b/Spigot-Server-Patches/0150-Make-targetSize-more-aggressive-in-the-chunk-unload-.patch index c7f26ffc04..b5c6073551 100644 --- a/Spigot-Server-Patches/0150-Make-targetSize-more-aggressive-in-the-chunk-unload-.patch +++ b/Spigot-Server-Patches/0150-Make-targetSize-more-aggressive-in-the-chunk-unload-.patch @@ -1,22 +1,22 @@ -From cace80ec6eddf66b5e7415fe4d2df93727f66d82 Mon Sep 17 00:00:00 2001 +From 49a84ac1c81e92f2090e5438cfbbf1f3be6d0637 Mon Sep 17 00:00:00 2001 From: Brokkonaut Date: Tue, 7 Feb 2017 16:55:35 -0600 Subject: [PATCH] Make targetSize more aggressive in the chunk unload queue diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index 7ee32d492..f2b024857 100644 +index ba59c561e8..6a49251cc7 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java -@@ -310,7 +310,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { - // Spigot start - org.spigotmc.SlackActivityAccountant activityAccountant = this.world.getMinecraftServer().slackActivityAccountant; - activityAccountant.startActivity(0.5); -- int targetSize = (int) (this.unloadQueue.size() * UNLOAD_QUEUE_RESIZE_FACTOR); +@@ -324,7 +324,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { + // Spigot start + org.spigotmc.SlackActivityAccountant activityAccountant = this.world.getMinecraftServer().slackActivityAccountant; + activityAccountant.startActivity(0.5); +- int targetSize = (int) (this.unloadQueue.size() * UNLOAD_QUEUE_RESIZE_FACTOR); + int targetSize = Math.min(this.unloadQueue.size() - 100, (int) (this.unloadQueue.size() * UNLOAD_QUEUE_RESIZE_FACTOR)); // Paper - Make more aggressive - // Spigot end - while (longiterator.hasNext()) { // Spigot - long j = longiterator.nextLong(); + // Spigot end + while (longiterator.hasNext()) { // Spigot + long j = longiterator.nextLong(); -- 2.21.0 diff --git a/Spigot-Server-Patches/0151-Do-not-let-armorstands-drown.patch b/Spigot-Server-Patches/0151-Do-not-let-armorstands-drown.patch index 0d36495027..154c5cb734 100644 --- a/Spigot-Server-Patches/0151-Do-not-let-armorstands-drown.patch +++ b/Spigot-Server-Patches/0151-Do-not-let-armorstands-drown.patch @@ -1,11 +1,11 @@ -From 54a3823be4633427663be25d3a76357f7e36faee Mon Sep 17 00:00:00 2001 +From 59523c866b71c8d72e7edaaa4c83edc95206a574 Mon Sep 17 00:00:00 2001 From: Zach Brown Date: Sat, 18 Feb 2017 19:29:58 -0600 Subject: [PATCH] Do not let armorstands drown diff --git a/src/main/java/net/minecraft/server/EntityArmorStand.java b/src/main/java/net/minecraft/server/EntityArmorStand.java -index ebedb4178..06b274a71 100644 +index 1ae3ffa666..81226d6042 100644 --- a/src/main/java/net/minecraft/server/EntityArmorStand.java +++ b/src/main/java/net/minecraft/server/EntityArmorStand.java @@ -798,5 +798,10 @@ public class EntityArmorStand extends EntityLiving { @@ -20,7 +20,7 @@ index ebedb4178..06b274a71 100644 // Paper end } diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 1603a9b5e..91d6e3c22 100644 +index fdb0934a88..d0738c5f7f 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -223,6 +223,7 @@ public abstract class EntityLiving extends Entity { @@ -31,7 +31,7 @@ index 1603a9b5e..91d6e3c22 100644 public boolean cl() { return this.getMonsterType() == EnumMonsterType.UNDEAD; } -@@ -258,7 +259,7 @@ public abstract class EntityLiving extends Entity { +@@ -262,7 +263,7 @@ public abstract class EntityLiving extends Entity { if (this.isAlive()) { if (this.a(TagsFluid.WATER) && this.world.getType(new BlockPosition(this.locX, this.locY + (double) this.getHeadHeight(), this.locZ)).getBlock() != Blocks.BUBBLE_COLUMN) { diff --git a/Spigot-Server-Patches/0154-Add-option-to-make-parrots-stay-on-shoulders-despite.patch b/Spigot-Server-Patches/0154-Add-option-to-make-parrots-stay-on-shoulders-despite.patch index 55a6a5f035..9ce4d54d29 100644 --- a/Spigot-Server-Patches/0154-Add-option-to-make-parrots-stay-on-shoulders-despite.patch +++ b/Spigot-Server-Patches/0154-Add-option-to-make-parrots-stay-on-shoulders-despite.patch @@ -1,4 +1,4 @@ -From c567f375e3f6aca9815321e9431d443210da195c Mon Sep 17 00:00:00 2001 +From 255d84c72629df900fefb1e55589d969ba3e21a0 Mon Sep 17 00:00:00 2001 From: Zach Brown Date: Tue, 16 May 2017 21:29:08 -0500 Subject: [PATCH] Add option to make parrots stay on shoulders despite movement @@ -11,7 +11,7 @@ I suspect Mojang may switch to this behavior before full release. To be converted into a Paper-API event at some point in the future? diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -index 58fe5a8c4..a34121495 100644 +index 58fe5a8c4d..a341214952 100644 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java @@ -326,4 +326,10 @@ public class PaperWorldConfig { @@ -26,7 +26,7 @@ index 58fe5a8c4..a34121495 100644 + } } diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java -index 7143ec7bb..3cb04543d 100644 +index f8e38db496..ca93220d32 100644 --- a/src/main/java/net/minecraft/server/EntityHuman.java +++ b/src/main/java/net/minecraft/server/EntityHuman.java @@ -436,7 +436,7 @@ public abstract class EntityHuman extends EntityLiving { @@ -39,13 +39,13 @@ index 7143ec7bb..3cb04543d 100644 } diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index cb9a7b68c..51720a31b 100644 +index 20ecb9ef05..5b888cdaf9 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -1783,6 +1783,13 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -1787,6 +1787,13 @@ public class PlayerConnection implements PacketListenerPlayIn { switch (packetplayinentityaction.c()) { - case START_SNEAKING: - this.player.setSneaking(true); + case START_SNEAKING: + this.player.setSneaking(true); + + // Paper start - Hang on! + if (this.player.world.paperConfig.parrotsHangOnBetter) { @@ -53,9 +53,9 @@ index cb9a7b68c..51720a31b 100644 + } + // Paper end + - break; - case STOP_SNEAKING: - this.player.setSneaking(false); + break; + case STOP_SNEAKING: + this.player.setSneaking(false); -- 2.21.0 diff --git a/Spigot-Server-Patches/0182-handle-PacketPlayInKeepAlive-async.patch b/Spigot-Server-Patches/0182-handle-PacketPlayInKeepAlive-async.patch index 19f243cd80..eeec9a511f 100644 --- a/Spigot-Server-Patches/0182-handle-PacketPlayInKeepAlive-async.patch +++ b/Spigot-Server-Patches/0182-handle-PacketPlayInKeepAlive-async.patch @@ -1,4 +1,4 @@ -From 330817dca764349bb50c946483075807774e49e8 Mon Sep 17 00:00:00 2001 +From adabfe94483ad3f8f432dda6b901944e6ff013f4 Mon Sep 17 00:00:00 2001 From: Shane Freeder Date: Thu, 5 Oct 2017 01:54:07 +0100 Subject: [PATCH] handle PacketPlayInKeepAlive async @@ -15,10 +15,10 @@ also adding some additional logging in order to help work out what is causing random disconnections for clients. diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 572da14f9..61793dd1d 100644 +index 3ba0ca063c..a7275e7ef8 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -2503,14 +2503,18 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -2507,14 +2507,18 @@ public class PlayerConnection implements PacketListenerPlayIn { @Override public void a(PacketPlayInKeepAlive packetplayinkeepalive) { diff --git a/Spigot-Server-Patches/0183-Expose-client-protocol-version-and-virtual-host.patch b/Spigot-Server-Patches/0183-Expose-client-protocol-version-and-virtual-host.patch index 2967faf8f7..258816a25b 100644 --- a/Spigot-Server-Patches/0183-Expose-client-protocol-version-and-virtual-host.patch +++ b/Spigot-Server-Patches/0183-Expose-client-protocol-version-and-virtual-host.patch @@ -1,4 +1,4 @@ -From 1d41034554922dc26a4e7c9fc67e8d8ecd6995bb Mon Sep 17 00:00:00 2001 +From 0c197c28ee88dd5557ab551c4f0608345915a03c Mon Sep 17 00:00:00 2001 From: Minecrell Date: Tue, 10 Oct 2017 18:45:20 +0200 Subject: [PATCH] Expose client protocol version and virtual host @@ -6,7 +6,7 @@ Subject: [PATCH] Expose client protocol version and virtual host diff --git a/src/main/java/com/destroystokyo/paper/network/PaperNetworkClient.java b/src/main/java/com/destroystokyo/paper/network/PaperNetworkClient.java new file mode 100644 -index 000000000..5caca6439 +index 0000000000..5caca6439d --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/network/PaperNetworkClient.java @@ -0,0 +1,50 @@ @@ -61,7 +61,7 @@ index 000000000..5caca6439 + +} diff --git a/src/main/java/net/minecraft/server/HandshakeListener.java b/src/main/java/net/minecraft/server/HandshakeListener.java -index 60be2fa99..da88978db 100644 +index 66dda900b6..07d85e5353 100644 --- a/src/main/java/net/minecraft/server/HandshakeListener.java +++ b/src/main/java/net/minecraft/server/HandshakeListener.java @@ -15,6 +15,7 @@ public class HandshakeListener implements PacketHandshakingInListener { @@ -73,7 +73,7 @@ index 60be2fa99..da88978db 100644 public HandshakeListener(MinecraftServer minecraftserver, NetworkManager networkmanager) { this.a = minecraftserver; @@ -129,6 +130,10 @@ public class HandshakeListener implements PacketHandshakingInListener { - throw new UnsupportedOperationException("Invalid intention " + packethandshakinginsetprotocol.b()); + throw new UnsupportedOperationException("Invalid intention " + packethandshakinginsetprotocol.b()); } + // Paper start - NetworkClient implementation @@ -84,7 +84,7 @@ index 60be2fa99..da88978db 100644 @Override diff --git a/src/main/java/net/minecraft/server/NetworkManager.java b/src/main/java/net/minecraft/server/NetworkManager.java -index 2db7229e9..5d5e23c18 100644 +index d4c59baf8f..ae60f757e3 100644 --- a/src/main/java/net/minecraft/server/NetworkManager.java +++ b/src/main/java/net/minecraft/server/NetworkManager.java @@ -62,6 +62,10 @@ public class NetworkManager extends SimpleChannelInboundHandler> { @@ -99,7 +99,7 @@ index 2db7229e9..5d5e23c18 100644 public NetworkManager(EnumProtocolDirection enumprotocoldirection) { this.h = enumprotocoldirection; diff --git a/src/main/java/net/minecraft/server/PacketHandshakingInSetProtocol.java b/src/main/java/net/minecraft/server/PacketHandshakingInSetProtocol.java -index 4f008e472..8545146fb 100644 +index 4f008e4723..8545146fb1 100644 --- a/src/main/java/net/minecraft/server/PacketHandshakingInSetProtocol.java +++ b/src/main/java/net/minecraft/server/PacketHandshakingInSetProtocol.java @@ -35,6 +35,7 @@ public class PacketHandshakingInSetProtocol implements Packet Date: Fri, 10 Nov 2017 23:46:34 -0500 Subject: [PATCH] Add PlayerArmorChangeEvent diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index b28e21b92..fd8e625ff 100644 +index b23921c625..ea73c8968d 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -1,5 +1,6 @@ @@ -15,7 +15,7 @@ index b28e21b92..fd8e625ff 100644 import com.google.common.base.Objects; import com.google.common.collect.ImmutableList; import com.google.common.collect.Maps; -@@ -2269,6 +2270,13 @@ public abstract class EntityLiving extends Entity { +@@ -2275,6 +2276,13 @@ public abstract class EntityLiving extends Entity { ItemStack itemstack1 = this.getEquipment(enumitemslot); if (!ItemStack.matches(itemstack1, itemstack)) { @@ -30,7 +30,7 @@ index b28e21b92..fd8e625ff 100644 if (!itemstack.isEmpty()) { this.getAttributeMap().a(itemstack.a(enumitemslot)); diff --git a/src/main/java/net/minecraft/server/EnumItemSlot.java b/src/main/java/net/minecraft/server/EnumItemSlot.java -index 02a7ae678..60b235f16 100644 +index 02a7ae6785..60b235f16f 100644 --- a/src/main/java/net/minecraft/server/EnumItemSlot.java +++ b/src/main/java/net/minecraft/server/EnumItemSlot.java @@ -16,6 +16,7 @@ public enum EnumItemSlot { diff --git a/Spigot-Server-Patches/0198-PlayerNaturallySpawnCreaturesEvent.patch b/Spigot-Server-Patches/0198-PlayerNaturallySpawnCreaturesEvent.patch index f457bbcd1b..f835a2fff8 100644 --- a/Spigot-Server-Patches/0198-PlayerNaturallySpawnCreaturesEvent.patch +++ b/Spigot-Server-Patches/0198-PlayerNaturallySpawnCreaturesEvent.patch @@ -1,4 +1,4 @@ -From c51e1da52848ab61068b678c97edcd3e8f0c5479 Mon Sep 17 00:00:00 2001 +From 34fa65b40e1f673ac19f014c92f5dd72a133d32f Mon Sep 17 00:00:00 2001 From: Aikar Date: Sun, 14 Jan 2018 17:36:02 -0500 Subject: [PATCH] PlayerNaturallySpawnCreaturesEvent @@ -9,10 +9,10 @@ from triggering monster spawns on a server. Also a highly more effecient way to blanket block spawns in a world diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index f2b024857..ed9e2e3e1 100644 +index 6a49251cc7..de50740e62 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java -@@ -693,12 +693,17 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -761,12 +761,17 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { int chunkRange = world.spigotConfig.mobSpawnRange; chunkRange = (chunkRange > world.spigotConfig.viewDistance) ? (byte) world.spigotConfig.viewDistance : chunkRange; chunkRange = (chunkRange > 8) ? 8 : chunkRange; diff --git a/Spigot-Server-Patches/0216-Make-legacy-ping-handler-more-reliable.patch b/Spigot-Server-Patches/0216-Make-legacy-ping-handler-more-reliable.patch index 573d0c12f2..003a96c2e7 100644 --- a/Spigot-Server-Patches/0216-Make-legacy-ping-handler-more-reliable.patch +++ b/Spigot-Server-Patches/0216-Make-legacy-ping-handler-more-reliable.patch @@ -1,4 +1,4 @@ -From 97a5ba6d85f2ff791193b6f2bb804700a92cdb21 Mon Sep 17 00:00:00 2001 +From 72579d1ab6f3a011aaab13e2f90e3c2c89eef08e Mon Sep 17 00:00:00 2001 From: Minecrell Date: Wed, 11 Oct 2017 18:22:50 +0200 Subject: [PATCH] Make legacy ping handler more reliable @@ -28,7 +28,7 @@ respond to the request. [2]: https://netty.io/wiki/user-guide-for-4.x.html#wiki-h4-13 diff --git a/src/main/java/net/minecraft/server/LegacyPingHandler.java b/src/main/java/net/minecraft/server/LegacyPingHandler.java -index c8c5df7f9..06aefcb63 100644 +index 9ee5a1ff02..063efe9bbe 100644 --- a/src/main/java/net/minecraft/server/LegacyPingHandler.java +++ b/src/main/java/net/minecraft/server/LegacyPingHandler.java @@ -14,6 +14,7 @@ public class LegacyPingHandler extends ChannelInboundHandlerAdapter { @@ -57,20 +57,20 @@ index c8c5df7f9..06aefcb63 100644 boolean flag = true; @@ -52,6 +63,10 @@ public class LegacyPingHandler extends ChannelInboundHandlerAdapter { - this.a(channelhandlercontext, this.a(s)); - break; - default: + this.a(channelhandlercontext, this.a(s)); + break; + default: + // Paper start - Replace with improved version below + if (bytebuf.readUnsignedByte() != 0x01 || bytebuf.readUnsignedByte() != 0xFA) return; + readLegacy1_6(channelhandlercontext, bytebuf); + /* - boolean flag1 = bytebuf.readUnsignedByte() == 1; + boolean flag1 = bytebuf.readUnsignedByte() == 1; - flag1 &= bytebuf.readUnsignedByte() == 250; + flag1 &= bytebuf.readUnsignedByte() == 250; @@ -75,6 +90,7 @@ public class LegacyPingHandler extends ChannelInboundHandlerAdapter { - } finally { - bytebuf1.release(); - } + } finally { + bytebuf1.release(); + } + */ // Paper end - Replace with improved version below } diff --git a/Spigot-Server-Patches/0217-Call-PaperServerListPingEvent-for-legacy-pings.patch b/Spigot-Server-Patches/0217-Call-PaperServerListPingEvent-for-legacy-pings.patch index 3ec7e35cc3..67e6c5e1e3 100644 --- a/Spigot-Server-Patches/0217-Call-PaperServerListPingEvent-for-legacy-pings.patch +++ b/Spigot-Server-Patches/0217-Call-PaperServerListPingEvent-for-legacy-pings.patch @@ -1,4 +1,4 @@ -From 968d88906cc479a86a1b297d47455982f3c35f3b Mon Sep 17 00:00:00 2001 +From 5304f244db7d7682e655cc80b677b9d6d24229e3 Mon Sep 17 00:00:00 2001 From: Minecrell Date: Wed, 11 Oct 2017 19:30:51 +0200 Subject: [PATCH] Call PaperServerListPingEvent for legacy pings @@ -6,7 +6,7 @@ Subject: [PATCH] Call PaperServerListPingEvent for legacy pings diff --git a/src/main/java/com/destroystokyo/paper/network/PaperLegacyStatusClient.java b/src/main/java/com/destroystokyo/paper/network/PaperLegacyStatusClient.java new file mode 100644 -index 000000000..74c012fd4 +index 0000000000..74c012fd40 --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/network/PaperLegacyStatusClient.java @@ -0,0 +1,73 @@ @@ -84,7 +84,7 @@ index 000000000..74c012fd4 + +} diff --git a/src/main/java/net/minecraft/server/LegacyPingHandler.java b/src/main/java/net/minecraft/server/LegacyPingHandler.java -index 06aefcb63..d0bb5496e 100644 +index 063efe9bbe..4a49fe4cc6 100644 --- a/src/main/java/net/minecraft/server/LegacyPingHandler.java +++ b/src/main/java/net/minecraft/server/LegacyPingHandler.java @@ -1,5 +1,7 @@ @@ -104,9 +104,9 @@ index 06aefcb63..d0bb5496e 100644 + com.destroystokyo.paper.event.server.PaperServerListPingEvent event; // Paper switch (i) { - case 0: - LegacyPingHandler.LOGGER.debug("Ping: (<1.3.x) from {}:{}", inetsocketaddress.getAddress(), inetsocketaddress.getPort()); -- s = String.format("%s\u00a7%d\u00a7%d", event.getMotd(), event.getNumPlayers(), event.getMaxPlayers()); // CraftBukkit + case 0: + LegacyPingHandler.LOGGER.debug("Ping: (<1.3.x) from {}:{}", inetsocketaddress.getAddress(), inetsocketaddress.getPort()); +- s = String.format("%s\u00a7%d\u00a7%d", event.getMotd(), event.getNumPlayers(), event.getMaxPlayers()); // CraftBukkit + // Paper start - Call PaperServerListPingEvent and use results + event = PaperLegacyStatusClient.processRequest(minecraftserver, inetsocketaddress, 39, null); + if (event == null) { @@ -114,14 +114,14 @@ index 06aefcb63..d0bb5496e 100644 + break; + } + s = String.format("%s\u00a7%d\u00a7%d", PaperLegacyStatusClient.getUnformattedMotd(event), event.getNumPlayers(), event.getMaxPlayers()); - this.a(channelhandlercontext, this.a(s)); - break; - case 1: + this.a(channelhandlercontext, this.a(s)); + break; + case 1: @@ -59,7 +68,14 @@ public class LegacyPingHandler extends ChannelInboundHandlerAdapter { - } + } - LegacyPingHandler.LOGGER.debug("Ping: (1.4-1.5.x) from {}:{}", inetsocketaddress.getAddress(), inetsocketaddress.getPort()); -- s = String.format("\u00a71\u0000%d\u0000%s\u0000%s\u0000%d\u0000%d", 127, minecraftserver.getVersion(), event.getMotd(), event.getNumPlayers(), event.getMaxPlayers()); // CraftBukkit + LegacyPingHandler.LOGGER.debug("Ping: (1.4-1.5.x) from {}:{}", inetsocketaddress.getAddress(), inetsocketaddress.getPort()); +- s = String.format("\u00a71\u0000%d\u0000%s\u0000%s\u0000%d\u0000%d", 127, minecraftserver.getVersion(), event.getMotd(), event.getNumPlayers(), event.getMaxPlayers()); // CraftBukkit + // Paper start - Call PaperServerListPingEvent and use results + event = PaperLegacyStatusClient.processRequest(minecraftserver, inetsocketaddress, 127, null); // Paper + if (event == null) { @@ -130,9 +130,9 @@ index 06aefcb63..d0bb5496e 100644 + } + s = String.format("\u00a71\u0000%d\u0000%s\u0000%s\u0000%d\u0000%d", new Object[] { event.getProtocolVersion(), minecraftserver.getVersion(), event.getMotd(), event.getNumPlayers(), event.getMaxPlayers()}); // CraftBukkit + // Paper end - this.a(channelhandlercontext, this.a(s)); - break; - default: + this.a(channelhandlercontext, this.a(s)); + break; + default: @@ -169,8 +185,16 @@ public class LegacyPingHandler extends ChannelInboundHandlerAdapter { LOGGER.debug("Ping: (1.6) from {}", ctx.channel().remoteAddress()); diff --git a/Spigot-Server-Patches/0221-Fix-exploit-that-allowed-colored-signs-to-be-created.patch b/Spigot-Server-Patches/0221-Fix-exploit-that-allowed-colored-signs-to-be-created.patch index 99a7a8cc91..7ee4bddc56 100644 --- a/Spigot-Server-Patches/0221-Fix-exploit-that-allowed-colored-signs-to-be-created.patch +++ b/Spigot-Server-Patches/0221-Fix-exploit-that-allowed-colored-signs-to-be-created.patch @@ -1,14 +1,14 @@ -From 9a27f60d8c4a94f29081110e21dd296ab7f08b8e Mon Sep 17 00:00:00 2001 +From dc19b8d93401edf7f52fb67b472291b8d4a2982a Mon Sep 17 00:00:00 2001 From: 0x22 <0x22@futureclient.net> Date: Thu, 26 Apr 2018 04:41:11 -0400 Subject: [PATCH] Fix exploit that allowed colored signs to be created diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 49dd552e1..8be09b1d0 100644 +index f959fd3686..491ca7ce58 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -2516,7 +2516,7 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -2520,7 +2520,7 @@ public class PlayerConnection implements PacketListenerPlayIn { String[] lines = new String[4]; for (int i = 0; i < astring.length; ++i) { diff --git a/Spigot-Server-Patches/0228-WitchThrowPotionEvent.patch b/Spigot-Server-Patches/0228-WitchThrowPotionEvent.patch index 352c1535bb..8bca4a27c6 100644 --- a/Spigot-Server-Patches/0228-WitchThrowPotionEvent.patch +++ b/Spigot-Server-Patches/0228-WitchThrowPotionEvent.patch @@ -1,4 +1,4 @@ -From e3456fbd0608f874cbb438b4aec6efc29e2e4757 Mon Sep 17 00:00:00 2001 +From 75e4318efd8c16da439f920894a45ccb7033107e Mon Sep 17 00:00:00 2001 From: Aikar Date: Wed, 16 May 2018 20:44:58 -0400 Subject: [PATCH] WitchThrowPotionEvent @@ -6,11 +6,11 @@ Subject: [PATCH] WitchThrowPotionEvent Fired when a witch throws a potion at a player diff --git a/src/main/java/net/minecraft/server/EntityWitch.java b/src/main/java/net/minecraft/server/EntityWitch.java -index abac47d4c..b9307d380 100644 +index 8ae1a38a49..59339e529b 100644 --- a/src/main/java/net/minecraft/server/EntityWitch.java +++ b/src/main/java/net/minecraft/server/EntityWitch.java @@ -185,9 +185,16 @@ public class EntityWitch extends EntityRaider implements IRangedEntity { - potionregistry = Potions.M; + potionregistry = Potions.WEAKNESS; } + // Paper start diff --git a/Spigot-Server-Patches/0232-Implement-EntityTeleportEndGatewayEvent.patch b/Spigot-Server-Patches/0232-Implement-EntityTeleportEndGatewayEvent.patch index d7a24ee233..a41e245336 100644 --- a/Spigot-Server-Patches/0232-Implement-EntityTeleportEndGatewayEvent.patch +++ b/Spigot-Server-Patches/0232-Implement-EntityTeleportEndGatewayEvent.patch @@ -1,11 +1,11 @@ -From a4be144d0ed58fb12871d6874c43d42832b3347e Mon Sep 17 00:00:00 2001 +From e0cce0e22959bdecaf5d296c68f783281955e71b Mon Sep 17 00:00:00 2001 From: Shane Freeder Date: Sat, 9 Jun 2018 14:08:39 +0200 Subject: [PATCH] Implement EntityTeleportEndGatewayEvent diff --git a/src/main/java/net/minecraft/server/TileEntityEndGateway.java b/src/main/java/net/minecraft/server/TileEntityEndGateway.java -index 6aa07da6e..61963dca1 100644 +index 1783f59140..e28461f18a 100644 --- a/src/main/java/net/minecraft/server/TileEntityEndGateway.java +++ b/src/main/java/net/minecraft/server/TileEntityEndGateway.java @@ -144,8 +144,19 @@ public class TileEntityEndGateway extends TileEntityEnderPortal implements ITick @@ -23,12 +23,12 @@ index 6aa07da6e..61963dca1 100644 + return; + } -- entity.enderTeleportTo((double) blockposition.getX() + 0.5D, (double) blockposition.getY() + 0.5D, (double) blockposition.getZ() + 0.5D); -+ entity.enderTeleportTo(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ()); +- entity.enderTeleportAndLoad((double) blockposition.getX() + 0.5D, (double) blockposition.getY() + 0.5D, (double) blockposition.getZ() + 0.5D); ++ entity.enderTeleportAndLoad(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ()); + // Paper end - EntityTeleportEndGatewayEvent } - this.f(); + this.h(); -- 2.21.0 diff --git a/Spigot-Server-Patches/0237-Make-shield-blocking-delay-configurable.patch b/Spigot-Server-Patches/0237-Make-shield-blocking-delay-configurable.patch index 0acf1be39d..86a91b171a 100644 --- a/Spigot-Server-Patches/0237-Make-shield-blocking-delay-configurable.patch +++ b/Spigot-Server-Patches/0237-Make-shield-blocking-delay-configurable.patch @@ -1,11 +1,11 @@ -From b8c39b42a48bb1b8c079996659d8bbb568c396a8 Mon Sep 17 00:00:00 2001 +From 035ee217ed1cc5f2fb1c66052041db79f8568503 Mon Sep 17 00:00:00 2001 From: BillyGalbreath Date: Sat, 16 Jun 2018 01:18:16 -0500 Subject: [PATCH] Make shield blocking delay configurable diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -index fe9415b1d..ce17447fa 100644 +index fe9415b1de..ce17447faf 100644 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java @@ -365,4 +365,9 @@ public class PaperWorldConfig { @@ -19,10 +19,10 @@ index fe9415b1d..ce17447fa 100644 + } } diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index fd8e625ff..c22e8bd17 100644 +index ea73c8968d..1bbf2fb867 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java -@@ -2915,7 +2915,7 @@ public abstract class EntityLiving extends Entity { +@@ -2921,7 +2921,7 @@ public abstract class EntityLiving extends Entity { if (this.isHandRaised() && !this.activeItem.isEmpty()) { Item item = this.activeItem.getItem(); @@ -31,7 +31,7 @@ index fd8e625ff..c22e8bd17 100644 } else { return false; } -@@ -3151,4 +3151,15 @@ public abstract class EntityLiving extends Entity { +@@ -3157,4 +3157,15 @@ public abstract class EntityLiving extends Entity { public void d(EnumHand enumhand) { this.c(enumhand == EnumHand.MAIN_HAND ? EnumItemSlot.MAINHAND : EnumItemSlot.OFFHAND); } @@ -48,7 +48,7 @@ index fd8e625ff..c22e8bd17 100644 + // Paper end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 42cc15882..513b3fac7 100644 +index 42cc158824..513b3fac7f 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -619,5 +619,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { diff --git a/Spigot-Server-Patches/0242-Implement-EntityKnockbackByEntityEvent.patch b/Spigot-Server-Patches/0242-Implement-EntityKnockbackByEntityEvent.patch index 480df8b537..163a9ddc2a 100644 --- a/Spigot-Server-Patches/0242-Implement-EntityKnockbackByEntityEvent.patch +++ b/Spigot-Server-Patches/0242-Implement-EntityKnockbackByEntityEvent.patch @@ -1,4 +1,4 @@ -From 21935368bd8a3d339ffe0fcf660317289cfbc511 Mon Sep 17 00:00:00 2001 +From 1380b7e1b161644e790fc4018175d323c025262a Mon Sep 17 00:00:00 2001 From: Brokkonaut Date: Mon, 18 Jun 2018 15:46:23 +0200 Subject: [PATCH] Implement EntityKnockbackByEntityEvent @@ -6,10 +6,10 @@ Subject: [PATCH] Implement EntityKnockbackByEntityEvent This event is called when an entity receives knockback by another entity. diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index c22e8bd17..92b284099 100644 +index 1bbf2fb867..14305ecbb3 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java -@@ -1424,6 +1424,16 @@ public abstract class EntityLiving extends Entity { +@@ -1430,6 +1430,16 @@ public abstract class EntityLiving extends Entity { Vec3D vec3d1 = (new Vec3D(d0, 0.0D, d1)).d().a((double) f); this.setMot(vec3d.x / 2.0D - vec3d1.x, this.onGround ? Math.min(0.4D, vec3d.y / 2.0D + (double) f) : vec3d.y, vec3d.z / 2.0D - vec3d1.z); diff --git a/Spigot-Server-Patches/0244-LivingEntity-Hand-Raised-Item-Use-API.patch b/Spigot-Server-Patches/0244-LivingEntity-Hand-Raised-Item-Use-API.patch index 4a59f10c22..ce519b2165 100644 --- a/Spigot-Server-Patches/0244-LivingEntity-Hand-Raised-Item-Use-API.patch +++ b/Spigot-Server-Patches/0244-LivingEntity-Hand-Raised-Item-Use-API.patch @@ -1,4 +1,4 @@ -From cfda4f58d04c2519ee0280283843c7f0680e8e0f Mon Sep 17 00:00:00 2001 +From 43e05d8060ea790b1bdd8ae1646bb9a3c6d8befe Mon Sep 17 00:00:00 2001 From: Aikar Date: Fri, 29 Jun 2018 00:21:28 -0400 Subject: [PATCH] LivingEntity Hand Raised/Item Use API @@ -6,7 +6,7 @@ Subject: [PATCH] LivingEntity Hand Raised/Item Use API How long an entity has raised hands to charge an attack or use an item diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 92b284099..165e28992 100644 +index 14305ecbb3..38ca6d6ba5 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -109,7 +109,7 @@ public abstract class EntityLiving extends Entity { @@ -18,7 +18,7 @@ index 92b284099..165e28992 100644 protected int bo; protected int bp; private BlockPosition bG; -@@ -2893,10 +2893,12 @@ public abstract class EntityLiving extends Entity { +@@ -2899,10 +2899,12 @@ public abstract class EntityLiving extends Entity { return this.activeItem; } @@ -32,7 +32,7 @@ index 92b284099..165e28992 100644 return this.isHandRaised() ? this.activeItem.k() - this.dm() : 0; } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 513b3fac7..8dea7d36b 100644 +index 513b3fac7f..8dea7d36b6 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -629,5 +629,25 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { diff --git a/Spigot-Server-Patches/0248-InventoryCloseEvent-Reason-API.patch b/Spigot-Server-Patches/0248-InventoryCloseEvent-Reason-API.patch index 3187ddc967..2592f23882 100644 --- a/Spigot-Server-Patches/0248-InventoryCloseEvent-Reason-API.patch +++ b/Spigot-Server-Patches/0248-InventoryCloseEvent-Reason-API.patch @@ -1,4 +1,4 @@ -From 65879f50a5f3b1d8f528fb0df747299878c9ad97 Mon Sep 17 00:00:00 2001 +From 3c3a5e3209795f207d3ebbd70e967be5c90c5e88 Mon Sep 17 00:00:00 2001 From: Aikar Date: Tue, 3 Jul 2018 21:56:23 -0400 Subject: [PATCH] InventoryCloseEvent Reason API @@ -7,7 +7,7 @@ Allows you to determine why an inventory was closed, enabling plugin developers to "confirm" things based on if it was player triggered close or not. diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java -index f5dac50826..d1a7a873b9 100644 +index 98023adfca..a00b9b2091 100644 --- a/src/main/java/net/minecraft/server/EntityHuman.java +++ b/src/main/java/net/minecraft/server/EntityHuman.java @@ -149,7 +149,7 @@ public abstract class EntityHuman extends EntityLiving { @@ -34,7 +34,7 @@ index f5dac50826..d1a7a873b9 100644 this.activeContainer = this.defaultContainer; } diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index c3026530d2..0a575456a1 100644 +index 607042a41c..30b684b043 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -360,7 +360,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { @@ -88,10 +88,10 @@ index c3026530d2..0a575456a1 100644 this.m(); } diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 8be09b1d03..0385eced64 100644 +index 491ca7ce58..a29a59ebbd 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -2050,7 +2050,7 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -2054,7 +2054,7 @@ public class PlayerConnection implements PacketListenerPlayIn { PlayerConnectionUtils.ensureMainThread(packetplayinclosewindow, this, this.player.getWorldServer()); if (this.player.isFrozen()) return; // CraftBukkit @@ -101,7 +101,7 @@ index 8be09b1d03..0385eced64 100644 this.player.m(); } diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index 5ac4a7c284..006f7b8b9f 100644 +index f3e228c8e2..e940b4b273 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java @@ -402,7 +402,7 @@ public abstract class PlayerList { @@ -114,7 +114,7 @@ index 5ac4a7c284..006f7b8b9f 100644 PlayerQuitEvent playerQuitEvent = new PlayerQuitEvent(cserver.getPlayer(entityplayer), "\u00A7e" + entityplayer.getName() + " left the game"); cserver.getPluginManager().callEvent(playerQuitEvent); diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 8bc0a8cca8..067379252d 100644 +index 5172ff53d3..139168291a 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -981,7 +981,7 @@ public class WorldServer extends World { diff --git a/Spigot-Server-Patches/0251-Refresh-player-inventory-when-cancelling-PlayerInter.patch b/Spigot-Server-Patches/0251-Refresh-player-inventory-when-cancelling-PlayerInter.patch index 94beabb01f..a8da341e60 100644 --- a/Spigot-Server-Patches/0251-Refresh-player-inventory-when-cancelling-PlayerInter.patch +++ b/Spigot-Server-Patches/0251-Refresh-player-inventory-when-cancelling-PlayerInter.patch @@ -1,4 +1,4 @@ -From f676d523fe518937a9057af3610a57a5e8fa119f Mon Sep 17 00:00:00 2001 +From ffcece19a5ab7855cd02b6e60f4e0b638c7ef0f7 Mon Sep 17 00:00:00 2001 From: Minecrell Date: Fri, 13 Jul 2018 14:54:43 +0200 Subject: [PATCH] Refresh player inventory when cancelling @@ -16,10 +16,10 @@ Refresh the player inventory when PlayerInteractEntityEvent is cancelled to avoid this problem. diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 0385eced6..4c99a321b 100644 +index a29a59ebbd..b8cd933025 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -1964,6 +1964,7 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -1968,6 +1968,7 @@ public class PlayerConnection implements PacketListenerPlayIn { } if (event.isCancelled()) { diff --git a/Spigot-Server-Patches/0257-Add-Debug-Entities-option-to-debug-dupe-uuid-issues.patch b/Spigot-Server-Patches/0257-Add-Debug-Entities-option-to-debug-dupe-uuid-issues.patch index ea030281a2..5bbe9b0f2b 100644 --- a/Spigot-Server-Patches/0257-Add-Debug-Entities-option-to-debug-dupe-uuid-issues.patch +++ b/Spigot-Server-Patches/0257-Add-Debug-Entities-option-to-debug-dupe-uuid-issues.patch @@ -1,4 +1,4 @@ -From e1ee4c339a50f702de172ea2f2215f3595cc4b14 Mon Sep 17 00:00:00 2001 +From 63a345e583d816502a0feef9d2d8ca8f0a34e5ba Mon Sep 17 00:00:00 2001 From: Aikar Date: Sat, 21 Jul 2018 08:25:40 -0400 Subject: [PATCH] Add Debug Entities option to debug dupe uuid issues @@ -6,7 +6,7 @@ Subject: [PATCH] Add Debug Entities option to debug dupe uuid issues Add -Ddebug.entities=true to your JVM flags to gain more information diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 4701cc46e..41559d3ba 100644 +index 868e5dd56d..15315a43e7 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -75,6 +75,8 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke @@ -19,10 +19,10 @@ index 4701cc46e..41559d3ba 100644 if (bukkitEntity == null) { bukkitEntity = CraftEntity.getEntity(world.getServer(), this); diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index ed9e2e3e1..047d6df9c 100644 +index de50740e62..9a65c98b9f 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java -@@ -855,6 +855,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -923,6 +923,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { } else { PlayerChunkMap.EntityTracker playerchunkmap_entitytracker = new PlayerChunkMap.EntityTracker(entity, i, j, entitytypes.isDeltaTracking()); @@ -30,7 +30,7 @@ index ed9e2e3e1..047d6df9c 100644 this.trackedEntities.put(entity.getId(), playerchunkmap_entitytracker); playerchunkmap_entitytracker.track(this.world.getPlayers()); if (entity instanceof EntityPlayer) { -@@ -897,7 +898,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -965,7 +966,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { if (playerchunkmap_entitytracker1 != null) { playerchunkmap_entitytracker1.a(); } @@ -40,7 +40,7 @@ index ed9e2e3e1..047d6df9c 100644 protected void g() { diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index eed3fa615..f93e3faae 100644 +index d7229f100b..5cf3aea4fc 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -68,6 +68,7 @@ public abstract class World implements IIBlockAccess, GeneratorAccess, AutoClose @@ -52,7 +52,7 @@ index eed3fa615..f93e3faae 100644 public boolean captureBlockStates = false; public boolean captureTreeGeneration = false; diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index bac458fa5..957ca12e4 100644 +index 8cffbabfb6..f6ba51d14a 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -69,6 +69,9 @@ public class WorldServer extends World { diff --git a/Spigot-Server-Patches/0262-Don-t-save-Proto-Chunks.patch b/Spigot-Server-Patches/0262-Don-t-save-Proto-Chunks.patch index a24c3832f1..e14b7240c6 100644 --- a/Spigot-Server-Patches/0262-Don-t-save-Proto-Chunks.patch +++ b/Spigot-Server-Patches/0262-Don-t-save-Proto-Chunks.patch @@ -1,4 +1,4 @@ -From 1b993eb9d127808b6c024b3abed5275dc6e2d2a4 Mon Sep 17 00:00:00 2001 +From d44eea0a0f82fd4a03370687e427b516e5f03835 Mon Sep 17 00:00:00 2001 From: Aikar Date: Sun, 22 Jul 2018 21:21:41 -0400 Subject: [PATCH] Don't save Proto Chunks @@ -8,10 +8,10 @@ the loadChunk method refuses to acknoledge they exists, and will restart a new chunk generation process to begin with, so saving them serves no benefit. diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index 047d6df9c..21c4b5642 100644 +index 9a65c98b9f..85e9db8f4b 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java -@@ -570,6 +570,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -638,6 +638,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { } public boolean saveChunk(IChunkAccess ichunkaccess) { diff --git a/Spigot-Server-Patches/0268-EntityTransformedEvent.patch b/Spigot-Server-Patches/0268-EntityTransformedEvent.patch index c33967adf1..b9820b5c3b 100644 --- a/Spigot-Server-Patches/0268-EntityTransformedEvent.patch +++ b/Spigot-Server-Patches/0268-EntityTransformedEvent.patch @@ -1,11 +1,11 @@ -From b1cc6bcaac49728af30e6c3cbd5752f816bc276f Mon Sep 17 00:00:00 2001 +From 62121c08bd2fd851919d90f62ca0528319b3beb8 Mon Sep 17 00:00:00 2001 From: Anthony MacAllister Date: Thu, 26 Jul 2018 15:30:03 -0400 Subject: [PATCH] EntityTransformedEvent diff --git a/src/main/java/net/minecraft/server/EntityMushroomCow.java b/src/main/java/net/minecraft/server/EntityMushroomCow.java -index bb3493c14..de787d861 100644 +index bb3493c14f..de787d8614 100644 --- a/src/main/java/net/minecraft/server/EntityMushroomCow.java +++ b/src/main/java/net/minecraft/server/EntityMushroomCow.java @@ -101,6 +101,7 @@ public class EntityMushroomCow extends EntityCow { @@ -17,10 +17,10 @@ index bb3493c14..de787d861 100644 this.die(); // CraftBukkit - from above diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java -index 53e2266a9..f2b46d4e3 100644 +index b25f3d1592..fe9efa9da1 100644 --- a/src/main/java/net/minecraft/server/EntityVillager.java +++ b/src/main/java/net/minecraft/server/EntityVillager.java -@@ -596,6 +596,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation +@@ -602,6 +602,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation if (CraftEventFactory.callEntityTransformEvent(this, entitywitch, EntityTransformEvent.TransformReason.LIGHTNING).isCancelled()) { return; } @@ -29,7 +29,7 @@ index 53e2266a9..f2b46d4e3 100644 // CraftBukkit end this.die(); diff --git a/src/main/java/net/minecraft/server/EntityZombie.java b/src/main/java/net/minecraft/server/EntityZombie.java -index 4cb305ff2..171c1ae4a 100644 +index 4cb305ff28..171c1ae4ad 100644 --- a/src/main/java/net/minecraft/server/EntityZombie.java +++ b/src/main/java/net/minecraft/server/EntityZombie.java @@ -247,6 +247,7 @@ public class EntityZombie extends EntityMonster { @@ -49,7 +49,7 @@ index 4cb305ff2..171c1ae4a 100644 this.world.addEntity(entityzombievillager, CreatureSpawnEvent.SpawnReason.INFECTION); // CraftBukkit - add SpawnReason // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/EntityZombieVillager.java b/src/main/java/net/minecraft/server/EntityZombieVillager.java -index 2c8f489dd..5e9efd795 100644 +index 2fe7fb7889..5cfda3160b 100644 --- a/src/main/java/net/minecraft/server/EntityZombieVillager.java +++ b/src/main/java/net/minecraft/server/EntityZombieVillager.java @@ -157,6 +157,7 @@ public class EntityZombieVillager extends EntityZombie implements VillagerDataHo diff --git a/Spigot-Server-Patches/0270-Prevent-Saving-Bad-entities-to-chunks.patch b/Spigot-Server-Patches/0270-Prevent-Saving-Bad-entities-to-chunks.patch index b5c4b27f10..0ab4a9d07b 100644 --- a/Spigot-Server-Patches/0270-Prevent-Saving-Bad-entities-to-chunks.patch +++ b/Spigot-Server-Patches/0270-Prevent-Saving-Bad-entities-to-chunks.patch @@ -1,4 +1,4 @@ -From 46aaf3409c3fd5b6b7e363cb71eba5c3e27eb8f3 Mon Sep 17 00:00:00 2001 +From c6d56145f34a4fbdc515cff02a11e053b63ed3a5 Mon Sep 17 00:00:00 2001 From: Aikar Date: Thu, 26 Jul 2018 00:11:12 -0400 Subject: [PATCH] Prevent Saving Bad entities to chunks @@ -18,21 +18,22 @@ an invalid entity. This should reduce log occurrences of dupe uuid messages. diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java -index 2b8148fbd..9038d17fd 100644 +index 1ebb16f0f6..2f749fe26a 100644 --- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java +++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java -@@ -332,6 +332,7 @@ public class ChunkRegionLoader { +@@ -318,6 +318,7 @@ public class ChunkRegionLoader { + nbttagcompound1.set("TileEntities", nbttaglist1); NBTTagList nbttaglist2 = new NBTTagList(); - NBTTagCompound nbttagcompound4; + java.util.List toUpdate = new java.util.ArrayList<>(); // Paper if (ichunkaccess.getChunkStatus().getType() == ChunkStatus.Type.LEVELCHUNK) { Chunk chunk = (Chunk) ichunkaccess; -@@ -343,6 +344,17 @@ public class ChunkRegionLoader { +@@ -329,13 +330,29 @@ public class ChunkRegionLoader { while (iterator1.hasNext()) { Entity entity = (Entity) iterator1.next(); - + NBTTagCompound nbttagcompound3 = new NBTTagCompound(); +- + // Paper start + if ((int)Math.floor(entity.locX) >> 4 != chunk.getPos().x || (int)Math.floor(entity.locZ) >> 4 != chunk.getPos().z) { + LogManager.getLogger().warn(entity + " is not in this chunk, skipping save. This a bug fix to a vanilla bug. Do not report this to PaperMC please."); @@ -43,11 +44,9 @@ index 2b8148fbd..9038d17fd 100644 + continue; + } + // Paper end -+ - nbttagcompound4 = new NBTTagCompound(); - if (entity.d(nbttagcompound4)) { + if (entity.d(nbttagcompound3)) { chunk.d(true); -@@ -350,6 +362,13 @@ public class ChunkRegionLoader { + nbttaglist2.add(nbttagcompound3); } } } diff --git a/Spigot-Server-Patches/0272-Ignore-Dead-Entities-in-entityList-iteration.patch b/Spigot-Server-Patches/0272-Ignore-Dead-Entities-in-entityList-iteration.patch index 9f6b5cc8ea..0622fbf686 100644 --- a/Spigot-Server-Patches/0272-Ignore-Dead-Entities-in-entityList-iteration.patch +++ b/Spigot-Server-Patches/0272-Ignore-Dead-Entities-in-entityList-iteration.patch @@ -1,4 +1,4 @@ -From dff75715a97eaf90819ee1dce9d019d5057babd3 Mon Sep 17 00:00:00 2001 +From 91fa68cb564b61ee67ef1cc3b0c2b79f5833aa3d Mon Sep 17 00:00:00 2001 From: Aikar Date: Sat, 28 Jul 2018 12:18:27 -0400 Subject: [PATCH] Ignore Dead Entities in entityList iteration @@ -11,7 +11,7 @@ This will ensure that dead entities are skipped from iteration since they shouldn't of been in the list in the first place. diff --git a/src/main/java/com/destroystokyo/paper/PaperCommand.java b/src/main/java/com/destroystokyo/paper/PaperCommand.java -index ce190d88d..352a39dcb 100644 +index ce190d88d6..352a39dcb3 100644 --- a/src/main/java/com/destroystokyo/paper/PaperCommand.java +++ b/src/main/java/com/destroystokyo/paper/PaperCommand.java @@ -176,6 +176,7 @@ public class PaperCommand extends Command { @@ -23,10 +23,10 @@ index ce190d88d..352a39dcb 100644 MutablePair> info = list.computeIfAbsent(key, k -> MutablePair.of(0, Maps.newHashMap())); ChunkCoordIntPair chunk = new ChunkCoordIntPair(e.getChunkX(), e.getChunkZ()); diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index 2cb3e3696..1ba855786 100644 +index 5d1947f826..197c0fe169 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java -@@ -657,6 +657,7 @@ public class Chunk implements IChunkAccess { +@@ -678,6 +678,7 @@ public class Chunk implements IChunkAccess { while (iterator.hasNext()) { Entity entity1 = (Entity) iterator.next(); @@ -34,7 +34,7 @@ index 2cb3e3696..1ba855786 100644 if (entity1.getBoundingBox().c(axisalignedbb) && entity1 != entity) { if (predicate == null || predicate.test(entity1)) { -@@ -694,6 +695,7 @@ public class Chunk implements IChunkAccess { +@@ -715,6 +716,7 @@ public class Chunk implements IChunkAccess { while (iterator.hasNext()) { Entity entity = (Entity) iterator.next(); @@ -42,7 +42,7 @@ index 2cb3e3696..1ba855786 100644 if ((entitytypes == null || entity.getEntityType() == entitytypes) && entity.getBoundingBox().c(axisalignedbb) && predicate.test(entity)) { list.add(entity); -@@ -715,6 +717,7 @@ public class Chunk implements IChunkAccess { +@@ -736,6 +738,7 @@ public class Chunk implements IChunkAccess { while (iterator.hasNext()) { T t0 = (T) iterator.next(); // CraftBukkit - decompile error @@ -51,7 +51,7 @@ index 2cb3e3696..1ba855786 100644 if (oclass.isInstance(t0) && t0.getBoundingBox().c(axisalignedbb) && (predicate == null || predicate.test(t0))) { // Spigot - instance check list.add(t0); diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index a273bec56..1d8b42027 100644 +index ba40c2be61..6011935dd9 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -126,6 +126,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke @@ -63,7 +63,7 @@ index a273bec56..1d8b42027 100644 private float av; private float aw; diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 957ca12e4..364f26b55 100644 +index f6ba51d14a..168e19b206 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -836,6 +836,7 @@ public class WorldServer extends World { @@ -91,7 +91,7 @@ index 957ca12e4..364f26b55 100644 } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 4c67f071b..1adced482 100644 +index 4c67f071b1..1adced482b 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -846,6 +846,7 @@ public class CraftWorld implements World { diff --git a/Spigot-Server-Patches/0288-Allow-disabling-armour-stand-ticking.patch b/Spigot-Server-Patches/0288-Allow-disabling-armour-stand-ticking.patch index deaf32a7c6..392ef60602 100644 --- a/Spigot-Server-Patches/0288-Allow-disabling-armour-stand-ticking.patch +++ b/Spigot-Server-Patches/0288-Allow-disabling-armour-stand-ticking.patch @@ -1,11 +1,11 @@ -From 3b2a54d3ee10502ae47a45eb8f7dc662b28e8495 Mon Sep 17 00:00:00 2001 +From 674e0e4d8b6537c06fda0d8d883be32443c5a656 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 f06bb3ae1..a5b4f9990 100644 +index f06bb3ae19..a5b4f99901 100644 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java @@ -391,4 +391,10 @@ public class PaperWorldConfig { @@ -20,7 +20,7 @@ index f06bb3ae1..a5b4f9990 100644 + } } diff --git a/src/main/java/net/minecraft/server/EntityArmorStand.java b/src/main/java/net/minecraft/server/EntityArmorStand.java -index 96d9e8da8..480298a02 100644 +index b5b7631919..9157dace14 100644 --- a/src/main/java/net/minecraft/server/EntityArmorStand.java +++ b/src/main/java/net/minecraft/server/EntityArmorStand.java @@ -44,6 +44,11 @@ public class EntityArmorStand extends EntityLiving { @@ -44,7 +44,7 @@ index 96d9e8da8..480298a02 100644 } @@ -135,6 +141,7 @@ public class EntityArmorStand extends EntityLiving { - this.armorItems.set(enumitemslot.b(), itemstack); + this.armorItems.set(enumitemslot.b(), itemstack); } + this.noTickEquipmentDirty = true; // Paper - Allow equipment to be updated even when tick disabled @@ -140,10 +140,10 @@ index 96d9e8da8..480298a02 100644 public Vector3f r() { diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 165e28992..2c29c8943 100644 +index 38ca6d6ba5..bcbfffb6e0 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java -@@ -2259,52 +2259,7 @@ public abstract class EntityLiving extends Entity { +@@ -2265,52 +2265,7 @@ public abstract class EntityLiving extends Entity { } } @@ -155,14 +155,14 @@ index 165e28992..2c29c8943 100644 - ItemStack itemstack; - - switch (enumitemslot.a()) { -- case HAND: -- itemstack = (ItemStack) this.bw.get(enumitemslot.b()); -- break; -- case ARMOR: -- itemstack = (ItemStack) this.bx.get(enumitemslot.b()); -- break; -- default: -- continue; +- case HAND: +- itemstack = (ItemStack) this.bw.get(enumitemslot.b()); +- break; +- case ARMOR: +- itemstack = (ItemStack) this.bx.get(enumitemslot.b()); +- break; +- default: +- continue; - } - - ItemStack itemstack1 = this.getEquipment(enumitemslot); @@ -185,11 +185,11 @@ index 165e28992..2c29c8943 100644 - } - - switch (enumitemslot.a()) { -- case HAND: -- this.bw.set(enumitemslot.b(), itemstack1.isEmpty() ? ItemStack.a : itemstack1.cloneItemStack()); -- break; -- case ARMOR: -- this.bx.set(enumitemslot.b(), itemstack1.isEmpty() ? ItemStack.a : itemstack1.cloneItemStack()); +- case HAND: +- this.bw.set(enumitemslot.b(), itemstack1.isEmpty() ? ItemStack.a : itemstack1.cloneItemStack()); +- break; +- case ARMOR: +- this.bx.set(enumitemslot.b(), itemstack1.isEmpty() ? ItemStack.a : itemstack1.cloneItemStack()); - } - } - } @@ -197,7 +197,7 @@ index 165e28992..2c29c8943 100644 if (this.ticksLived % 20 == 0) { this.getCombatTracker().g(); -@@ -2405,6 +2360,57 @@ public abstract class EntityLiving extends Entity { +@@ -2411,6 +2366,57 @@ public abstract class EntityLiving extends Entity { } } @@ -256,7 +256,7 @@ index 165e28992..2c29c8943 100644 float f2 = MathHelper.g(f - this.aK); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java -index 9f5c3b92e..07ce93f17 100644 +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 { diff --git a/Spigot-Server-Patches/0292-Optimize-Hoppers.patch b/Spigot-Server-Patches/0292-Optimize-Hoppers.patch index 0f0add405d..dc39f45c57 100644 --- a/Spigot-Server-Patches/0292-Optimize-Hoppers.patch +++ b/Spigot-Server-Patches/0292-Optimize-Hoppers.patch @@ -1,4 +1,4 @@ -From 39f5ad58e9ffd067731b6dcf05eb2e2b9c8a444b Mon Sep 17 00:00:00 2001 +From e69b8fcf2fafef8f35f21569b2d0f4ae67f12c67 Mon Sep 17 00:00:00 2001 From: Aikar Date: Wed, 27 Apr 2016 22:09:52 -0400 Subject: [PATCH] Optimize Hoppers @@ -11,7 +11,7 @@ Subject: [PATCH] Optimize Hoppers * Skip subsequent InventoryMoveItemEvents if a plugin does not use the item after first event fire for an iteration diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -index a5b4f9990..2b5402b00 100644 +index a5b4f99901..2b5402b009 100644 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java @@ -360,6 +360,15 @@ public class PaperWorldConfig { @@ -31,7 +31,7 @@ index a5b4f9990..2b5402b00 100644 private void disableSprintInterruptionOnAttack() { disableSprintInterruptionOnAttack = getBoolean("game-mechanics.disable-sprint-interruption-on-attack", false); diff --git a/src/main/java/net/minecraft/server/ItemStack.java b/src/main/java/net/minecraft/server/ItemStack.java -index ca1bd0299..2d83c9e79 100644 +index ca1bd02995..2d83c9e79c 100644 --- a/src/main/java/net/minecraft/server/ItemStack.java +++ b/src/main/java/net/minecraft/server/ItemStack.java @@ -482,8 +482,9 @@ public final class ItemStack { @@ -47,7 +47,7 @@ index ca1bd0299..2d83c9e79 100644 itemstack.d(this.C()); if (this.tag != null) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 3f2a3dd17..e5c148c48 100644 +index 3f2a3dd178..e5c148c481 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1126,6 +1126,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant { diff --git a/src/main/java/net/minecraft/server/TileEntity.java b/src/main/java/net/minecraft/server/TileEntity.java -index 9f31f071b..6bddb2736 100644 +index acce1788db..5188689fbb 100644 --- a/src/main/java/net/minecraft/server/TileEntity.java +++ b/src/main/java/net/minecraft/server/TileEntity.java @@ -62,6 +62,7 @@ public abstract class TileEntity implements KeyedObject { // Paper @@ -79,10 +79,10 @@ index 9f31f071b..6bddb2736 100644 this.world.b(this.position, this); if (!this.c.isAir()) { diff --git a/src/main/java/net/minecraft/server/TileEntityHopper.java b/src/main/java/net/minecraft/server/TileEntityHopper.java -index 0555bae5a..452e46cad 100644 +index d2833f8842..72b4b19d7a 100644 --- a/src/main/java/net/minecraft/server/TileEntityHopper.java +++ b/src/main/java/net/minecraft/server/TileEntityHopper.java -@@ -189,6 +189,153 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi +@@ -189,6 +189,154 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi return false; } @@ -232,11 +232,12 @@ index 0555bae5a..452e46cad 100644 + ((EntityMinecartHopper) hopper).setCooldown(hopper.getWorld().spigotConfig.hopperTransfer / 2); + } + } ++ // Paper end + - private boolean u() { - IInventory iinventory = this.v(); + private boolean t() { + IInventory iinventory = this.u(); -@@ -200,6 +347,7 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi +@@ -200,6 +348,7 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi if (this.b(iinventory, enumdirection)) { return false; } else { @@ -244,7 +245,7 @@ index 0555bae5a..452e46cad 100644 for (int i = 0; i < this.getSize(); ++i) { if (!this.getItem(i).isEmpty()) { ItemStack itemstack = this.getItem(i).cloneItemStack(); -@@ -237,7 +385,7 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi +@@ -237,7 +386,7 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi } } @@ -253,7 +254,7 @@ index 0555bae5a..452e46cad 100644 } } } -@@ -267,6 +415,7 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi +@@ -267,6 +416,7 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi EnumDirection enumdirection = EnumDirection.DOWN; return c(iinventory, enumdirection) ? false : a(iinventory, enumdirection).anyMatch((i) -> { @@ -261,7 +262,7 @@ index 0555bae5a..452e46cad 100644 return a(ihopper, iinventory, i, enumdirection); }); } else { -@@ -290,6 +439,7 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi +@@ -290,6 +440,7 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi ItemStack itemstack = iinventory.getItem(i); if (!itemstack.isEmpty() && b(iinventory, itemstack, i, enumdirection)) { @@ -269,7 +270,7 @@ index 0555bae5a..452e46cad 100644 ItemStack itemstack1 = itemstack.cloneItemStack(); // ItemStack itemstack2 = addItem(iinventory, ihopper, iinventory.splitStack(i, 1), (EnumDirection) null); // CraftBukkit start - Call event on collection of items from inventories into the hopper -@@ -326,7 +476,7 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi +@@ -326,7 +477,7 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi } itemstack1.subtract(origCount - itemstack2.getCount()); // Spigot @@ -278,7 +279,7 @@ index 0555bae5a..452e46cad 100644 } return false; -@@ -335,7 +485,7 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi +@@ -335,7 +486,7 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi public static boolean a(IInventory iinventory, EntityItem entityitem) { boolean flag = false; // CraftBukkit start @@ -287,7 +288,7 @@ index 0555bae5a..452e46cad 100644 entityitem.world.getServer().getPluginManager().callEvent(event); if (event.isCancelled()) { return false; -@@ -389,7 +539,9 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi +@@ -389,7 +540,9 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi boolean flag1 = iinventory1.isNotEmpty(); if (itemstack1.isEmpty()) { diff --git a/Spigot-Server-Patches/0294-Fix-MC-124320.patch b/Spigot-Server-Patches/0294-Fix-MC-124320.patch index b790474782..2f9390eebb 100644 --- a/Spigot-Server-Patches/0294-Fix-MC-124320.patch +++ b/Spigot-Server-Patches/0294-Fix-MC-124320.patch @@ -1,14 +1,14 @@ -From 26c33d8a37a75167d696ea1c7279368c74518842 Mon Sep 17 00:00:00 2001 +From f081911f8008b0d305a83122cbeed1868a4eccfd Mon Sep 17 00:00:00 2001 From: BillyGalbreath Date: Thu, 23 Aug 2018 09:25:30 -0500 Subject: [PATCH] Fix MC-124320 diff --git a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java -index dedb063de..8d69a1556 100644 +index 03d3090b3f..0bddca623e 100644 --- a/src/main/java/net/minecraft/server/Block.java +++ b/src/main/java/net/minecraft/server/Block.java -@@ -168,6 +168,7 @@ public class Block implements IMaterial { +@@ -167,6 +167,7 @@ public class Block implements IMaterial { return tag.isTagged(this); } @@ -17,7 +17,7 @@ index dedb063de..8d69a1556 100644 IBlockData iblockdata1 = iblockdata; BlockPosition.MutableBlockPosition blockposition_mutableblockposition = new BlockPosition.MutableBlockPosition(); diff --git a/src/main/java/net/minecraft/server/EntityEnderman.java b/src/main/java/net/minecraft/server/EntityEnderman.java -index 79d23f152..ad1553f6e 100644 +index 6db334cb59..5e850db327 100644 --- a/src/main/java/net/minecraft/server/EntityEnderman.java +++ b/src/main/java/net/minecraft/server/EntityEnderman.java @@ -335,8 +335,9 @@ public class EntityEnderman extends EntityMonster { diff --git a/Spigot-Server-Patches/0302-Add-ray-tracing-methods-to-LivingEntity.patch b/Spigot-Server-Patches/0302-Add-ray-tracing-methods-to-LivingEntity.patch index c45be78aab..a70361ae59 100644 --- a/Spigot-Server-Patches/0302-Add-ray-tracing-methods-to-LivingEntity.patch +++ b/Spigot-Server-Patches/0302-Add-ray-tracing-methods-to-LivingEntity.patch @@ -1,14 +1,14 @@ -From b6105261367e63baf2e1ce70a806a9bde3d2273e Mon Sep 17 00:00:00 2001 +From 346c270bd25de866799bc1f8e856ef5542322ee7 Mon Sep 17 00:00:00 2001 From: BillyGalbreath Date: Mon, 3 Sep 2018 18:20:03 -0500 Subject: [PATCH] Add ray tracing methods to LivingEntity diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 2c29c8943..b9fc57eae 100644 +index bcbfffb6e0..75285a7b81 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java -@@ -3170,6 +3170,23 @@ public abstract class EntityLiving extends Entity { +@@ -3176,6 +3176,23 @@ public abstract class EntityLiving extends Entity { this.c(enumhand == EnumHand.MAIN_HAND ? EnumItemSlot.MAINHAND : EnumItemSlot.OFFHAND); } // Paper start @@ -33,7 +33,7 @@ index 2c29c8943..b9fc57eae 100644 public int getShieldBlockingDelay() { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 8dea7d36b..d5c4115a8 100644 +index 8dea7d36b6..d5c4115a85 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -182,6 +182,28 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { diff --git a/Spigot-Server-Patches/0304-Improve-death-events.patch b/Spigot-Server-Patches/0304-Improve-death-events.patch index 266f2b5a0e..d2e84f8826 100644 --- a/Spigot-Server-Patches/0304-Improve-death-events.patch +++ b/Spigot-Server-Patches/0304-Improve-death-events.patch @@ -1,4 +1,4 @@ -From 24bbe46d46609ba5c6c25a071d391fc41b689a2f Mon Sep 17 00:00:00 2001 +From e1a07bd3cae5cbdc032e884251d2282f31173c4b Mon Sep 17 00:00:00 2001 From: Phoenix616 Date: Tue, 21 Aug 2018 01:39:35 +0100 Subject: [PATCH] Improve death events @@ -15,7 +15,7 @@ items and experience which is otherwise only properly possible by using internal code. diff --git a/src/main/java/net/minecraft/server/CombatTracker.java b/src/main/java/net/minecraft/server/CombatTracker.java -index 20db76abd7..a148cd437c 100644 +index 84c3ea9d00..f563a7b630 100644 --- a/src/main/java/net/minecraft/server/CombatTracker.java +++ b/src/main/java/net/minecraft/server/CombatTracker.java @@ -175,6 +175,7 @@ public class CombatTracker { @@ -27,7 +27,7 @@ index 20db76abd7..a148cd437c 100644 int i = this.f ? 300 : 100; diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 69087c7ef9..efda90f6e3 100644 +index 4af1482e29..a8a3f48385 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -1467,6 +1467,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke @@ -47,7 +47,7 @@ index 69087c7ef9..efda90f6e3 100644 protected void i(double d0, double d1, double d2) { diff --git a/src/main/java/net/minecraft/server/EntityArmorStand.java b/src/main/java/net/minecraft/server/EntityArmorStand.java -index 480298a02a..26302c36e9 100644 +index 9157dace14..235ca47e16 100644 --- a/src/main/java/net/minecraft/server/EntityArmorStand.java +++ b/src/main/java/net/minecraft/server/EntityArmorStand.java @@ -676,7 +676,8 @@ public class EntityArmorStand extends EntityLiving { @@ -61,7 +61,7 @@ index 480298a02a..26302c36e9 100644 } diff --git a/src/main/java/net/minecraft/server/EntityFox.java b/src/main/java/net/minecraft/server/EntityFox.java -index c7a744355a..2f4657596c 100644 +index 85b32a8ac9..14046c98db 100644 --- a/src/main/java/net/minecraft/server/EntityFox.java +++ b/src/main/java/net/minecraft/server/EntityFox.java @@ -597,15 +597,25 @@ public class EntityFox extends EntityAnimal { @@ -94,7 +94,7 @@ index c7a744355a..2f4657596c 100644 public static boolean a(EntityFox entityfox, EntityLiving entityliving) { diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index b9fc57eae0..76aba7ea5b 100644 +index 75285a7b81..dd6e80c6fd 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -85,7 +85,7 @@ public abstract class EntityLiving extends Entity { @@ -114,7 +114,7 @@ index b9fc57eae0..76aba7ea5b 100644 @Override public float getBukkitYaw() { -@@ -1179,13 +1180,17 @@ public abstract class EntityLiving extends Entity { +@@ -1185,13 +1186,17 @@ public abstract class EntityLiving extends Entity { if (this.getHealth() <= 0.0F) { if (!this.f(damagesource)) { @@ -136,7 +136,7 @@ index b9fc57eae0..76aba7ea5b 100644 } } else if (flag1) { this.c(damagesource); -@@ -1323,22 +1328,40 @@ public abstract class EntityLiving extends Entity { +@@ -1329,22 +1334,40 @@ public abstract class EntityLiving extends Entity { Entity entity = damagesource.getEntity(); EntityLiving entityliving = this.getKillingEntity(); @@ -191,7 +191,7 @@ index b9fc57eae0..76aba7ea5b 100644 boolean flag = false; if (entityliving instanceof EntityWither) { -@@ -1365,7 +1388,8 @@ public abstract class EntityLiving extends Entity { +@@ -1371,7 +1394,8 @@ public abstract class EntityLiving extends Entity { } } @@ -201,7 +201,7 @@ index b9fc57eae0..76aba7ea5b 100644 Entity entity = damagesource.getEntity(); int i; -@@ -1376,19 +1400,20 @@ public abstract class EntityLiving extends Entity { +@@ -1382,19 +1406,20 @@ public abstract class EntityLiving extends Entity { } boolean flag = this.lastDamageByPlayerTime > 0; @@ -227,7 +227,7 @@ index b9fc57eae0..76aba7ea5b 100644 } protected void cE() {} -@@ -1442,6 +1467,7 @@ public abstract class EntityLiving extends Entity { +@@ -1448,6 +1473,7 @@ public abstract class EntityLiving extends Entity { return SoundEffects.ENTITY_GENERIC_HURT; } @@ -235,7 +235,7 @@ index b9fc57eae0..76aba7ea5b 100644 @Nullable protected SoundEffect getSoundDeath() { return SoundEffects.ENTITY_GENERIC_DEATH; -@@ -1891,10 +1917,12 @@ public abstract class EntityLiving extends Entity { +@@ -1897,10 +1923,12 @@ public abstract class EntityLiving extends Entity { } @@ -249,7 +249,7 @@ index b9fc57eae0..76aba7ea5b 100644 return this.isBaby() ? (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.5F : (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F; } diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index 0a575456a1..251166c4fe 100644 +index 30b684b043..343680e3ba 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -75,6 +75,10 @@ public class EntityPlayer extends EntityHuman implements ICrafting { diff --git a/Spigot-Server-Patches/0309-Prevent-Mob-AI-Rules-from-Loading-Chunks.patch b/Spigot-Server-Patches/0309-Prevent-Mob-AI-Rules-from-Loading-Chunks.patch index 9d51e32f61..63bb67c154 100644 --- a/Spigot-Server-Patches/0309-Prevent-Mob-AI-Rules-from-Loading-Chunks.patch +++ b/Spigot-Server-Patches/0309-Prevent-Mob-AI-Rules-from-Loading-Chunks.patch @@ -1,11 +1,11 @@ -From e35f496e4f4ec5fe4b0e3ac230d2c3888a428c8f Mon Sep 17 00:00:00 2001 +From 23e5c5c52e717b8471c06e9dac8784dc8e27d313 Mon Sep 17 00:00:00 2001 From: Aikar Date: Mon, 10 Sep 2018 23:56:36 -0400 Subject: [PATCH] Prevent Mob AI Rules from Loading Chunks diff --git a/src/main/java/net/minecraft/server/PathfinderGoalRemoveBlock.java b/src/main/java/net/minecraft/server/PathfinderGoalRemoveBlock.java -index ce9318c57..541d97344 100644 +index 706be9a736..b1457526ec 100644 --- a/src/main/java/net/minecraft/server/PathfinderGoalRemoveBlock.java +++ b/src/main/java/net/minecraft/server/PathfinderGoalRemoveBlock.java @@ -12,11 +12,13 @@ public class PathfinderGoalRemoveBlock extends PathfinderGoalGotoTarget { @@ -32,7 +32,7 @@ index ce9318c57..541d97344 100644 + if (block == this.g) { // Paper return blockposition; } else { - BlockPosition[] ablockposition = new BlockPosition[] { blockposition.down(), blockposition.west(), blockposition.east(), blockposition.north(), blockposition.south(), blockposition.down().down()}; + BlockPosition[] ablockposition = new BlockPosition[]{blockposition.down(), blockposition.west(), blockposition.east(), blockposition.north(), blockposition.south(), blockposition.down().down()}; @@ -124,7 +128,7 @@ public class PathfinderGoalRemoveBlock extends PathfinderGoalGotoTarget { for (int j = 0; j < i; ++j) { BlockPosition blockposition1 = ablockposition1[j]; @@ -53,7 +53,7 @@ index ce9318c57..541d97344 100644 return block == this.g && iworldreader.getType(blockposition.up()).isAir() && iworldreader.getType(blockposition.up(2)).isAir(); } diff --git a/src/main/java/net/minecraft/server/RandomPositionGenerator.java b/src/main/java/net/minecraft/server/RandomPositionGenerator.java -index b286934aa..c7e25e2be 100644 +index b286934aa8..c7e25e2be8 100644 --- a/src/main/java/net/minecraft/server/RandomPositionGenerator.java +++ b/src/main/java/net/minecraft/server/RandomPositionGenerator.java @@ -93,6 +93,7 @@ public class RandomPositionGenerator { diff --git a/Spigot-Server-Patches/0319-Configurable-connection-throttle-kick-message.patch b/Spigot-Server-Patches/0319-Configurable-connection-throttle-kick-message.patch index c35753fbe7..ad92cf41fb 100644 --- a/Spigot-Server-Patches/0319-Configurable-connection-throttle-kick-message.patch +++ b/Spigot-Server-Patches/0319-Configurable-connection-throttle-kick-message.patch @@ -1,11 +1,11 @@ -From d669857002039b1f6dea3e391b333dfda8235765 Mon Sep 17 00:00:00 2001 +From 546a69c886e34f2e28b7332b8ab25e7a5bbe92a4 Mon Sep 17 00:00:00 2001 From: Shane Freeder Date: Tue, 2 Oct 2018 09:57:50 +0100 Subject: [PATCH] Configurable connection throttle kick message diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java -index ffb18902f..2d3861c18 100644 +index ffb18902ff..2d3861c184 100644 --- a/src/main/java/com/destroystokyo/paper/PaperConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java @@ -275,6 +275,11 @@ public class PaperConfig { @@ -21,18 +21,18 @@ index ffb18902f..2d3861c18 100644 private static void savePlayerData() { savePlayerData = getBoolean("settings.save-player-data", savePlayerData); diff --git a/src/main/java/net/minecraft/server/HandshakeListener.java b/src/main/java/net/minecraft/server/HandshakeListener.java -index da88978db..1dad79620 100644 +index 07d85e5353..4b76c2d14f 100644 --- a/src/main/java/net/minecraft/server/HandshakeListener.java +++ b/src/main/java/net/minecraft/server/HandshakeListener.java @@ -38,7 +38,7 @@ public class HandshakeListener implements PacketHandshakingInListener { - synchronized (throttleTracker) { - if (throttleTracker.containsKey(address) && !"127.0.0.1".equals(address.getHostAddress()) && currentTime - throttleTracker.get(address) < connectionThrottle) { - throttleTracker.put(address, currentTime); -- chatmessage = new ChatMessage("Connection throttled! Please wait before reconnecting."); + synchronized (throttleTracker) { + if (throttleTracker.containsKey(address) && !"127.0.0.1".equals(address.getHostAddress()) && currentTime - throttleTracker.get(address) < connectionThrottle) { + throttleTracker.put(address, currentTime); +- chatmessage = new ChatMessage("Connection throttled! Please wait before reconnecting."); + chatmessage = new ChatMessage(com.destroystokyo.paper.PaperConfig.connectionThrottleKickMessage); // Paper - Configurable connection throttle kick message - this.b.sendPacket(new PacketLoginOutDisconnect(chatmessage)); - this.b.close(chatmessage); - return; + this.b.sendPacket(new PacketLoginOutDisconnect(chatmessage)); + this.b.close(chatmessage); + return; -- 2.21.0 diff --git a/Spigot-Server-Patches/0323-Check-Drowned-for-Villager-Aggression-Config.patch b/Spigot-Server-Patches/0323-Check-Drowned-for-Villager-Aggression-Config.patch index fb71779139..8e0437df44 100644 --- a/Spigot-Server-Patches/0323-Check-Drowned-for-Villager-Aggression-Config.patch +++ b/Spigot-Server-Patches/0323-Check-Drowned-for-Villager-Aggression-Config.patch @@ -1,16 +1,16 @@ -From c63f1d3334314685ee605e2449e69d7220414005 Mon Sep 17 00:00:00 2001 +From b46e7409a7f9b1d8104cdddf882ed638af593647 Mon Sep 17 00:00:00 2001 From: BillyGalbreath Date: Wed, 10 Oct 2018 21:22:44 -0500 Subject: [PATCH] Check Drowned for Villager Aggression Config diff --git a/src/main/java/net/minecraft/server/EntityDrowned.java b/src/main/java/net/minecraft/server/EntityDrowned.java -index 3d41af863..817769764 100644 +index 0deb51427e..7f34cdbc34 100644 --- a/src/main/java/net/minecraft/server/EntityDrowned.java +++ b/src/main/java/net/minecraft/server/EntityDrowned.java @@ -29,7 +29,7 @@ public class EntityDrowned extends EntityZombie implements IRangedEntity { this.goalSelector.a(7, new PathfinderGoalRandomStroll(this, 1.0D)); - this.targetSelector.a(1, (new PathfinderGoalHurtByTarget(this, new Class[] { EntityDrowned.class})).a(EntityPigZombie.class)); + this.targetSelector.a(1, (new PathfinderGoalHurtByTarget(this, new Class[]{EntityDrowned.class})).a(EntityPigZombie.class)); this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, 10, true, false, this::h)); - this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget<>(this, EntityVillagerAbstract.class, false)); + if ( world.spigotConfig.zombieAggressiveTowardsVillager ) this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget<>(this, EntityVillagerAbstract.class, false)); // Paper diff --git a/Spigot-Server-Patches/0341-Fix-SpongeAbsortEvent-handling.patch b/Spigot-Server-Patches/0341-Fix-SpongeAbsortEvent-handling.patch index 28e5ab6faf..5414908c96 100644 --- a/Spigot-Server-Patches/0341-Fix-SpongeAbsortEvent-handling.patch +++ b/Spigot-Server-Patches/0341-Fix-SpongeAbsortEvent-handling.patch @@ -1,4 +1,4 @@ -From 85d1e390445ebaba7ac36e0957f53731d61f82f9 Mon Sep 17 00:00:00 2001 +From d60d046b6fd9ee91cf1d1e4e731a2065074563b6 Mon Sep 17 00:00:00 2001 From: Shane Freeder Date: Sat, 10 Nov 2018 05:15:21 +0000 Subject: [PATCH] Fix SpongeAbsortEvent handling @@ -6,10 +6,10 @@ Subject: [PATCH] Fix SpongeAbsortEvent handling Only process drops when the block is actually going to be removed diff --git a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java -index 8d69a1556..5b98c5255 100644 +index 0bddca623e..8f809a4ee4 100644 --- a/src/main/java/net/minecraft/server/Block.java +++ b/src/main/java/net/minecraft/server/Block.java -@@ -473,7 +473,7 @@ public class Block implements IMaterial { +@@ -472,7 +472,7 @@ public class Block implements IMaterial { iblockdata.dropNaturally(world, blockposition, ItemStack.a); } @@ -19,7 +19,7 @@ index 8d69a1556..5b98c5255 100644 if (world instanceof WorldServer) { a(iblockdata, (WorldServer) world, blockposition, tileentity).forEach((itemstack) -> { diff --git a/src/main/java/net/minecraft/server/BlockSponge.java b/src/main/java/net/minecraft/server/BlockSponge.java -index 4e281ce6d..6a64af71b 100644 +index 4e281ce6dd..6a64af71b9 100644 --- a/src/main/java/net/minecraft/server/BlockSponge.java +++ b/src/main/java/net/minecraft/server/BlockSponge.java @@ -113,8 +113,11 @@ public class BlockSponge extends Block { diff --git a/Spigot-Server-Patches/0342-Don-t-allow-digging-into-unloaded-chunks.patch b/Spigot-Server-Patches/0342-Don-t-allow-digging-into-unloaded-chunks.patch index 349d6694ea..d9fd8ace24 100644 --- a/Spigot-Server-Patches/0342-Don-t-allow-digging-into-unloaded-chunks.patch +++ b/Spigot-Server-Patches/0342-Don-t-allow-digging-into-unloaded-chunks.patch @@ -1,25 +1,25 @@ -From f9c025ded37f68725219fa378e63f9a0409a8318 Mon Sep 17 00:00:00 2001 +From f084a78d2b9eeae3ab154d6127c396066291ca48 Mon Sep 17 00:00:00 2001 From: Shane Freeder Date: Sun, 11 Nov 2018 21:01:09 +0000 Subject: [PATCH] Don't allow digging into unloaded chunks diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 4ba13da1a..a887be15c 100644 +index ff45290b84..293e5d819c 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -1246,6 +1246,11 @@ public class PlayerConnection implements PacketListenerPlayIn { - case START_DESTROY_BLOCK: - case ABORT_DESTROY_BLOCK: - case STOP_DESTROY_BLOCK: +@@ -1250,6 +1250,11 @@ public class PlayerConnection implements PacketListenerPlayIn { + case START_DESTROY_BLOCK: + case ABORT_DESTROY_BLOCK: + case STOP_DESTROY_BLOCK: + // Paper start - Don't allow digging in unloaded chunks + if (!worldserver.isChunkLoaded(blockposition.getX() >> 4, blockposition.getZ() >> 4)) { + return; + } + // Paper end - Don't allow digging in unloaded chunks - double d0 = this.player.locX - ((double) blockposition.getX() + 0.5D); - double d1 = this.player.locY - ((double) blockposition.getY() + 0.5D) + 1.5D; - double d2 = this.player.locZ - ((double) blockposition.getZ() + 0.5D); + double d0 = this.player.locX - ((double) blockposition.getX() + 0.5D); + double d1 = this.player.locY - ((double) blockposition.getY() + 0.5D) + 1.5D; + double d2 = this.player.locZ - ((double) blockposition.getZ() + 0.5D); -- 2.21.0 diff --git a/Spigot-Server-Patches/0343-Optimize-redstone-algorithm.patch b/Spigot-Server-Patches/0343-Optimize-redstone-algorithm.patch index deb6662bad..bb9d3db9e3 100644 --- a/Spigot-Server-Patches/0343-Optimize-redstone-algorithm.patch +++ b/Spigot-Server-Patches/0343-Optimize-redstone-algorithm.patch @@ -1,4 +1,4 @@ -From c938f619260d75439a43abea3641d20f383687b9 Mon Sep 17 00:00:00 2001 +From 87c87ad160f47b7171bab823ade46d9be9a2310a Mon Sep 17 00:00:00 2001 From: theosib Date: Thu, 27 Sep 2018 01:43:35 -0600 Subject: [PATCH] Optimize redstone algorithm @@ -19,7 +19,7 @@ Aside from making the obvious class/function renames and obfhelpers I didn't nee Just added Bukkit's event system and took a few liberties with dead code and comment misspellings. diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -index ad793ffa3..ef882b897 100644 +index ad793ffa38..ef882b897f 100644 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java @@ -439,4 +439,14 @@ public class PaperWorldConfig { @@ -39,7 +39,7 @@ index ad793ffa3..ef882b897 100644 } diff --git a/src/main/java/com/destroystokyo/paper/util/RedstoneWireTurbo.java b/src/main/java/com/destroystokyo/paper/util/RedstoneWireTurbo.java new file mode 100644 -index 000000000..cf5661f1c +index 0000000000..cf5661f1c5 --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/util/RedstoneWireTurbo.java @@ -0,0 +1,912 @@ @@ -956,7 +956,7 @@ index 000000000..cf5661f1c + } +} diff --git a/src/main/java/net/minecraft/server/BlockRedstoneWire.java b/src/main/java/net/minecraft/server/BlockRedstoneWire.java -index da903f74b..aa35e0d06 100644 +index 7ce9cdb853..6b5015ce5f 100644 --- a/src/main/java/net/minecraft/server/BlockRedstoneWire.java +++ b/src/main/java/net/minecraft/server/BlockRedstoneWire.java @@ -1,5 +1,7 @@ @@ -967,18 +967,18 @@ index da903f74b..aa35e0d06 100644 import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -@@ -22,7 +24,10 @@ public class BlockRedstoneWire extends Block { +@@ -22,8 +24,8 @@ public class BlockRedstoneWire extends Block { public static final BlockStateInteger POWER = BlockProperties.as; public static final Map> f = Maps.newEnumMap(ImmutableMap.of(EnumDirection.NORTH, BlockRedstoneWire.NORTH, EnumDirection.EAST, BlockRedstoneWire.EAST, EnumDirection.SOUTH, BlockRedstoneWire.SOUTH, EnumDirection.WEST, BlockRedstoneWire.WEST)); - protected static final VoxelShape[] g = new VoxelShape[] { Block.a(3.0D, 0.0D, 3.0D, 13.0D, 1.0D, 13.0D), Block.a(3.0D, 0.0D, 3.0D, 13.0D, 1.0D, 16.0D), Block.a(0.0D, 0.0D, 3.0D, 13.0D, 1.0D, 13.0D), Block.a(0.0D, 0.0D, 3.0D, 13.0D, 1.0D, 16.0D), Block.a(3.0D, 0.0D, 0.0D, 13.0D, 1.0D, 13.0D), Block.a(3.0D, 0.0D, 0.0D, 13.0D, 1.0D, 16.0D), Block.a(0.0D, 0.0D, 0.0D, 13.0D, 1.0D, 13.0D), Block.a(0.0D, 0.0D, 0.0D, 13.0D, 1.0D, 16.0D), Block.a(3.0D, 0.0D, 3.0D, 16.0D, 1.0D, 13.0D), Block.a(3.0D, 0.0D, 3.0D, 16.0D, 1.0D, 16.0D), Block.a(0.0D, 0.0D, 3.0D, 16.0D, 1.0D, 13.0D), Block.a(0.0D, 0.0D, 3.0D, 16.0D, 1.0D, 16.0D), Block.a(3.0D, 0.0D, 0.0D, 16.0D, 1.0D, 13.0D), Block.a(3.0D, 0.0D, 0.0D, 16.0D, 1.0D, 16.0D), Block.a(0.0D, 0.0D, 0.0D, 16.0D, 1.0D, 13.0D), Block.a(0.0D, 0.0D, 0.0D, 16.0D, 1.0D, 16.0D)}; -+ public boolean canProvidePower() { return this.h; } // Paper - OBFHELPER -+ public void setCanProvidePower(boolean value) { this.h = value; } // Paper - OBFHELPER - private boolean h = true; -+ private Set getBlocksNeedingUpdate() { return this.i; } // Paper - OBFHELPER - private final Set i = Sets.newHashSet(); + protected static final VoxelShape[] g = new VoxelShape[]{Block.a(3.0D, 0.0D, 3.0D, 13.0D, 1.0D, 13.0D), Block.a(3.0D, 0.0D, 3.0D, 13.0D, 1.0D, 16.0D), Block.a(0.0D, 0.0D, 3.0D, 13.0D, 1.0D, 13.0D), Block.a(0.0D, 0.0D, 3.0D, 13.0D, 1.0D, 16.0D), Block.a(3.0D, 0.0D, 0.0D, 13.0D, 1.0D, 13.0D), Block.a(3.0D, 0.0D, 0.0D, 13.0D, 1.0D, 16.0D), Block.a(0.0D, 0.0D, 0.0D, 13.0D, 1.0D, 13.0D), Block.a(0.0D, 0.0D, 0.0D, 13.0D, 1.0D, 16.0D), Block.a(3.0D, 0.0D, 3.0D, 16.0D, 1.0D, 13.0D), Block.a(3.0D, 0.0D, 3.0D, 16.0D, 1.0D, 16.0D), Block.a(0.0D, 0.0D, 3.0D, 16.0D, 1.0D, 13.0D), Block.a(0.0D, 0.0D, 3.0D, 16.0D, 1.0D, 16.0D), Block.a(3.0D, 0.0D, 0.0D, 16.0D, 1.0D, 13.0D), Block.a(3.0D, 0.0D, 0.0D, 16.0D, 1.0D, 16.0D), Block.a(0.0D, 0.0D, 0.0D, 16.0D, 1.0D, 13.0D), Block.a(0.0D, 0.0D, 0.0D, 16.0D, 1.0D, 16.0D)}; +- private boolean h = true; +- private final Set i = Sets.newHashSet(); ++ private boolean h = true; public final boolean canProvidePower() { return this.h; } public final void setCanProvidePower(boolean value) { this.h = value; } // Paper - OBFHELPER ++ private final Set i = Sets.newHashSet(); private Set getBlocksNeedingUpdate() { return this.i; } // Paper - OBFHELPER public BlockRedstoneWire(Block.Info block_info) { -@@ -157,6 +162,117 @@ public class BlockRedstoneWire extends Block { + super(block_info); +@@ -157,6 +159,117 @@ public class BlockRedstoneWire extends Block { return Block.d(iblockdata1, iworldreader, blockposition1, EnumDirection.UP) || iblockdata1.getBlock() == Blocks.HOPPER; } @@ -1096,7 +1096,7 @@ index da903f74b..aa35e0d06 100644 private IBlockData a(World world, BlockPosition blockposition, IBlockData iblockdata) { iblockdata = this.b(world, blockposition, iblockdata); List list = Lists.newArrayList(this.i); -@@ -255,7 +371,7 @@ public class BlockRedstoneWire extends Block { +@@ -255,7 +368,7 @@ public class BlockRedstoneWire extends Block { @Override public void onPlace(IBlockData iblockdata, World world, BlockPosition blockposition, IBlockData iblockdata1, boolean flag) { if (iblockdata1.getBlock() != iblockdata.getBlock() && !world.isClientSide) { @@ -1105,7 +1105,7 @@ index da903f74b..aa35e0d06 100644 Iterator iterator = EnumDirection.EnumDirectionLimit.VERTICAL.iterator(); EnumDirection enumdirection; -@@ -302,7 +418,7 @@ public class BlockRedstoneWire extends Block { +@@ -302,7 +415,7 @@ public class BlockRedstoneWire extends Block { world.applyPhysics(blockposition.shift(enumdirection), this); } @@ -1114,7 +1114,7 @@ index da903f74b..aa35e0d06 100644 Iterator iterator = EnumDirection.EnumDirectionLimit.HORIZONTAL.iterator(); EnumDirection enumdirection1; -@@ -343,7 +459,7 @@ public class BlockRedstoneWire extends Block { +@@ -343,7 +456,7 @@ public class BlockRedstoneWire extends Block { public void doPhysics(IBlockData iblockdata, World world, BlockPosition blockposition, Block block, BlockPosition blockposition1, boolean flag) { if (!world.isClientSide) { if (iblockdata.canPlace(world, blockposition)) { @@ -1124,7 +1124,7 @@ index da903f74b..aa35e0d06 100644 c(iblockdata, world, blockposition); world.a(blockposition, false); diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 163d7f37c..3425f034c 100644 +index d13e4cf735..f811ef8cc8 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -556,6 +556,7 @@ public abstract class World implements IIBlockAccess, GeneratorAccess, AutoClose diff --git a/Spigot-Server-Patches/0344-force-entity-dismount-during-teleportation.patch b/Spigot-Server-Patches/0344-force-entity-dismount-during-teleportation.patch index e3dbf38bc4..b3cc831805 100644 --- a/Spigot-Server-Patches/0344-force-entity-dismount-during-teleportation.patch +++ b/Spigot-Server-Patches/0344-force-entity-dismount-during-teleportation.patch @@ -1,4 +1,4 @@ -From b248d1a836ab67a2d50a2d7d47908fe35e23a6d5 Mon Sep 17 00:00:00 2001 +From a7402d36cdb5dcb94e31ff2117f0623e8d1daf39 Mon Sep 17 00:00:00 2001 From: Shane Freeder Date: Thu, 15 Nov 2018 13:38:37 +0000 Subject: [PATCH] force entity dismount during teleportation @@ -20,7 +20,7 @@ this is going to be the best soultion all around. Improvements/suggestions welcome! diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index e58c68275..a9d85e71f 100644 +index 9395f3e106..ea4442d76d 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -1995,12 +1995,15 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke @@ -72,7 +72,7 @@ index e58c68275..a9d85e71f 100644 if (event.isCancelled()) { return false; diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java -index 2f614dfb6..4bea5f1ea 100644 +index 7d8885ce81..318c2b0dcf 100644 --- a/src/main/java/net/minecraft/server/EntityHuman.java +++ b/src/main/java/net/minecraft/server/EntityHuman.java @@ -937,9 +937,11 @@ public abstract class EntityHuman extends EntityLiving { @@ -91,10 +91,10 @@ index 2f614dfb6..4bea5f1ea 100644 } diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 76aba7ea5..1d8d589ef 100644 +index dd6e80c6fd..ae1cda49aa 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java -@@ -2661,11 +2661,13 @@ public abstract class EntityLiving extends Entity { +@@ -2667,11 +2667,13 @@ public abstract class EntityLiving extends Entity { return ((Byte) this.datawatcher.get(EntityLiving.ar) & 4) != 0; } @@ -112,7 +112,7 @@ index 76aba7ea5..1d8d589ef 100644 this.B(entity); } diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index 2e068ec2d..a05b31f73 100644 +index 2f605365f7..7f89d45ed2 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -997,11 +997,13 @@ public class EntityPlayer extends EntityHuman implements ICrafting { diff --git a/Spigot-Server-Patches/0361-Fix-sign-edit-memory-leak.patch b/Spigot-Server-Patches/0361-Fix-sign-edit-memory-leak.patch index 4ea147515e..932c966cb7 100644 --- a/Spigot-Server-Patches/0361-Fix-sign-edit-memory-leak.patch +++ b/Spigot-Server-Patches/0361-Fix-sign-edit-memory-leak.patch @@ -1,4 +1,4 @@ -From 52569d04f6fedc9278ab2c566445671539eec8db Mon Sep 17 00:00:00 2001 +From 2324c30717edbe9602a8ab535b018ff43d7f27ac Mon Sep 17 00:00:00 2001 From: Aikar Date: Thu, 28 Feb 2019 00:15:28 -0500 Subject: [PATCH] Fix sign edit memory leak @@ -6,20 +6,20 @@ Subject: [PATCH] Fix sign edit memory leak when a player edits a sign, a reference to their Entity is never cleand up. diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index f007290ff..7c9cd1aa4 100644 +index 98d1138cbd..b3f1fb9eb2 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -2561,7 +2561,7 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -2565,7 +2565,7 @@ public class PlayerConnection implements PacketListenerPlayIn { TileEntitySign tileentitysign = (TileEntitySign) tileentity; -- if (!tileentitysign.c() || tileentitysign.d() != this.player) { -+ if (!tileentitysign.c() || tileentitysign.signEditor == null || !tileentitysign.signEditor.equals(this.player.getUniqueID())) { +- if (!tileentitysign.d() || tileentitysign.f() != this.player) { ++ if (!tileentitysign.d() || tileentitysign.signEditor == null || !tileentitysign.signEditor.equals(this.player.getUniqueID())) { this.minecraftServer.warning("Player " + this.player.getDisplayName().getString() + " just tried to change non-editable sign"); this.sendPacket(tileentity.getUpdatePacket()); // CraftBukkit return; diff --git a/src/main/java/net/minecraft/server/TileEntitySign.java b/src/main/java/net/minecraft/server/TileEntitySign.java -index 7b5d534f4..daf0aeb43 100644 +index 15b3add9ed..caeaca4c7a 100644 --- a/src/main/java/net/minecraft/server/TileEntitySign.java +++ b/src/main/java/net/minecraft/server/TileEntitySign.java @@ -17,6 +17,7 @@ public class TileEntitySign extends TileEntity implements ICommandListener { // @@ -41,7 +41,7 @@ index 7b5d534f4..daf0aeb43 100644 + // Paper end } - public EntityHuman d() { + public EntityHuman f() { -- 2.21.0 diff --git a/Spigot-Server-Patches/0362-Limit-Client-Sign-length-more.patch b/Spigot-Server-Patches/0362-Limit-Client-Sign-length-more.patch index 36d08ec72b..d0d7ca9cc7 100644 --- a/Spigot-Server-Patches/0362-Limit-Client-Sign-length-more.patch +++ b/Spigot-Server-Patches/0362-Limit-Client-Sign-length-more.patch @@ -1,4 +1,4 @@ -From 42359cbc6d4c23f027c0ebbf478569390d916464 Mon Sep 17 00:00:00 2001 +From eab93ce140d0c02ce3f8c792af676e699bba7524 Mon Sep 17 00:00:00 2001 From: Aikar Date: Wed, 27 Feb 2019 22:18:40 -0500 Subject: [PATCH] Limit Client Sign length more @@ -22,7 +22,7 @@ it only impacts data sent from the client. Set -DPaper.maxSignLength=XX to change limit or -1 to disable diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 7c9cd1aa4..09030abc7 100644 +index b3f1fb9eb2..5ad28ec748 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -103,6 +103,7 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -33,7 +33,7 @@ index 7c9cd1aa4..09030abc7 100644 private static final long KEEPALIVE_LIMIT = Long.getLong("paper.playerconnection.keepalive", 30) * 1000; // Paper - provide property to set keepalive limit public PlayerConnection(MinecraftServer minecraftserver, NetworkManager networkmanager, EntityPlayer entityplayer) { -@@ -2577,6 +2578,15 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -2581,6 +2582,15 @@ public class PlayerConnection implements PacketListenerPlayIn { String[] lines = new String[4]; for (int i = 0; i < astring.length; ++i) { diff --git a/Spigot-Server-Patches/0368-Add-LivingEntity-getTargetEntity.patch b/Spigot-Server-Patches/0368-Add-LivingEntity-getTargetEntity.patch index a2754fdab3..b2fbd2789a 100644 --- a/Spigot-Server-Patches/0368-Add-LivingEntity-getTargetEntity.patch +++ b/Spigot-Server-Patches/0368-Add-LivingEntity-getTargetEntity.patch @@ -1,11 +1,11 @@ -From 118af91da8b23d665b578d184d16dc1d9a257dae Mon Sep 17 00:00:00 2001 +From 26a97e7124567c48cd076ba9195e5d47ca619cb3 Mon Sep 17 00:00:00 2001 From: BillyGalbreath Date: Sat, 22 Sep 2018 00:33:08 -0500 Subject: [PATCH] Add LivingEntity#getTargetEntity diff --git a/src/main/java/net/minecraft/server/AxisAlignedBB.java b/src/main/java/net/minecraft/server/AxisAlignedBB.java -index b38fc50bb..d02c77664 100644 +index 4f60b931a1..c950139c0f 100644 --- a/src/main/java/net/minecraft/server/AxisAlignedBB.java +++ b/src/main/java/net/minecraft/server/AxisAlignedBB.java @@ -108,6 +108,7 @@ public class AxisAlignedBB { @@ -43,10 +43,10 @@ index b38fc50bb..d02c77664 100644 + public final Optional calculateIntercept(Vec3D vec3d, Vec3D vec3d1) { return b(vec3d, vec3d1); } // Paper - OBFHELPER public Optional b(Vec3D vec3d, Vec3D vec3d1) { - double[] adouble = new double[] { 1.0D}; + double[] adouble = new double[]{1.0D}; double d0 = vec3d1.x - vec3d.x; diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index a9d85e71f..35ec15b39 100644 +index ea4442d76d..6dae950c2d 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -1447,6 +1447,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke @@ -66,10 +66,10 @@ index a9d85e71f..35ec15b39 100644 return 0.0F; } diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 1d8d589ef..f55ace4bc 100644 +index ae1cda49aa..17ee1c3eb7 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java -@@ -3217,6 +3217,37 @@ public abstract class EntityLiving extends Entity { +@@ -3223,6 +3223,37 @@ public abstract class EntityLiving extends Entity { return world.rayTrace(raytrace); } @@ -108,7 +108,7 @@ index 1d8d589ef..f55ace4bc 100644 public int getShieldBlockingDelay() { diff --git a/src/main/java/net/minecraft/server/IEntitySelector.java b/src/main/java/net/minecraft/server/IEntitySelector.java -index 035d70419..2ebcbe17c 100644 +index 035d70419d..2ebcbe17ce 100644 --- a/src/main/java/net/minecraft/server/IEntitySelector.java +++ b/src/main/java/net/minecraft/server/IEntitySelector.java @@ -18,6 +18,7 @@ public final class IEntitySelector { @@ -120,7 +120,7 @@ index 035d70419..2ebcbe17c 100644 return !entity.t(); }; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index d5c4115a8..c4aa1945f 100644 +index d5c4115a85..c4aa1945ff 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -202,6 +202,33 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { diff --git a/Spigot-Server-Patches/0371-Update-entity-Metadata-for-all-tracked-players.patch b/Spigot-Server-Patches/0371-Update-entity-Metadata-for-all-tracked-players.patch index 225f314845..e5ff06a5c0 100644 --- a/Spigot-Server-Patches/0371-Update-entity-Metadata-for-all-tracked-players.patch +++ b/Spigot-Server-Patches/0371-Update-entity-Metadata-for-all-tracked-players.patch @@ -1,11 +1,11 @@ -From 51a4c256dd261b208e9b03e00e79022fbbf41a60 Mon Sep 17 00:00:00 2001 +From 748f2cb401b853a1963f7fac7c7dbad5e291350f Mon Sep 17 00:00:00 2001 From: AgentTroll Date: Fri, 22 Mar 2019 22:24:03 -0700 Subject: [PATCH] Update entity Metadata for all tracked players diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java -index afd8748da..17b6ab57c 100644 +index afd8748da8..17b6ab57c2 100644 --- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java +++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java @@ -379,6 +379,12 @@ public class EntityTrackerEntry { @@ -22,10 +22,10 @@ index afd8748da..17b6ab57c 100644 this.f.accept(packet); if (this.tracker instanceof EntityPlayer) { diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 09030abc7..5b4576388 100644 +index 5ad28ec748..f3f6fa1c45 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -2021,7 +2021,7 @@ public class PlayerConnection implements PacketListenerPlayIn { +@@ -2025,7 +2025,7 @@ public class PlayerConnection implements PacketListenerPlayIn { if (event.isCancelled() || this.player.inventory.getItemInHand() == null || this.player.inventory.getItemInHand().getItem() != origItem) { // Refresh the current entity metadata diff --git a/Spigot-Server-Patches/0372-Fire-event-on-GS4-query.patch b/Spigot-Server-Patches/0372-Fire-event-on-GS4-query.patch index 19d86e1c77..044270a6da 100644 --- a/Spigot-Server-Patches/0372-Fire-event-on-GS4-query.patch +++ b/Spigot-Server-Patches/0372-Fire-event-on-GS4-query.patch @@ -1,11 +1,11 @@ -From 5b1d72647f333376a2c59ce57ab20d1ec05e9119 Mon Sep 17 00:00:00 2001 +From d644a82fa7226a9d05f86121493a30c2bef8aa56 Mon Sep 17 00:00:00 2001 From: Mark Vainomaa Date: Sun, 17 Mar 2019 21:46:56 +0200 Subject: [PATCH] Fire event on GS4 query diff --git a/src/main/java/net/minecraft/server/RemoteConnectionThread.java b/src/main/java/net/minecraft/server/RemoteConnectionThread.java -index 66bfbcf02..d821ef9a7 100644 +index 66bfbcf02b..d821ef9a75 100644 --- a/src/main/java/net/minecraft/server/RemoteConnectionThread.java +++ b/src/main/java/net/minecraft/server/RemoteConnectionThread.java @@ -15,7 +15,7 @@ public abstract class RemoteConnectionThread implements Runnable { @@ -26,7 +26,7 @@ index 66bfbcf02..d821ef9a7 100644 return this.b.getPlayerCount(); } diff --git a/src/main/java/net/minecraft/server/RemoteStatusListener.java b/src/main/java/net/minecraft/server/RemoteStatusListener.java -index ddb4ba489..3770334fc 100644 +index a556a71334..67e94a6f07 100644 --- a/src/main/java/net/minecraft/server/RemoteStatusListener.java +++ b/src/main/java/net/minecraft/server/RemoteStatusListener.java @@ -21,19 +21,19 @@ public class RemoteStatusListener extends RemoteConnectionThread { @@ -57,16 +57,16 @@ index ddb4ba489..3770334fc 100644 public RemoteStatusListener(IMinecraftServer iminecraftserver) { @@ -91,6 +91,7 @@ public class RemoteStatusListener extends RemoteConnectionThread { - remotestatusreply.a((int) 0); - remotestatusreply.a(this.a(datagrampacket.getSocketAddress())); + remotestatusreply.a((int) 0); + remotestatusreply.a(this.a(datagrampacket.getSocketAddress())); + /* Paper start - GS4 Query event - remotestatusreply.a(this.l); - remotestatusreply.a("SMP"); - remotestatusreply.a(this.m); + remotestatusreply.a(this.l); + remotestatusreply.a("SMP"); + remotestatusreply.a(this.m); @@ -98,6 +99,31 @@ public class RemoteStatusListener extends RemoteConnectionThread { - remotestatusreply.a(Integer.toString(this.k)); - remotestatusreply.a((short) this.j); - remotestatusreply.a(this.r); + remotestatusreply.a(Integer.toString(this.k)); + remotestatusreply.a((short) this.j); + remotestatusreply.a(this.r); + */ + com.destroystokyo.paper.event.server.GS4QueryEvent.QueryType queryType = + com.destroystokyo.paper.event.server.GS4QueryEvent.QueryType.BASIC; @@ -92,9 +92,9 @@ index ddb4ba489..3770334fc 100644 + remotestatusreply.writeShort((short) queryResponse.getPort()); + remotestatusreply.writeString(queryResponse.getHostname()); + // Paper end - this.a(remotestatusreply.a(), datagrampacket); - this.a("Status [" + socketaddress + "]"); - } + this.a(remotestatusreply.a(), datagrampacket); + this.a("Status [" + socketaddress + "]"); + } @@ -134,6 +160,7 @@ public class RemoteStatusListener extends RemoteConnectionThread { this.v.a("splitnum"); this.v.a((int) 128); @@ -184,7 +184,7 @@ index ddb4ba489..3770334fc 100644 } } diff --git a/src/main/java/net/minecraft/server/RemoteStatusReply.java b/src/main/java/net/minecraft/server/RemoteStatusReply.java -index 848b5c3f0..73efea7e1 100644 +index 848b5c3f0e..73efea7e13 100644 --- a/src/main/java/net/minecraft/server/RemoteStatusReply.java +++ b/src/main/java/net/minecraft/server/RemoteStatusReply.java @@ -18,15 +18,27 @@ public class RemoteStatusReply { diff --git a/Spigot-Server-Patches/0391-Fix-CraftServer-isPrimaryThread-and-MinecraftServer-.patch b/Spigot-Server-Patches/0390-Fix-CraftServer-isPrimaryThread-and-MinecraftServer-.patch similarity index 93% rename from Spigot-Server-Patches/0391-Fix-CraftServer-isPrimaryThread-and-MinecraftServer-.patch rename to Spigot-Server-Patches/0390-Fix-CraftServer-isPrimaryThread-and-MinecraftServer-.patch index 78941e3fd6..4ddd4a493a 100644 --- a/Spigot-Server-Patches/0391-Fix-CraftServer-isPrimaryThread-and-MinecraftServer-.patch +++ b/Spigot-Server-Patches/0390-Fix-CraftServer-isPrimaryThread-and-MinecraftServer-.patch @@ -1,4 +1,4 @@ -From 534281ebb98cd82d59750beeff481f2f2376cc19 Mon Sep 17 00:00:00 2001 +From c5ce9824cf21c2d4a6b994883f062b0c8bd969e4 Mon Sep 17 00:00:00 2001 From: Spottedleaf Date: Mon, 13 May 2019 21:10:59 -0700 Subject: [PATCH] Fix CraftServer#isPrimaryThread and MinecraftServer @@ -16,7 +16,7 @@ handling that should have been handled synchronously will be handled synchronously when the server gets shut down. diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index ba68d7f83..f1cd38d42 100644 +index ba68d7f833..f1cd38d421 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1936,7 +1936,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant -Date: Sun, 12 May 2019 19:25:53 -0700 -Subject: [PATCH] Fix MC-151674 Close RegionFiles when they get evicted from - cache - -https://bugs.mojang.com/browse/MC-151674 - -diff --git a/src/main/java/net/minecraft/server/RegionFileCache.java b/src/main/java/net/minecraft/server/RegionFileCache.java -index 844f491c7..137183481 100644 ---- a/src/main/java/net/minecraft/server/RegionFileCache.java -+++ b/src/main/java/net/minecraft/server/RegionFileCache.java -@@ -56,7 +56,7 @@ public abstract class RegionFileCache implements AutoCloseable { - return regionfile; - } else { - if (this.cache.size() >= PaperConfig.regionFileCacheSize) { -- this.cache.removeLast(); -+ this.cache.removeLast().close(); // Paper - MC-151674 - } - - if (!this.a.exists()) { --- -2.21.0 - diff --git a/Spigot-Server-Patches/0392-Elide-lock-in-DataWatcher.patch b/Spigot-Server-Patches/0391-Elide-lock-in-DataWatcher.patch similarity index 98% rename from Spigot-Server-Patches/0392-Elide-lock-in-DataWatcher.patch rename to Spigot-Server-Patches/0391-Elide-lock-in-DataWatcher.patch index f346195557..3682a7061e 100644 --- a/Spigot-Server-Patches/0392-Elide-lock-in-DataWatcher.patch +++ b/Spigot-Server-Patches/0391-Elide-lock-in-DataWatcher.patch @@ -1,4 +1,4 @@ -From 84cc80b03ef7a414edf4279aa1b6c6588a21a886 Mon Sep 17 00:00:00 2001 +From 65686dbb9506d96a58f18a4ebacb02b4bf2f3f84 Mon Sep 17 00:00:00 2001 From: Spottedleaf Date: Sat, 11 May 2019 08:19:27 -0700 Subject: [PATCH] Elide lock in DataWatcher @@ -17,7 +17,7 @@ of the Entity, the further readlocks are actually useless (which get obtained on set, get, etc calls). diff --git a/src/main/java/net/minecraft/server/DataWatcher.java b/src/main/java/net/minecraft/server/DataWatcher.java -index f224043d8..bbea8ef72 100644 +index f224043d8e..bbea8ef726 100644 --- a/src/main/java/net/minecraft/server/DataWatcher.java +++ b/src/main/java/net/minecraft/server/DataWatcher.java @@ -23,7 +23,7 @@ public class DataWatcher { diff --git a/Spigot-Server-Patches/0393-Fix-issues-with-entity-loss-due-to-unloaded-chunks.patch b/Spigot-Server-Patches/0392-Fix-issues-with-entity-loss-due-to-unloaded-chunks.patch similarity index 95% rename from Spigot-Server-Patches/0393-Fix-issues-with-entity-loss-due-to-unloaded-chunks.patch rename to Spigot-Server-Patches/0392-Fix-issues-with-entity-loss-due-to-unloaded-chunks.patch index 3a9d24d2a6..2a5f59af0d 100644 --- a/Spigot-Server-Patches/0393-Fix-issues-with-entity-loss-due-to-unloaded-chunks.patch +++ b/Spigot-Server-Patches/0392-Fix-issues-with-entity-loss-due-to-unloaded-chunks.patch @@ -1,4 +1,4 @@ -From 2559ccb6ede819d825bb466f3d90513f38de050b Mon Sep 17 00:00:00 2001 +From 2febac2e738eccd76915878e85bd91f2a3445bb4 Mon Sep 17 00:00:00 2001 From: Aikar Date: Fri, 28 Sep 2018 21:49:53 -0400 Subject: [PATCH] Fix issues with entity loss due to unloaded chunks @@ -19,7 +19,7 @@ This change ensures the chunks are always loaded when entities are added to the world, or a valid entity moves between chunks. diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 1a01e5e69..be3ce3f13 100644 +index c93bf8e8b5..e61381221f 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -635,7 +635,7 @@ public class WorldServer extends World { diff --git a/Spigot-Server-Patches/0394-Duplicate-UUID-Resolve-Option.patch b/Spigot-Server-Patches/0393-Duplicate-UUID-Resolve-Option.patch similarity index 96% rename from Spigot-Server-Patches/0394-Duplicate-UUID-Resolve-Option.patch rename to Spigot-Server-Patches/0393-Duplicate-UUID-Resolve-Option.patch index 6a5cebbf02..a65d612cdd 100644 --- a/Spigot-Server-Patches/0394-Duplicate-UUID-Resolve-Option.patch +++ b/Spigot-Server-Patches/0393-Duplicate-UUID-Resolve-Option.patch @@ -1,4 +1,4 @@ -From 7ec41d55e228cbc6587414d09b1aace8e87f318d Mon Sep 17 00:00:00 2001 +From e59340051a3ce62f821029cde0d969b9dad187c7 Mon Sep 17 00:00:00 2001 From: Aikar Date: Sat, 21 Jul 2018 14:27:34 -0400 Subject: [PATCH] Duplicate UUID Resolve Option @@ -33,7 +33,7 @@ But for those who are ok with leaving this inconsistent behavior, you may use WA It is recommended you regenerate the entities, as these were legit entities, and deserve your love. diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -index ef882b897..385b3ac0c 100644 +index ef882b897f..385b3ac0ce 100644 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java @@ -449,4 +449,43 @@ public class PaperWorldConfig { @@ -81,7 +81,7 @@ index ef882b897..385b3ac0c 100644 + } } diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index 1ba855786..1bbac46f6 100644 +index 197c0fe169..ef07f665b7 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -397,6 +397,7 @@ public class Chunk implements IChunkAccess { @@ -93,7 +93,7 @@ index 1ba855786..1bbac46f6 100644 int k = MathHelper.floor(entity.locY / 16.0D); diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 7ded9bc6c..3c6dc5ef0 100644 +index 5711cf6647..fffe26939b 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -2674,6 +2674,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke @@ -105,7 +105,7 @@ index 7ded9bc6c..3c6dc5ef0 100644 this.uniqueID = uuid; this.ap = this.uniqueID.toString(); diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index 21c4b5642..932772331 100644 +index 85e9db8f4b..aaa634b888 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java @@ -1,5 +1,6 @@ @@ -115,7 +115,7 @@ index 21c4b5642..932772331 100644 import com.google.common.collect.ImmutableList; import co.aikar.timings.Timing; import com.google.common.collect.ComparisonChain; -@@ -19,11 +20,14 @@ import it.unimi.dsi.fastutil.objects.ObjectIterator; +@@ -20,12 +21,15 @@ import it.unimi.dsi.fastutil.objects.ObjectIterator; import java.io.File; import java.io.IOException; import java.util.ArrayList; @@ -125,12 +125,13 @@ index 21c4b5642..932772331 100644 +import java.util.Map; // Paper import java.util.Objects; import java.util.Optional; + import java.util.Queue; import java.util.Set; +import java.util.UUID; // Paper import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; import java.util.concurrent.atomic.AtomicInteger; -@@ -489,12 +493,49 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -557,12 +561,49 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { for (int j = 0; j < i; ++j) { List entityslice = aentityslice[j]; // Spigot @@ -182,9 +183,9 @@ index 21c4b5642..932772331 100644 - if (!(entity instanceof EntityHuman) && !this.world.addEntityChunk(entity)) { + if (!(entity instanceof EntityHuman) && (entity.dead || !this.world.addEntityChunk(entity))) { // Paper if (list == null) { - list = Lists.newArrayList(new Entity[] { entity}); + list = Lists.newArrayList(new Entity[]{entity}); } else { -@@ -502,6 +543,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -570,6 +611,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { } } } @@ -193,7 +194,7 @@ index 21c4b5642..932772331 100644 if (list != null) { diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index be3ce3f13..3ed12672e 100644 +index e61381221f..e9e5ecf747 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -2,6 +2,8 @@ package net.minecraft.server; diff --git a/Spigot-Server-Patches/0395-improve-CraftWorld-isChunkLoaded.patch b/Spigot-Server-Patches/0394-improve-CraftWorld-isChunkLoaded.patch similarity index 91% rename from Spigot-Server-Patches/0395-improve-CraftWorld-isChunkLoaded.patch rename to Spigot-Server-Patches/0394-improve-CraftWorld-isChunkLoaded.patch index 2b68fd2ef5..f76fe05f9f 100644 --- a/Spigot-Server-Patches/0395-improve-CraftWorld-isChunkLoaded.patch +++ b/Spigot-Server-Patches/0394-improve-CraftWorld-isChunkLoaded.patch @@ -1,4 +1,4 @@ -From a7d0a14bfad6b16f43caea8778de15a4398b2f0b Mon Sep 17 00:00:00 2001 +From 45d0334a0e2ad547d5ab5d0078c24916b0dda636 Mon Sep 17 00:00:00 2001 From: Shane Freeder Date: Tue, 21 May 2019 02:34:04 +0100 Subject: [PATCH] improve CraftWorld#isChunkLoaded @@ -9,7 +9,7 @@ waiting for the execution queue to get to our request; We can just query the chunk status and get a response now, vs having to wait diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 63f953617..c0207694a 100644 +index 63f953617d..c0207694ac 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -382,8 +382,7 @@ public class CraftWorld implements World { diff --git a/Spigot-Server-Patches/0396-Configurable-Keep-Spawn-Loaded-range-per-world.patch b/Spigot-Server-Patches/0395-Configurable-Keep-Spawn-Loaded-range-per-world.patch similarity index 96% rename from Spigot-Server-Patches/0396-Configurable-Keep-Spawn-Loaded-range-per-world.patch rename to Spigot-Server-Patches/0395-Configurable-Keep-Spawn-Loaded-range-per-world.patch index fc7dbc1c42..2fd07acd7d 100644 --- a/Spigot-Server-Patches/0396-Configurable-Keep-Spawn-Loaded-range-per-world.patch +++ b/Spigot-Server-Patches/0395-Configurable-Keep-Spawn-Loaded-range-per-world.patch @@ -1,4 +1,4 @@ -From ec4028f2618c908a5c212b64c090c866864f3717 Mon Sep 17 00:00:00 2001 +From f6d23363d4f8ca3f631628099325e0039dc07cca Mon Sep 17 00:00:00 2001 From: Aikar Date: Sat, 13 Sep 2014 23:14:43 -0400 Subject: [PATCH] Configurable Keep Spawn Loaded range per world @@ -6,7 +6,7 @@ Subject: [PATCH] Configurable Keep Spawn Loaded range per world This lets you disable it for some worlds and lower it for others. diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -index 385b3ac0c..b85406198 100644 +index 385b3ac0ce..b854061983 100644 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java @@ -488,4 +488,10 @@ public class PaperWorldConfig { @@ -21,7 +21,7 @@ index 385b3ac0c..b85406198 100644 + } } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index f1cd38d42..184f1b00f 100644 +index f1cd38d421..184f1b00f0 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -570,6 +570,13 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant Date: Fri, 24 May 2019 07:53:16 +0100 Subject: [PATCH] Fix some generation concurrency issues diff --git a/src/main/java/net/minecraft/server/DefinedStructureManager.java b/src/main/java/net/minecraft/server/DefinedStructureManager.java -index 6aa0ca395..ed9b5c63f 100644 +index 6aa0ca3959..ed9b5c63f0 100644 --- a/src/main/java/net/minecraft/server/DefinedStructureManager.java +++ b/src/main/java/net/minecraft/server/DefinedStructureManager.java @@ -20,7 +20,7 @@ import org.apache.logging.log4j.Logger; @@ -18,7 +18,7 @@ index 6aa0ca395..ed9b5c63f 100644 private final MinecraftServer d; private final java.nio.file.Path e; diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index d4789478b..3110b510b 100644 +index a12964f904..7e01731f64 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -101,6 +101,23 @@ public abstract class World implements IIBlockAccess, GeneratorAccess, AutoClose @@ -46,7 +46,7 @@ index d4789478b..3110b510b 100644 public CraftWorld getWorld() { return this.world; diff --git a/src/main/java/net/minecraft/server/WorldGenStronghold.java b/src/main/java/net/minecraft/server/WorldGenStronghold.java -index eca27e52e..fb3463fcc 100644 +index eca27e52e9..fb3463fcce 100644 --- a/src/main/java/net/minecraft/server/WorldGenStronghold.java +++ b/src/main/java/net/minecraft/server/WorldGenStronghold.java @@ -10,10 +10,12 @@ import javax.annotation.Nullable; diff --git a/work/BuildData b/work/BuildData index e5aeddf8cf..fb5e14fce5 160000 --- a/work/BuildData +++ b/work/BuildData @@ -1 +1 @@ -Subproject commit e5aeddf8cfe1a4d3d4cf930f1bd0617a4a683437 +Subproject commit fb5e14fce5af96290063bf4ee833c2ad72bef028 diff --git a/work/Bukkit b/work/Bukkit index e041de28f5..6eac6d7062 160000 --- a/work/Bukkit +++ b/work/Bukkit @@ -1 +1 @@ -Subproject commit e041de28f57065576cda440667165070c127c71e +Subproject commit 6eac6d706208e0b32105835b838a16341189ad0f diff --git a/work/CraftBukkit b/work/CraftBukkit index fcb9f90bf3..cb3d14c5a7 160000 --- a/work/CraftBukkit +++ b/work/CraftBukkit @@ -1 +1 @@ -Subproject commit fcb9f90bf320b4b74192d4e37ab1554cc286f4d5 +Subproject commit cb3d14c5a7369f94c2037d179666583e0e3945dd diff --git a/work/Spigot b/work/Spigot index 03bd4b031c..093165d1b5 160000 --- a/work/Spigot +++ b/work/Spigot @@ -1 +1 @@ -Subproject commit 03bd4b031ce87ea24a00e0ebe52560cdb4d56220 +Subproject commit 093165d1b54392a8d8d33e77e74a7f67adc56e9a