diff --git a/patches/api-unmapped/0211-Support-components-in-ItemMeta.patch b/patches/api/0211-Support-components-in-ItemMeta.patch similarity index 100% rename from patches/api-unmapped/0211-Support-components-in-ItemMeta.patch rename to patches/api/0211-Support-components-in-ItemMeta.patch diff --git a/patches/api-unmapped/0212-added-2-new-TargetReasons-for-1.16-mob-behavior.patch b/patches/api/0212-added-2-new-TargetReasons-for-1.16-mob-behavior.patch similarity index 100% rename from patches/api-unmapped/0212-added-2-new-TargetReasons-for-1.16-mob-behavior.patch rename to patches/api/0212-added-2-new-TargetReasons-for-1.16-mob-behavior.patch diff --git a/patches/api-unmapped/0213-Add-entity-liquid-API.patch b/patches/api/0213-Add-entity-liquid-API.patch similarity index 88% rename from patches/api-unmapped/0213-Add-entity-liquid-API.patch rename to patches/api/0213-Add-entity-liquid-API.patch index c38113b716..2bf531eba3 100644 --- a/patches/api-unmapped/0213-Add-entity-liquid-API.patch +++ b/patches/api/0213-Add-entity-liquid-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add entity liquid API diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index 5b382091b1466b25ad42325d5808785a8e948552..ecb5595332ab493224d06a75904e142ab541aad9 100644 +index 4a6d58ef68b782291b4d26a8515be326481f5209..09dc74b0e10d075190009631c84a3710cc1f9177 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -714,5 +714,35 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent +@@ -717,5 +717,35 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent */ @NotNull org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason getEntitySpawnReason(); diff --git a/patches/api-unmapped/0214-Add-PrepareResultEvent-PrepareGrindstoneEvent.patch b/patches/api/0214-Add-PrepareResultEvent-PrepareGrindstoneEvent.patch similarity index 100% rename from patches/api-unmapped/0214-Add-PrepareResultEvent-PrepareGrindstoneEvent.patch rename to patches/api/0214-Add-PrepareResultEvent-PrepareGrindstoneEvent.patch diff --git a/patches/api-unmapped/0215-Allow-delegation-to-vanilla-chunk-gen.patch b/patches/api/0215-Allow-delegation-to-vanilla-chunk-gen.patch similarity index 91% rename from patches/api-unmapped/0215-Allow-delegation-to-vanilla-chunk-gen.patch rename to patches/api/0215-Allow-delegation-to-vanilla-chunk-gen.patch index c270243b46..87622a4f16 100644 --- a/patches/api-unmapped/0215-Allow-delegation-to-vanilla-chunk-gen.patch +++ b/patches/api/0215-Allow-delegation-to-vanilla-chunk-gen.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow delegation to vanilla chunk gen diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 4cffbc4f665e267371e99094e8b7de975fffc223..a1e211653e05f3c9bc2ddf5aa1b69dea1c4bb61b 100644 +index 4eb60f2772c80f9917e88c40ed2214993709e443..26099f95d68540d4e6c54c32fd9699ff01660236 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java @@ -1490,6 +1490,22 @@ public final class Bukkit { @@ -32,7 +32,7 @@ index 4cffbc4f665e267371e99094e8b7de975fffc223..a1e211653e05f3c9bc2ddf5aa1b69dea * Creates a boss bar instance to display to players. The progress * defaults to 1.0 diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 969cba46ba2790dde32724111ad77332c5872e0b..71538dfce294776b8f98046cbddde21dc9ae89e7 100644 +index 22495f576b05e3f0161bfd2c4ea5e5622fdb6302..864211431ebfe9bb333943c31892dfcbdeb33037 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java @@ -1256,6 +1256,20 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi @@ -57,7 +57,7 @@ index 969cba46ba2790dde32724111ad77332c5872e0b..71538dfce294776b8f98046cbddde21d * Creates a boss bar instance to display to players. The progress * defaults to 1.0 diff --git a/src/main/java/org/bukkit/generator/ChunkGenerator.java b/src/main/java/org/bukkit/generator/ChunkGenerator.java -index 7caef27682f22a77de283dd6f391ec8bc0b0312b..5ba77d40a38e5e592ee265e4fbd510043a0b4345 100644 +index 9d7592988a2fbcc70f889b0622adbef014054d00..244a8a93c35d5a84e17672ff745051587bca384c 100644 --- a/src/main/java/org/bukkit/generator/ChunkGenerator.java +++ b/src/main/java/org/bukkit/generator/ChunkGenerator.java @@ -227,6 +227,22 @@ public abstract class ChunkGenerator { diff --git a/patches/server-remapped/0517-Remove-some-streams-from-structures.patch b/patches/removed/1.17/0517-Remove-some-streams-from-structures.patch similarity index 98% rename from patches/server-remapped/0517-Remove-some-streams-from-structures.patch rename to patches/removed/1.17/0517-Remove-some-streams-from-structures.patch index 26f90fc29a..6587728a2f 100644 --- a/patches/server-remapped/0517-Remove-some-streams-from-structures.patch +++ b/patches/removed/1.17/0517-Remove-some-streams-from-structures.patch @@ -5,6 +5,7 @@ Subject: [PATCH] Remove some streams from structures This showed up a lot in the spark profiler, should have a low-medium performance improvement. +Update 1.17: looks like some things in here have been moved to some weird beardifier - has to be investigated further diff --git a/src/main/java/net/minecraft/world/level/StructureFeatureManager.java b/src/main/java/net/minecraft/world/level/StructureFeatureManager.java index e842dbc586234799a05b6df213b686e17b8ed1ac..2f88e015708cadb43a348ba2b144c3dd92bb95a5 100644 --- a/src/main/java/net/minecraft/world/level/StructureFeatureManager.java diff --git a/patches/server-remapped/0528-Fix-Concurrency-issue-in-WeightedList.patch b/patches/removed/1.17/0528-Fix-Concurrency-issue-in-WeightedList.patch similarity index 98% rename from patches/server-remapped/0528-Fix-Concurrency-issue-in-WeightedList.patch rename to patches/removed/1.17/0528-Fix-Concurrency-issue-in-WeightedList.patch index 7c0af04ac0..684716359f 100644 --- a/patches/server-remapped/0528-Fix-Concurrency-issue-in-WeightedList.patch +++ b/patches/removed/1.17/0528-Fix-Concurrency-issue-in-WeightedList.patch @@ -2,7 +2,7 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Aikar Date: Mon, 6 Jul 2020 18:36:41 -0400 Subject: [PATCH] Fix Concurrency issue in WeightedList - +1.17 Update: Looks like whatever this patch is trying to fix might be already fixed upstream, needs to be investigated if multiple threads from worldgen sort at same time, it will crash. So make a copy of the list for sorting purposes. diff --git a/patches/server-remapped/0516-Convert-legacy-attributes-in-Item-Meta.patch b/patches/server/0468-Convert-legacy-attributes-in-Item-Meta.patch similarity index 92% rename from patches/server-remapped/0516-Convert-legacy-attributes-in-Item-Meta.patch rename to patches/server/0468-Convert-legacy-attributes-in-Item-Meta.patch index 9306e47d2d..cf24e3253b 100644 --- a/patches/server-remapped/0516-Convert-legacy-attributes-in-Item-Meta.patch +++ b/patches/server/0468-Convert-legacy-attributes-in-Item-Meta.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Convert legacy attributes in Item Meta diff --git a/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeMap.java b/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeMap.java -index 2d547810125f00680ef7e60dd791d0bddd9ebd3e..320fd6780af2fa99e4e4f4193cbc9338d492dc6d 100644 +index 0520c45197629cbdc2777d9ae11eef572e793160..46c313d581b9af6aa0a48f97ae3cc800a88535f2 100644 --- a/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeMap.java +++ b/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeMap.java @@ -11,6 +11,20 @@ import org.bukkit.craftbukkit.util.CraftNamespacedKey; @@ -30,10 +30,10 @@ index 2d547810125f00680ef7e60dd791d0bddd9ebd3e..320fd6780af2fa99e4e4f4193cbc9338 public CraftAttributeMap(AttributeMap handle) { this.handle = handle; diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -index 45abfebf3f947dcbd2e7b1d95be8ba918f044e51..cb66998dbaa9d93e92ef4045b83efbb0fd486234 100644 +index 6252c3934d72b0d5e6809842bdd26d344cab98c6..daca454b375ab1d5900b6c3c9b6575463e47a3a9 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -@@ -480,7 +480,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -479,7 +479,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { AttributeModifier attribMod = CraftAttributeInstance.convert(nmsModifier); diff --git a/patches/server-remapped/0518-Remove-streams-from-classes-related-villager-gossip.patch b/patches/server/0469-Remove-streams-from-classes-related-villager-gossip.patch similarity index 66% rename from patches/server-remapped/0518-Remove-streams-from-classes-related-villager-gossip.patch rename to patches/server/0469-Remove-streams-from-classes-related-villager-gossip.patch index a3582192b3..d24c65f437 100644 --- a/patches/server-remapped/0518-Remove-streams-from-classes-related-villager-gossip.patch +++ b/patches/server/0469-Remove-streams-from-classes-related-villager-gossip.patch @@ -5,18 +5,18 @@ Subject: [PATCH] Remove streams from classes related villager gossip diff --git a/src/main/java/net/minecraft/world/entity/ai/gossip/GossipContainer.java b/src/main/java/net/minecraft/world/entity/ai/gossip/GossipContainer.java -index 0204f05d989d45c0848f810d1953adf0992ce3c2..57832c392910d22aa81ac2b4816d043dd7ac867a 100644 +index e316f83a7adc7bba06a6a3fdab55cc9c004cb835..bd661bcaf5eb65a4f34eec268ced84894d7d0898 100644 --- a/src/main/java/net/minecraft/world/entity/ai/gossip/GossipContainer.java +++ b/src/main/java/net/minecraft/world/entity/ai/gossip/GossipContainer.java -@@ -9,6 +9,7 @@ import com.mojang.serialization.DynamicOps; +@@ -8,6 +8,7 @@ import com.mojang.serialization.Dynamic; + import com.mojang.serialization.DynamicOps; import it.unimi.dsi.fastutil.objects.Object2IntMap; - import it.unimi.dsi.fastutil.objects.Object2IntMap.Entry; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; +import it.unimi.dsi.fastutil.objects.ObjectArrayList; // Paper import it.unimi.dsi.fastutil.objects.ObjectIterator; + import it.unimi.dsi.fastutil.objects.Object2IntMap.Entry; import java.util.Arrays; - import java.util.Collection; -@@ -51,8 +52,21 @@ public class GossipContainer { +@@ -60,8 +61,21 @@ public class GossipContainer { }); } @@ -34,40 +34,36 @@ index 0204f05d989d45c0848f810d1953adf0992ce3c2..57832c392910d22aa81ac2b4816d043d + // Paper end + private Collection selectGossipsForTransfer(Random random, int count) { -- List list = (List) this.unpack().collect(Collectors.toList()); +- List list = this.unpack().collect(Collectors.toList()); + List list = decompress(); // Paper - Remove streams from reputation - if (list.isEmpty()) { return Collections.emptyList(); -@@ -119,7 +133,7 @@ public class GossipContainer { + } else { +@@ -154,9 +168,9 @@ public class GossipContainer { + } - public Dynamic store(DynamicOps dynamicops) { -- return new Dynamic(dynamicops, dynamicops.createList(this.unpack().map((reputation_b) -> { +- public Dynamic store(DynamicOps dynamicOps) { +- return new Dynamic<>(dynamicOps, dynamicOps.createList(this.unpack().map((gossipEntry) -> { +- return gossipEntry.store(dynamicOps); ++ public Dynamic store(DynamicOps dynamicops) { + return new Dynamic(dynamicops, dynamicops.createList(this.decompress().stream().map((reputation_b) -> { - return reputation_b.store(dynamicops); ++ return reputation_b.store(dynamicops); }).map(Dynamic::getValue))); } -@@ -144,18 +158,30 @@ public class GossipContainer { - public static class EntityGossips { // Paper - make public - -- private final Object2IntMap entries; -+ private final Object2IntMap entries; private Object2IntMap getEntries() { return entries; } // Paper - OBFHELPER - - public EntityGossips() { // Paper - make public - update CraftVillager setReputation on change - this.entries = new Object2IntOpenHashMap(); - } +@@ -181,11 +195,23 @@ public class GossipContainer { + final Object2IntMap entries = new Object2IntOpenHashMap<>(); public int weightedValue(Predicate gossipTypeFilter) { - return this.entries.object2IntEntrySet().stream().filter((entry) -> { - return gossipTypeFilter.test(entry.getKey()); - }).mapToInt((entry) -> { -- return entry.getIntValue() * ((GossipType) entry.getKey()).weight; +- return entry.getIntValue() * (entry.getKey()).weight; - }).sum(); + // Paper start - Remove streams from reputation + int weight = 0; -+ for (Object2IntMap.Entry entry : getEntries().object2IntEntrySet()) { ++ for (Object2IntMap.Entry entry : entries.object2IntEntrySet()) { + if (gossipTypeFilter.test(entry.getKey())) { + weight += entry.getIntValue() * entry.getKey().getWeight(); + } @@ -77,7 +73,7 @@ index 0204f05d989d45c0848f810d1953adf0992ce3c2..57832c392910d22aa81ac2b4816d043d + + public List decompress(UUID uuid) { + List list = new ObjectArrayList<>(); -+ for (Object2IntMap.Entry entry : getEntries().object2IntEntrySet()) { ++ for (Object2IntMap.Entry entry : entries.object2IntEntrySet()) { + list.add(new GossipContainer.GossipEntry(uuid, entry.getKey(), entry.getIntValue())); + } + return list; @@ -86,12 +82,12 @@ index 0204f05d989d45c0848f810d1953adf0992ce3c2..57832c392910d22aa81ac2b4816d043d public Stream unpack(UUID target) { diff --git a/src/main/java/net/minecraft/world/entity/ai/gossip/GossipType.java b/src/main/java/net/minecraft/world/entity/ai/gossip/GossipType.java -index 808eaaae5d534427d197c90c8e53494f4c3bfd82..c775d0df2a8f8a0fd32a8ffc26d6ea6978cbb595 100644 +index c82b26dd4a16d77b7ed06c2919082edd62a3dffc..ad1b49cfa201fe6e80b3cd0204f8ffaf6115c081 100644 --- a/src/main/java/net/minecraft/world/entity/ai/gossip/GossipType.java +++ b/src/main/java/net/minecraft/world/entity/ai/gossip/GossipType.java -@@ -11,7 +11,7 @@ public enum GossipType { - MAJOR_NEGATIVE("major_negative", -5, 100, 10, 10), MINOR_NEGATIVE("minor_negative", -1, 200, 20, 20), MINOR_POSITIVE("minor_positive", 1, 200, 1, 5), MAJOR_POSITIVE("major_positive", 5, 100, 0, 100), TRADING("trading", 1, 25, 2, 20); - +@@ -17,7 +17,7 @@ public enum GossipType { + public static final int REPUTATION_CHANGE_PER_EVERLASTING_MEMORY = 20; + public static final int REPUTATION_CHANGE_PER_TRADE = 2; public final String id; - public final int weight; + public final int weight; public int getWeight() { return weight; } // Paper - OBFHELPER diff --git a/patches/server-remapped/0519-Support-components-in-ItemMeta.patch b/patches/server/0470-Support-components-in-ItemMeta.patch similarity index 87% rename from patches/server-remapped/0519-Support-components-in-ItemMeta.patch rename to patches/server/0470-Support-components-in-ItemMeta.patch index 66bda208cc..e512d7a848 100644 --- a/patches/server-remapped/0519-Support-components-in-ItemMeta.patch +++ b/patches/server/0470-Support-components-in-ItemMeta.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Support components in ItemMeta diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -index cb66998dbaa9d93e92ef4045b83efbb0fd486234..20e008277d1188fc7b31bfb2522ef9f6429cc3fb 100644 +index daca454b375ab1d5900b6c3c9b6575463e47a3a9..81738dac125a7247fff5e51fa595667ef25ba0a1 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -@@ -874,11 +874,23 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -873,11 +873,23 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { return CraftChatMessage.fromJSONComponent(displayName); } @@ -31,8 +31,8 @@ index cb66998dbaa9d93e92ef4045b83efbb0fd486234..20e008277d1188fc7b31bfb2522ef9f6 + // Paper end @Override public boolean hasDisplayName() { - return displayName != null; -@@ -1021,6 +1033,14 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { + return this.displayName != null; +@@ -1020,6 +1032,14 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { return this.lore == null ? null : new ArrayList(Lists.transform(this.lore, CraftChatMessage::fromJSONComponent)); } @@ -47,7 +47,7 @@ index cb66998dbaa9d93e92ef4045b83efbb0fd486234..20e008277d1188fc7b31bfb2522ef9f6 @Override public void setLore(List lore) { if (lore == null || lore.isEmpty()) { -@@ -1035,6 +1055,21 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1034,6 +1054,21 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { } } @@ -68,8 +68,8 @@ index cb66998dbaa9d93e92ef4045b83efbb0fd486234..20e008277d1188fc7b31bfb2522ef9f6 + // Paper end @Override public boolean hasCustomModelData() { - return customModelData != null; -@@ -1496,6 +1531,11 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { + return this.customModelData != null; +@@ -1494,6 +1529,11 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { } for (Object object : addFrom) { diff --git a/patches/server-remapped/0520-Improve-EntityTargetLivingEntityEvent-for-1.16-mobs.patch b/patches/server/0471-Improve-EntityTargetLivingEntityEvent-for-1.16-mobs.patch similarity index 66% rename from patches/server-remapped/0520-Improve-EntityTargetLivingEntityEvent-for-1.16-mobs.patch rename to patches/server/0471-Improve-EntityTargetLivingEntityEvent-for-1.16-mobs.patch index 52cd27053f..3130394c90 100644 --- a/patches/server-remapped/0520-Improve-EntityTargetLivingEntityEvent-for-1.16-mobs.patch +++ b/patches/server/0471-Improve-EntityTargetLivingEntityEvent-for-1.16-mobs.patch @@ -7,36 +7,36 @@ CraftBukkit has a bug in their implementation and is incorrectly handling forget Also adds more target reasons for why it forgot target. diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/StopAttackingIfTargetInvalid.java b/src/main/java/net/minecraft/world/entity/ai/behavior/StopAttackingIfTargetInvalid.java -index 738162a55eb186f66df4d31e017c9b9a7cc604c2..1b6f34c2a185368aac973e8a5316a03950e4314b 100644 +index 6ee0098de2b55a437f914869643adbd1ddbe7faf..00e0babb051b4fd2b9bc4a4129204c08f8ce5af0 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/StopAttackingIfTargetInvalid.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/StopAttackingIfTargetInvalid.java -@@ -33,15 +33,15 @@ public class StopAttackingIfTargetInvalid extends Behavior { +@@ -50,15 +50,15 @@ public class StopAttackingIfTargetInvalid extends Behavior { + LivingEntity entityliving = this.getAttackTarget(entity); - protected void start(ServerLevel world, E entity, long time) { - if (isTiredOfTryingToReachTarget((LivingEntity) entity)) { + if (!entity.canAttack(entityliving)) { - this.clearAttackTarget(entity); -+ this.d(entity, org.bukkit.event.entity.EntityTargetEvent.TargetReason.FORGOT_TARGET); // Paper ++ this.clearAttackTarget(entity, org.bukkit.event.entity.EntityTargetEvent.TargetReason.TARGET_INVALID); // Paper + } else if (StopAttackingIfTargetInvalid.isTiredOfTryingToReachTarget((LivingEntity) entity)) { +- this.clearAttackTarget(entity); ++ this.clearAttackTarget(entity, org.bukkit.event.entity.EntityTargetEvent.TargetReason.FORGOT_TARGET); // Paper } else if (this.isCurrentTargetDeadOrRemoved(entity)) { - this.clearAttackTarget(entity); -+ this.d(entity, org.bukkit.event.entity.EntityTargetEvent.TargetReason.TARGET_DIED); // Paper ++ this.clearAttackTarget(entity, org.bukkit.event.entity.EntityTargetEvent.TargetReason.TARGET_DIED); // Paper } else if (this.isCurrentTargetInDifferentLevel(entity)) { - this.clearAttackTarget(entity); -+ this.d(entity, org.bukkit.event.entity.EntityTargetEvent.TargetReason.TARGET_OTHER_LEVEL); // Paper - } else if (!EntitySelector.ATTACK_ALLOWED.test(this.getAttackTarget(entity))) { -- this.clearAttackTarget(entity); -+ this.d(entity, org.bukkit.event.entity.EntityTargetEvent.TargetReason.TARGET_INVALID); // Paper ++ this.clearAttackTarget(entity, org.bukkit.event.entity.EntityTargetEvent.TargetReason.TARGET_OTHER_LEVEL); // Paper } else if (this.stopAttackingWhen.test(this.getAttackTarget(entity))) { - this.clearAttackTarget(entity); -+ this.d(entity, org.bukkit.event.entity.EntityTargetEvent.TargetReason.TARGET_INVALID); // Paper ++ this.clearAttackTarget(entity, org.bukkit.event.entity.EntityTargetEvent.TargetReason.TARGET_INVALID); // Paper } } -@@ -65,18 +65,21 @@ public class StopAttackingIfTargetInvalid extends Behavior { +@@ -82,19 +82,21 @@ public class StopAttackingIfTargetInvalid extends Behavior { return optional.isPresent() && !((LivingEntity) optional.get()).isAlive(); } -- private void clearAttackTarget(E entity) { -+ private void d(E e0, EntityTargetEvent.TargetReason reason) { +- protected void clearAttackTarget(E entity) { ++ protected void clearAttackTarget(E e0, EntityTargetEvent.TargetReason reason) { // CraftBukkit start - LivingEntity old = entity.getBrain().getMemory(MemoryModuleType.ATTACK_TARGET).orElse(null); - EntityTargetEvent event = CraftEventFactory.callEntityTargetLivingEvent(entity, null, (old != null && !old.isAlive()) ? EntityTargetEvent.TargetReason.TARGET_DIED : EntityTargetEvent.TargetReason.FORGOT_TARGET); @@ -56,7 +56,8 @@ index 738162a55eb186f66df4d31e017c9b9a7cc604c2..1b6f34c2a185368aac973e8a5316a039 + }*/ + // Paper end // CraftBukkit end +- this.onTargetErased.accept(entity); - entity.getBrain().eraseMemory(MemoryModuleType.ATTACK_TARGET); -+ e0.getBrain().eraseMemory(MemoryModuleType.ATTACK_TARGET); ++ this.onTargetErased.accept(e0); } } diff --git a/patches/server-remapped/0521-Add-entity-liquid-API.patch b/patches/server/0472-Add-entity-liquid-API.patch similarity index 81% rename from patches/server-remapped/0521-Add-entity-liquid-API.patch rename to patches/server/0472-Add-entity-liquid-API.patch index 87da8f1dcb..572e26f912 100644 --- a/patches/server-remapped/0521-Add-entity-liquid-API.patch +++ b/patches/server/0472-Add-entity-liquid-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add entity liquid API diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index e9a658b11e2b6683831dc3f5bd20be9a7840ed69..aea2457510c75214bbb925307155611e981f115f 100644 +index 96da70f1077f70c4bd5ba1196292a856deb25286..8531f1deea95aa8e73e75b714426c915a52a74af 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1164,12 +1164,13 @@ public abstract class Entity implements Nameable, CommandSource, net.minecraft.s +@@ -1305,12 +1305,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n return this.wasTouchingWater; } @@ -23,7 +23,7 @@ index e9a658b11e2b6683831dc3f5bd20be9a7840ed69..aea2457510c75214bbb925307155611e private boolean isInBubbleColumn() { return this.level.getBlockState(this.blockPosition()).is(Blocks.BUBBLE_COLUMN); } -@@ -1183,6 +1184,7 @@ public abstract class Entity implements Nameable, CommandSource, net.minecraft.s +@@ -1324,6 +1325,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n return this.isInWater() || this.isInRain() || this.isInBubbleColumn(); } @@ -31,8 +31,8 @@ index e9a658b11e2b6683831dc3f5bd20be9a7840ed69..aea2457510c75214bbb925307155611e public boolean isInWaterOrBubble() { return this.isInWater() || this.isInBubbleColumn(); } -@@ -1325,6 +1327,7 @@ public abstract class Entity implements Nameable, CommandSource, net.minecraft.s - return this.fluidOnEyes == tag; +@@ -1463,6 +1465,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n + return this.fluidOnEyes == fluidTag; } + public final boolean isInLava() { return isInLava(); } // Paper - OBFHELPER @@ -40,10 +40,10 @@ index e9a658b11e2b6683831dc3f5bd20be9a7840ed69..aea2457510c75214bbb925307155611e return !this.firstTick && this.fluidHeight.getDouble(FluidTags.LAVA) > 0.0D; } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 76d652386806fd11961611486a1d0a12fe9616a4..deeae62e9926f9435907c68e7d35e7420f5e79dd 100644 +index 98d3818d38f487fc7e1302ee4af9e4898efec809..26bfbab1e8332f91c4d2814cd0056ca2ea7ddab7 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -1135,5 +1135,29 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1169,5 +1169,29 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { public org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason getEntitySpawnReason() { return getHandle().spawnReason; } diff --git a/patches/server-remapped/0522-Update-itemstack-legacy-name-and-lore.patch b/patches/server/0473-Update-itemstack-legacy-name-and-lore.patch similarity index 70% rename from patches/server-remapped/0522-Update-itemstack-legacy-name-and-lore.patch rename to patches/server/0473-Update-itemstack-legacy-name-and-lore.patch index 1b999bcc30..02b04dfbf2 100644 --- a/patches/server-remapped/0522-Update-itemstack-legacy-name-and-lore.patch +++ b/patches/server/0473-Update-itemstack-legacy-name-and-lore.patch @@ -5,19 +5,11 @@ Subject: [PATCH] Update itemstack legacy name and lore diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 458cdfbeac9d757c9721acd4557a548affa0ede1..04b717326524f400da3562655c25db59e72814ec 100644 +index 10f55ba189d12c46e0ef38b0b96a29894b4fba93..c1667fa43194a17eeeb2ac9c5d57daf5cb131958 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -49,6 +49,7 @@ import net.minecraft.core.Registry; - import net.minecraft.nbt.CompoundTag; - import net.minecraft.nbt.ListTag; - import net.minecraft.nbt.NbtOps; -+import net.minecraft.nbt.StringTag; - import net.minecraft.nbt.Tag; - import net.minecraft.network.chat.Component; - import net.minecraft.network.chat.ComponentUtils; -@@ -135,6 +136,44 @@ public final class ItemStack { - list.sort((Comparator) enchantSorter); // Paper +@@ -170,6 +170,44 @@ public final class ItemStack { + list.sort((Comparator) enchantSorter); // Paper } catch (Exception ignored) {} } + @@ -42,7 +34,7 @@ index 458cdfbeac9d757c9721acd4557a548affa0ede1..04b717326524f400da3562655c25db59 + try { + list.set(index, convert(json)); + } catch (JsonParseException e) { -+ list.set(index, StringTag.create(org.bukkit.craftbukkit.util.CraftChatMessage.toJSON(new TextComponent("")))); ++ list.set(index, net.minecraft.nbt.StringTag.create(org.bukkit.craftbukkit.util.CraftChatMessage.toJSON(new TextComponent("")))); + } + } + } @@ -50,26 +42,26 @@ index 458cdfbeac9d757c9721acd4557a548affa0ede1..04b717326524f400da3562655c25db59 + } + } + -+ private StringTag convert(String json) { ++ private net.minecraft.nbt.StringTag convert(String json) { + Component component = Component.Serializer.jsonToComponent(json); + if (component instanceof TextComponent && component.getContents().contains("\u00A7") && component.getSiblings().isEmpty()) { + // Only convert if the root component is a single comp with legacy in it, don't convert already normal components + component = org.bukkit.craftbukkit.util.CraftChatMessage.fromString(component.getContents())[0]; + } -+ return StringTag.create(org.bukkit.craftbukkit.util.CraftChatMessage.toJSON(component)); ++ return net.minecraft.nbt.StringTag.create(org.bukkit.craftbukkit.util.CraftChatMessage.toJSON(component)); + } // Paper end public ItemStack(ItemLike item) { -@@ -180,6 +219,7 @@ public final class ItemStack { - // CraftBukkit start - make defensive copy as this data may be coming from the save thread +@@ -216,6 +254,7 @@ public final class ItemStack { this.tag = (CompoundTag) nbttagcompound.getCompound("tag").copy(); - processEnchantOrder(this.tag); // Paper -+ processText(); // Paper - this.getItem().verifyTagAfterLoad(this.tag); // CraftBukkit end + this.processEnchantOrder(this.tag); // Paper ++ this.processText(); // Paper + this.getItem().verifyTagAfterLoad(this.tag); } -@@ -663,6 +703,7 @@ public final class ItemStack { + +@@ -728,6 +767,7 @@ public final class ItemStack { } } diff --git a/patches/server-remapped/0523-Spawn-player-in-correct-world-on-login.patch b/patches/server/0474-Spawn-player-in-correct-world-on-login.patch similarity index 90% rename from patches/server-remapped/0523-Spawn-player-in-correct-world-on-login.patch rename to patches/server/0474-Spawn-player-in-correct-world-on-login.patch index 5ec61b9dae..2de440c5aa 100644 --- a/patches/server-remapped/0523-Spawn-player-in-correct-world-on-login.patch +++ b/patches/server/0474-Spawn-player-in-correct-world-on-login.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Spawn player in correct world on login diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 713cc88dd067c0d918f253b1845f42c0d9eb920f..f36c92e42300c2056075610caf63f8bef0e7edda 100644 +index 7eb3088d47ff78198e01a3a12b0ce6abe9d6ca6b..66735bbc2528c5812c9df14ef7cd91cb69d903b2 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -192,7 +192,18 @@ public abstract class PlayerList { +@@ -193,7 +193,18 @@ public abstract class PlayerList { }String lastKnownName = s; // Paper // CraftBukkit end diff --git a/patches/server-remapped/0524-Add-PrepareResultEvent.patch b/patches/server/0475-Add-PrepareResultEvent.patch similarity index 83% rename from patches/server-remapped/0524-Add-PrepareResultEvent.patch rename to patches/server/0475-Add-PrepareResultEvent.patch index be0c76ca05..53d3c6585c 100644 --- a/patches/server-remapped/0524-Add-PrepareResultEvent.patch +++ b/patches/server/0475-Add-PrepareResultEvent.patch @@ -8,10 +8,10 @@ Adds a new event for all crafting stations that generate a result slot item Anvil, Grindstone and Smithing now extend this event diff --git a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java -index 72b0cfcc5aab03e14e63440c734436e9c1432111..bc39e7464646d712b085251dc0277a5b1ec0a393 100644 +index 92681e56cea92a4600ef268b21c1b56e15fe3a03..766c907f92ca8cb19b22cd19185cc92603aeca03 100644 --- a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java -@@ -141,6 +141,7 @@ public abstract class AbstractContainerMenu { +@@ -214,6 +214,7 @@ public abstract class AbstractContainerMenu { return nonnulllist; } @@ -20,22 +20,22 @@ index 72b0cfcc5aab03e14e63440c734436e9c1432111..bc39e7464646d712b085251dc0277a5b int i; diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -index 3d53edae7e3d5bb00913384ad0eb67551a65750e..492a42ad5dc460717de8179d522d042cee11db60 100644 +index 1dad9577370bb58b27b32b997a505ce5145a6769..56d3ed1cdafd7904c35be5db568b9975a97418a7 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -@@ -307,6 +307,7 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -317,6 +317,7 @@ public class AnvilMenu extends ItemCombinerMenu { } this.createResult(); + org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareResultEvent(this, 2); // Paper } - // CraftBukkit start + public int getCost() { diff --git a/src/main/java/net/minecraft/world/inventory/CartographyTableMenu.java b/src/main/java/net/minecraft/world/inventory/CartographyTableMenu.java -index 6183e33237a231be388a8ace0ca3b56720db13ee..464f27d3f0cc694257a550cf873a0ee4534e2189 100644 +index 528fc4ee870303c6c42c603a9869f7e47825fd40..c96abb8945fe5dc2f963f548ccdd87272a445a7a 100644 --- a/src/main/java/net/minecraft/world/inventory/CartographyTableMenu.java +++ b/src/main/java/net/minecraft/world/inventory/CartographyTableMenu.java -@@ -146,6 +146,7 @@ public class CartographyTableMenu extends AbstractContainerMenu { +@@ -150,6 +150,7 @@ public class CartographyTableMenu extends AbstractContainerMenu { this.setupResultSlot(itemstack, itemstack1, itemstack2); } @@ -44,10 +44,10 @@ index 6183e33237a231be388a8ace0ca3b56720db13ee..464f27d3f0cc694257a550cf873a0ee4 private void setupResultSlot(ItemStack map, ItemStack item, ItemStack oldResult) { diff --git a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java -index e9e830117fe3e4e02a51eef8671a3d3b48c2858e..329a6d70d53c13cd554c64996f2ddc489bdc1e94 100644 +index 34574f3945d2a7b4ab6a71adb2408b9811a3cb0d..b260216460b0bbf75edc631bb69e3e4fc94d459a 100644 --- a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java +++ b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java -@@ -156,6 +156,7 @@ public class GrindstoneMenu extends AbstractContainerMenu { +@@ -160,6 +160,7 @@ public class GrindstoneMenu extends AbstractContainerMenu { super.slotsChanged(inventory); if (inventory == this.repairSlots) { this.createResult(); @@ -56,10 +56,10 @@ index e9e830117fe3e4e02a51eef8671a3d3b48c2858e..329a6d70d53c13cd554c64996f2ddc48 } diff --git a/src/main/java/net/minecraft/world/inventory/ItemCombinerMenu.java b/src/main/java/net/minecraft/world/inventory/ItemCombinerMenu.java -index d944cbcdf4d886d3b8b171edd8e2ac8a54dc19b9..8704c4dbead1ff661d84b751479babac5ebc5839 100644 +index 982b7ac02335bfa2b752d900a5d0392c6660745b..eb1a0c6ce8ceab4955a5ac3d2fdf4d869a2a34ae 100644 --- a/src/main/java/net/minecraft/world/inventory/ItemCombinerMenu.java +++ b/src/main/java/net/minecraft/world/inventory/ItemCombinerMenu.java -@@ -71,6 +71,7 @@ public abstract class ItemCombinerMenu extends AbstractContainerMenu { +@@ -78,6 +78,7 @@ public abstract class ItemCombinerMenu extends AbstractContainerMenu { super.slotsChanged(inventory); if (inventory == this.inputSlots) { this.createResult(); @@ -68,10 +68,10 @@ index d944cbcdf4d886d3b8b171edd8e2ac8a54dc19b9..8704c4dbead1ff661d84b751479babac } diff --git a/src/main/java/net/minecraft/world/inventory/LoomMenu.java b/src/main/java/net/minecraft/world/inventory/LoomMenu.java -index b33daf92752841e46f2fd9fa20dc1cfa79aa423a..3460fb2bb1451b8456a7fe42449ec4dbce641f40 100644 +index 6d40ef2459e0ba5927ee723495cd6f5fd3101859..7e8b6e0e69876cb7bfd444a8dd72edf8289e6dd1 100644 --- a/src/main/java/net/minecraft/world/inventory/LoomMenu.java +++ b/src/main/java/net/minecraft/world/inventory/LoomMenu.java -@@ -188,7 +188,8 @@ public class LoomMenu extends AbstractContainerMenu { +@@ -196,7 +196,8 @@ public class LoomMenu extends AbstractContainerMenu { } this.setupResultSlot(); @@ -80,12 +80,12 @@ index b33daf92752841e46f2fd9fa20dc1cfa79aa423a..3460fb2bb1451b8456a7fe42449ec4db + org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareResultEvent(this, 3); // Paper } - @Override + public void registerUpdateListener(Runnable inventoryChangeListener) { diff --git a/src/main/java/net/minecraft/world/inventory/SmithingMenu.java b/src/main/java/net/minecraft/world/inventory/SmithingMenu.java -index befb2e6294c3d0a16ae4766c3804d04fd4e1bba5..44aa1f4f91ae9f84fc7ed38cc6b3c11f07d55ba1 100644 +index edb88d59a7b81b9d8b0328ce54ff1fbcf47323ae..c2b997bff39c8bf51c5f8f788696c92920b04868 100644 --- a/src/main/java/net/minecraft/world/inventory/SmithingMenu.java +++ b/src/main/java/net/minecraft/world/inventory/SmithingMenu.java -@@ -78,6 +78,7 @@ public class SmithingMenu extends ItemCombinerMenu { +@@ -76,6 +76,7 @@ public class SmithingMenu extends ItemCombinerMenu { // CraftBukkit end } @@ -94,10 +94,10 @@ index befb2e6294c3d0a16ae4766c3804d04fd4e1bba5..44aa1f4f91ae9f84fc7ed38cc6b3c11f @Override diff --git a/src/main/java/net/minecraft/world/inventory/StonecutterMenu.java b/src/main/java/net/minecraft/world/inventory/StonecutterMenu.java -index febf7fa112c470888af171e585ab6a052abb46ca..072bac443e7c54ac2b92e1d93b757bdacf230fbb 100644 +index ddd34b07f7cf39a8b5ad51bdefb6e9d7cbf8f393..eac9765ecf0b33cab8b04204591de8d56c6f75c7 100644 --- a/src/main/java/net/minecraft/world/inventory/StonecutterMenu.java +++ b/src/main/java/net/minecraft/world/inventory/StonecutterMenu.java -@@ -155,6 +155,7 @@ public class StonecutterMenu extends AbstractContainerMenu { +@@ -176,6 +176,7 @@ public class StonecutterMenu extends AbstractContainerMenu { this.setupRecipeList(inventory, itemstack); } @@ -106,10 +106,10 @@ index febf7fa112c470888af171e585ab6a052abb46ca..072bac443e7c54ac2b92e1d93b757bda private void setupRecipeList(Container input, ItemStack stack) { diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 87fe7f4f5ed70bf1b3dc1e2a392ba42a1f8f568b..64cfa14aa4e32430a6970fd4f3654a56146ba807 100644 +index d4b8035160332d98c37918f62ee9e0d630e23ee8..fc9c63b73211d05321776648d6ba9c54f14ba83d 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1522,19 +1522,44 @@ public class CraftEventFactory { +@@ -1529,19 +1529,44 @@ public class CraftEventFactory { return event; } diff --git a/patches/server-remapped/0525-Allow-delegation-to-vanilla-chunk-gen.patch b/patches/server/0476-Allow-delegation-to-vanilla-chunk-gen.patch similarity index 64% rename from patches/server-remapped/0525-Allow-delegation-to-vanilla-chunk-gen.patch rename to patches/server/0476-Allow-delegation-to-vanilla-chunk-gen.patch index 183e23a96c..3719bedef5 100644 --- a/patches/server-remapped/0525-Allow-delegation-to-vanilla-chunk-gen.patch +++ b/patches/server/0476-Allow-delegation-to-vanilla-chunk-gen.patch @@ -4,33 +4,11 @@ Date: Wed, 29 Apr 2020 02:10:32 +0200 Subject: [PATCH] Allow delegation to vanilla chunk gen -diff --git a/src/main/java/net/minecraft/world/level/chunk/UpgradeData.java b/src/main/java/net/minecraft/world/level/chunk/UpgradeData.java -index aaa8d78b131c4095b36c6db6078f57f927c15374..54e560348836498f16dde017c6e7e3fcc263eeea 100644 ---- a/src/main/java/net/minecraft/world/level/chunk/UpgradeData.java -+++ b/src/main/java/net/minecraft/world/level/chunk/UpgradeData.java -@@ -36,7 +36,7 @@ import org.apache.logging.log4j.Logger; - public class UpgradeData { - - private static final Logger LOGGER = LogManager.getLogger(); -- public static final UpgradeData EMPTY = new UpgradeData(); -+ public static final UpgradeData EMPTY = new UpgradeData(); public static UpgradeData getEmptyConverter() { return EMPTY; } // Paper - obfhelper - private static final Direction8[] DIRECTIONS = Direction8.values(); - private final EnumSet sides; - private final int[][] index; -@@ -322,7 +322,7 @@ public class UpgradeData { - if ((Integer) iblockdata.getValue(BlockStateProperties.DISTANCE) >= j) { - world.setBlock(blockposition, (BlockState) iblockdata.setValue(BlockStateProperties.DISTANCE, j), 18); - if (i != 7) { -- Direction[] aenumdirection = null.f; -+ Direction[] aenumdirection = DIRECTIONS; // Paper - decomp fix - int k = aenumdirection.length; - - for (int l = 0; l < k; ++l) { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 2ec41cb87cec97780f1fa8abfbb756fca4dba1bf..e301aee53b19fc3f93a36d0ed03a649741123bfa 100644 +index 6bc5ba51c90723c7138b1b5d2381cb215f1e5271..df2c41d18377d8519d5537186d529ecc1901f58a 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -2032,6 +2032,32 @@ public final class CraftServer implements Server { +@@ -2033,6 +2033,32 @@ public final class CraftServer implements Server { return new CraftChunkData(world); } @@ -64,20 +42,20 @@ index 2ec41cb87cec97780f1fa8abfbb756fca4dba1bf..e301aee53b19fc3f93a36d0ed03a6497 public BossBar createBossBar(String title, BarColor color, BarStyle style, BarFlag... flags) { return new CraftBossBar(title, color, style, flags); diff --git a/src/main/java/org/bukkit/craftbukkit/generator/CraftChunkData.java b/src/main/java/org/bukkit/craftbukkit/generator/CraftChunkData.java -index 8d72cd6a44cf462cfe3adac9bf99a16883a587df..fd2cb2a584fea360fcf8180338708f35c4e3dc1f 100644 +index 7f8d9e82c1fadc0621f6e94adbc31f7774f9568f..2f0849dd05605e693dcc12c3d0842e8dfa53a869 100644 --- a/src/main/java/org/bukkit/craftbukkit/generator/CraftChunkData.java +++ b/src/main/java/org/bukkit/craftbukkit/generator/CraftChunkData.java -@@ -19,7 +19,7 @@ import org.bukkit.material.MaterialData; - */ +@@ -20,7 +20,7 @@ import org.bukkit.material.MaterialData; public final class CraftChunkData implements ChunkGenerator.ChunkData { + private final int minHeight; private final int maxHeight; - private final LevelChunkSection[] sections; + private LevelChunkSection[] sections; // Paper - remove final private Set tiles; - private World world; // Paper - Anti-Xray - Add world -@@ -168,6 +168,12 @@ public final class CraftChunkData implements ChunkGenerator.ChunkData { - return sections; + public CraftChunkData(World world) { +@@ -171,6 +171,12 @@ public final class CraftChunkData implements ChunkGenerator.ChunkData { + return this.sections; } + // Paper start @@ -87,13 +65,13 @@ index 8d72cd6a44cf462cfe3adac9bf99a16883a587df..fd2cb2a584fea360fcf8180338708f35 + // Paper end + Set getTiles() { - return tiles; + return this.tiles; } diff --git a/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java b/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java -index eba3a6a2467116d93945ab2d5dc0a6f41d76f547..e25dc1c87752fcf73181cb02ddaf84b258ac4e9d 100644 +index e9502acf47b94e529f3ce273add9b7e0f4fe6d72..a4c3e307e861e6c220425d35fe228dcb9dc7ef31 100644 --- a/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java +++ b/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java -@@ -32,7 +32,7 @@ import org.bukkit.generator.ChunkGenerator.ChunkData; +@@ -34,7 +34,7 @@ import org.bukkit.generator.ChunkGenerator.ChunkData; public class CustomChunkGenerator extends InternalChunkGenerator { diff --git a/patches/server-remapped/0526-Don-t-check-chunk-for-portal-on-world-gen-entity-add.patch b/patches/server/0477-Don-t-check-chunk-for-portal-on-world-gen-entity-add.patch similarity index 84% rename from patches/server-remapped/0526-Don-t-check-chunk-for-portal-on-world-gen-entity-add.patch rename to patches/server/0477-Don-t-check-chunk-for-portal-on-world-gen-entity-add.patch index 253148a7ee..f3eb70e20f 100644 --- a/patches/server-remapped/0526-Don-t-check-chunk-for-portal-on-world-gen-entity-add.patch +++ b/patches/server/0477-Don-t-check-chunk-for-portal-on-world-gen-entity-add.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Don't check chunk for portal on world gen entity add diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index cec1e6105b8c2ac3d1482c00482d53d6be0d38d1..9724d4222311345a44aa101ec47523a1909fbe8f 100644 +index 3a83cbe8fb1a5bfc7e7b699686b92561bf0cdba0..8781b3ac40f214974ebb3e06c789f1717735d3a6 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -3038,7 +3038,7 @@ public abstract class LivingEntity extends Entity { +@@ -3353,7 +3353,7 @@ public abstract class LivingEntity extends Entity { Entity entity = this.getVehicle(); super.stopRiding(suppressCancellation); // Paper - suppress diff --git a/patches/server-remapped/0527-Optimize-NetworkManager-Exception-Handling.patch b/patches/server/0478-Optimize-NetworkManager-Exception-Handling.patch similarity index 51% rename from patches/server-remapped/0527-Optimize-NetworkManager-Exception-Handling.patch rename to patches/server/0478-Optimize-NetworkManager-Exception-Handling.patch index dc51ae715d..7e00ab11c3 100644 --- a/patches/server-remapped/0527-Optimize-NetworkManager-Exception-Handling.patch +++ b/patches/server/0478-Optimize-NetworkManager-Exception-Handling.patch @@ -5,82 +5,44 @@ Subject: [PATCH] Optimize NetworkManager Exception Handling diff --git a/src/main/java/net/minecraft/network/ConnectionProtocol.java b/src/main/java/net/minecraft/network/ConnectionProtocol.java -index fca778d131aa10e88d5f7ed8d57eda6803318184..47a5ee9db64184f173af5984765e9b6d1a8ec367 100644 +index e722cf3a8e816b0c7405e6282591d9fa8d5bfa61..22d1758e52f56b39a2c110f123bdbf80898c4d92 100644 --- a/src/main/java/net/minecraft/network/ConnectionProtocol.java +++ b/src/main/java/net/minecraft/network/ConnectionProtocol.java -@@ -151,6 +151,7 @@ public enum ConnectionProtocol { +@@ -275,6 +275,7 @@ public enum ConnectionProtocol { @Nullable - public Packet createPacket(int id) { -+ if (id < 0 || id >= this.idToConstructor.size()) return null; // Paper - Supplier> supplier = (Supplier) this.idToConstructor.get(id); - - return supplier != null ? (Packet) supplier.get() : null; + public Packet createPacket(int id, FriendlyByteBuf buf) { ++ if (id < 0 || id >= this.idToDeserializer.size()) return null; // Paper + Function> function = this.idToDeserializer.get(id); + return function != null ? function.apply(buf) : null; + } diff --git a/src/main/java/net/minecraft/network/Varint21FrameDecoder.java b/src/main/java/net/minecraft/network/Varint21FrameDecoder.java -index 8363b63f8dbd16948eeba3f912dc43605ad8db6a..fbebef6525a0872fecc081c7f63f27c1a04e11dc 100644 +index 5356f6484751e4b4740720aecac90bdfe044283b..ed54479b14dcfc736ac90749106557f0ff537550 100644 --- a/src/main/java/net/minecraft/network/Varint21FrameDecoder.java +++ b/src/main/java/net/minecraft/network/Varint21FrameDecoder.java -@@ -9,11 +9,21 @@ import java.util.List; +@@ -8,9 +8,20 @@ import io.netty.handler.codec.CorruptedFrameException; + import java.util.List; public class Varint21FrameDecoder extends ByteToMessageDecoder { - + private final byte[] lenBuf = new byte[3]; // Paper - public Varint21FrameDecoder() {} - - protected void decode(ChannelHandlerContext channelhandlercontext, ByteBuf bytebuf, List list) throws Exception { + @Override + protected void decode(ChannelHandlerContext channelHandlerContext, ByteBuf byteBuf, List list) { + // Paper start - if channel is not active just discard the packet -+ if (!channelhandlercontext.channel().isActive()) { -+ bytebuf.skipBytes(bytebuf.readableBytes()); ++ if (!channelHandlerContext.channel().isActive()) { ++ byteBuf.skipBytes(byteBuf.readableBytes()); + return; + } + // Paper end - bytebuf.markReaderIndex(); -- byte[] abyte = new byte[3]; + byteBuf.markReaderIndex(); + // Paper start - reuse temporary length buffer + byte[] abyte = lenBuf; + java.util.Arrays.fill(abyte, (byte) 0); + // Paper end + byte[] bs = new byte[3]; - for (int i = 0; i < abyte.length; ++i) { - if (!bytebuf.isReadable()) { -diff --git a/src/main/java/net/minecraft/network/protocol/Packet.java b/src/main/java/net/minecraft/network/protocol/Packet.java -index 22db5d0d2cc33498ca40162c66aa3b5fbf2f569f..3163502cb9bbbb5a00e7f06cf0032b1ad93c354d 100644 ---- a/src/main/java/net/minecraft/network/protocol/Packet.java -+++ b/src/main/java/net/minecraft/network/protocol/Packet.java -@@ -2,8 +2,10 @@ package net.minecraft.network.protocol; - - import io.netty.channel.ChannelFuture; // Paper - import java.io.IOException; -+import net.minecraft.network.Connection; - import net.minecraft.network.FriendlyByteBuf; - import net.minecraft.network.PacketListener; -+import net.minecraft.server.level.ServerPlayer; - - public interface Packet { - -@@ -18,17 +20,17 @@ public interface Packet { - /** - * @param player Null if not at PLAY stage yet - */ -- default void onPacketDispatch(@javax.annotation.Nullable EntityPlayer player) {} -+ default void onPacketDispatch(@javax.annotation.Nullable ServerPlayer player) {} - - /** - * @param player Null if not at PLAY stage yet - * @param future Can be null if packet was cancelled - */ -- default void onPacketDispatchFinish(@javax.annotation.Nullable EntityPlayer player, @javax.annotation.Nullable ChannelFuture future) {} -+ default void onPacketDispatchFinish(@javax.annotation.Nullable ServerPlayer player, @javax.annotation.Nullable ChannelFuture future) {} - default boolean hasFinishListener() { return false; } - default boolean isReady() { return true; } - default java.util.List getExtraPackets() { return null; } -- default boolean packetTooLarge(NetworkManager manager) { -+ default boolean packetTooLarge(Connection manager) { - return false; - } - // Paper end + for(int i = 0; i < bs.length; ++i) { diff --git a/src/main/java/net/minecraft/network/protocol/PacketUtils.java b/src/main/java/net/minecraft/network/protocol/PacketUtils.java -index 4ae8201d7dcffeb3298a4e593f978e15ffc5ac15..5812e518222e419da141ab0f70d1e7a3939a0df0 100644 +index 449f1b2f5dca350dc0912e14c8c2bf3eb4652b92..9e944aa41c184ebde1179399def662b2f08eef62 100644 --- a/src/main/java/net/minecraft/network/protocol/PacketUtils.java +++ b/src/main/java/net/minecraft/network/protocol/PacketUtils.java @@ -1,6 +1,9 @@ @@ -93,7 +55,7 @@ index 4ae8201d7dcffeb3298a4e593f978e15ffc5ac15..5812e518222e419da141ab0f70d1e7a3 import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import co.aikar.timings.MinecraftTimings; // Paper -@@ -30,6 +33,21 @@ public class PacketUtils { +@@ -32,6 +35,21 @@ public class PacketUtils { try (Timing ignored = timing.startTiming()) { // Paper - timings packet.handle(listener); } // Paper - timings @@ -113,5 +75,5 @@ index 4ae8201d7dcffeb3298a4e593f978e15ffc5ac15..5812e518222e419da141ab0f70d1e7a3 + } + // Paper end } else { - PacketUtils.LOGGER.debug("Ignoring packet due to disconnection: " + packet); + PacketUtils.LOGGER.debug("Ignoring packet due to disconnection: {}", packet); } diff --git a/patches/server-remapped/0529-Optimize-the-advancement-data-player-iteration-to-be.patch b/patches/server/0479-Optimize-the-advancement-data-player-iteration-to-be.patch similarity index 91% rename from patches/server-remapped/0529-Optimize-the-advancement-data-player-iteration-to-be.patch rename to patches/server/0479-Optimize-the-advancement-data-player-iteration-to-be.patch index a23f3a28c9..74142c996a 100644 --- a/patches/server-remapped/0529-Optimize-the-advancement-data-player-iteration-to-be.patch +++ b/patches/server/0479-Optimize-the-advancement-data-player-iteration-to-be.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Optimize the advancement data player iteration to be O(N) diff --git a/src/main/java/net/minecraft/server/PlayerAdvancements.java b/src/main/java/net/minecraft/server/PlayerAdvancements.java -index 5ab62fc74085bbbb0c81b2f4d16a35c9345cd1f1..af8553f1b22e24fbeb732937fbbffc95cb9dfe90 100644 +index 3d82f984648605d58fae3c57f145d0da8a2ae225..ce02a467c1c3434f2cdb112ceb9794196069a820 100644 --- a/src/main/java/net/minecraft/server/PlayerAdvancements.java +++ b/src/main/java/net/minecraft/server/PlayerAdvancements.java -@@ -457,6 +457,16 @@ public class PlayerAdvancements { +@@ -437,6 +437,16 @@ public class PlayerAdvancements { } private void ensureVisibility(Advancement advancement) { @@ -26,7 +26,7 @@ index 5ab62fc74085bbbb0c81b2f4d16a35c9345cd1f1..af8553f1b22e24fbeb732937fbbffc95 boolean flag = this.shouldBeVisible(advancement); boolean flag1 = this.visible.contains(advancement); -@@ -472,15 +482,23 @@ public class PlayerAdvancements { +@@ -452,15 +462,23 @@ public class PlayerAdvancements { } if (flag != flag1 && advancement.getParent() != null) { diff --git a/patches/server-remapped/0530-Fix-arrows-never-despawning-MC-125757.patch b/patches/server/0480-Fix-arrows-never-despawning-MC-125757.patch similarity index 87% rename from patches/server-remapped/0530-Fix-arrows-never-despawning-MC-125757.patch rename to patches/server/0480-Fix-arrows-never-despawning-MC-125757.patch index 677615b010..33bedb131a 100644 --- a/patches/server-remapped/0530-Fix-arrows-never-despawning-MC-125757.patch +++ b/patches/server/0480-Fix-arrows-never-despawning-MC-125757.patch @@ -9,10 +9,10 @@ instead of getting stuck in a never despawn state (bubble columns, etc). diff --git a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -index 6225f390b51733217a809910182f58acea1055e2..73df844610530bbfb133bd59d00015117b59b215 100644 +index 988986d549dae93cfcb8147126c84f263efe3452..b6b729424dfade696cdf7117fc2bdf0dba03485f 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java +++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -@@ -169,6 +169,7 @@ public abstract class AbstractArrow extends Projectile { +@@ -198,6 +198,7 @@ public abstract class AbstractArrow extends Projectile { ++this.inGroundTime; } else { @@ -20,7 +20,7 @@ index 6225f390b51733217a809910182f58acea1055e2..73df844610530bbfb133bd59d0001511 this.inGroundTime = 0; Vec3 vec3d2 = this.position(); -@@ -290,6 +291,7 @@ public abstract class AbstractArrow extends Projectile { +@@ -319,6 +320,7 @@ public abstract class AbstractArrow extends Projectile { } diff --git a/patches/server-remapped/0531-Thread-Safe-Vanilla-Command-permission-checking.patch b/patches/server/0481-Thread-Safe-Vanilla-Command-permission-checking.patch similarity index 85% rename from patches/server-remapped/0531-Thread-Safe-Vanilla-Command-permission-checking.patch rename to patches/server/0481-Thread-Safe-Vanilla-Command-permission-checking.patch index 41cf790265..a297a9a47f 100644 --- a/patches/server-remapped/0531-Thread-Safe-Vanilla-Command-permission-checking.patch +++ b/patches/server/0481-Thread-Safe-Vanilla-Command-permission-checking.patch @@ -9,7 +9,7 @@ to race conditions. Plus, .canUse we want to be safe for async anyways. diff --git a/src/main/java/com/mojang/brigadier/tree/CommandNode.java b/src/main/java/com/mojang/brigadier/tree/CommandNode.java -index 5c35cef42af4053332c02b4960c227fe95d4c197..757ed7a0887f4bdb187ca7c757db5c188362f1a0 100644 +index aa3a1795850a419f624f14bd7c4daab0020779d0..39708be1b445791b053023dec16ad7d4efcc9048 100644 --- a/src/main/java/com/mojang/brigadier/tree/CommandNode.java +++ b/src/main/java/com/mojang/brigadier/tree/CommandNode.java @@ -74,10 +74,10 @@ public abstract class CommandNode implements Comparable> { @@ -18,7 +18,7 @@ index 5c35cef42af4053332c02b4960c227fe95d4c197..757ed7a0887f4bdb187ca7c757db5c18 try { - ((CommandSourceStack) source).currentCommand = this; + ((CommandSourceStack) source).currentCommand.set(this); // Paper - return requirement.test(source); + return this.requirement.test(source); } finally { - ((CommandSourceStack) source).currentCommand = null; + ((CommandSourceStack) source).currentCommand.set(null); // Paper @@ -26,7 +26,7 @@ index 5c35cef42af4053332c02b4960c227fe95d4c197..757ed7a0887f4bdb187ca7c757db5c18 } // CraftBukkit end diff --git a/src/main/java/net/minecraft/commands/CommandSourceStack.java b/src/main/java/net/minecraft/commands/CommandSourceStack.java -index e1f4ffaa36bfffb7741c74b7a094e26a03a9a1e6..2c024f8f8b949dc8cebd29a10415eeac6d50902e 100644 +index 42d97bc67c8f4e5b65a81159179c43dc6edc804c..6a330170ec1ea9d06593a1bbd1bdb8d98c0904fb 100644 --- a/src/main/java/net/minecraft/commands/CommandSourceStack.java +++ b/src/main/java/net/minecraft/commands/CommandSourceStack.java @@ -54,7 +54,7 @@ public class CommandSourceStack implements SharedSuggestionProvider, com.destroy @@ -38,7 +38,7 @@ index e1f4ffaa36bfffb7741c74b7a094e26a03a9a1e6..2c024f8f8b949dc8cebd29a10415eeac public CommandSourceStack(CommandSource output, Vec3 pos, Vec2 rot, ServerLevel world, int level, String simpleName, Component name, MinecraftServer server, @Nullable Entity entity) { this(output, pos, rot, world, level, simpleName, name, server, entity, false, (commandcontext, flag, j) -> { -@@ -171,9 +171,11 @@ public class CommandSourceStack implements SharedSuggestionProvider, com.destroy +@@ -175,9 +175,11 @@ public class CommandSourceStack implements SharedSuggestionProvider, com.destroy @Override public boolean hasPermission(int level) { // CraftBukkit start @@ -46,7 +46,7 @@ index e1f4ffaa36bfffb7741c74b7a094e26a03a9a1e6..2c024f8f8b949dc8cebd29a10415eeac + // Paper start - fix concurrency issue + CommandNode currentCommand = this.currentCommand.get(); if (currentCommand != null) { - return hasPermission(level, org.bukkit.craftbukkit.command.VanillaCommandWrapper.getPermission(currentCommand)); + return this.hasPermission(level, org.bukkit.craftbukkit.command.VanillaCommandWrapper.getPermission(currentCommand)); + // Paper end } // CraftBukkit end diff --git a/patches/server-remapped/0532-Move-range-check-for-block-placing-up.patch b/patches/server/0482-Move-range-check-for-block-placing-up.patch similarity index 71% rename from patches/server-remapped/0532-Move-range-check-for-block-placing-up.patch rename to patches/server/0482-Move-range-check-for-block-placing-up.patch index 7fba765097..344b1912e1 100644 --- a/patches/server-remapped/0532-Move-range-check-for-block-placing-up.patch +++ b/patches/server/0482-Move-range-check-for-block-placing-up.patch @@ -5,28 +5,30 @@ Subject: [PATCH] Move range check for block placing up diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 773f2589c14e16d2f5b01a6dbd48e09d17d19c7e..d264fca2737f83a0860394f7bb6b269ffe669594 100644 +index 39777c2b1bbb12ce3e5be3724235ea0a8072cef8..99a16a2f0c2dc227dd45db1964c2d47ffdcda73e 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1661,15 +1661,19 @@ public class ServerGamePacketListenerImpl implements ServerGamePacketListener { +@@ -1693,17 +1693,21 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser BlockPos blockposition = movingobjectpositionblock.getBlockPos(); Direction enumdirection = movingobjectpositionblock.getDirection(); + // Paper start - move check up -+ Location eyeLoc = this.getPlayer().getEyeLocation(); ++ Location eyeLoc = this.getCraftPlayer().getEyeLocation(); + double reachDistance = NumberConversions.square(eyeLoc.getX() - blockposition.getX()) + NumberConversions.square(eyeLoc.getY() - blockposition.getY()) + NumberConversions.square(eyeLoc.getZ() - blockposition.getZ()); -+ if (reachDistance > (this.getPlayer().getGameMode() == org.bukkit.GameMode.CREATIVE ? CREATIVE_PLACE_DISTANCE_SQUARED : SURVIVAL_PLACE_DISTANCE_SQUARED)) { ++ if (reachDistance > (this.getCraftPlayer().getGameMode() == org.bukkit.GameMode.CREATIVE ? CREATIVE_PLACE_DISTANCE_SQUARED : SURVIVAL_PLACE_DISTANCE_SQUARED)) { + return; + } + // Paper end - move check up + this.player.resetLastActionTime(); - if (blockposition.getY() < this.server.getMaxBuildHeight()) { + int i = this.player.level.getMaxBuildHeight(); + + if (blockposition.getY() < i) { if (this.awaitingPositionFromClient == null && this.player.distanceToSqr((double) blockposition.getX() + 0.5D, (double) blockposition.getY() + 0.5D, (double) blockposition.getZ() + 0.5D) < 64.0D && worldserver.mayInteract((net.minecraft.world.entity.player.Player) this.player, blockposition)) { // CraftBukkit start - Check if we can actually do something over this large a distance -- Location eyeLoc = this.getPlayer().getEyeLocation(); +- Location eyeLoc = this.getCraftPlayer().getEyeLocation(); - double reachDistance = NumberConversions.square(eyeLoc.getX() - blockposition.getX()) + NumberConversions.square(eyeLoc.getY() - blockposition.getY()) + NumberConversions.square(eyeLoc.getZ() - blockposition.getZ()); -- if (reachDistance > (this.getPlayer().getGameMode() == org.bukkit.GameMode.CREATIVE ? CREATIVE_PLACE_DISTANCE_SQUARED : SURVIVAL_PLACE_DISTANCE_SQUARED)) { +- if (reachDistance > (this.getCraftPlayer().getGameMode() == org.bukkit.GameMode.CREATIVE ? ServerGamePacketListenerImpl.CREATIVE_PLACE_DISTANCE_SQUARED : ServerGamePacketListenerImpl.SURVIVAL_PLACE_DISTANCE_SQUARED)) { - return; - } + // Paper - move check up