diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index cef01ede78..09a170d7fe 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -24,7 +24,12 @@ jobs: java: [21] fail-fast: true steps: - - uses: actions/checkout@v4 + - if: ${{ github.event_name == 'push' }} + uses: actions/checkout@v4 + - if: ${{ github.event_name == 'pull_request' }} + uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.sha }} - name: JDK ${{ matrix.java }} uses: actions/setup-java@v4 with: diff --git a/README.md b/README.md index 0da22f4faa..062f378c86 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ How To (Plugin Developers) io.papermc.paper paper-api - 1.21-R0.1-SNAPSHOT + 1.21.1-R0.1-SNAPSHOT provided ``` @@ -53,7 +53,7 @@ repositories { } dependencies { - compileOnly("io.papermc.paper:paper-api:1.21-R0.1-SNAPSHOT") + compileOnly("io.papermc.paper:paper-api:1.21.1-R0.1-SNAPSHOT") } java { diff --git a/build.gradle.kts b/build.gradle.kts index 5a2840e06e..95035067be 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -67,7 +67,7 @@ repositories { } dependencies { - paramMappings("net.fabricmc:yarn:1.21+build.1:mergedv2") + paramMappings("net.fabricmc:yarn:1.21.1+build.3:mergedv2") remapper("net.fabricmc:tiny-remapper:0.10.3:fat") decompiler("org.vineflower:vineflower:1.10.1") spigotDecompiler("io.papermc:patched-spigot-fernflower:0.1+build.13") diff --git a/gradle.properties b/gradle.properties index 7aa001f7cc..4d595c30f3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ group=io.papermc.paper -version=1.21-R0.1-SNAPSHOT -mcVersion=1.21 +version=1.21.1-R0.1-SNAPSHOT +mcVersion=1.21.1 # Set to true while updating Minecraft version updatingMinecraft=false diff --git a/paper-api-generator/generated/com/destroystokyo/paper/entity/ai/VanillaGoal.java b/paper-api-generator/generated/com/destroystokyo/paper/entity/ai/VanillaGoal.java index 3add91218d..02411466bd 100644 --- a/paper-api-generator/generated/com/destroystokyo/paper/entity/ai/VanillaGoal.java +++ b/paper-api-generator/generated/com/destroystokyo/paper/entity/ai/VanillaGoal.java @@ -51,7 +51,7 @@ import org.bukkit.entity.WanderingTrader; import org.bukkit.entity.Wither; import org.bukkit.entity.Wolf; import org.bukkit.entity.Zombie; -import org.jetbrains.annotations.NotNull; +import org.checkerframework.checker.nullness.qual.NonNull; /** * Vanilla keys for Mob Goals. @@ -66,7 +66,7 @@ import org.jetbrains.annotations.NotNull; "unused", "SpellCheckingInspection" }) -@GeneratedFrom("1.21") +@GeneratedFrom("1.21.1") public interface VanillaGoal extends Goal { GoalKey RANDOM_STAND = create("random_stand", AbstractHorse.class); @@ -436,8 +436,8 @@ public interface VanillaGoal extends Goal { GoalKey ZOMBIE_ATTACK_TURTLE_EGG = create("zombie_attack_turtle_egg", Zombie.class); - private static @NotNull GoalKey create(final @NotNull String key, - final @NotNull Class type) { + private static @NonNull GoalKey create(final @NonNull String key, + final @NonNull Class type) { return GoalKey.of(type, NamespacedKey.minecraft(key)); } } diff --git a/paper-api-generator/generated/io/papermc/paper/registry/keys/BiomeKeys.java b/paper-api-generator/generated/io/papermc/paper/registry/keys/BiomeKeys.java index 9552d0bc39..f0c6abf8bf 100644 --- a/paper-api-generator/generated/io/papermc/paper/registry/keys/BiomeKeys.java +++ b/paper-api-generator/generated/io/papermc/paper/registry/keys/BiomeKeys.java @@ -7,8 +7,8 @@ import io.papermc.paper.registry.RegistryKey; import io.papermc.paper.registry.TypedKey; import net.kyori.adventure.key.Key; import org.bukkit.block.Biome; +import org.checkerframework.checker.nullness.qual.NonNull; import org.jetbrains.annotations.ApiStatus; -import org.jetbrains.annotations.NotNull; /** * Vanilla keys for {@link RegistryKey#BIOME}. @@ -23,7 +23,7 @@ import org.jetbrains.annotations.NotNull; "unused", "SpellCheckingInspection" }) -@GeneratedFrom("1.21") +@GeneratedFrom("1.21.1") @ApiStatus.Experimental public final class BiomeKeys { /** @@ -478,13 +478,13 @@ public final class BiomeKeys { } /** - * Creates a key for {@link Biome} in a registry. + * Creates a key for {@link Biome} in the registry {@code minecraft:worldgen/biome}. * * @param key the value's key in the registry * @return a new typed key */ @ApiStatus.Experimental - public static @NotNull TypedKey create(final @NotNull Key key) { + public static @NonNull TypedKey create(final @NonNull Key key) { return TypedKey.create(RegistryKey.BIOME, key); } } diff --git a/paper-api-generator/generated/io/papermc/paper/registry/keys/DamageTypeKeys.java b/paper-api-generator/generated/io/papermc/paper/registry/keys/DamageTypeKeys.java index bc74d22dc8..9cb651fb14 100644 --- a/paper-api-generator/generated/io/papermc/paper/registry/keys/DamageTypeKeys.java +++ b/paper-api-generator/generated/io/papermc/paper/registry/keys/DamageTypeKeys.java @@ -7,8 +7,8 @@ import io.papermc.paper.registry.RegistryKey; import io.papermc.paper.registry.TypedKey; import net.kyori.adventure.key.Key; import org.bukkit.damage.DamageType; +import org.checkerframework.checker.nullness.qual.NonNull; import org.jetbrains.annotations.ApiStatus; -import org.jetbrains.annotations.NotNull; /** * Vanilla keys for {@link RegistryKey#DAMAGE_TYPE}. @@ -23,7 +23,7 @@ import org.jetbrains.annotations.NotNull; "unused", "SpellCheckingInspection" }) -@GeneratedFrom("1.21") +@GeneratedFrom("1.21.1") @ApiStatus.Experimental public final class DamageTypeKeys { /** @@ -359,13 +359,13 @@ public final class DamageTypeKeys { } /** - * Creates a key for {@link DamageType} in a registry. + * Creates a key for {@link DamageType} in the registry {@code minecraft:damage_type}. * * @param key the value's key in the registry * @return a new typed key */ @ApiStatus.Experimental - public static @NotNull TypedKey create(final @NotNull Key key) { + public static @NonNull TypedKey create(final @NonNull Key key) { return TypedKey.create(RegistryKey.DAMAGE_TYPE, key); } } diff --git a/paper-api-generator/generated/io/papermc/paper/registry/keys/EnchantmentKeys.java b/paper-api-generator/generated/io/papermc/paper/registry/keys/EnchantmentKeys.java index c3e649e05e..8a7b691af6 100644 --- a/paper-api-generator/generated/io/papermc/paper/registry/keys/EnchantmentKeys.java +++ b/paper-api-generator/generated/io/papermc/paper/registry/keys/EnchantmentKeys.java @@ -7,8 +7,8 @@ import io.papermc.paper.registry.RegistryKey; import io.papermc.paper.registry.TypedKey; import net.kyori.adventure.key.Key; import org.bukkit.enchantments.Enchantment; +import org.checkerframework.checker.nullness.qual.NonNull; import org.jetbrains.annotations.ApiStatus; -import org.jetbrains.annotations.NotNull; /** * Vanilla keys for {@link RegistryKey#ENCHANTMENT}. @@ -23,7 +23,7 @@ import org.jetbrains.annotations.NotNull; "unused", "SpellCheckingInspection" }) -@GeneratedFrom("1.21") +@GeneratedFrom("1.21.1") @ApiStatus.Experimental public final class EnchantmentKeys { /** @@ -323,7 +323,7 @@ public final class EnchantmentKeys { private EnchantmentKeys() { } - private static @NotNull TypedKey create(final @NotNull Key key) { + private static @NonNull TypedKey create(final @NonNull Key key) { return TypedKey.create(RegistryKey.ENCHANTMENT, key); } } diff --git a/paper-api-generator/generated/io/papermc/paper/registry/keys/GameEventKeys.java b/paper-api-generator/generated/io/papermc/paper/registry/keys/GameEventKeys.java index d8246a92d3..e8a8e5f89a 100644 --- a/paper-api-generator/generated/io/papermc/paper/registry/keys/GameEventKeys.java +++ b/paper-api-generator/generated/io/papermc/paper/registry/keys/GameEventKeys.java @@ -7,8 +7,8 @@ import io.papermc.paper.registry.RegistryKey; import io.papermc.paper.registry.TypedKey; import net.kyori.adventure.key.Key; import org.bukkit.GameEvent; +import org.checkerframework.checker.nullness.qual.NonNull; import org.jetbrains.annotations.ApiStatus; -import org.jetbrains.annotations.NotNull; /** * Vanilla keys for {@link RegistryKey#GAME_EVENT}. @@ -23,7 +23,7 @@ import org.jetbrains.annotations.NotNull; "unused", "SpellCheckingInspection" }) -@GeneratedFrom("1.21") +@GeneratedFrom("1.21.1") @ApiStatus.Experimental public final class GameEventKeys { /** @@ -449,7 +449,7 @@ public final class GameEventKeys { private GameEventKeys() { } - private static @NotNull TypedKey create(final @NotNull Key key) { + private static @NonNull TypedKey create(final @NonNull Key key) { return TypedKey.create(RegistryKey.GAME_EVENT, key); } } diff --git a/paper-api-generator/generated/io/papermc/paper/registry/keys/InstrumentKeys.java b/paper-api-generator/generated/io/papermc/paper/registry/keys/InstrumentKeys.java index 218932a292..4d59a6b6e1 100644 --- a/paper-api-generator/generated/io/papermc/paper/registry/keys/InstrumentKeys.java +++ b/paper-api-generator/generated/io/papermc/paper/registry/keys/InstrumentKeys.java @@ -7,8 +7,8 @@ import io.papermc.paper.registry.RegistryKey; import io.papermc.paper.registry.TypedKey; import net.kyori.adventure.key.Key; import org.bukkit.MusicInstrument; +import org.checkerframework.checker.nullness.qual.NonNull; import org.jetbrains.annotations.ApiStatus; -import org.jetbrains.annotations.NotNull; /** * Vanilla keys for {@link RegistryKey#INSTRUMENT}. @@ -23,7 +23,7 @@ import org.jetbrains.annotations.NotNull; "unused", "SpellCheckingInspection" }) -@GeneratedFrom("1.21") +@GeneratedFrom("1.21.1") @ApiStatus.Experimental public final class InstrumentKeys { /** @@ -85,7 +85,7 @@ public final class InstrumentKeys { private InstrumentKeys() { } - private static @NotNull TypedKey create(final @NotNull Key key) { + private static @NonNull TypedKey create(final @NonNull Key key) { return TypedKey.create(RegistryKey.INSTRUMENT, key); } } diff --git a/paper-api-generator/generated/io/papermc/paper/registry/keys/ItemTypeKeys.java b/paper-api-generator/generated/io/papermc/paper/registry/keys/ItemTypeKeys.java index 47dcc09e91..052d129630 100644 --- a/paper-api-generator/generated/io/papermc/paper/registry/keys/ItemTypeKeys.java +++ b/paper-api-generator/generated/io/papermc/paper/registry/keys/ItemTypeKeys.java @@ -7,8 +7,8 @@ import io.papermc.paper.registry.RegistryKey; import io.papermc.paper.registry.TypedKey; import net.kyori.adventure.key.Key; import org.bukkit.inventory.ItemType; +import org.checkerframework.checker.nullness.qual.NonNull; import org.jetbrains.annotations.ApiStatus; -import org.jetbrains.annotations.NotNull; /** * Vanilla keys for {@link RegistryKey#ITEM}. @@ -23,7 +23,7 @@ import org.jetbrains.annotations.NotNull; "unused", "SpellCheckingInspection" }) -@GeneratedFrom("1.21") +@GeneratedFrom("1.21.1") @ApiStatus.Experimental public final class ItemTypeKeys { /** @@ -9360,7 +9360,7 @@ public final class ItemTypeKeys { private ItemTypeKeys() { } - private static @NotNull TypedKey create(final @NotNull Key key) { + private static @NonNull TypedKey create(final @NonNull Key key) { return TypedKey.create(RegistryKey.ITEM, key); } } diff --git a/paper-api-generator/generated/io/papermc/paper/registry/keys/MobEffectKeys.java b/paper-api-generator/generated/io/papermc/paper/registry/keys/MobEffectKeys.java index a6c99ef964..621705fe8a 100644 --- a/paper-api-generator/generated/io/papermc/paper/registry/keys/MobEffectKeys.java +++ b/paper-api-generator/generated/io/papermc/paper/registry/keys/MobEffectKeys.java @@ -7,8 +7,8 @@ import io.papermc.paper.registry.RegistryKey; import io.papermc.paper.registry.TypedKey; import net.kyori.adventure.key.Key; import org.bukkit.potion.PotionEffectType; +import org.checkerframework.checker.nullness.qual.NonNull; import org.jetbrains.annotations.ApiStatus; -import org.jetbrains.annotations.NotNull; /** * Vanilla keys for {@link RegistryKey#MOB_EFFECT}. @@ -23,7 +23,7 @@ import org.jetbrains.annotations.NotNull; "unused", "SpellCheckingInspection" }) -@GeneratedFrom("1.21") +@GeneratedFrom("1.21.1") @ApiStatus.Experimental public final class MobEffectKeys { /** @@ -302,7 +302,7 @@ public final class MobEffectKeys { private MobEffectKeys() { } - private static @NotNull TypedKey create(final @NotNull Key key) { + private static @NonNull TypedKey create(final @NonNull Key key) { return TypedKey.create(RegistryKey.MOB_EFFECT, key); } } diff --git a/paper-api-generator/generated/io/papermc/paper/registry/keys/StructureKeys.java b/paper-api-generator/generated/io/papermc/paper/registry/keys/StructureKeys.java index d1149e828e..a49c8cff2e 100644 --- a/paper-api-generator/generated/io/papermc/paper/registry/keys/StructureKeys.java +++ b/paper-api-generator/generated/io/papermc/paper/registry/keys/StructureKeys.java @@ -7,8 +7,8 @@ import io.papermc.paper.registry.RegistryKey; import io.papermc.paper.registry.TypedKey; import net.kyori.adventure.key.Key; import org.bukkit.generator.structure.Structure; +import org.checkerframework.checker.nullness.qual.NonNull; import org.jetbrains.annotations.ApiStatus; -import org.jetbrains.annotations.NotNull; /** * Vanilla keys for {@link RegistryKey#STRUCTURE}. @@ -23,7 +23,7 @@ import org.jetbrains.annotations.NotNull; "unused", "SpellCheckingInspection" }) -@GeneratedFrom("1.21") +@GeneratedFrom("1.21.1") @ApiStatus.Experimental public final class StructureKeys { /** @@ -268,13 +268,13 @@ public final class StructureKeys { } /** - * Creates a key for {@link Structure} in a registry. + * Creates a key for {@link Structure} in the registry {@code minecraft:worldgen/structure}. * * @param key the value's key in the registry * @return a new typed key */ @ApiStatus.Experimental - public static @NotNull TypedKey create(final @NotNull Key key) { + public static @NonNull TypedKey create(final @NonNull Key key) { return TypedKey.create(RegistryKey.STRUCTURE, key); } } diff --git a/paper-api-generator/generated/io/papermc/paper/registry/keys/StructureTypeKeys.java b/paper-api-generator/generated/io/papermc/paper/registry/keys/StructureTypeKeys.java index 3da18a90c5..353c0fa302 100644 --- a/paper-api-generator/generated/io/papermc/paper/registry/keys/StructureTypeKeys.java +++ b/paper-api-generator/generated/io/papermc/paper/registry/keys/StructureTypeKeys.java @@ -7,8 +7,8 @@ import io.papermc.paper.registry.RegistryKey; import io.papermc.paper.registry.TypedKey; import net.kyori.adventure.key.Key; import org.bukkit.generator.structure.StructureType; +import org.checkerframework.checker.nullness.qual.NonNull; import org.jetbrains.annotations.ApiStatus; -import org.jetbrains.annotations.NotNull; /** * Vanilla keys for {@link RegistryKey#STRUCTURE_TYPE}. @@ -23,7 +23,7 @@ import org.jetbrains.annotations.NotNull; "unused", "SpellCheckingInspection" }) -@GeneratedFrom("1.21") +@GeneratedFrom("1.21.1") @ApiStatus.Experimental public final class StructureTypeKeys { /** @@ -141,7 +141,7 @@ public final class StructureTypeKeys { private StructureTypeKeys() { } - private static @NotNull TypedKey create(final @NotNull Key key) { + private static @NonNull TypedKey create(final @NonNull Key key) { return TypedKey.create(RegistryKey.STRUCTURE_TYPE, key); } } diff --git a/paper-api-generator/generated/io/papermc/paper/registry/keys/TrimMaterialKeys.java b/paper-api-generator/generated/io/papermc/paper/registry/keys/TrimMaterialKeys.java index 8b45ea515c..e75f850a31 100644 --- a/paper-api-generator/generated/io/papermc/paper/registry/keys/TrimMaterialKeys.java +++ b/paper-api-generator/generated/io/papermc/paper/registry/keys/TrimMaterialKeys.java @@ -7,8 +7,8 @@ import io.papermc.paper.registry.RegistryKey; import io.papermc.paper.registry.TypedKey; import net.kyori.adventure.key.Key; import org.bukkit.inventory.meta.trim.TrimMaterial; +import org.checkerframework.checker.nullness.qual.NonNull; import org.jetbrains.annotations.ApiStatus; -import org.jetbrains.annotations.NotNull; /** * Vanilla keys for {@link RegistryKey#TRIM_MATERIAL}. @@ -23,7 +23,7 @@ import org.jetbrains.annotations.NotNull; "unused", "SpellCheckingInspection" }) -@GeneratedFrom("1.21") +@GeneratedFrom("1.21.1") @ApiStatus.Experimental public final class TrimMaterialKeys { /** @@ -100,13 +100,13 @@ public final class TrimMaterialKeys { } /** - * Creates a key for {@link TrimMaterial} in a registry. + * Creates a key for {@link TrimMaterial} in the registry {@code minecraft:trim_material}. * * @param key the value's key in the registry * @return a new typed key */ @ApiStatus.Experimental - public static @NotNull TypedKey create(final @NotNull Key key) { + public static @NonNull TypedKey create(final @NonNull Key key) { return TypedKey.create(RegistryKey.TRIM_MATERIAL, key); } } diff --git a/paper-api-generator/generated/io/papermc/paper/registry/keys/TrimPatternKeys.java b/paper-api-generator/generated/io/papermc/paper/registry/keys/TrimPatternKeys.java index cff40f6c97..65d2d63e85 100644 --- a/paper-api-generator/generated/io/papermc/paper/registry/keys/TrimPatternKeys.java +++ b/paper-api-generator/generated/io/papermc/paper/registry/keys/TrimPatternKeys.java @@ -7,8 +7,8 @@ import io.papermc.paper.registry.RegistryKey; import io.papermc.paper.registry.TypedKey; import net.kyori.adventure.key.Key; import org.bukkit.inventory.meta.trim.TrimPattern; +import org.checkerframework.checker.nullness.qual.NonNull; import org.jetbrains.annotations.ApiStatus; -import org.jetbrains.annotations.NotNull; /** * Vanilla keys for {@link RegistryKey#TRIM_PATTERN}. @@ -23,7 +23,7 @@ import org.jetbrains.annotations.NotNull; "unused", "SpellCheckingInspection" }) -@GeneratedFrom("1.21") +@GeneratedFrom("1.21.1") @ApiStatus.Experimental public final class TrimPatternKeys { /** @@ -156,13 +156,13 @@ public final class TrimPatternKeys { } /** - * Creates a key for {@link TrimPattern} in a registry. + * Creates a key for {@link TrimPattern} in the registry {@code minecraft:trim_pattern}. * * @param key the value's key in the registry * @return a new typed key */ @ApiStatus.Experimental - public static @NotNull TypedKey create(final @NotNull Key key) { + public static @NonNull TypedKey create(final @NonNull Key key) { return TypedKey.create(RegistryKey.TRIM_PATTERN, key); } } diff --git a/paper-api-generator/generated/io/papermc/paper/registry/keys/WolfVariantKeys.java b/paper-api-generator/generated/io/papermc/paper/registry/keys/WolfVariantKeys.java index 0da194922a..7108d41c8d 100644 --- a/paper-api-generator/generated/io/papermc/paper/registry/keys/WolfVariantKeys.java +++ b/paper-api-generator/generated/io/papermc/paper/registry/keys/WolfVariantKeys.java @@ -7,8 +7,8 @@ import io.papermc.paper.registry.RegistryKey; import io.papermc.paper.registry.TypedKey; import net.kyori.adventure.key.Key; import org.bukkit.entity.Wolf; +import org.checkerframework.checker.nullness.qual.NonNull; import org.jetbrains.annotations.ApiStatus; -import org.jetbrains.annotations.NotNull; /** * Vanilla keys for {@link RegistryKey#WOLF_VARIANT}. @@ -23,7 +23,7 @@ import org.jetbrains.annotations.NotNull; "unused", "SpellCheckingInspection" }) -@GeneratedFrom("1.21") +@GeneratedFrom("1.21.1") @ApiStatus.Experimental public final class WolfVariantKeys { /** @@ -93,13 +93,13 @@ public final class WolfVariantKeys { } /** - * Creates a key for {@link Wolf.Variant} in a registry. + * Creates a key for {@link Wolf.Variant} in the registry {@code minecraft:wolf_variant}. * * @param key the value's key in the registry * @return a new typed key */ @ApiStatus.Experimental - public static @NotNull TypedKey create(final @NotNull Key key) { + public static @NonNull TypedKey create(final @NonNull Key key) { return TypedKey.create(RegistryKey.WOLF_VARIANT, key); } } diff --git a/paper-api-generator/generated/io/papermc/paper/registry/keys/tags/EnchantmentTagKeys.java b/paper-api-generator/generated/io/papermc/paper/registry/keys/tags/EnchantmentTagKeys.java index 0ddbb9fcd2..5d2a22742f 100644 --- a/paper-api-generator/generated/io/papermc/paper/registry/keys/tags/EnchantmentTagKeys.java +++ b/paper-api-generator/generated/io/papermc/paper/registry/keys/tags/EnchantmentTagKeys.java @@ -8,8 +8,8 @@ import io.papermc.paper.registry.tag.TagKey; import net.kyori.adventure.key.Key; import org.bukkit.MinecraftExperimental; import org.bukkit.enchantments.Enchantment; +import org.checkerframework.checker.nullness.qual.NonNull; import org.jetbrains.annotations.ApiStatus; -import org.jetbrains.annotations.NotNull; /** * Vanilla keys for {@link RegistryKey#ENCHANTMENT}. @@ -24,66 +24,9 @@ import org.jetbrains.annotations.NotNull; "unused", "SpellCheckingInspection" }) -@GeneratedFrom("1.21") +@GeneratedFrom("1.21.1") @ApiStatus.Experimental public final class EnchantmentTagKeys { - /** - * {@code #minecraft:trades/swamp_special} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - @ApiStatus.Experimental - @MinecraftExperimental(MinecraftExperimental.Requires.TRADE_REBALANCE) - public static final TagKey TRADES_SWAMP_SPECIAL = create(key("trades/swamp_special")); - - /** - * {@code #minecraft:trades/plains_special} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - @ApiStatus.Experimental - @MinecraftExperimental(MinecraftExperimental.Requires.TRADE_REBALANCE) - public static final TagKey TRADES_PLAINS_SPECIAL = create(key("trades/plains_special")); - - /** - * {@code #minecraft:on_traded_equipment} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey ON_TRADED_EQUIPMENT = create(key("on_traded_equipment")); - - /** - * {@code #minecraft:trades/desert_special} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - @ApiStatus.Experimental - @MinecraftExperimental(MinecraftExperimental.Requires.TRADE_REBALANCE) - public static final TagKey TRADES_DESERT_SPECIAL = create(key("trades/desert_special")); - - /** - * {@code #minecraft:prevents_ice_melting} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey PREVENTS_ICE_MELTING = create(key("prevents_ice_melting")); - - /** - * {@code #minecraft:trades/taiga_common} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - @ApiStatus.Experimental - @MinecraftExperimental(MinecraftExperimental.Requires.TRADE_REBALANCE) - public static final TagKey TRADES_TAIGA_COMMON = create(key("trades/taiga_common")); - - /** - * {@code #minecraft:tradeable} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey TRADEABLE = create(key("tradeable")); - /** * {@code #minecraft:curse} * @@ -91,36 +34,6 @@ public final class EnchantmentTagKeys { */ public static final TagKey CURSE = create(key("curse")); - /** - * {@code #minecraft:treasure} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey TREASURE = create(key("treasure")); - - /** - * {@code #minecraft:prevents_infested_spawns} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey PREVENTS_INFESTED_SPAWNS = create(key("prevents_infested_spawns")); - - /** - * {@code #minecraft:trades/savanna_special} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - @ApiStatus.Experimental - @MinecraftExperimental(MinecraftExperimental.Requires.TRADE_REBALANCE) - public static final TagKey TRADES_SAVANNA_SPECIAL = create(key("trades/savanna_special")); - - /** - * {@code #minecraft:exclusive_set/riptide} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey EXCLUSIVE_SET_RIPTIDE = create(key("exclusive_set/riptide")); - /** * {@code #minecraft:double_trade_price} * @@ -129,20 +42,11 @@ public final class EnchantmentTagKeys { public static final TagKey DOUBLE_TRADE_PRICE = create(key("double_trade_price")); /** - * {@code #minecraft:trades/taiga_special} + * {@code #minecraft:exclusive_set/armor} * * @apiNote This field is version-dependant and may be removed in future Minecraft versions */ - @ApiStatus.Experimental - @MinecraftExperimental(MinecraftExperimental.Requires.TRADE_REBALANCE) - public static final TagKey TRADES_TAIGA_SPECIAL = create(key("trades/taiga_special")); - - /** - * {@code #minecraft:smelts_loot} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey SMELTS_LOOT = create(key("smelts_loot")); + public static final TagKey EXCLUSIVE_SET_ARMOR = create(key("exclusive_set/armor")); /** * {@code #minecraft:exclusive_set/boots} @@ -152,13 +56,53 @@ public final class EnchantmentTagKeys { public static final TagKey EXCLUSIVE_SET_BOOTS = create(key("exclusive_set/boots")); /** - * {@code #minecraft:trades/plains_common} + * {@code #minecraft:exclusive_set/bow} * * @apiNote This field is version-dependant and may be removed in future Minecraft versions */ - @ApiStatus.Experimental - @MinecraftExperimental(MinecraftExperimental.Requires.TRADE_REBALANCE) - public static final TagKey TRADES_PLAINS_COMMON = create(key("trades/plains_common")); + public static final TagKey EXCLUSIVE_SET_BOW = create(key("exclusive_set/bow")); + + /** + * {@code #minecraft:exclusive_set/crossbow} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey EXCLUSIVE_SET_CROSSBOW = create(key("exclusive_set/crossbow")); + + /** + * {@code #minecraft:exclusive_set/damage} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey EXCLUSIVE_SET_DAMAGE = create(key("exclusive_set/damage")); + + /** + * {@code #minecraft:exclusive_set/mining} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey EXCLUSIVE_SET_MINING = create(key("exclusive_set/mining")); + + /** + * {@code #minecraft:exclusive_set/riptide} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey EXCLUSIVE_SET_RIPTIDE = create(key("exclusive_set/riptide")); + + /** + * {@code #minecraft:in_enchanting_table} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey IN_ENCHANTING_TABLE = create(key("in_enchanting_table")); + + /** + * {@code #minecraft:non_treasure} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey NON_TREASURE = create(key("non_treasure")); /** * {@code #minecraft:on_mob_spawn_equipment} @@ -167,6 +111,69 @@ public final class EnchantmentTagKeys { */ public static final TagKey ON_MOB_SPAWN_EQUIPMENT = create(key("on_mob_spawn_equipment")); + /** + * {@code #minecraft:on_random_loot} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey ON_RANDOM_LOOT = create(key("on_random_loot")); + + /** + * {@code #minecraft:on_traded_equipment} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey ON_TRADED_EQUIPMENT = create(key("on_traded_equipment")); + + /** + * {@code #minecraft:prevents_bee_spawns_when_mining} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey PREVENTS_BEE_SPAWNS_WHEN_MINING = create(key("prevents_bee_spawns_when_mining")); + + /** + * {@code #minecraft:prevents_decorated_pot_shattering} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey PREVENTS_DECORATED_POT_SHATTERING = create(key("prevents_decorated_pot_shattering")); + + /** + * {@code #minecraft:prevents_ice_melting} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey PREVENTS_ICE_MELTING = create(key("prevents_ice_melting")); + + /** + * {@code #minecraft:prevents_infested_spawns} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey PREVENTS_INFESTED_SPAWNS = create(key("prevents_infested_spawns")); + + /** + * {@code #minecraft:smelts_loot} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey SMELTS_LOOT = create(key("smelts_loot")); + + /** + * {@code #minecraft:tooltip_order} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey TOOLTIP_ORDER = create(key("tooltip_order")); + + /** + * {@code #minecraft:tradeable} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey TRADEABLE = create(key("tradeable")); + /** * {@code #minecraft:trades/desert_common} * @@ -177,46 +184,13 @@ public final class EnchantmentTagKeys { public static final TagKey TRADES_DESERT_COMMON = create(key("trades/desert_common")); /** - * {@code #minecraft:exclusive_set/mining} + * {@code #minecraft:trades/desert_special} * * @apiNote This field is version-dependant and may be removed in future Minecraft versions */ - public static final TagKey EXCLUSIVE_SET_MINING = create(key("exclusive_set/mining")); - - /** - * {@code #minecraft:tooltip_order} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey TOOLTIP_ORDER = create(key("tooltip_order")); - - /** - * {@code #minecraft:prevents_decorated_pot_shattering} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey PREVENTS_DECORATED_POT_SHATTERING = create(key("prevents_decorated_pot_shattering")); - - /** - * {@code #minecraft:exclusive_set/bow} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey EXCLUSIVE_SET_BOW = create(key("exclusive_set/bow")); - - /** - * {@code #minecraft:on_random_loot} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey ON_RANDOM_LOOT = create(key("on_random_loot")); - - /** - * {@code #minecraft:exclusive_set/armor} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey EXCLUSIVE_SET_ARMOR = create(key("exclusive_set/armor")); + @ApiStatus.Experimental + @MinecraftExperimental(MinecraftExperimental.Requires.TRADE_REBALANCE) + public static final TagKey TRADES_DESERT_SPECIAL = create(key("trades/desert_special")); /** * {@code #minecraft:trades/jungle_common} @@ -227,38 +201,6 @@ public final class EnchantmentTagKeys { @MinecraftExperimental(MinecraftExperimental.Requires.TRADE_REBALANCE) public static final TagKey TRADES_JUNGLE_COMMON = create(key("trades/jungle_common")); - /** - * {@code #minecraft:in_enchanting_table} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey IN_ENCHANTING_TABLE = create(key("in_enchanting_table")); - - /** - * {@code #minecraft:trades/swamp_common} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - @ApiStatus.Experimental - @MinecraftExperimental(MinecraftExperimental.Requires.TRADE_REBALANCE) - public static final TagKey TRADES_SWAMP_COMMON = create(key("trades/swamp_common")); - - /** - * {@code #minecraft:trades/snow_special} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - @ApiStatus.Experimental - @MinecraftExperimental(MinecraftExperimental.Requires.TRADE_REBALANCE) - public static final TagKey TRADES_SNOW_SPECIAL = create(key("trades/snow_special")); - - /** - * {@code #minecraft:non_treasure} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey NON_TREASURE = create(key("non_treasure")); - /** * {@code #minecraft:trades/jungle_special} * @@ -269,18 +211,22 @@ public final class EnchantmentTagKeys { public static final TagKey TRADES_JUNGLE_SPECIAL = create(key("trades/jungle_special")); /** - * {@code #minecraft:prevents_bee_spawns_when_mining} + * {@code #minecraft:trades/plains_common} * * @apiNote This field is version-dependant and may be removed in future Minecraft versions */ - public static final TagKey PREVENTS_BEE_SPAWNS_WHEN_MINING = create(key("prevents_bee_spawns_when_mining")); + @ApiStatus.Experimental + @MinecraftExperimental(MinecraftExperimental.Requires.TRADE_REBALANCE) + public static final TagKey TRADES_PLAINS_COMMON = create(key("trades/plains_common")); /** - * {@code #minecraft:exclusive_set/damage} + * {@code #minecraft:trades/plains_special} * * @apiNote This field is version-dependant and may be removed in future Minecraft versions */ - public static final TagKey EXCLUSIVE_SET_DAMAGE = create(key("exclusive_set/damage")); + @ApiStatus.Experimental + @MinecraftExperimental(MinecraftExperimental.Requires.TRADE_REBALANCE) + public static final TagKey TRADES_PLAINS_SPECIAL = create(key("trades/plains_special")); /** * {@code #minecraft:trades/savanna_common} @@ -291,6 +237,15 @@ public final class EnchantmentTagKeys { @MinecraftExperimental(MinecraftExperimental.Requires.TRADE_REBALANCE) public static final TagKey TRADES_SAVANNA_COMMON = create(key("trades/savanna_common")); + /** + * {@code #minecraft:trades/savanna_special} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + @ApiStatus.Experimental + @MinecraftExperimental(MinecraftExperimental.Requires.TRADE_REBALANCE) + public static final TagKey TRADES_SAVANNA_SPECIAL = create(key("trades/savanna_special")); + /** * {@code #minecraft:trades/snow_common} * @@ -301,23 +256,68 @@ public final class EnchantmentTagKeys { public static final TagKey TRADES_SNOW_COMMON = create(key("trades/snow_common")); /** - * {@code #minecraft:exclusive_set/crossbow} + * {@code #minecraft:trades/snow_special} * * @apiNote This field is version-dependant and may be removed in future Minecraft versions */ - public static final TagKey EXCLUSIVE_SET_CROSSBOW = create(key("exclusive_set/crossbow")); + @ApiStatus.Experimental + @MinecraftExperimental(MinecraftExperimental.Requires.TRADE_REBALANCE) + public static final TagKey TRADES_SNOW_SPECIAL = create(key("trades/snow_special")); + + /** + * {@code #minecraft:trades/swamp_common} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + @ApiStatus.Experimental + @MinecraftExperimental(MinecraftExperimental.Requires.TRADE_REBALANCE) + public static final TagKey TRADES_SWAMP_COMMON = create(key("trades/swamp_common")); + + /** + * {@code #minecraft:trades/swamp_special} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + @ApiStatus.Experimental + @MinecraftExperimental(MinecraftExperimental.Requires.TRADE_REBALANCE) + public static final TagKey TRADES_SWAMP_SPECIAL = create(key("trades/swamp_special")); + + /** + * {@code #minecraft:trades/taiga_common} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + @ApiStatus.Experimental + @MinecraftExperimental(MinecraftExperimental.Requires.TRADE_REBALANCE) + public static final TagKey TRADES_TAIGA_COMMON = create(key("trades/taiga_common")); + + /** + * {@code #minecraft:trades/taiga_special} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + @ApiStatus.Experimental + @MinecraftExperimental(MinecraftExperimental.Requires.TRADE_REBALANCE) + public static final TagKey TRADES_TAIGA_SPECIAL = create(key("trades/taiga_special")); + + /** + * {@code #minecraft:treasure} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey TREASURE = create(key("treasure")); private EnchantmentTagKeys() { } /** - * Creates a tag key for {@link Enchantment} in the registry {@code minecraft:root}. + * Creates a tag key for {@link Enchantment} in the registry {@code minecraft:enchantment}. * * @param key the tag key's key * @return a new tag key */ @ApiStatus.Experimental - public static @NotNull TagKey create(final @NotNull Key key) { + public static @NonNull TagKey create(final @NonNull Key key) { return TagKey.create(RegistryKey.ENCHANTMENT, key); } } diff --git a/paper-api-generator/generated/io/papermc/paper/registry/keys/tags/ItemTypeTagKeys.java b/paper-api-generator/generated/io/papermc/paper/registry/keys/tags/ItemTypeTagKeys.java index 9efe93fdec..b0a153f670 100644 --- a/paper-api-generator/generated/io/papermc/paper/registry/keys/tags/ItemTypeTagKeys.java +++ b/paper-api-generator/generated/io/papermc/paper/registry/keys/tags/ItemTypeTagKeys.java @@ -7,8 +7,8 @@ import io.papermc.paper.registry.RegistryKey; import io.papermc.paper.registry.tag.TagKey; import net.kyori.adventure.key.Key; import org.bukkit.inventory.ItemType; +import org.checkerframework.checker.nullness.qual.NonNull; import org.jetbrains.annotations.ApiStatus; -import org.jetbrains.annotations.NotNull; /** * Vanilla keys for {@link RegistryKey#ITEM}. @@ -23,562 +23,9 @@ import org.jetbrains.annotations.NotNull; "unused", "SpellCheckingInspection" }) -@GeneratedFrom("1.21") +@GeneratedFrom("1.21.1") @ApiStatus.Experimental public final class ItemTypeTagKeys { - /** - * {@code #minecraft:wooden_pressure_plates} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey WOODEN_PRESSURE_PLATES = create(key("wooden_pressure_plates")); - - /** - * {@code #minecraft:terracotta} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey TERRACOTTA = create(key("terracotta")); - - /** - * {@code #minecraft:doors} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey DOORS = create(key("doors")); - - /** - * {@code #minecraft:enchantable/sharp_weapon} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey ENCHANTABLE_SHARP_WEAPON = create(key("enchantable/sharp_weapon")); - - /** - * {@code #minecraft:enchantable/chest_armor} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey ENCHANTABLE_CHEST_ARMOR = create(key("enchantable/chest_armor")); - - /** - * {@code #minecraft:fox_food} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey FOX_FOOD = create(key("fox_food")); - - /** - * {@code #minecraft:fence_gates} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey FENCE_GATES = create(key("fence_gates")); - - /** - * {@code #minecraft:shovels} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey SHOVELS = create(key("shovels")); - - /** - * {@code #minecraft:enchantable/vanishing} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey ENCHANTABLE_VANISHING = create(key("enchantable/vanishing")); - - /** - * {@code #minecraft:trim_materials} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey TRIM_MATERIALS = create(key("trim_materials")); - - /** - * {@code #minecraft:sniffer_food} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey SNIFFER_FOOD = create(key("sniffer_food")); - - /** - * {@code #minecraft:compasses} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey COMPASSES = create(key("compasses")); - - /** - * {@code #minecraft:dyeable} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey DYEABLE = create(key("dyeable")); - - /** - * {@code #minecraft:strider_food} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey STRIDER_FOOD = create(key("strider_food")); - - /** - * {@code #minecraft:soul_fire_base_blocks} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey SOUL_FIRE_BASE_BLOCKS = create(key("soul_fire_base_blocks")); - - /** - * {@code #minecraft:cherry_logs} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey CHERRY_LOGS = create(key("cherry_logs")); - - /** - * {@code #minecraft:enchantable/sword} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey ENCHANTABLE_SWORD = create(key("enchantable/sword")); - - /** - * {@code #minecraft:oak_logs} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey OAK_LOGS = create(key("oak_logs")); - - /** - * {@code #minecraft:goat_food} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey GOAT_FOOD = create(key("goat_food")); - - /** - * {@code #minecraft:trimmable_armor} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey TRIMMABLE_ARMOR = create(key("trimmable_armor")); - - /** - * {@code #minecraft:stone_crafting_materials} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey STONE_CRAFTING_MATERIALS = create(key("stone_crafting_materials")); - - /** - * {@code #minecraft:piglin_loved} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey PIGLIN_LOVED = create(key("piglin_loved")); - - /** - * {@code #minecraft:logs_that_burn} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey LOGS_THAT_BURN = create(key("logs_that_burn")); - - /** - * {@code #minecraft:bookshelf_books} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey BOOKSHELF_BOOKS = create(key("bookshelf_books")); - - /** - * {@code #minecraft:leaves} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey LEAVES = create(key("leaves")); - - /** - * {@code #minecraft:turtle_food} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey TURTLE_FOOD = create(key("turtle_food")); - - /** - * {@code #minecraft:stairs} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey STAIRS = create(key("stairs")); - - /** - * {@code #minecraft:wool_carpets} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey WOOL_CARPETS = create(key("wool_carpets")); - - /** - * {@code #minecraft:lectern_books} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey LECTERN_BOOKS = create(key("lectern_books")); - - /** - * {@code #minecraft:enchantable/mace} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey ENCHANTABLE_MACE = create(key("enchantable/mace")); - - /** - * {@code #minecraft:enchantable/crossbow} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey ENCHANTABLE_CROSSBOW = create(key("enchantable/crossbow")); - - /** - * {@code #minecraft:frog_food} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey FROG_FOOD = create(key("frog_food")); - - /** - * {@code #minecraft:strider_tempt_items} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey STRIDER_TEMPT_ITEMS = create(key("strider_tempt_items")); - - /** - * {@code #minecraft:wooden_stairs} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey WOODEN_STAIRS = create(key("wooden_stairs")); - - /** - * {@code #minecraft:enchantable/foot_armor} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey ENCHANTABLE_FOOT_ARMOR = create(key("enchantable/foot_armor")); - - /** - * {@code #minecraft:emerald_ores} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey EMERALD_ORES = create(key("emerald_ores")); - - /** - * {@code #minecraft:meat} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey MEAT = create(key("meat")); - - /** - * {@code #minecraft:piglin_food} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey PIGLIN_FOOD = create(key("piglin_food")); - - /** - * {@code #minecraft:cat_food} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey CAT_FOOD = create(key("cat_food")); - - /** - * {@code #minecraft:ignored_by_piglin_babies} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey IGNORED_BY_PIGLIN_BABIES = create(key("ignored_by_piglin_babies")); - - /** - * {@code #minecraft:enchantable/head_armor} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey ENCHANTABLE_HEAD_ARMOR = create(key("enchantable/head_armor")); - - /** - * {@code #minecraft:warped_stems} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey WARPED_STEMS = create(key("warped_stems")); - - /** - * {@code #minecraft:villager_plantable_seeds} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey VILLAGER_PLANTABLE_SEEDS = create(key("villager_plantable_seeds")); - - /** - * {@code #minecraft:completes_find_tree_tutorial} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey COMPLETES_FIND_TREE_TUTORIAL = create(key("completes_find_tree_tutorial")); - - /** - * {@code #minecraft:pig_food} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey PIG_FOOD = create(key("pig_food")); - - /** - * {@code #minecraft:skulls} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey SKULLS = create(key("skulls")); - - /** - * {@code #minecraft:swords} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey SWORDS = create(key("swords")); - - /** - * {@code #minecraft:birch_logs} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey BIRCH_LOGS = create(key("birch_logs")); - - /** - * {@code #minecraft:buttons} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey BUTTONS = create(key("buttons")); - - /** - * {@code #minecraft:beds} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey BEDS = create(key("beds")); - - /** - * {@code #minecraft:fishes} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey FISHES = create(key("fishes")); - - /** - * {@code #minecraft:enchantable/weapon} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey ENCHANTABLE_WEAPON = create(key("enchantable/weapon")); - - /** - * {@code #minecraft:stone_buttons} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey STONE_BUTTONS = create(key("stone_buttons")); - - /** - * {@code #minecraft:horse_food} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey HORSE_FOOD = create(key("horse_food")); - - /** - * {@code #minecraft:coals} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey COALS = create(key("coals")); - - /** - * {@code #minecraft:cluster_max_harvestables} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey CLUSTER_MAX_HARVESTABLES = create(key("cluster_max_harvestables")); - - /** - * {@code #minecraft:hanging_signs} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey HANGING_SIGNS = create(key("hanging_signs")); - - /** - * {@code #minecraft:beacon_payment_items} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey BEACON_PAYMENT_ITEMS = create(key("beacon_payment_items")); - - /** - * {@code #minecraft:foot_armor} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey FOOT_ARMOR = create(key("foot_armor")); - - /** - * {@code #minecraft:enchantable/durability} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey ENCHANTABLE_DURABILITY = create(key("enchantable/durability")); - - /** - * {@code #minecraft:sand} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey SAND = create(key("sand")); - - /** - * {@code #minecraft:wooden_buttons} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey WOODEN_BUTTONS = create(key("wooden_buttons")); - - /** - * {@code #minecraft:hoglin_food} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey HOGLIN_FOOD = create(key("hoglin_food")); - - /** - * {@code #minecraft:enchantable/equippable} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey ENCHANTABLE_EQUIPPABLE = create(key("enchantable/equippable")); - - /** - * {@code #minecraft:crimson_stems} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey CRIMSON_STEMS = create(key("crimson_stems")); - - /** - * {@code #minecraft:flowers} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey FLOWERS = create(key("flowers")); - - /** - * {@code #minecraft:horse_tempt_items} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey HORSE_TEMPT_ITEMS = create(key("horse_tempt_items")); - - /** - * {@code #minecraft:enchantable/mining_loot} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey ENCHANTABLE_MINING_LOOT = create(key("enchantable/mining_loot")); - - /** - * {@code #minecraft:rails} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey RAILS = create(key("rails")); - - /** - * {@code #minecraft:cow_food} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey COW_FOOD = create(key("cow_food")); - - /** - * {@code #minecraft:slabs} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey SLABS = create(key("slabs")); - - /** - * {@code #minecraft:bamboo_blocks} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey BAMBOO_BLOCKS = create(key("bamboo_blocks")); - - /** - * {@code #minecraft:boats} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey BOATS = create(key("boats")); - - /** - * {@code #minecraft:jungle_logs} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey JUNGLE_LOGS = create(key("jungle_logs")); - - /** - * {@code #minecraft:coal_ores} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey COAL_ORES = create(key("coal_ores")); - - /** - * {@code #minecraft:trapdoors} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey TRAPDOORS = create(key("trapdoors")); - - /** - * {@code #minecraft:piglin_repellents} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey PIGLIN_REPELLENTS = create(key("piglin_repellents")); - - /** - * {@code #minecraft:banners} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey BANNERS = create(key("banners")); - - /** - * {@code #minecraft:chest_boats} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey CHEST_BOATS = create(key("chest_boats")); - /** * {@code #minecraft:acacia_logs} * @@ -586,461 +33,6 @@ public final class ItemTypeTagKeys { */ public static final TagKey ACACIA_LOGS = create(key("acacia_logs")); - /** - * {@code #minecraft:rabbit_food} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey RABBIT_FOOD = create(key("rabbit_food")); - - /** - * {@code #minecraft:gold_ores} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey GOLD_ORES = create(key("gold_ores")); - - /** - * {@code #minecraft:small_flowers} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey SMALL_FLOWERS = create(key("small_flowers")); - - /** - * {@code #minecraft:axes} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey AXES = create(key("axes")); - - /** - * {@code #minecraft:enchantable/armor} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey ENCHANTABLE_ARMOR = create(key("enchantable/armor")); - - /** - * {@code #minecraft:wooden_doors} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey WOODEN_DOORS = create(key("wooden_doors")); - - /** - * {@code #minecraft:sheep_food} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey SHEEP_FOOD = create(key("sheep_food")); - - /** - * {@code #minecraft:creeper_drop_music_discs} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey CREEPER_DROP_MUSIC_DISCS = create(key("creeper_drop_music_discs")); - - /** - * {@code #minecraft:iron_ores} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey IRON_ORES = create(key("iron_ores")); - - /** - * {@code #minecraft:armadillo_food} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey ARMADILLO_FOOD = create(key("armadillo_food")); - - /** - * {@code #minecraft:decorated_pot_sherds} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey DECORATED_POT_SHERDS = create(key("decorated_pot_sherds")); - - /** - * {@code #minecraft:enchantable/leg_armor} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey ENCHANTABLE_LEG_ARMOR = create(key("enchantable/leg_armor")); - - /** - * {@code #minecraft:llama_tempt_items} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey LLAMA_TEMPT_ITEMS = create(key("llama_tempt_items")); - - /** - * {@code #minecraft:enchantable/fire_aspect} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey ENCHANTABLE_FIRE_ASPECT = create(key("enchantable/fire_aspect")); - - /** - * {@code #minecraft:arrows} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey ARROWS = create(key("arrows")); - - /** - * {@code #minecraft:parrot_poisonous_food} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey PARROT_POISONOUS_FOOD = create(key("parrot_poisonous_food")); - - /** - * {@code #minecraft:stone_bricks} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey STONE_BRICKS = create(key("stone_bricks")); - - /** - * {@code #minecraft:noteblock_top_instruments} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey NOTEBLOCK_TOP_INSTRUMENTS = create(key("noteblock_top_instruments")); - - /** - * {@code #minecraft:fences} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey FENCES = create(key("fences")); - - /** - * {@code #minecraft:walls} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey WALLS = create(key("walls")); - - /** - * {@code #minecraft:breaks_decorated_pots} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey BREAKS_DECORATED_POTS = create(key("breaks_decorated_pots")); - - /** - * {@code #minecraft:mangrove_logs} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey MANGROVE_LOGS = create(key("mangrove_logs")); - - /** - * {@code #minecraft:wooden_slabs} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey WOODEN_SLABS = create(key("wooden_slabs")); - - /** - * {@code #minecraft:planks} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey PLANKS = create(key("planks")); - - /** - * {@code #minecraft:dampens_vibrations} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey DAMPENS_VIBRATIONS = create(key("dampens_vibrations")); - - /** - * {@code #minecraft:logs} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey LOGS = create(key("logs")); - - /** - * {@code #minecraft:dark_oak_logs} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey DARK_OAK_LOGS = create(key("dark_oak_logs")); - - /** - * {@code #minecraft:diamond_ores} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey DIAMOND_ORES = create(key("diamond_ores")); - - /** - * {@code #minecraft:spruce_logs} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey SPRUCE_LOGS = create(key("spruce_logs")); - - /** - * {@code #minecraft:camel_food} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey CAMEL_FOOD = create(key("camel_food")); - - /** - * {@code #minecraft:chicken_food} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey CHICKEN_FOOD = create(key("chicken_food")); - - /** - * {@code #minecraft:enchantable/fishing} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey ENCHANTABLE_FISHING = create(key("enchantable/fishing")); - - /** - * {@code #minecraft:ocelot_food} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey OCELOT_FOOD = create(key("ocelot_food")); - - /** - * {@code #minecraft:leg_armor} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey LEG_ARMOR = create(key("leg_armor")); - - /** - * {@code #minecraft:decorated_pot_ingredients} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey DECORATED_POT_INGREDIENTS = create(key("decorated_pot_ingredients")); - - /** - * {@code #minecraft:wooden_trapdoors} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey WOODEN_TRAPDOORS = create(key("wooden_trapdoors")); - - /** - * {@code #minecraft:trim_templates} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey TRIM_TEMPLATES = create(key("trim_templates")); - - /** - * {@code #minecraft:wart_blocks} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey WART_BLOCKS = create(key("wart_blocks")); - - /** - * {@code #minecraft:llama_food} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey LLAMA_FOOD = create(key("llama_food")); - - /** - * {@code #minecraft:enchantable/mining} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey ENCHANTABLE_MINING = create(key("enchantable/mining")); - - /** - * {@code #minecraft:axolotl_food} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey AXOLOTL_FOOD = create(key("axolotl_food")); - - /** - * {@code #minecraft:lapis_ores} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey LAPIS_ORES = create(key("lapis_ores")); - - /** - * {@code #minecraft:smelts_to_glass} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey SMELTS_TO_GLASS = create(key("smelts_to_glass")); - - /** - * {@code #minecraft:candles} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey CANDLES = create(key("candles")); - - /** - * {@code #minecraft:wolf_food} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey WOLF_FOOD = create(key("wolf_food")); - - /** - * {@code #minecraft:copper_ores} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey COPPER_ORES = create(key("copper_ores")); - - /** - * {@code #minecraft:stone_tool_materials} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey STONE_TOOL_MATERIALS = create(key("stone_tool_materials")); - - /** - * {@code #minecraft:tall_flowers} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey TALL_FLOWERS = create(key("tall_flowers")); - - /** - * {@code #minecraft:hoes} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey HOES = create(key("hoes")); - - /** - * {@code #minecraft:wooden_fences} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey WOODEN_FENCES = create(key("wooden_fences")); - - /** - * {@code #minecraft:non_flammable_wood} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey NON_FLAMMABLE_WOOD = create(key("non_flammable_wood")); - - /** - * {@code #minecraft:signs} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey SIGNS = create(key("signs")); - - /** - * {@code #minecraft:bee_food} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey BEE_FOOD = create(key("bee_food")); - - /** - * {@code #minecraft:enchantable/trident} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey ENCHANTABLE_TRIDENT = create(key("enchantable/trident")); - - /** - * {@code #minecraft:parrot_food} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey PARROT_FOOD = create(key("parrot_food")); - - /** - * {@code #minecraft:saplings} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey SAPLINGS = create(key("saplings")); - - /** - * {@code #minecraft:head_armor} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey HEAD_ARMOR = create(key("head_armor")); - - /** - * {@code #minecraft:chest_armor} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey CHEST_ARMOR = create(key("chest_armor")); - - /** - * {@code #minecraft:freeze_immune_wearables} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey FREEZE_IMMUNE_WEARABLES = create(key("freeze_immune_wearables")); - - /** - * {@code #minecraft:panda_food} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey PANDA_FOOD = create(key("panda_food")); - - /** - * {@code #minecraft:creeper_igniters} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey CREEPER_IGNITERS = create(key("creeper_igniters")); - - /** - * {@code #minecraft:wool} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey WOOL = create(key("wool")); - - /** - * {@code #minecraft:dirt} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey DIRT = create(key("dirt")); - - /** - * {@code #minecraft:redstone_ores} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey REDSTONE_ORES = create(key("redstone_ores")); - - /** - * {@code #minecraft:enchantable/bow} - * - * @apiNote This field is version-dependant and may be removed in future Minecraft versions - */ - public static final TagKey ENCHANTABLE_BOW = create(key("enchantable/bow")); - /** * {@code #minecraft:anvil} * @@ -1048,6 +40,671 @@ public final class ItemTypeTagKeys { */ public static final TagKey ANVIL = create(key("anvil")); + /** + * {@code #minecraft:armadillo_food} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey ARMADILLO_FOOD = create(key("armadillo_food")); + + /** + * {@code #minecraft:arrows} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey ARROWS = create(key("arrows")); + + /** + * {@code #minecraft:axes} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey AXES = create(key("axes")); + + /** + * {@code #minecraft:axolotl_food} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey AXOLOTL_FOOD = create(key("axolotl_food")); + + /** + * {@code #minecraft:bamboo_blocks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey BAMBOO_BLOCKS = create(key("bamboo_blocks")); + + /** + * {@code #minecraft:banners} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey BANNERS = create(key("banners")); + + /** + * {@code #minecraft:beacon_payment_items} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey BEACON_PAYMENT_ITEMS = create(key("beacon_payment_items")); + + /** + * {@code #minecraft:beds} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey BEDS = create(key("beds")); + + /** + * {@code #minecraft:bee_food} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey BEE_FOOD = create(key("bee_food")); + + /** + * {@code #minecraft:birch_logs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey BIRCH_LOGS = create(key("birch_logs")); + + /** + * {@code #minecraft:boats} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey BOATS = create(key("boats")); + + /** + * {@code #minecraft:bookshelf_books} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey BOOKSHELF_BOOKS = create(key("bookshelf_books")); + + /** + * {@code #minecraft:breaks_decorated_pots} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey BREAKS_DECORATED_POTS = create(key("breaks_decorated_pots")); + + /** + * {@code #minecraft:buttons} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey BUTTONS = create(key("buttons")); + + /** + * {@code #minecraft:camel_food} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey CAMEL_FOOD = create(key("camel_food")); + + /** + * {@code #minecraft:candles} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey CANDLES = create(key("candles")); + + /** + * {@code #minecraft:cat_food} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey CAT_FOOD = create(key("cat_food")); + + /** + * {@code #minecraft:cherry_logs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey CHERRY_LOGS = create(key("cherry_logs")); + + /** + * {@code #minecraft:chest_armor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey CHEST_ARMOR = create(key("chest_armor")); + + /** + * {@code #minecraft:chest_boats} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey CHEST_BOATS = create(key("chest_boats")); + + /** + * {@code #minecraft:chicken_food} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey CHICKEN_FOOD = create(key("chicken_food")); + + /** + * {@code #minecraft:cluster_max_harvestables} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey CLUSTER_MAX_HARVESTABLES = create(key("cluster_max_harvestables")); + + /** + * {@code #minecraft:coal_ores} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey COAL_ORES = create(key("coal_ores")); + + /** + * {@code #minecraft:coals} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey COALS = create(key("coals")); + + /** + * {@code #minecraft:compasses} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey COMPASSES = create(key("compasses")); + + /** + * {@code #minecraft:completes_find_tree_tutorial} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey COMPLETES_FIND_TREE_TUTORIAL = create(key("completes_find_tree_tutorial")); + + /** + * {@code #minecraft:copper_ores} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey COPPER_ORES = create(key("copper_ores")); + + /** + * {@code #minecraft:cow_food} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey COW_FOOD = create(key("cow_food")); + + /** + * {@code #minecraft:creeper_drop_music_discs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey CREEPER_DROP_MUSIC_DISCS = create(key("creeper_drop_music_discs")); + + /** + * {@code #minecraft:creeper_igniters} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey CREEPER_IGNITERS = create(key("creeper_igniters")); + + /** + * {@code #minecraft:crimson_stems} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey CRIMSON_STEMS = create(key("crimson_stems")); + + /** + * {@code #minecraft:dampens_vibrations} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey DAMPENS_VIBRATIONS = create(key("dampens_vibrations")); + + /** + * {@code #minecraft:dark_oak_logs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey DARK_OAK_LOGS = create(key("dark_oak_logs")); + + /** + * {@code #minecraft:decorated_pot_ingredients} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey DECORATED_POT_INGREDIENTS = create(key("decorated_pot_ingredients")); + + /** + * {@code #minecraft:decorated_pot_sherds} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey DECORATED_POT_SHERDS = create(key("decorated_pot_sherds")); + + /** + * {@code #minecraft:diamond_ores} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey DIAMOND_ORES = create(key("diamond_ores")); + + /** + * {@code #minecraft:dirt} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey DIRT = create(key("dirt")); + + /** + * {@code #minecraft:doors} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey DOORS = create(key("doors")); + + /** + * {@code #minecraft:dyeable} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey DYEABLE = create(key("dyeable")); + + /** + * {@code #minecraft:emerald_ores} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey EMERALD_ORES = create(key("emerald_ores")); + + /** + * {@code #minecraft:enchantable/armor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey ENCHANTABLE_ARMOR = create(key("enchantable/armor")); + + /** + * {@code #minecraft:enchantable/bow} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey ENCHANTABLE_BOW = create(key("enchantable/bow")); + + /** + * {@code #minecraft:enchantable/chest_armor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey ENCHANTABLE_CHEST_ARMOR = create(key("enchantable/chest_armor")); + + /** + * {@code #minecraft:enchantable/crossbow} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey ENCHANTABLE_CROSSBOW = create(key("enchantable/crossbow")); + + /** + * {@code #minecraft:enchantable/durability} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey ENCHANTABLE_DURABILITY = create(key("enchantable/durability")); + + /** + * {@code #minecraft:enchantable/equippable} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey ENCHANTABLE_EQUIPPABLE = create(key("enchantable/equippable")); + + /** + * {@code #minecraft:enchantable/fire_aspect} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey ENCHANTABLE_FIRE_ASPECT = create(key("enchantable/fire_aspect")); + + /** + * {@code #minecraft:enchantable/fishing} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey ENCHANTABLE_FISHING = create(key("enchantable/fishing")); + + /** + * {@code #minecraft:enchantable/foot_armor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey ENCHANTABLE_FOOT_ARMOR = create(key("enchantable/foot_armor")); + + /** + * {@code #minecraft:enchantable/head_armor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey ENCHANTABLE_HEAD_ARMOR = create(key("enchantable/head_armor")); + + /** + * {@code #minecraft:enchantable/leg_armor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey ENCHANTABLE_LEG_ARMOR = create(key("enchantable/leg_armor")); + + /** + * {@code #minecraft:enchantable/mace} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey ENCHANTABLE_MACE = create(key("enchantable/mace")); + + /** + * {@code #minecraft:enchantable/mining} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey ENCHANTABLE_MINING = create(key("enchantable/mining")); + + /** + * {@code #minecraft:enchantable/mining_loot} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey ENCHANTABLE_MINING_LOOT = create(key("enchantable/mining_loot")); + + /** + * {@code #minecraft:enchantable/sharp_weapon} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey ENCHANTABLE_SHARP_WEAPON = create(key("enchantable/sharp_weapon")); + + /** + * {@code #minecraft:enchantable/sword} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey ENCHANTABLE_SWORD = create(key("enchantable/sword")); + + /** + * {@code #minecraft:enchantable/trident} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey ENCHANTABLE_TRIDENT = create(key("enchantable/trident")); + + /** + * {@code #minecraft:enchantable/vanishing} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey ENCHANTABLE_VANISHING = create(key("enchantable/vanishing")); + + /** + * {@code #minecraft:enchantable/weapon} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey ENCHANTABLE_WEAPON = create(key("enchantable/weapon")); + + /** + * {@code #minecraft:fence_gates} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey FENCE_GATES = create(key("fence_gates")); + + /** + * {@code #minecraft:fences} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey FENCES = create(key("fences")); + + /** + * {@code #minecraft:fishes} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey FISHES = create(key("fishes")); + + /** + * {@code #minecraft:flowers} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey FLOWERS = create(key("flowers")); + + /** + * {@code #minecraft:foot_armor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey FOOT_ARMOR = create(key("foot_armor")); + + /** + * {@code #minecraft:fox_food} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey FOX_FOOD = create(key("fox_food")); + + /** + * {@code #minecraft:freeze_immune_wearables} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey FREEZE_IMMUNE_WEARABLES = create(key("freeze_immune_wearables")); + + /** + * {@code #minecraft:frog_food} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey FROG_FOOD = create(key("frog_food")); + + /** + * {@code #minecraft:goat_food} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey GOAT_FOOD = create(key("goat_food")); + + /** + * {@code #minecraft:gold_ores} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey GOLD_ORES = create(key("gold_ores")); + + /** + * {@code #minecraft:hanging_signs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey HANGING_SIGNS = create(key("hanging_signs")); + + /** + * {@code #minecraft:head_armor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey HEAD_ARMOR = create(key("head_armor")); + + /** + * {@code #minecraft:hoes} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey HOES = create(key("hoes")); + + /** + * {@code #minecraft:hoglin_food} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey HOGLIN_FOOD = create(key("hoglin_food")); + + /** + * {@code #minecraft:horse_food} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey HORSE_FOOD = create(key("horse_food")); + + /** + * {@code #minecraft:horse_tempt_items} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey HORSE_TEMPT_ITEMS = create(key("horse_tempt_items")); + + /** + * {@code #minecraft:ignored_by_piglin_babies} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey IGNORED_BY_PIGLIN_BABIES = create(key("ignored_by_piglin_babies")); + + /** + * {@code #minecraft:iron_ores} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey IRON_ORES = create(key("iron_ores")); + + /** + * {@code #minecraft:jungle_logs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey JUNGLE_LOGS = create(key("jungle_logs")); + + /** + * {@code #minecraft:lapis_ores} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey LAPIS_ORES = create(key("lapis_ores")); + + /** + * {@code #minecraft:leaves} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey LEAVES = create(key("leaves")); + + /** + * {@code #minecraft:lectern_books} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey LECTERN_BOOKS = create(key("lectern_books")); + + /** + * {@code #minecraft:leg_armor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey LEG_ARMOR = create(key("leg_armor")); + + /** + * {@code #minecraft:llama_food} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey LLAMA_FOOD = create(key("llama_food")); + + /** + * {@code #minecraft:llama_tempt_items} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey LLAMA_TEMPT_ITEMS = create(key("llama_tempt_items")); + + /** + * {@code #minecraft:logs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey LOGS = create(key("logs")); + + /** + * {@code #minecraft:logs_that_burn} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey LOGS_THAT_BURN = create(key("logs_that_burn")); + + /** + * {@code #minecraft:mangrove_logs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey MANGROVE_LOGS = create(key("mangrove_logs")); + + /** + * {@code #minecraft:meat} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey MEAT = create(key("meat")); + + /** + * {@code #minecraft:non_flammable_wood} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey NON_FLAMMABLE_WOOD = create(key("non_flammable_wood")); + + /** + * {@code #minecraft:noteblock_top_instruments} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey NOTEBLOCK_TOP_INSTRUMENTS = create(key("noteblock_top_instruments")); + + /** + * {@code #minecraft:oak_logs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey OAK_LOGS = create(key("oak_logs")); + + /** + * {@code #minecraft:ocelot_food} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey OCELOT_FOOD = create(key("ocelot_food")); + + /** + * {@code #minecraft:panda_food} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey PANDA_FOOD = create(key("panda_food")); + + /** + * {@code #minecraft:parrot_food} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey PARROT_FOOD = create(key("parrot_food")); + + /** + * {@code #minecraft:parrot_poisonous_food} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey PARROT_POISONOUS_FOOD = create(key("parrot_poisonous_food")); + /** * {@code #minecraft:pickaxes} * @@ -1055,17 +712,360 @@ public final class ItemTypeTagKeys { */ public static final TagKey PICKAXES = create(key("pickaxes")); + /** + * {@code #minecraft:pig_food} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey PIG_FOOD = create(key("pig_food")); + + /** + * {@code #minecraft:piglin_food} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey PIGLIN_FOOD = create(key("piglin_food")); + + /** + * {@code #minecraft:piglin_loved} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey PIGLIN_LOVED = create(key("piglin_loved")); + + /** + * {@code #minecraft:piglin_repellents} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey PIGLIN_REPELLENTS = create(key("piglin_repellents")); + + /** + * {@code #minecraft:planks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey PLANKS = create(key("planks")); + + /** + * {@code #minecraft:rabbit_food} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey RABBIT_FOOD = create(key("rabbit_food")); + + /** + * {@code #minecraft:rails} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey RAILS = create(key("rails")); + + /** + * {@code #minecraft:redstone_ores} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey REDSTONE_ORES = create(key("redstone_ores")); + + /** + * {@code #minecraft:sand} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey SAND = create(key("sand")); + + /** + * {@code #minecraft:saplings} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey SAPLINGS = create(key("saplings")); + + /** + * {@code #minecraft:sheep_food} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey SHEEP_FOOD = create(key("sheep_food")); + + /** + * {@code #minecraft:shovels} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey SHOVELS = create(key("shovels")); + + /** + * {@code #minecraft:signs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey SIGNS = create(key("signs")); + + /** + * {@code #minecraft:skulls} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey SKULLS = create(key("skulls")); + + /** + * {@code #minecraft:slabs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey SLABS = create(key("slabs")); + + /** + * {@code #minecraft:small_flowers} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey SMALL_FLOWERS = create(key("small_flowers")); + + /** + * {@code #minecraft:smelts_to_glass} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey SMELTS_TO_GLASS = create(key("smelts_to_glass")); + + /** + * {@code #minecraft:sniffer_food} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey SNIFFER_FOOD = create(key("sniffer_food")); + + /** + * {@code #minecraft:soul_fire_base_blocks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey SOUL_FIRE_BASE_BLOCKS = create(key("soul_fire_base_blocks")); + + /** + * {@code #minecraft:spruce_logs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey SPRUCE_LOGS = create(key("spruce_logs")); + + /** + * {@code #minecraft:stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey STAIRS = create(key("stairs")); + + /** + * {@code #minecraft:stone_bricks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey STONE_BRICKS = create(key("stone_bricks")); + + /** + * {@code #minecraft:stone_buttons} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey STONE_BUTTONS = create(key("stone_buttons")); + + /** + * {@code #minecraft:stone_crafting_materials} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey STONE_CRAFTING_MATERIALS = create(key("stone_crafting_materials")); + + /** + * {@code #minecraft:stone_tool_materials} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey STONE_TOOL_MATERIALS = create(key("stone_tool_materials")); + + /** + * {@code #minecraft:strider_food} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey STRIDER_FOOD = create(key("strider_food")); + + /** + * {@code #minecraft:strider_tempt_items} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey STRIDER_TEMPT_ITEMS = create(key("strider_tempt_items")); + + /** + * {@code #minecraft:swords} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey SWORDS = create(key("swords")); + + /** + * {@code #minecraft:tall_flowers} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey TALL_FLOWERS = create(key("tall_flowers")); + + /** + * {@code #minecraft:terracotta} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey TERRACOTTA = create(key("terracotta")); + + /** + * {@code #minecraft:trapdoors} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey TRAPDOORS = create(key("trapdoors")); + + /** + * {@code #minecraft:trim_materials} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey TRIM_MATERIALS = create(key("trim_materials")); + + /** + * {@code #minecraft:trim_templates} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey TRIM_TEMPLATES = create(key("trim_templates")); + + /** + * {@code #minecraft:trimmable_armor} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey TRIMMABLE_ARMOR = create(key("trimmable_armor")); + + /** + * {@code #minecraft:turtle_food} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey TURTLE_FOOD = create(key("turtle_food")); + + /** + * {@code #minecraft:villager_plantable_seeds} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey VILLAGER_PLANTABLE_SEEDS = create(key("villager_plantable_seeds")); + + /** + * {@code #minecraft:walls} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey WALLS = create(key("walls")); + + /** + * {@code #minecraft:warped_stems} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey WARPED_STEMS = create(key("warped_stems")); + + /** + * {@code #minecraft:wart_blocks} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey WART_BLOCKS = create(key("wart_blocks")); + + /** + * {@code #minecraft:wolf_food} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey WOLF_FOOD = create(key("wolf_food")); + + /** + * {@code #minecraft:wooden_buttons} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey WOODEN_BUTTONS = create(key("wooden_buttons")); + + /** + * {@code #minecraft:wooden_doors} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey WOODEN_DOORS = create(key("wooden_doors")); + + /** + * {@code #minecraft:wooden_fences} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey WOODEN_FENCES = create(key("wooden_fences")); + + /** + * {@code #minecraft:wooden_pressure_plates} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey WOODEN_PRESSURE_PLATES = create(key("wooden_pressure_plates")); + + /** + * {@code #minecraft:wooden_slabs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey WOODEN_SLABS = create(key("wooden_slabs")); + + /** + * {@code #minecraft:wooden_stairs} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey WOODEN_STAIRS = create(key("wooden_stairs")); + + /** + * {@code #minecraft:wooden_trapdoors} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey WOODEN_TRAPDOORS = create(key("wooden_trapdoors")); + + /** + * {@code #minecraft:wool} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey WOOL = create(key("wool")); + + /** + * {@code #minecraft:wool_carpets} + * + * @apiNote This field is version-dependant and may be removed in future Minecraft versions + */ + public static final TagKey WOOL_CARPETS = create(key("wool_carpets")); + private ItemTypeTagKeys() { } /** - * Creates a tag key for {@link ItemType} in the registry {@code minecraft:root}. + * Creates a tag key for {@link ItemType} in the registry {@code minecraft:item}. * * @param key the tag key's key * @return a new tag key */ @ApiStatus.Experimental - public static @NotNull TagKey create(final @NotNull Key key) { + public static @NonNull TagKey create(final @NonNull Key key) { return TagKey.create(RegistryKey.ITEM, key); } } diff --git a/paper-api-generator/src/main/java/io/papermc/generator/types/GeneratedKeyType.java b/paper-api-generator/src/main/java/io/papermc/generator/types/GeneratedKeyType.java index 19cbf63cd4..cf6846134a 100644 --- a/paper-api-generator/src/main/java/io/papermc/generator/types/GeneratedKeyType.java +++ b/paper-api-generator/src/main/java/io/papermc/generator/types/GeneratedKeyType.java @@ -31,8 +31,6 @@ import net.minecraft.core.RegistrySetBuilder; import net.minecraft.data.registries.VanillaRegistries; import net.minecraft.resources.ResourceKey; import net.minecraft.world.flag.FeatureElement; -import net.minecraft.world.flag.FeatureFlags; -import org.bukkit.MinecraftExperimental; import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.framework.qual.DefaultQualifier; @@ -72,7 +70,7 @@ public class GeneratedKeyType extends SimpleGenerator { } private static final String CREATE_JAVADOC = """ - Creates a key for {@link $T} in a registry. + Creates a key for {@link $T} in the registry {@code $L}. @param key the value's key in the registry @return a new typed key @@ -102,7 +100,7 @@ public class GeneratedKeyType extends SimpleGenerator { .returns(returnType.annotated(NOT_NULL)); if (this.publicCreateKeyMethod) { create.addAnnotation(EXPERIMENTAL_API_ANNOTATION); // TODO remove once not experimental - create.addJavadoc(CREATE_JAVADOC, this.apiType); + create.addJavadoc(CREATE_JAVADOC, this.apiType, this.registryKey.location().toString()); } return create; } @@ -190,8 +188,6 @@ public class GeneratedKeyType extends SimpleGenerator { @Override protected JavaFile.Builder file(final JavaFile.Builder builder) { return builder - .skipJavaLangImports(true) - .addStaticImport(Key.class, "key") - .indent(" "); + .addStaticImport(Key.class, "key"); } } diff --git a/paper-api-generator/src/main/java/io/papermc/generator/types/GeneratedTagKeyType.java b/paper-api-generator/src/main/java/io/papermc/generator/types/GeneratedTagKeyType.java index 88079df443..ff8d8b612c 100644 --- a/paper-api-generator/src/main/java/io/papermc/generator/types/GeneratedTagKeyType.java +++ b/paper-api-generator/src/main/java/io/papermc/generator/types/GeneratedTagKeyType.java @@ -15,15 +15,11 @@ import io.papermc.paper.registry.RegistryKey; import io.papermc.paper.registry.tag.TagKey; import java.lang.reflect.Field; import java.lang.reflect.Modifier; -import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean; -import java.util.stream.Collectors; import net.kyori.adventure.key.Key; import net.minecraft.core.Registry; -import net.minecraft.core.RegistrySetBuilder; -import net.minecraft.data.registries.VanillaRegistries; import net.minecraft.resources.ResourceKey; import org.bukkit.MinecraftExperimental; @@ -39,11 +35,6 @@ import static javax.lang.model.element.Modifier.STATIC; public class GeneratedTagKeyType extends SimpleGenerator { - private static final Map>, RegistrySetBuilder.RegistryBootstrap> VANILLA_REGISTRY_ENTRIES = VanillaRegistries.BUILDER.entries.stream() - .collect(Collectors.toMap(RegistrySetBuilder.RegistryStub::key, RegistrySetBuilder.RegistryStub::bootstrap)); - - private static final Map>, RegistrySetBuilder.RegistryBootstrap> EXPERIMENTAL_REGISTRY_ENTRIES = Collections.emptyMap(); // Update for Experimental API - private static final Map, String> REGISTRY_KEY_FIELD_NAMES; static { final Map, String> map = new HashMap<>(); @@ -91,7 +82,7 @@ public class GeneratedTagKeyType extends SimpleGenerator { .returns(returnType.annotated(NOT_NULL)); if (this.publicCreateKeyMethod) { create.addAnnotation(EXPERIMENTAL_API_ANNOTATION); // TODO remove once not experimental - create.addJavadoc(CREATE_JAVADOC, this.apiType, this.registryKey.registry().toString()); + create.addJavadoc(CREATE_JAVADOC, this.apiType, this.registryKey.location().toString()); } return create; } @@ -102,8 +93,8 @@ public class GeneratedTagKeyType extends SimpleGenerator { .addJavadoc(Javadocs.getVersionDependentClassHeader("{@link $T#$L}"), RegistryKey.class, REGISTRY_KEY_FIELD_NAMES.get(this.apiRegistryKey)) .addAnnotations(Annotations.CLASS_HEADER) .addMethod(MethodSpec.constructorBuilder() - .addModifiers(PRIVATE) - .build() + .addModifiers(PRIVATE) + .build() ); } @@ -117,8 +108,7 @@ public class GeneratedTagKeyType extends SimpleGenerator { final Registry registry = Main.REGISTRY_ACCESS.registryOrThrow(this.registryKey); final AtomicBoolean allExperimental = new AtomicBoolean(true); - registry.getTags().forEach(pair -> { - final net.minecraft.tags.TagKey nmsTagKey = pair.getFirst(); + registry.getTagNames().sorted(Formatting.alphabeticKeyOrder(nmsTagKey -> nmsTagKey.location().getPath())).forEach(nmsTagKey -> { final String fieldName = Formatting.formatKeyAsField(nmsTagKey.location().getPath()); final FieldSpec.Builder fieldBuilder = FieldSpec.builder(tagKey, fieldName, PUBLIC, STATIC, FINAL) .initializer("$N(key($S))", createMethod.build(), nmsTagKey.location().getPath()) @@ -142,8 +132,6 @@ public class GeneratedTagKeyType extends SimpleGenerator { @Override protected JavaFile.Builder file(final JavaFile.Builder builder) { return builder - .skipJavaLangImports(true) - .addStaticImport(Key.class, "key") - .indent(" "); + .addStaticImport(Key.class, "key"); } } diff --git a/paper-api-generator/src/main/java/io/papermc/generator/types/goal/MobGoalGenerator.java b/paper-api-generator/src/main/java/io/papermc/generator/types/goal/MobGoalGenerator.java index aaa6e6ad19..ffe3c48572 100644 --- a/paper-api-generator/src/main/java/io/papermc/generator/types/goal/MobGoalGenerator.java +++ b/paper-api-generator/src/main/java/io/papermc/generator/types/goal/MobGoalGenerator.java @@ -132,8 +132,7 @@ public class MobGoalGenerator extends SimpleGenerator { @Override protected JavaFile.Builder file(JavaFile.Builder builder) { - return builder - .skipJavaLangImports(true); + return builder; } record DeprecatedEntry(Class entity, String entryName, @Nullable String removalVersion, diff --git a/paper-api-generator/src/main/java/io/papermc/generator/utils/Annotations.java b/paper-api-generator/src/main/java/io/papermc/generator/utils/Annotations.java index 52c876edba..f625c25a55 100644 --- a/paper-api-generator/src/main/java/io/papermc/generator/utils/Annotations.java +++ b/paper-api-generator/src/main/java/io/papermc/generator/utils/Annotations.java @@ -7,8 +7,8 @@ import java.util.List; import io.papermc.paper.generated.GeneratedFrom; import net.minecraft.SharedConstants; import org.bukkit.MinecraftExperimental; +import org.checkerframework.checker.nullness.qual.NonNull; import org.jetbrains.annotations.ApiStatus; -import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public final class Annotations { @@ -26,10 +26,10 @@ public final class Annotations { return annotationSpecs; } - public static AnnotationSpec deprecatedVersioned(final @Nullable String version, boolean forRemoval) { - AnnotationSpec.Builder annotationSpec = AnnotationSpec.builder(Deprecated.class); + public static AnnotationSpec deprecatedVersioned(final @Nullable String version, final boolean forRemoval) { + final AnnotationSpec.Builder annotationSpec = AnnotationSpec.builder(Deprecated.class); if (forRemoval) { - annotationSpec.addMember("forRemoval", "$L", forRemoval); + annotationSpec.addMember("forRemoval", "$L", true); } if (version != null) { annotationSpec.addMember("since", "$S", version); @@ -46,7 +46,7 @@ public final class Annotations { @ApiStatus.Experimental public static final AnnotationSpec EXPERIMENTAL_API_ANNOTATION = AnnotationSpec.builder(ApiStatus.Experimental.class).build(); - public static final AnnotationSpec NOT_NULL = AnnotationSpec.builder(NotNull.class).build(); + public static final AnnotationSpec NOT_NULL = AnnotationSpec.builder(NonNull.class).build(); private static final AnnotationSpec SUPPRESS_WARNINGS = AnnotationSpec.builder(SuppressWarnings.class) .addMember("value", "$S", "unused") .addMember("value", "$S", "SpellCheckingInspection") diff --git a/paper-api-generator/src/main/java/io/papermc/generator/utils/CollectingContext.java b/paper-api-generator/src/main/java/io/papermc/generator/utils/CollectingContext.java index 15cb4ac3e7..bb0687aa24 100644 --- a/paper-api-generator/src/main/java/io/papermc/generator/utils/CollectingContext.java +++ b/paper-api-generator/src/main/java/io/papermc/generator/utils/CollectingContext.java @@ -2,7 +2,6 @@ package io.papermc.generator.utils; import com.mojang.serialization.Lifecycle; import io.papermc.generator.Main; -import java.util.List; import java.util.Set; import net.minecraft.core.Holder; import net.minecraft.core.HolderGetter; diff --git a/paper-api-generator/src/main/java/io/papermc/generator/utils/TagCollector.java b/paper-api-generator/src/main/java/io/papermc/generator/utils/TagCollector.java index 5254478c41..2c537dba93 100644 --- a/paper-api-generator/src/main/java/io/papermc/generator/utils/TagCollector.java +++ b/paper-api-generator/src/main/java/io/papermc/generator/utils/TagCollector.java @@ -4,7 +4,6 @@ import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; import com.mojang.logging.LogUtils; import io.papermc.generator.Main; -import io.papermc.generator.utils.Formatting; import java.util.Collections; import java.util.IdentityHashMap; import java.util.Map; @@ -19,7 +18,6 @@ import net.minecraft.server.packs.PackType; import net.minecraft.server.packs.repository.BuiltInPackSource; import net.minecraft.server.packs.resources.MultiPackResourceManager; import net.minecraft.tags.TagKey; -import net.minecraft.tags.TagManager; import org.slf4j.Logger; // collect all the tags by grabbing the json from the data-packs @@ -50,9 +48,9 @@ public final class TagCollector { } result.put(entry.value().getTagNames() - .filter(tagKey -> tagKey.location().getPath().equals(path)) - .findFirst() - .orElseThrow(), packId); + .filter(tagKey -> tagKey.location().getPath().equals(path)) + .findFirst() + .orElseThrow(), packId); }); }); return Collections.unmodifiableMap(result); diff --git a/patches/api/0001-Convert-project-to-Gradle.patch b/patches/api/0001-Convert-project-to-Gradle.patch index aa54057aba..339ca372f0 100644 --- a/patches/api/0001-Convert-project-to-Gradle.patch +++ b/patches/api/0001-Convert-project-to-Gradle.patch @@ -124,7 +124,7 @@ index 0000000000000000000000000000000000000000..6271e2bad0ed937c2c46a8c8fdf186c4 +} diff --git a/pom.xml b/pom.xml deleted file mode 100644 -index 86628114c1d111f6d256186ca739ba8a44b3412a..0000000000000000000000000000000000000000 +index 2c5ac393cffbe61330c5aa95115e7e906c0775d3..0000000000000000000000000000000000000000 --- a/pom.xml +++ /dev/null @@ -1,267 +0,0 @@ @@ -135,7 +135,7 @@ index 86628114c1d111f6d256186ca739ba8a44b3412a..00000000000000000000000000000000 - - org.spigotmc - spigot-api -- 1.21-R0.1-SNAPSHOT +- 1.21.1-R0.1-SNAPSHOT - jar - - Spigot-API diff --git a/patches/api/0006-Adventure.patch b/patches/api/0006-Adventure.patch index dbb8f58c58..e7fba0f826 100644 --- a/patches/api/0006-Adventure.patch +++ b/patches/api/0006-Adventure.patch @@ -4327,10 +4327,10 @@ index 5adbe0514129abf3cfbc4b29a213f522359fe2e1..72ebc29db42d08d1d0361dba462fc8a5 /** diff --git a/src/main/java/org/bukkit/inventory/InventoryView.java b/src/main/java/org/bukkit/inventory/InventoryView.java -index 5b479ff2abe8cdd5e889803c73a713bc9855bc0b..5954dff2134654bb0ccc3b4c3b51a8e1ca77f6c9 100644 +index 278259e211b926283ee6dfef6f96e11ddbcbf275..ebc14022c9ef9b0b3331ee53e96a32667e4762e0 100644 --- a/src/main/java/org/bukkit/inventory/InventoryView.java +++ b/src/main/java/org/bukkit/inventory/InventoryView.java -@@ -267,12 +267,26 @@ public interface InventoryView { +@@ -269,12 +269,26 @@ public interface InventoryView { */ public boolean setProperty(@NotNull Property prop, int value); diff --git a/patches/api/0053-Fix-upstream-javadocs.patch b/patches/api/0053-Fix-upstream-javadocs.patch index 25d3e035cf..7d51adc5a1 100644 --- a/patches/api/0053-Fix-upstream-javadocs.patch +++ b/patches/api/0053-Fix-upstream-javadocs.patch @@ -416,7 +416,7 @@ index 4e1fb0974d061d5bb64899cac576318d2e6f8bf6..539b3527d0c66611e21712f29b90fba9 public int getEntityId(); diff --git a/src/main/java/org/bukkit/entity/HumanEntity.java b/src/main/java/org/bukkit/entity/HumanEntity.java -index 274f3ccbc39d4d6ff0665abf334d526317275dd0..a7bfaa874cbd3fc8d24fffe2f7f14594b37fa18c 100644 +index 8fdfa1d79daf464f8e364fd9e19d1de3a2a6848c..195a7fa0ea8e056cbde7b9152cc014d2c94353ff 100644 --- a/src/main/java/org/bukkit/entity/HumanEntity.java +++ b/src/main/java/org/bukkit/entity/HumanEntity.java @@ -22,6 +22,11 @@ import org.jetbrains.annotations.Nullable; @@ -687,7 +687,7 @@ index be0a2d1f234d8265d98e54e518a994957b1f3ab7..4e3c406ba883aae553e8d69b6b719b87 * than BLOCK_CANBUILD, as this refers to a player, not universe-physics * rule like cactus on dirt. diff --git a/src/main/java/org/bukkit/event/enchantment/PrepareItemEnchantEvent.java b/src/main/java/org/bukkit/event/enchantment/PrepareItemEnchantEvent.java -index fc2120e03737f5882d6ae916db93fdcf4939b2ba..f2edd4a9357832e9dec3fb0aafa006335d7b289b 100644 +index 035c647f4d4e3c34f171bb7d7fa6b2b7b3442669..7ae338bcecff2ce25939035181457ced505b3a49 100644 --- a/src/main/java/org/bukkit/event/enchantment/PrepareItemEnchantEvent.java +++ b/src/main/java/org/bukkit/event/enchantment/PrepareItemEnchantEvent.java @@ -81,7 +81,7 @@ public class PrepareItemEnchantEvent extends InventoryEvent implements Cancellab @@ -999,7 +999,7 @@ index 9013d043503d175004ad276799e5935b7fa59dc4..ceae092eb782698803c6c3df41267dde public class InventoryOpenEvent extends InventoryEvent implements Cancellable { private static final HandlerList handlers = new HandlerList(); diff --git a/src/main/java/org/bukkit/event/inventory/PrepareAnvilEvent.java b/src/main/java/org/bukkit/event/inventory/PrepareAnvilEvent.java -index 6782024735a885ba0b1b4dba4a576740c1410366..8977f7609431c3c46324a82de84d4a32f4b71c57 100644 +index 08a7c564fe5d3d232998d1789d4d4723a59c1430..8a5be3f0322ac19aeac3f00df54add0e73bc87ed 100644 --- a/src/main/java/org/bukkit/event/inventory/PrepareAnvilEvent.java +++ b/src/main/java/org/bukkit/event/inventory/PrepareAnvilEvent.java @@ -24,6 +24,20 @@ public class PrepareAnvilEvent extends PrepareInventoryResultEvent { @@ -1022,7 +1022,7 @@ index 6782024735a885ba0b1b4dba4a576740c1410366..8977f7609431c3c46324a82de84d4a32 + @NotNull @Override - public HandlerList getHandlers() { + public AnvilView getView() { diff --git a/src/main/java/org/bukkit/event/player/PlayerResourcePackStatusEvent.java b/src/main/java/org/bukkit/event/player/PlayerResourcePackStatusEvent.java index e4c32b21ab013703a6a1b07a1ad564d914ebe83f..e58fecf0fe54db06e0e944027923a352fd8005d8 100644 --- a/src/main/java/org/bukkit/event/player/PlayerResourcePackStatusEvent.java @@ -1430,7 +1430,7 @@ index f1918027c3a8735b31566856218611656b56db20..476fe14faa39f02444cab8ad95d44010 * @return the currently held item * @see #getItemInMainHand() diff --git a/src/main/java/org/bukkit/inventory/ShapedRecipe.java b/src/main/java/org/bukkit/inventory/ShapedRecipe.java -index a601bc38e322e5810cf883708541e2d199f09ebb..d89068a37de1dcad0b82dee09cc7829109921a05 100644 +index 16c10d75dd28f6bbe843935e8bc91f2bccbd360a..c414ccf03572d48f5c096516fc60a59bb1e8efd7 100644 --- a/src/main/java/org/bukkit/inventory/ShapedRecipe.java +++ b/src/main/java/org/bukkit/inventory/ShapedRecipe.java @@ -24,8 +24,6 @@ public class ShapedRecipe extends CraftingRecipe { @@ -1442,8 +1442,8 @@ index a601bc38e322e5810cf883708541e2d199f09ebb..d89068a37de1dcad0b82dee09cc78291 * @see ShapedRecipe#setIngredient(char, RecipeChoice) * @deprecated Recipes must have keys. Use {@link #ShapedRecipe(NamespacedKey, ItemStack)} * instead. -@@ -44,8 +42,6 @@ public class ShapedRecipe extends CraftingRecipe { - * @param result The item you want the recipe to create. +@@ -45,8 +43,6 @@ public class ShapedRecipe extends CraftingRecipe { + * @exception IllegalArgumentException if the {@code result} is an empty item (AIR) * @see ShapedRecipe#shape(String...) * @see ShapedRecipe#setIngredient(char, Material) - * @see ShapedRecipe#setIngredient(char, Material, int) @@ -1452,12 +1452,12 @@ index a601bc38e322e5810cf883708541e2d199f09ebb..d89068a37de1dcad0b82dee09cc78291 */ public ShapedRecipe(@NotNull NamespacedKey key, @NotNull ItemStack result) { diff --git a/src/main/java/org/bukkit/inventory/ShapelessRecipe.java b/src/main/java/org/bukkit/inventory/ShapelessRecipe.java -index 3d50775da447175b2a94ed9056ef36aa1e69c2eb..03839302c94adc3175d0a88065cd230257ffd20d 100644 +index bc924ae23fa10d87537aebbfd126aa44f199b65c..b7f46a048633945dc71e8efec9a7ebeed5832fd7 100644 --- a/src/main/java/org/bukkit/inventory/ShapelessRecipe.java +++ b/src/main/java/org/bukkit/inventory/ShapelessRecipe.java -@@ -30,11 +30,8 @@ public class ShapelessRecipe extends CraftingRecipe { - * @param key the unique recipe key +@@ -31,11 +31,8 @@ public class ShapelessRecipe extends CraftingRecipe { * @param result The item you want the recipe to create. + * @exception IllegalArgumentException if the {@code result} is an empty item (AIR) * @see ShapelessRecipe#addIngredient(Material) - * @see ShapelessRecipe#addIngredient(MaterialData) - * @see ShapelessRecipe#addIngredient(Material,int) @@ -1467,8 +1467,8 @@ index 3d50775da447175b2a94ed9056ef36aa1e69c2eb..03839302c94adc3175d0a88065cd2302 + * @see ShapelessRecipe#addIngredient(RecipeChoice) */ public ShapelessRecipe(@NotNull NamespacedKey key, @NotNull ItemStack result) { - super(key, result); -@@ -174,7 +171,7 @@ public class ShapelessRecipe extends CraftingRecipe { + super(key, checkResult(result)); +@@ -175,7 +172,7 @@ public class ShapelessRecipe extends CraftingRecipe { /** * Removes multiple instances of an ingredient from the list. If there are diff --git a/patches/api/0059-Shoulder-Entities-Release-API.patch b/patches/api/0059-Shoulder-Entities-Release-API.patch index b7f5537f79..6ac15e28ab 100644 --- a/patches/api/0059-Shoulder-Entities-Release-API.patch +++ b/patches/api/0059-Shoulder-Entities-Release-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Shoulder Entities Release API diff --git a/src/main/java/org/bukkit/entity/HumanEntity.java b/src/main/java/org/bukkit/entity/HumanEntity.java -index a7bfaa874cbd3fc8d24fffe2f7f14594b37fa18c..8cc6f8547380d567aef7910ef309193bd79ced09 100644 +index 195a7fa0ea8e056cbde7b9152cc014d2c94353ff..85eec2e57b03c11f4737addb0fa88b7bf29dc9e5 100644 --- a/src/main/java/org/bukkit/entity/HumanEntity.java +++ b/src/main/java/org/bukkit/entity/HumanEntity.java -@@ -335,6 +335,26 @@ public interface HumanEntity extends LivingEntity, AnimalTamer, InventoryHolder +@@ -337,6 +337,26 @@ public interface HumanEntity extends LivingEntity, AnimalTamer, InventoryHolder */ public int getExpToLevel(); diff --git a/patches/api/0075-Display-warning-on-deprecated-recipe-API.patch b/patches/api/0075-Display-warning-on-deprecated-recipe-API.patch index 94f1cdd1f2..c751b7334b 100644 --- a/patches/api/0075-Display-warning-on-deprecated-recipe-API.patch +++ b/patches/api/0075-Display-warning-on-deprecated-recipe-API.patch @@ -10,25 +10,25 @@ on the players login. Plugin authors need to define a key to keep it consistent between server restarts. diff --git a/src/main/java/org/bukkit/inventory/ShapedRecipe.java b/src/main/java/org/bukkit/inventory/ShapedRecipe.java -index 9f9c67e935940833bbfe58e6bfa398e6c86980d5..71e494177473c62449aafda1699b26a0c4c81a68 100644 +index c414ccf03572d48f5c096516fc60a59bb1e8efd7..e9bac744c5b173e6767e2de8480a6697969fdbb0 100644 --- a/src/main/java/org/bukkit/inventory/ShapedRecipe.java +++ b/src/main/java/org/bukkit/inventory/ShapedRecipe.java @@ -31,6 +31,7 @@ public class ShapedRecipe extends CraftingRecipe { @Deprecated public ShapedRecipe(@NotNull ItemStack result) { - super(NamespacedKey.randomKey(), result); + this(NamespacedKey.randomKey(), result); + new Throwable("Warning: A plugin is creating a recipe using a Deprecated method. This will cause you to receive warnings stating 'Tried to load unrecognized recipe: bukkit:'. Please ask the author to give their recipe a static key using NamespacedKey.").printStackTrace(); // Paper } /** diff --git a/src/main/java/org/bukkit/inventory/ShapelessRecipe.java b/src/main/java/org/bukkit/inventory/ShapelessRecipe.java -index 03839302c94adc3175d0a88065cd230257ffd20d..d6e38c7ccfe3b6e85eafb611da20b1a29fb74d97 100644 +index b7f46a048633945dc71e8efec9a7ebeed5832fd7..a7513c1aa09b88e3f99e7db40661fd83e682de96 100644 --- a/src/main/java/org/bukkit/inventory/ShapelessRecipe.java +++ b/src/main/java/org/bukkit/inventory/ShapelessRecipe.java @@ -20,6 +20,7 @@ public class ShapelessRecipe extends CraftingRecipe { @Deprecated public ShapelessRecipe(@NotNull ItemStack result) { - super(NamespacedKey.randomKey(), result); + this(NamespacedKey.randomKey(), result); + new Throwable("Warning: A plugin is creating a recipe using a Deprecated method. This will cause you to receive warnings stating 'Tried to load unrecognized recipe: bukkit:'. Please ask the author to give their recipe a static key using NamespacedKey.").printStackTrace(); // Paper } diff --git a/patches/api/0092-Add-openSign-method-to-HumanEntity.patch b/patches/api/0092-Add-openSign-method-to-HumanEntity.patch index d519918aba..3fdf10fbfc 100644 --- a/patches/api/0092-Add-openSign-method-to-HumanEntity.patch +++ b/patches/api/0092-Add-openSign-method-to-HumanEntity.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add openSign method to HumanEntity diff --git a/src/main/java/org/bukkit/entity/HumanEntity.java b/src/main/java/org/bukkit/entity/HumanEntity.java -index 8cc6f8547380d567aef7910ef309193bd79ced09..48bb08cc7c0af6ebb905d1e175ada0fd7944ca48 100644 +index 85eec2e57b03c11f4737addb0fa88b7bf29dc9e5..58dbe34ab1b603c2cd53af1625c1f82f8890da01 100644 --- a/src/main/java/org/bukkit/entity/HumanEntity.java +++ b/src/main/java/org/bukkit/entity/HumanEntity.java -@@ -496,6 +496,26 @@ public interface HumanEntity extends LivingEntity, AnimalTamer, InventoryHolder +@@ -498,6 +498,26 @@ public interface HumanEntity extends LivingEntity, AnimalTamer, InventoryHolder */ @Deprecated public void setShoulderEntityRight(@Nullable Entity entity); diff --git a/patches/api/0114-LivingEntity-Active-Item-API.patch b/patches/api/0114-LivingEntity-Active-Item-API.patch index f98f5d9a7e..0081842496 100644 --- a/patches/api/0114-LivingEntity-Active-Item-API.patch +++ b/patches/api/0114-LivingEntity-Active-Item-API.patch @@ -9,10 +9,10 @@ such as a bow or eating food. Co-authored-by: Jake Potrebic diff --git a/src/main/java/org/bukkit/entity/HumanEntity.java b/src/main/java/org/bukkit/entity/HumanEntity.java -index 48bb08cc7c0af6ebb905d1e175ada0fd7944ca48..ee3086661e11d3d8faec30590be7131648d3b82a 100644 +index 58dbe34ab1b603c2cd53af1625c1f82f8890da01..9cbb9093e7d8cd21eef6a23c265d68d7d0ee97b8 100644 --- a/src/main/java/org/bukkit/entity/HumanEntity.java +++ b/src/main/java/org/bukkit/entity/HumanEntity.java -@@ -325,7 +325,9 @@ public interface HumanEntity extends LivingEntity, AnimalTamer, InventoryHolder +@@ -327,7 +327,9 @@ public interface HumanEntity extends LivingEntity, AnimalTamer, InventoryHolder * blocking). * * @return Whether their hand is raised diff --git a/patches/api/0117-InventoryCloseEvent-Reason-API.patch b/patches/api/0117-InventoryCloseEvent-Reason-API.patch index ed0568548a..1be4583340 100644 --- a/patches/api/0117-InventoryCloseEvent-Reason-API.patch +++ b/patches/api/0117-InventoryCloseEvent-Reason-API.patch @@ -7,10 +7,10 @@ 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/org/bukkit/entity/HumanEntity.java b/src/main/java/org/bukkit/entity/HumanEntity.java -index ee3086661e11d3d8faec30590be7131648d3b82a..25cd03f2f3dc0aaa67173c0f3ebfe56402489e24 100644 +index 9cbb9093e7d8cd21eef6a23c265d68d7d0ee97b8..3985798654a3085c128144e46f7113b7744b8d14 100644 --- a/src/main/java/org/bukkit/entity/HumanEntity.java +++ b/src/main/java/org/bukkit/entity/HumanEntity.java -@@ -185,6 +185,15 @@ public interface HumanEntity extends LivingEntity, AnimalTamer, InventoryHolder +@@ -187,6 +187,15 @@ public interface HumanEntity extends LivingEntity, AnimalTamer, InventoryHolder */ public void closeInventory(); diff --git a/patches/api/0160-Add-ItemStack-Recipe-API-helper-methods.patch b/patches/api/0160-Add-ItemStack-Recipe-API-helper-methods.patch index 14e94043d2..78e75fc75c 100644 --- a/patches/api/0160-Add-ItemStack-Recipe-API-helper-methods.patch +++ b/patches/api/0160-Add-ItemStack-Recipe-API-helper-methods.patch @@ -22,10 +22,10 @@ index a98fc2ffdae1a2f8f3a312bed95268e105f7f791..91bfeffcdbe47208c7d0ddbe013cd0f1 public static class ExactChoice implements RecipeChoice { diff --git a/src/main/java/org/bukkit/inventory/ShapedRecipe.java b/src/main/java/org/bukkit/inventory/ShapedRecipe.java -index 1ef513d4d03ce677ee9c77b91e2cc5553ab91e0b..1012656948e9bf2aa18867cc2409616f3f21501e 100644 +index e9bac744c5b173e6767e2de8480a6697969fdbb0..fa03cf187db29896f5af046b311f67881aee0ff4 100644 --- a/src/main/java/org/bukkit/inventory/ShapedRecipe.java +++ b/src/main/java/org/bukkit/inventory/ShapedRecipe.java -@@ -179,6 +179,13 @@ public class ShapedRecipe extends CraftingRecipe { +@@ -180,6 +180,13 @@ public class ShapedRecipe extends CraftingRecipe { return this; } @@ -40,10 +40,10 @@ index 1ef513d4d03ce677ee9c77b91e2cc5553ab91e0b..1012656948e9bf2aa18867cc2409616f * Get a copy of the ingredients map. * diff --git a/src/main/java/org/bukkit/inventory/ShapelessRecipe.java b/src/main/java/org/bukkit/inventory/ShapelessRecipe.java -index d6e38c7ccfe3b6e85eafb611da20b1a29fb74d97..b8ac602cd2718d615ec243ce648951a1a46c26ec 100644 +index a7513c1aa09b88e3f99e7db40661fd83e682de96..63a233cc819d8d6995d14b9dbfabc14d89af54cc 100644 --- a/src/main/java/org/bukkit/inventory/ShapelessRecipe.java +++ b/src/main/java/org/bukkit/inventory/ShapelessRecipe.java -@@ -131,6 +131,40 @@ public class ShapelessRecipe extends CraftingRecipe { +@@ -132,6 +132,40 @@ public class ShapelessRecipe extends CraftingRecipe { return this; } @@ -84,7 +84,7 @@ index d6e38c7ccfe3b6e85eafb611da20b1a29fb74d97..b8ac602cd2718d615ec243ce648951a1 /** * Removes an ingredient from the list. * -@@ -154,7 +188,7 @@ public class ShapelessRecipe extends CraftingRecipe { +@@ -155,7 +189,7 @@ public class ShapelessRecipe extends CraftingRecipe { */ @NotNull public ShapelessRecipe removeIngredient(@NotNull Material ingredient) { @@ -93,7 +93,7 @@ index d6e38c7ccfe3b6e85eafb611da20b1a29fb74d97..b8ac602cd2718d615ec243ce648951a1 } /** -@@ -181,7 +215,7 @@ public class ShapelessRecipe extends CraftingRecipe { +@@ -182,7 +216,7 @@ public class ShapelessRecipe extends CraftingRecipe { */ @NotNull public ShapelessRecipe removeIngredient(int count, @NotNull Material ingredient) { diff --git a/patches/api/0166-Fix-Spigot-annotation-mistakes.patch b/patches/api/0166-Fix-Spigot-annotation-mistakes.patch index da580bdf21..e7952ac8d4 100644 --- a/patches/api/0166-Fix-Spigot-annotation-mistakes.patch +++ b/patches/api/0166-Fix-Spigot-annotation-mistakes.patch @@ -453,7 +453,7 @@ index 48aecc9421c500137bbef1dfe3bec8de277c3ff9..aff858346776386f1288b648b221404f return note; } diff --git a/src/main/java/org/bukkit/Registry.java b/src/main/java/org/bukkit/Registry.java -index 3bd96bbd35b657a6030d744e86622e616c2c3b08..5529e227781cd2411de9c6581a1cb1255ce9bb20 100644 +index d1906d150a7d4c4852e085d6fd480aec317c22e4..e9edc8c17cbd29cfdad31df13acb15bab2304735 100644 --- a/src/main/java/org/bukkit/Registry.java +++ b/src/main/java/org/bukkit/Registry.java @@ -220,14 +220,12 @@ public interface Registry extends Iterable { @@ -1067,16 +1067,28 @@ index 53119742beda00a38111063243665bb995ae2188..2d084214e991fecc51f8e18e3d733e43 public class CampfireStartEvent extends InventoryBlockStartEvent { private static final HandlerList handlers = new HandlerList(); +diff --git a/src/main/java/org/bukkit/event/block/CrafterCraftEvent.java b/src/main/java/org/bukkit/event/block/CrafterCraftEvent.java +index f4efb2190ae4b1fa1823d5c97ad518c6d34f0a1a..3d6c0ecc70a748b8508b55513f9d5fa6b4bd6353 100644 +--- a/src/main/java/org/bukkit/event/block/CrafterCraftEvent.java ++++ b/src/main/java/org/bukkit/event/block/CrafterCraftEvent.java +@@ -17,6 +17,7 @@ public class CrafterCraftEvent extends BlockEvent implements Cancellable { + private ItemStack result; + private boolean cancelled; + ++ @org.jetbrains.annotations.ApiStatus.Internal // Paper - fix upstream annotation mistakes + public CrafterCraftEvent(@NotNull Block theBlock, @NotNull CraftingRecipe recipe, @NotNull ItemStack result) { + super(theBlock); + this.result = result; diff --git a/src/main/java/org/bukkit/event/enchantment/PrepareItemEnchantEvent.java b/src/main/java/org/bukkit/event/enchantment/PrepareItemEnchantEvent.java -index f2edd4a9357832e9dec3fb0aafa006335d7b289b..f05ce4fd6c4bbd79edc5f65e7edd1e4a63e93fb8 100644 +index 7ae338bcecff2ce25939035181457ced505b3a49..27564727edbd9f093e3a021ce6f30e1146a8ddbb 100644 --- a/src/main/java/org/bukkit/event/enchantment/PrepareItemEnchantEvent.java +++ b/src/main/java/org/bukkit/event/enchantment/PrepareItemEnchantEvent.java @@ -23,7 +23,7 @@ public class PrepareItemEnchantEvent extends InventoryEvent implements Cancellab private boolean cancelled; private final Player enchanter; -- public PrepareItemEnchantEvent(@NotNull final Player enchanter, @NotNull InventoryView view, @NotNull final Block table, @NotNull final ItemStack item, @NotNull final EnchantmentOffer[] offers, final int bonus) { -+ public PrepareItemEnchantEvent(@NotNull final Player enchanter, @NotNull InventoryView view, @NotNull final Block table, @NotNull final ItemStack item, @org.jetbrains.annotations.Nullable final EnchantmentOffer @NotNull [] offers, final int bonus) { // Paper - offers can contain null values +- public PrepareItemEnchantEvent(@NotNull final Player enchanter, @NotNull EnchantmentView view, @NotNull final Block table, @NotNull final ItemStack item, @NotNull final EnchantmentOffer[] offers, final int bonus) { ++ public PrepareItemEnchantEvent(@NotNull final Player enchanter, @NotNull EnchantmentView view, @NotNull final Block table, @NotNull final ItemStack item, @org.jetbrains.annotations.Nullable final EnchantmentOffer @NotNull [] offers, final int bonus) { // Paper - offers can contain null values super(view); this.enchanter = enchanter; this.table = table; @@ -1497,10 +1509,10 @@ index f1a48eab1a357ae64545e1f1dc941c383cff8707..466d1bd7089b76f48f953e1a51c611ec /** * Checks if the inventory contains any ItemStacks with the given diff --git a/src/main/java/org/bukkit/inventory/InventoryView.java b/src/main/java/org/bukkit/inventory/InventoryView.java -index 5954dff2134654bb0ccc3b4c3b51a8e1ca77f6c9..72f93377b60a3b6a08b8c8264ee7313e89c15da0 100644 +index ebc14022c9ef9b0b3331ee53e96a32667e4762e0..2b2c5faabce1628bd2e82a840dc97fe79bb57856 100644 --- a/src/main/java/org/bukkit/inventory/InventoryView.java +++ b/src/main/java/org/bukkit/inventory/InventoryView.java -@@ -121,9 +121,9 @@ public interface InventoryView { +@@ -123,9 +123,9 @@ public interface InventoryView { * Gets the id of this view. * * @return the id of this view @@ -1512,7 +1524,7 @@ index 5954dff2134654bb0ccc3b4c3b51a8e1ca77f6c9..72f93377b60a3b6a08b8c8264ee7313e public int getId() { return id; } -@@ -193,10 +193,10 @@ public interface InventoryView { +@@ -195,10 +195,10 @@ public interface InventoryView { /** * Get the item on the cursor of one of the viewing players. * @@ -1627,10 +1639,10 @@ index 476fe14faa39f02444cab8ad95d4401033dc6938..2c54660dc1fbc7c1232096797a23cae1 /** diff --git a/src/main/java/org/bukkit/inventory/ShapedRecipe.java b/src/main/java/org/bukkit/inventory/ShapedRecipe.java -index 1012656948e9bf2aa18867cc2409616f3f21501e..aa3b3070126f1c492f004ec7599eeb379b58f207 100644 +index fa03cf187db29896f5af046b311f67881aee0ff4..295d82dd73b600e9436d2bbec0e11dbeaf78bbf4 100644 --- a/src/main/java/org/bukkit/inventory/ShapedRecipe.java +++ b/src/main/java/org/bukkit/inventory/ShapedRecipe.java -@@ -106,8 +106,10 @@ public class ShapedRecipe extends CraftingRecipe { +@@ -107,8 +107,10 @@ public class ShapedRecipe extends CraftingRecipe { * @return The changed recipe, so you can chain calls. * @throws IllegalArgumentException if the {@code key} is a space character * @throws IllegalArgumentException if the {@code key} does not appear in the shape. @@ -1641,7 +1653,7 @@ index 1012656948e9bf2aa18867cc2409616f3f21501e..aa3b3070126f1c492f004ec7599eeb37 public ShapedRecipe setIngredient(char key, @NotNull MaterialData ingredient) { return setIngredient(key, ingredient.getItemType(), ingredient.getData()); } -@@ -190,7 +192,9 @@ public class ShapedRecipe extends CraftingRecipe { +@@ -191,7 +193,9 @@ public class ShapedRecipe extends CraftingRecipe { * Get a copy of the ingredients map. * * @return The mapping of character to ingredients. @@ -1652,10 +1664,10 @@ index 1012656948e9bf2aa18867cc2409616f3f21501e..aa3b3070126f1c492f004ec7599eeb37 public Map getIngredientMap() { HashMap result = new HashMap(); diff --git a/src/main/java/org/bukkit/inventory/ShapelessRecipe.java b/src/main/java/org/bukkit/inventory/ShapelessRecipe.java -index b8ac602cd2718d615ec243ce648951a1a46c26ec..beb798482479c58a8628c314b510ab6349576ce8 100644 +index 63a233cc819d8d6995d14b9dbfabc14d89af54cc..3bf5064cd6ceb05ea98b18993da46c67be140115 100644 --- a/src/main/java/org/bukkit/inventory/ShapelessRecipe.java +++ b/src/main/java/org/bukkit/inventory/ShapelessRecipe.java -@@ -43,8 +43,10 @@ public class ShapelessRecipe extends CraftingRecipe { +@@ -44,8 +44,10 @@ public class ShapelessRecipe extends CraftingRecipe { * * @param ingredient The ingredient to add. * @return The changed recipe, so you can chain calls. @@ -1666,7 +1678,7 @@ index b8ac602cd2718d615ec243ce648951a1a46c26ec..beb798482479c58a8628c314b510ab63 public ShapelessRecipe addIngredient(@NotNull MaterialData ingredient) { return addIngredient(1, ingredient); } -@@ -80,8 +82,10 @@ public class ShapelessRecipe extends CraftingRecipe { +@@ -81,8 +83,10 @@ public class ShapelessRecipe extends CraftingRecipe { * @param count How many to add (can't be more than 9!) * @param ingredient The ingredient to add. * @return The changed recipe, so you can chain calls. @@ -1677,7 +1689,7 @@ index b8ac602cd2718d615ec243ce648951a1a46c26ec..beb798482479c58a8628c314b510ab63 public ShapelessRecipe addIngredient(int count, @NotNull MaterialData ingredient) { return addIngredient(count, ingredient.getItemType(), ingredient.getData()); } -@@ -198,8 +202,10 @@ public class ShapelessRecipe extends CraftingRecipe { +@@ -199,8 +203,10 @@ public class ShapelessRecipe extends CraftingRecipe { * * @param ingredient The ingredient to remove * @return The changed recipe. @@ -1688,7 +1700,7 @@ index b8ac602cd2718d615ec243ce648951a1a46c26ec..beb798482479c58a8628c314b510ab63 public ShapelessRecipe removeIngredient(@NotNull MaterialData ingredient) { return removeIngredient(ingredient.getItemType(), ingredient.getData()); } -@@ -226,8 +232,10 @@ public class ShapelessRecipe extends CraftingRecipe { +@@ -227,8 +233,10 @@ public class ShapelessRecipe extends CraftingRecipe { * @param count The number of copies to remove. * @param ingredient The ingredient to remove. * @return The changed recipe. @@ -1699,7 +1711,7 @@ index b8ac602cd2718d615ec243ce648951a1a46c26ec..beb798482479c58a8628c314b510ab63 public ShapelessRecipe removeIngredient(int count, @NotNull MaterialData ingredient) { return removeIngredient(count, ingredient.getItemType(), ingredient.getData()); } -@@ -277,7 +285,9 @@ public class ShapelessRecipe extends CraftingRecipe { +@@ -278,7 +286,9 @@ public class ShapelessRecipe extends CraftingRecipe { * Get the list of ingredients used for this recipe. * * @return The input list diff --git a/patches/api/0185-Add-item-slot-convenience-methods.patch b/patches/api/0185-Add-item-slot-convenience-methods.patch index 20638212e8..8da43fffbf 100644 --- a/patches/api/0185-Add-item-slot-convenience-methods.patch +++ b/patches/api/0185-Add-item-slot-convenience-methods.patch @@ -6,12 +6,12 @@ Subject: [PATCH] Add item slot convenience methods Co-authored-by: Janet Blackquill diff --git a/src/main/java/org/bukkit/inventory/AnvilInventory.java b/src/main/java/org/bukkit/inventory/AnvilInventory.java -index 52519cd877017704b53d36088d4d4c28f8f27397..c60be4fd24c7fdf65251dd6169e5e1ac3b588d95 100644 +index 4f484df010dabf03ac4712996a0fd4d8f3649b59..f1f97a85ec713c05c882d7588f4a3e4a017f4795 100644 --- a/src/main/java/org/bukkit/inventory/AnvilInventory.java +++ b/src/main/java/org/bukkit/inventory/AnvilInventory.java -@@ -63,4 +63,64 @@ public interface AnvilInventory extends Inventory { - * @param levels the maximum experience cost +@@ -78,4 +78,64 @@ public interface AnvilInventory extends Inventory { */ + @Deprecated(forRemoval = true, since = "1.21") void setMaximumRepairCost(int levels); + + // Paper start diff --git a/patches/api/0190-Potential-bed-API.patch b/patches/api/0190-Potential-bed-API.patch index 42350ac7bd..1cbb7daffa 100644 --- a/patches/api/0190-Potential-bed-API.patch +++ b/patches/api/0190-Potential-bed-API.patch @@ -8,10 +8,10 @@ Adds a new method to fetch the location of a player's bed without generating any getPotentialBedLocation - Gets the last known location of a player's bed. This does not preform any check if the bed is still valid and does not load any chunks. diff --git a/src/main/java/org/bukkit/entity/HumanEntity.java b/src/main/java/org/bukkit/entity/HumanEntity.java -index 25cd03f2f3dc0aaa67173c0f3ebfe56402489e24..ccaaf2b6f6424ec7c7d298ceabdc3e60a7917705 100644 +index 3985798654a3085c128144e46f7113b7744b8d14..11c5846848a6631a9376934622caeadd448b0391 100644 --- a/src/main/java/org/bukkit/entity/HumanEntity.java +++ b/src/main/java/org/bukkit/entity/HumanEntity.java -@@ -275,6 +275,19 @@ public interface HumanEntity extends LivingEntity, AnimalTamer, InventoryHolder +@@ -277,6 +277,19 @@ public interface HumanEntity extends LivingEntity, AnimalTamer, InventoryHolder */ public int getSleepTicks(); diff --git a/patches/api/0196-Add-PrepareResultEvent-PrepareGrindstoneEvent.patch b/patches/api/0196-Add-PrepareResultEvent-PrepareGrindstoneEvent.patch index 95fb3a46ed..10dd96ba7d 100644 --- a/patches/api/0196-Add-PrepareResultEvent-PrepareGrindstoneEvent.patch +++ b/patches/api/0196-Add-PrepareResultEvent-PrepareGrindstoneEvent.patch @@ -93,7 +93,7 @@ index 0000000000000000000000000000000000000000..c305c606bef93866993095cec5f50e19 + } +} diff --git a/src/main/java/org/bukkit/event/inventory/PrepareAnvilEvent.java b/src/main/java/org/bukkit/event/inventory/PrepareAnvilEvent.java -index 8977f7609431c3c46324a82de84d4a32f4b71c57..d884ecf40af964e718168ac055dd6c672d108eb1 100644 +index 8a5be3f0322ac19aeac3f00df54add0e73bc87ed..d2b4b2e9385e7c1e0e1e42886481b99ecc8dcf8e 100644 --- a/src/main/java/org/bukkit/event/inventory/PrepareAnvilEvent.java +++ b/src/main/java/org/bukkit/event/inventory/PrepareAnvilEvent.java @@ -10,9 +10,9 @@ import org.jetbrains.annotations.Nullable; @@ -106,10 +106,10 @@ index 8977f7609431c3c46324a82de84d4a32f4b71c57..d884ecf40af964e718168ac055dd6c67 - private static final HandlerList handlers = new HandlerList(); + // Paper - move HandlerList to PrepareInventoryResultEvent - public PrepareAnvilEvent(@NotNull InventoryView inventory, @Nullable ItemStack result) { + public PrepareAnvilEvent(@NotNull AnvilView inventory, @Nullable ItemStack result) { super(inventory, result); -@@ -38,14 +38,5 @@ public class PrepareAnvilEvent extends PrepareInventoryResultEvent { - super.setResult(result); +@@ -44,14 +44,5 @@ public class PrepareAnvilEvent extends PrepareInventoryResultEvent { + return (AnvilView) super.getView(); } - @NotNull diff --git a/patches/api/0204-Add-additional-open-container-api-to-HumanEntity.patch b/patches/api/0204-Add-additional-open-container-api-to-HumanEntity.patch index c81c83391c..3fe46b8c28 100644 --- a/patches/api/0204-Add-additional-open-container-api-to-HumanEntity.patch +++ b/patches/api/0204-Add-additional-open-container-api-to-HumanEntity.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add additional open container api to HumanEntity diff --git a/src/main/java/org/bukkit/entity/HumanEntity.java b/src/main/java/org/bukkit/entity/HumanEntity.java -index ccaaf2b6f6424ec7c7d298ceabdc3e60a7917705..b980d55b68ed9da78c5cd19f369bb00dccbf08e1 100644 +index 11c5846848a6631a9376934622caeadd448b0391..f20b0a439c4d5cd2c6caa70a46b1b49f8ab23425 100644 --- a/src/main/java/org/bukkit/entity/HumanEntity.java +++ b/src/main/java/org/bukkit/entity/HumanEntity.java -@@ -180,6 +180,92 @@ public interface HumanEntity extends LivingEntity, AnimalTamer, InventoryHolder +@@ -182,6 +182,92 @@ public interface HumanEntity extends LivingEntity, AnimalTamer, InventoryHolder @Nullable public InventoryView openMerchant(@NotNull Merchant merchant, boolean force); diff --git a/patches/api/0220-Expose-LivingEntity-hurt-direction.patch b/patches/api/0220-Expose-LivingEntity-hurt-direction.patch index 4d2cb26c38..d8800e48d1 100644 --- a/patches/api/0220-Expose-LivingEntity-hurt-direction.patch +++ b/patches/api/0220-Expose-LivingEntity-hurt-direction.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Expose LivingEntity hurt direction diff --git a/src/main/java/org/bukkit/entity/HumanEntity.java b/src/main/java/org/bukkit/entity/HumanEntity.java -index b980d55b68ed9da78c5cd19f369bb00dccbf08e1..4d6ceca22d98a3e46aa26ef26176c5417a5ccf35 100644 +index f20b0a439c4d5cd2c6caa70a46b1b49f8ab23425..937c136f2499bd1660989d14c0f50a7ef9a1a2b6 100644 --- a/src/main/java/org/bukkit/entity/HumanEntity.java +++ b/src/main/java/org/bukkit/entity/HumanEntity.java -@@ -354,6 +354,16 @@ public interface HumanEntity extends LivingEntity, AnimalTamer, InventoryHolder +@@ -356,6 +356,16 @@ public interface HumanEntity extends LivingEntity, AnimalTamer, InventoryHolder */ public void setCooldown(@NotNull Material material, int ticks); diff --git a/patches/api/0236-Add-RegistryAccess-for-managing-registries.patch b/patches/api/0236-Add-RegistryAccess-for-managing-registries.patch index f0864c18fa..a931d297be 100644 --- a/patches/api/0236-Add-RegistryAccess-for-managing-registries.patch +++ b/patches/api/0236-Add-RegistryAccess-for-managing-registries.patch @@ -206,10 +206,22 @@ index e0f652117e585882693736de8165ae9c689e1d68..fbe14c327ee9c1ac07893853ca7c699e return server.getRegistry(tClass); } diff --git a/src/main/java/org/bukkit/Registry.java b/src/main/java/org/bukkit/Registry.java -index 5529e227781cd2411de9c6581a1cb1255ce9bb20..f99e68f160deba42e2833fa0f81df4c17bf68ec7 100644 +index e9edc8c17cbd29cfdad31df13acb15bab2304735..d855e703339e6f6e50fcb19e8954a9434e718b2f 100644 --- a/src/main/java/org/bukkit/Registry.java +++ b/src/main/java/org/bukkit/Registry.java -@@ -102,7 +102,7 @@ public interface Registry extends Iterable { +@@ -87,8 +87,10 @@ public interface Registry extends Iterable { + * Server banner patterns. + * + * @see PatternType ++ * @deprecated use {@link io.papermc.paper.registry.RegistryAccess#getRegistry(io.papermc.paper.registry.RegistryKey)} with {@link io.papermc.paper.registry.RegistryKey#BANNER_PATTERN} + */ +- Registry BANNER_PATTERN = Objects.requireNonNull(Bukkit.getRegistry(PatternType.class), "No registry present for Pattern Type. This is a bug."); ++ @Deprecated(since = "1.21") // Paper ++ Registry BANNER_PATTERN = Objects.requireNonNull(io.papermc.paper.registry.RegistryAccess.registryAccess().getRegistry(PatternType.class), "No registry present for PatternType. This is a bug."); // Paper + /** + * Server biomes. + * +@@ -102,7 +104,7 @@ public interface Registry extends Iterable { * @apiNote BlockType is not ready for public usage yet */ @ApiStatus.Internal @@ -218,7 +230,7 @@ index 5529e227781cd2411de9c6581a1cb1255ce9bb20..f99e68f160deba42e2833fa0f81df4c1 /** * Custom boss bars. * -@@ -134,13 +134,15 @@ public interface Registry extends Iterable { +@@ -134,13 +136,15 @@ public interface Registry extends Iterable { * * @see Cat.Type */ @@ -236,7 +248,7 @@ index 5529e227781cd2411de9c6581a1cb1255ce9bb20..f99e68f160deba42e2833fa0f81df4c1 /** * Server entity types. * -@@ -152,7 +154,7 @@ public interface Registry extends Iterable { +@@ -152,7 +156,7 @@ public interface Registry extends Iterable { * * @see MusicInstrument */ @@ -245,7 +257,7 @@ index 5529e227781cd2411de9c6581a1cb1255ce9bb20..f99e68f160deba42e2833fa0f81df4c1 /** * Server item types. * -@@ -160,7 +162,7 @@ public interface Registry extends Iterable { +@@ -160,7 +164,7 @@ public interface Registry extends Iterable { * @apiNote ItemType is not ready for public usage yet */ @ApiStatus.Internal @@ -254,7 +266,7 @@ index 5529e227781cd2411de9c6581a1cb1255ce9bb20..f99e68f160deba42e2833fa0f81df4c1 /** * Default server loot tables. * -@@ -178,7 +180,7 @@ public interface Registry extends Iterable { +@@ -178,7 +182,7 @@ public interface Registry extends Iterable { * * @see PotionEffectType */ @@ -263,7 +275,7 @@ index 5529e227781cd2411de9c6581a1cb1255ce9bb20..f99e68f160deba42e2833fa0f81df4c1 /** * Server particles. * -@@ -201,14 +203,16 @@ public interface Registry extends Iterable { +@@ -201,14 +205,16 @@ public interface Registry extends Iterable { * Server structures. * * @see Structure @@ -282,7 +294,7 @@ index 5529e227781cd2411de9c6581a1cb1255ce9bb20..f99e68f160deba42e2833fa0f81df4c1 /** * Sound keys. * -@@ -219,40 +223,47 @@ public interface Registry extends Iterable { +@@ -219,40 +225,47 @@ public interface Registry extends Iterable { * Trim materials. * * @see TrimMaterial @@ -337,7 +349,7 @@ index 5529e227781cd2411de9c6581a1cb1255ce9bb20..f99e68f160deba42e2833fa0f81df4c1 /** * Memory Keys. * -@@ -289,25 +300,27 @@ public interface Registry extends Iterable { +@@ -289,25 +302,27 @@ public interface Registry extends Iterable { * * @see Frog.Variant */ diff --git a/patches/api/0247-Add-missing-effects.patch b/patches/api/0247-Add-missing-effects.patch index 0e0f224064..708d50753f 100644 --- a/patches/api/0247-Add-missing-effects.patch +++ b/patches/api/0247-Add-missing-effects.patch @@ -6,21 +6,44 @@ Subject: [PATCH] Add missing effects Co-authored-by: Jake Potrebic diff --git a/src/main/java/org/bukkit/Effect.java b/src/main/java/org/bukkit/Effect.java -index fd9cf25f2fdef5ee3b7143f27e5f43dfe3f21a38..f0e595c754afbbf2729ff093262459ac8010ce85 100644 +index fd9cf25f2fdef5ee3b7143f27e5f43dfe3f21a38..8a346d7a4ce07e0a73d7a1d1370321d4fb538547 100644 --- a/src/main/java/org/bukkit/Effect.java +++ b/src/main/java/org/bukkit/Effect.java -@@ -131,9 +131,9 @@ public enum Effect { +@@ -97,7 +97,7 @@ public enum Effect { + */ + EXTINGUISH(1009, Type.SOUND), /** - * Sound of a block breaking. Needs block ID as additional info. +- * A song from a record. Needs the record item ID as additional info ++ * A song from a record. Needs the record {@link Material} as additional info. + */ + RECORD_PLAY(1010, Type.SOUND, Material.class), + /** +@@ -125,20 +125,20 @@ public enum Effect { + */ + ZOMBIE_DESTROY_DOOR(1021, Type.SOUND), + /** +- * A visual smoke effect. Needs direction as additional info. ++ * A visual smoke effect. Needs a {@link BlockFace} direction as additional info. + */ + SMOKE(2000, Type.VISUAL, BlockFace.class), + /** +- * Sound of a block breaking. Needs block ID as additional info. ++ * Sound of a block breaking. Needs {@link org.bukkit.block.data.BlockData} as additional info. */ - STEP_SOUND(2001, Type.SOUND, Material.class), + STEP_SOUND(2001, Type.SOUND, org.bukkit.block.data.BlockData.class, Material.class), // Paper - block data is more correct, but the impl of the mtehods will still work with Material /** - * Visual effect of a splash potion breaking. Needs potion data value as -+ * Visual effect of a splash potion breaking. Needs color data value as ++ * Visual effect of a splash potion breaking. Needs {@link Color} data value as * additional info. */ POTION_BREAK(2002, Type.VISUAL, Color.class), + /** +- * Visual effect of an instant splash potion breaking. Needs color data ++ * Visual effect of an instant splash potion breaking. Needs {@link Color} data + * value as additional info. + */ + INSTANT_POTION_BREAK(2007, Type.VISUAL, Color.class), @@ -168,7 +168,9 @@ public enum Effect { PORTAL_TRAVEL(1032, Type.SOUND), /** @@ -41,7 +64,16 @@ index fd9cf25f2fdef5ee3b7143f27e5f43dfe3f21a38..f0e595c754afbbf2729ff093262459ac VILLAGER_PLANT_GROW(2005, Type.VISUAL, Integer.class), /** * The sound/particles used by the enderdragon's breath -@@ -336,21 +340,121 @@ public enum Effect { +@@ -319,7 +323,7 @@ public enum Effect { + * The particles shown when a lightning hits a lightning rod or oxidized + * copper. + * +- * Data is the axis at which the particle should be shown. If no data is ++ * Data is the {@link Axis} at which the particle should be shown. If no data is + * provided it will show the particles at the block faces. + */ + ELECTRIC_SPARK(3002, Type.VISUAL, Axis.class), +@@ -336,21 +340,124 @@ public enum Effect { * block. */ OXIDISED_COPPER_SCRAPE(3005, Type.VISUAL), @@ -89,6 +121,9 @@ index fd9cf25f2fdef5ee3b7143f27e5f43dfe3f21a38..f0e595c754afbbf2729ff093262459ac + + PARTICLES_SCULK_SHRIEK(3007, Type.SOUND), + ++ /** ++ * Requires a {@link org.bukkit.block.data.BlockData} param ++ */ + PARTICLES_AND_SOUND_BRUSH_BLOCK_COMPLETE(3008, Type.VISUAL, org.bukkit.block.data.BlockData.class), + + PARTICLES_EGG_CRACK(3009, Type.VISUAL), @@ -167,7 +202,7 @@ index fd9cf25f2fdef5ee3b7143f27e5f43dfe3f21a38..f0e595c754afbbf2729ff093262459ac } /** -@@ -366,8 +470,10 @@ public enum Effect { +@@ -366,8 +473,10 @@ public enum Effect { /** * @return The type of the effect. @@ -178,7 +213,7 @@ index fd9cf25f2fdef5ee3b7143f27e5f43dfe3f21a38..f0e595c754afbbf2729ff093262459ac public Type getType() { return this.type; } -@@ -378,8 +484,15 @@ public enum Effect { +@@ -378,8 +487,15 @@ public enum Effect { */ @Nullable public Class getData() { @@ -195,7 +230,7 @@ index fd9cf25f2fdef5ee3b7143f27e5f43dfe3f21a38..f0e595c754afbbf2729ff093262459ac /** * Gets the Effect associated with the given ID. -@@ -396,12 +509,26 @@ public enum Effect { +@@ -396,12 +512,26 @@ public enum Effect { static { for (Effect effect : values()) { diff --git a/patches/api/0256-add-isDeeplySleeping-to-HumanEntity.patch b/patches/api/0256-add-isDeeplySleeping-to-HumanEntity.patch index e561fa1dba..14754cc21c 100644 --- a/patches/api/0256-add-isDeeplySleeping-to-HumanEntity.patch +++ b/patches/api/0256-add-isDeeplySleeping-to-HumanEntity.patch @@ -5,10 +5,10 @@ Subject: [PATCH] add isDeeplySleeping to HumanEntity diff --git a/src/main/java/org/bukkit/entity/HumanEntity.java b/src/main/java/org/bukkit/entity/HumanEntity.java -index 4d6ceca22d98a3e46aa26ef26176c5417a5ccf35..58c842a1fd946d94ae29c7d2439aaf77e47f69b4 100644 +index 937c136f2499bd1660989d14c0f50a7ef9a1a2b6..b1b18886fc63a4854c2858ff9869da70e92dae26 100644 --- a/src/main/java/org/bukkit/entity/HumanEntity.java +++ b/src/main/java/org/bukkit/entity/HumanEntity.java -@@ -364,6 +364,15 @@ public interface HumanEntity extends LivingEntity, AnimalTamer, InventoryHolder +@@ -366,6 +366,15 @@ public interface HumanEntity extends LivingEntity, AnimalTamer, InventoryHolder void setHurtDirection(float hurtDirection); // Paper end diff --git a/patches/api/0329-More-PotionEffectType-API.patch b/patches/api/0329-More-PotionEffectType-API.patch index d80151aec0..c361faf34d 100644 --- a/patches/api/0329-More-PotionEffectType-API.patch +++ b/patches/api/0329-More-PotionEffectType-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] More PotionEffectType API diff --git a/src/main/java/org/bukkit/Registry.java b/src/main/java/org/bukkit/Registry.java -index a583d26883c8b7012203e128cd64113df94307c1..4d3e0b90579b33ff93fc565e8ee99a01b690c62b 100644 +index 5dbbc4eb764650395c6ebaaf5fdf0466ca107439..0ee9a8728035217bb95c7fba917b45a5ef2ea533 100644 --- a/src/main/java/org/bukkit/Registry.java +++ b/src/main/java/org/bukkit/Registry.java -@@ -321,6 +321,33 @@ public interface Registry extends Iterable { +@@ -323,6 +323,33 @@ public interface Registry extends Iterable { * @see GameEvent */ Registry GAME_EVENT = io.papermc.paper.registry.RegistryAccess.registryAccess().getRegistry(io.papermc.paper.registry.RegistryKey.GAME_EVENT); // Paper diff --git a/patches/api/0352-Add-Player-getFishHook.patch b/patches/api/0352-Add-Player-getFishHook.patch index 61c4560da5..0e0d38d513 100644 --- a/patches/api/0352-Add-Player-getFishHook.patch +++ b/patches/api/0352-Add-Player-getFishHook.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add Player#getFishHook diff --git a/src/main/java/org/bukkit/entity/HumanEntity.java b/src/main/java/org/bukkit/entity/HumanEntity.java -index 58c842a1fd946d94ae29c7d2439aaf77e47f69b4..294de2c073167e7186fbf1d6885fe5951351cc9c 100644 +index b1b18886fc63a4854c2858ff9869da70e92dae26..773651350c17cae9058346a590eda758071b7447 100644 --- a/src/main/java/org/bukkit/entity/HumanEntity.java +++ b/src/main/java/org/bukkit/entity/HumanEntity.java -@@ -392,6 +392,13 @@ public interface HumanEntity extends LivingEntity, AnimalTamer, InventoryHolder +@@ -394,6 +394,13 @@ public interface HumanEntity extends LivingEntity, AnimalTamer, InventoryHolder @Nullable public Location getPotentialBedLocation(); // Paper end diff --git a/patches/api/0392-Add-Shearable-API.patch b/patches/api/0392-Add-Shearable-API.patch index 06e4cefb44..e39ebc2481 100644 --- a/patches/api/0392-Add-Shearable-API.patch +++ b/patches/api/0392-Add-Shearable-API.patch @@ -54,15 +54,15 @@ index 0000000000000000000000000000000000000000..0d5793790ab6a47525ad330335173612 + boolean readyToBeSheared(); +} diff --git a/src/main/java/org/bukkit/entity/Bogged.java b/src/main/java/org/bukkit/entity/Bogged.java -index a89f104aa2b2244c075a72c698a9b616c57eaf7c..a36bb84c17120bc578ab01d45f6f12fb1faf9548 100644 +index 8b75a505a55a96a5795ac31a2d37307add12cd9e..6296a6f3f3e794677fd3a626376f357c740ec356 100644 --- a/src/main/java/org/bukkit/entity/Bogged.java +++ b/src/main/java/org/bukkit/entity/Bogged.java @@ -6,5 +6,5 @@ import org.jetbrains.annotations.ApiStatus; * Represents a Bogged Skeleton. */ @ApiStatus.Experimental --public interface Bogged extends AbstractSkeleton { -+public interface Bogged extends AbstractSkeleton, io.papermc.paper.entity.Shearable { // Paper - Shear API +-public interface Bogged extends AbstractSkeleton, Shearable { ++public interface Bogged extends AbstractSkeleton, Shearable, io.papermc.paper.entity.Shearable { // Paper - Shear API } diff --git a/src/main/java/org/bukkit/entity/MushroomCow.java b/src/main/java/org/bukkit/entity/MushroomCow.java index cef1700834643fe28ed5737578d91ecefbe99e2f..86c0043ef4e1288b6fe2f68a9b6d01c3de2c3454 100644 @@ -77,19 +77,52 @@ index cef1700834643fe28ed5737578d91ecefbe99e2f..86c0043ef4e1288b6fe2f68a9b6d01c3 /** * Checks for the presence of custom potion effects to be applied to the +diff --git a/src/main/java/org/bukkit/entity/Shearable.java b/src/main/java/org/bukkit/entity/Shearable.java +index 0215d20f81bfbef080f86ce46147a38f71310f65..9967c8a52ddd2c7e10db49a3f166731373f1ba45 100644 +--- a/src/main/java/org/bukkit/entity/Shearable.java ++++ b/src/main/java/org/bukkit/entity/Shearable.java +@@ -2,20 +2,30 @@ package org.bukkit.entity; + + /** + * Represents an entity which can be shorn with shears. ++ * @deprecated Spigots shearable API miserably fails at capturing all entities that may be sheared by a player, like ++ * mushroom cows which, once sheared, convert into normal cows. For such entities, methods like ++ * {@link #setSheared(boolean)} or {@link #isSheared()} make no sense, making this API and interface dead API from ++ * the get-go. + */ ++@Deprecated(forRemoval = true, since = "1.21") + public interface Shearable { + + /** + * Gets whether the entity is in its sheared state. + * + * @return Whether the entity is sheared. ++ * @deprecated Use {@link io.papermc.paper.entity.Shearable#readyToBeSheared()} instead. + */ ++ @Deprecated(forRemoval = true, since = "1.21") + boolean isSheared(); + + /** + * Sets whether the entity is in its sheared state. + * + * @param flag Whether to shear the entity ++ * @deprecated Use {@link io.papermc.paper.entity.Shearable#shear()} instead if applicable. ++ * Some entities cannot be "unsheared". + */ ++ @Deprecated(forRemoval = true, since = "1.21") + void setSheared(boolean flag); + } diff --git a/src/main/java/org/bukkit/entity/Sheep.java b/src/main/java/org/bukkit/entity/Sheep.java -index f4ce312ccd927a8b64f4266b35a0a53b85e591f3..97388d46cee225dedc0b61a12e7b60b3424732c8 100644 +index 46bc1a0ed9ee320c68a38362c1fa1f31319f01d8..01a0e5b1bb18d7a28d68329c2e2ab78a8df45f8e 100644 --- a/src/main/java/org/bukkit/entity/Sheep.java +++ b/src/main/java/org/bukkit/entity/Sheep.java -@@ -5,7 +5,7 @@ import org.bukkit.material.Colorable; +@@ -5,5 +5,5 @@ import org.bukkit.material.Colorable; /** * Represents a Sheep. */ --public interface Sheep extends Animals, Colorable { -+public interface Sheep extends Animals, Colorable, io.papermc.paper.entity.Shearable { // Paper - Shear API - - /** - * @return Whether the sheep is sheared. +-public interface Sheep extends Animals, Colorable, Shearable { ++public interface Sheep extends Animals, Colorable, Shearable, io.papermc.paper.entity.Shearable { // Paper - Shear API + } diff --git a/src/main/java/org/bukkit/entity/Snowman.java b/src/main/java/org/bukkit/entity/Snowman.java index 10f8f6d45ae9280651c3ebddd1f90acbd7d6ff29..7fbfdb07585c7b28acea1f0c1f58ada0cc744441 100644 --- a/src/main/java/org/bukkit/entity/Snowman.java diff --git a/patches/api/0430-Experimental-annotations-change.patch b/patches/api/0430-Experimental-annotations-change.patch index 59788de534..9ea8f3a126 100644 --- a/patches/api/0430-Experimental-annotations-change.patch +++ b/patches/api/0430-Experimental-annotations-change.patch @@ -104,7 +104,7 @@ index 60fbacee263e55f91ac977f020e390d46024723a..ecff691c3a0878659fb051926ef769ce /** diff --git a/src/main/java/org/bukkit/entity/Bogged.java b/src/main/java/org/bukkit/entity/Bogged.java -index a36bb84c17120bc578ab01d45f6f12fb1faf9548..719bccf8638f8ad358d37fa7eeccbc4c08d32868 100644 +index 6296a6f3f3e794677fd3a626376f357c740ec356..7d993f8bd18ec1d3260d12f0ff8078a86ee4867d 100644 --- a/src/main/java/org/bukkit/entity/Bogged.java +++ b/src/main/java/org/bukkit/entity/Bogged.java @@ -5,6 +5,5 @@ import org.jetbrains.annotations.ApiStatus; @@ -112,7 +112,7 @@ index a36bb84c17120bc578ab01d45f6f12fb1faf9548..719bccf8638f8ad358d37fa7eeccbc4c * Represents a Bogged Skeleton. */ -@ApiStatus.Experimental - public interface Bogged extends AbstractSkeleton, io.papermc.paper.entity.Shearable { // Paper - Shear API + public interface Bogged extends AbstractSkeleton, Shearable, io.papermc.paper.entity.Shearable { // Paper - Shear API } diff --git a/src/main/java/org/bukkit/entity/Breeze.java b/src/main/java/org/bukkit/entity/Breeze.java index a75e725805c193a408683885cba83ca168347165..254bc6e18961a72f471334cc0535e3c7a9d70012 100644 diff --git a/patches/api/0432-Improve-Registry.patch b/patches/api/0432-Improve-Registry.patch index 4c5275651a..5e72c2ab2a 100644 --- a/patches/api/0432-Improve-Registry.patch +++ b/patches/api/0432-Improve-Registry.patch @@ -31,10 +31,10 @@ index 62d2b3f950860dee0898d77b0a29635c3f9a7e23..704dba92f9246ef398ed8d162ebee3cf @Override public @NotNull String translationKey() { diff --git a/src/main/java/org/bukkit/Registry.java b/src/main/java/org/bukkit/Registry.java -index 4d3e0b90579b33ff93fc565e8ee99a01b690c62b..36a8f6082f111a1cbb25e0ff3c968a89f02611a0 100644 +index 0ee9a8728035217bb95c7fba917b45a5ef2ea533..cd1e38debbec745dd13cd895327f544dcf42594d 100644 --- a/src/main/java/org/bukkit/Registry.java +++ b/src/main/java/org/bukkit/Registry.java -@@ -357,6 +357,79 @@ public interface Registry extends Iterable { +@@ -359,6 +359,79 @@ public interface Registry extends Iterable { @Nullable T get(@NotNull NamespacedKey key); @@ -114,7 +114,7 @@ index 4d3e0b90579b33ff93fc565e8ee99a01b690c62b..36a8f6082f111a1cbb25e0ff3c968a89 /** * Returns a new stream, which contains all registry items, which are registered to the registry. * -@@ -431,5 +504,12 @@ public interface Registry extends Iterable { +@@ -433,5 +506,12 @@ public interface Registry extends Iterable { public Class getType() { return this.type; } @@ -128,12 +128,12 @@ index 4d3e0b90579b33ff93fc565e8ee99a01b690c62b..36a8f6082f111a1cbb25e0ff3c968a89 } } diff --git a/src/main/java/org/bukkit/block/banner/PatternType.java b/src/main/java/org/bukkit/block/banner/PatternType.java -index 6a6be0287255cf38a735bfc83ec91644dc96b903..1883183157c875d87656fdc86a589e9b95dc4895 100644 +index 9e90572745909538e942b7fbe788b5286c6cc9a3..100f93358e0a1fa8507775a2afd29314ff353a87 100644 --- a/src/main/java/org/bukkit/block/banner/PatternType.java +++ b/src/main/java/org/bukkit/block/banner/PatternType.java -@@ -69,6 +69,13 @@ public enum PatternType implements Keyed { - this.key = NamespacedKey.minecraft(key); - } +@@ -56,6 +56,13 @@ public interface PatternType extends OldEnum, Keyed { + PatternType FLOW = getType("flow"); + PatternType GUSTER = getType("guster"); + // Paper start - deprecate getKey + /** @@ -144,7 +144,7 @@ index 6a6be0287255cf38a735bfc83ec91644dc96b903..1883183157c875d87656fdc86a589e9b + // Paper end - deprecate getKey @Override @NotNull - public NamespacedKey getKey() { + public NamespacedKey getKey(); diff --git a/src/main/java/org/bukkit/generator/structure/Structure.java b/src/main/java/org/bukkit/generator/structure/Structure.java index 1a766e68713d4014783b3224b9395644116784fa..978054ee364f9a3330525b9b50da5325ebb6ef57 100644 --- a/src/main/java/org/bukkit/generator/structure/Structure.java diff --git a/patches/api/0444-ItemStack-Tooltip-API.patch b/patches/api/0444-ItemStack-Tooltip-API.patch index 85f67a5b0b..90d49b0f02 100644 --- a/patches/api/0444-ItemStack-Tooltip-API.patch +++ b/patches/api/0444-ItemStack-Tooltip-API.patch @@ -87,7 +87,7 @@ index 0000000000000000000000000000000000000000..39ac768b3c5148544cb1aaf2c817e661 +} diff --git a/src/main/java/io/papermc/paper/inventory/tooltip/TooltipContextImpl.java b/src/main/java/io/papermc/paper/inventory/tooltip/TooltipContextImpl.java new file mode 100644 -index 0000000000000000000000000000000000000000..1d9bed6691f581529c53b577b26f1d0f902ccb0d +index 0000000000000000000000000000000000000000..c9c0ce750f93ae55e0b2d322a738919474d2d5dd --- /dev/null +++ b/src/main/java/io/papermc/paper/inventory/tooltip/TooltipContextImpl.java @@ -0,0 +1,16 @@ @@ -95,16 +95,16 @@ index 0000000000000000000000000000000000000000..1d9bed6691f581529c53b577b26f1d0f + +import org.jetbrains.annotations.NotNull; + -+record TooltipContextImpl(boolean isCreative, boolean isAdvanced) implements TooltipContext { ++record TooltipContextImpl(boolean isAdvanced, boolean isCreative) implements TooltipContext { + + @Override + public @NotNull TooltipContext asCreative() { -+ return new TooltipContextImpl(true, this.isAdvanced); ++ return new TooltipContextImpl(this.isAdvanced, true); + } + + @Override + public @NotNull TooltipContext asAdvanced() { -+ return new TooltipContextImpl(this.isCreative, true); ++ return new TooltipContextImpl(true, this.isCreative); + } +} diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java diff --git a/patches/api/0469-Fix-issues-with-recipe-API.patch b/patches/api/0469-Fix-issues-with-recipe-API.patch index 2635c201c9..00a981bf9c 100644 --- a/patches/api/0469-Fix-issues-with-recipe-API.patch +++ b/patches/api/0469-Fix-issues-with-recipe-API.patch @@ -40,18 +40,18 @@ index f7fa79393aef40027446b78bac8e9490cfafd8bc..07906ca1a9b39fcc6774870daa498402 } diff --git a/src/main/java/org/bukkit/inventory/CraftingRecipe.java b/src/main/java/org/bukkit/inventory/CraftingRecipe.java -index e4bf772f7e06f38215bee68f089b15a4fcb12817..37024b4736dd3897490ca51d08cf07901b01d59f 100644 +index 1b7b07715067014bf3d35002ae1655793248b426..5bf55b40fbf6ec708f37d90bd0853fe7dd8fffd9 100644 --- a/src/main/java/org/bukkit/inventory/CraftingRecipe.java +++ b/src/main/java/org/bukkit/inventory/CraftingRecipe.java -@@ -18,7 +18,7 @@ public abstract class CraftingRecipe implements Recipe, Keyed { - - protected CraftingRecipe(@NotNull NamespacedKey key, @NotNull ItemStack result) { - Preconditions.checkArgument(key != null, "key cannot be null"); +@@ -99,7 +99,7 @@ public abstract class CraftingRecipe implements Recipe, Keyed { + @ApiStatus.Internal + @NotNull + protected static ItemStack checkResult(@NotNull ItemStack result) { - Preconditions.checkArgument(result.getType() != Material.AIR, "Recipe must have non-AIR result."); + Preconditions.checkArgument(!result.isEmpty(), "Recipe cannot have an empty result."); // Paper - this.key = key; - this.output = new ItemStack(result); + return result; } + } diff --git a/src/main/java/org/bukkit/inventory/EmptyRecipeChoice.java b/src/main/java/org/bukkit/inventory/EmptyRecipeChoice.java new file mode 100644 index 0000000000000000000000000000000000000000..ed0ab6163f47ec843ba4f7ea4a98bb2fa315eaa1 @@ -211,10 +211,10 @@ index 91bfeffcdbe47208c7d0ddbe013cd0f11fddfa32..e7796054f3f65f5bea7f93c75320195f } } diff --git a/src/main/java/org/bukkit/inventory/ShapedRecipe.java b/src/main/java/org/bukkit/inventory/ShapedRecipe.java -index aa3b3070126f1c492f004ec7599eeb379b58f207..1815de38654dd134abde3dd9bd0b018b91247bd5 100644 +index 295d82dd73b600e9436d2bbec0e11dbeaf78bbf4..c0105d716985acef497d60b5c631a56b4ca5847b 100644 --- a/src/main/java/org/bukkit/inventory/ShapedRecipe.java +++ b/src/main/java/org/bukkit/inventory/ShapedRecipe.java -@@ -177,14 +177,15 @@ public class ShapedRecipe extends CraftingRecipe { +@@ -178,14 +178,15 @@ public class ShapedRecipe extends CraftingRecipe { Preconditions.checkArgument(key != ' ', "Space in recipe shape must represent no ingredient"); Preconditions.checkArgument(ingredients.containsKey(key), "Symbol does not appear in the shape:", key); @@ -233,10 +233,10 @@ index aa3b3070126f1c492f004ec7599eeb379b58f207..1815de38654dd134abde3dd9bd0b018b // Paper end diff --git a/src/main/java/org/bukkit/inventory/ShapelessRecipe.java b/src/main/java/org/bukkit/inventory/ShapelessRecipe.java -index beb798482479c58a8628c314b510ab6349576ce8..8251170314ab25c26270208e453b4e3909435754 100644 +index 3bf5064cd6ceb05ea98b18993da46c67be140115..79db6dbc0367de2eaa397674624c765d5aeb8fa5 100644 --- a/src/main/java/org/bukkit/inventory/ShapelessRecipe.java +++ b/src/main/java/org/bukkit/inventory/ShapelessRecipe.java -@@ -131,7 +131,7 @@ public class ShapelessRecipe extends CraftingRecipe { +@@ -132,7 +132,7 @@ public class ShapelessRecipe extends CraftingRecipe { public ShapelessRecipe addIngredient(@NotNull RecipeChoice ingredient) { Preconditions.checkArgument(ingredients.size() + 1 <= 9, "Shapeless recipes cannot have more than 9 ingredients"); @@ -245,7 +245,7 @@ index beb798482479c58a8628c314b510ab6349576ce8..8251170314ab25c26270208e453b4e39 return this; } -@@ -144,6 +144,8 @@ public class ShapelessRecipe extends CraftingRecipe { +@@ -145,6 +145,8 @@ public class ShapelessRecipe extends CraftingRecipe { @NotNull public ShapelessRecipe addIngredient(int count, @NotNull ItemStack item) { Preconditions.checkArgument(ingredients.size() + count <= 9, "Shapeless recipes cannot have more than 9 ingredients"); diff --git a/patches/api/0472-General-ItemMeta-fixes.patch b/patches/api/0472-General-ItemMeta-fixes.patch index 5339131e31..3e2a3cfb11 100644 --- a/patches/api/0472-General-ItemMeta-fixes.patch +++ b/patches/api/0472-General-ItemMeta-fixes.patch @@ -19,6 +19,27 @@ index 637fa73d4366c2d88e2716e5c8d3465706d788a7..0f03c546ecdd6383fb36a362d18d6fb5 this.flicker = flicker; this.trail = trail; this.colors = colors; +diff --git a/src/main/java/org/bukkit/inventory/ItemType.java b/src/main/java/org/bukkit/inventory/ItemType.java +index a6d1dde422de98f178c0c9add99e01203a35e5cb..01ec84248a681180088fb1d7d22b80f8572b0305 100644 +--- a/src/main/java/org/bukkit/inventory/ItemType.java ++++ b/src/main/java/org/bukkit/inventory/ItemType.java +@@ -31,6 +31,7 @@ import org.bukkit.inventory.meta.MapMeta; + import org.bukkit.inventory.meta.MusicInstrumentMeta; + import org.bukkit.inventory.meta.OminousBottleMeta; + import org.bukkit.inventory.meta.PotionMeta; ++import org.bukkit.inventory.meta.ShieldMeta; + import org.bukkit.inventory.meta.SkullMeta; + import org.bukkit.inventory.meta.SpawnEggMeta; + import org.bukkit.inventory.meta.SuspiciousStewMeta; +@@ -1893,7 +1894,7 @@ public interface ItemType extends Keyed, Translatable, net.kyori.adventure.trans + /** + * ItemMeta: {@link BlockStateMeta} + */ +- ItemType.Typed SHIELD = getItemType("shield"); ++ ItemType.Typed SHIELD = getItemType("shield"); // Paper - update shield to its new meta + ItemType.Typed TOTEM_OF_UNDYING = getItemType("totem_of_undying"); + ItemType.Typed SHULKER_SHELL = getItemType("shulker_shell"); + ItemType.Typed IRON_NUGGET = getItemType("iron_nugget"); diff --git a/src/main/java/org/bukkit/inventory/meta/Damageable.java b/src/main/java/org/bukkit/inventory/meta/Damageable.java index ff6818b6d9e0207eafdd749928f33aeac3f27191..992f39da07bafe9769effaa7dc6adc018c89329d 100644 --- a/src/main/java/org/bukkit/inventory/meta/Damageable.java diff --git a/patches/api/0475-Registry-Modification-API.patch b/patches/api/0475-Registry-Modification-API.patch index b364107ae4..899814f754 100644 --- a/patches/api/0475-Registry-Modification-API.patch +++ b/patches/api/0475-Registry-Modification-API.patch @@ -790,10 +790,10 @@ index 0000000000000000000000000000000000000000..11d19e339c7c62f2eb4467277552c27e +record TagKeyImpl(RegistryKey registryKey, Key key) implements TagKey { +} diff --git a/src/main/java/org/bukkit/Registry.java b/src/main/java/org/bukkit/Registry.java -index fcc9664fd1fe081c9c70bcd7e511c60d987b44f9..8e306d05e372855929d30456ed2d27a04d55ac42 100644 +index cd1e38debbec745dd13cd895327f544dcf42594d..c0428edee6ecbbd646c0e58da39a7ca476914fd1 100644 --- a/src/main/java/org/bukkit/Registry.java +++ b/src/main/java/org/bukkit/Registry.java -@@ -356,6 +356,27 @@ public interface Registry extends Iterable { +@@ -358,6 +358,27 @@ public interface Registry extends Iterable { */ @Nullable T get(@NotNull NamespacedKey key); @@ -821,7 +821,7 @@ index fcc9664fd1fe081c9c70bcd7e511c60d987b44f9..8e306d05e372855929d30456ed2d27a0 // Paper start - improve Registry /** -@@ -430,6 +451,34 @@ public interface Registry extends Iterable { +@@ -432,6 +453,34 @@ public interface Registry extends Iterable { } // Paper end - improve Registry @@ -856,7 +856,7 @@ index fcc9664fd1fe081c9c70bcd7e511c60d987b44f9..8e306d05e372855929d30456ed2d27a0 /** * Returns a new stream, which contains all registry items, which are registered to the registry. * -@@ -511,5 +560,23 @@ public interface Registry extends Iterable { +@@ -513,5 +562,23 @@ public interface Registry extends Iterable { return value.getKey(); } // Paper end - improve Registry diff --git a/patches/api/0476-Introduce-registry-entry-and-builders.patch b/patches/api/0476-Introduce-registry-entry-and-builders.patch index e97c9cef4e..44bdb4b36f 100644 --- a/patches/api/0476-Introduce-registry-entry-and-builders.patch +++ b/patches/api/0476-Introduce-registry-entry-and-builders.patch @@ -480,10 +480,10 @@ index 6c9689baca1763e2ef79495d38618d587e792434..4583092c2d1ffe95be2831c5d5f0e904 + // Paper end } diff --git a/src/main/java/org/bukkit/inventory/ItemType.java b/src/main/java/org/bukkit/inventory/ItemType.java -index 94587a97fcea81a43b160b01d2c81cef2b7f4413..6bc1853ada3ea38bc36cb31fbb5ce246347fe5d4 100644 +index 01ec84248a681180088fb1d7d22b80f8572b0305..0168f0a14a3e899e84c5e36963ff79950ab580fb 100644 --- a/src/main/java/org/bukkit/inventory/ItemType.java +++ b/src/main/java/org/bukkit/inventory/ItemType.java -@@ -46,7 +46,7 @@ import org.jetbrains.annotations.Nullable; +@@ -47,7 +47,7 @@ import org.jetbrains.annotations.Nullable; * official replacement for the aforementioned enum. Entirely incompatible * changes may occur. Do not use this API in plugins. */ diff --git a/patches/api/0483-Fix-PickupStatus-getting-reset.patch b/patches/api/0481-Fix-PickupStatus-getting-reset.patch similarity index 100% rename from patches/api/0483-Fix-PickupStatus-getting-reset.patch rename to patches/api/0481-Fix-PickupStatus-getting-reset.patch diff --git a/patches/api/0481-Move-CraftComplexRecipe-to-extend-CraftingRecipe.patch b/patches/api/0481-Move-CraftComplexRecipe-to-extend-CraftingRecipe.patch deleted file mode 100644 index 7bf99722cc..0000000000 --- a/patches/api/0481-Move-CraftComplexRecipe-to-extend-CraftingRecipe.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Bjarne Koll -Date: Fri, 19 Jul 2024 19:09:21 +0200 -Subject: [PATCH] Move CraftComplexRecipe to extend CraftingRecipe - -A craft complex recipe wraps a CustomRecipe, which itself is a -CraftingRecipe. -As such, this complex recipe should also be a crafting recipe. - -diff --git a/src/main/java/org/bukkit/inventory/CraftingRecipe.java b/src/main/java/org/bukkit/inventory/CraftingRecipe.java -index 37024b4736dd3897490ca51d08cf07901b01d59f..afa3de9ab78d01c448d450d8afbc7b1e7e62754c 100644 ---- a/src/main/java/org/bukkit/inventory/CraftingRecipe.java -+++ b/src/main/java/org/bukkit/inventory/CraftingRecipe.java -@@ -11,8 +11,11 @@ import org.jetbrains.annotations.NotNull; - * Represents a shaped or shapeless crafting recipe. - */ - public abstract class CraftingRecipe implements Recipe, Keyed { -- private final NamespacedKey key; -- private final ItemStack output; -+ // Paper - make CraftComplexRecipe extend CraftingRecipe - start -+ protected NamespacedKey key; -+ protected ItemStack output; -+ protected CraftingRecipe() {} -+ // Paper - make CraftComplexRecipe extend CraftingRecipe - end - private String group = ""; - private CraftingBookCategory category = CraftingBookCategory.MISC; - diff --git a/patches/api/0482-Add-CrafterCraftEvent.patch b/patches/api/0482-Add-CrafterCraftEvent.patch deleted file mode 100644 index c91ab8393d..0000000000 --- a/patches/api/0482-Add-CrafterCraftEvent.patch +++ /dev/null @@ -1,97 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: ploppyperson -Date: Thu, 18 Jul 2024 16:37:58 +0200 -Subject: [PATCH] Add CrafterCraftEvent - -Ports the currently proposed CrafterCraftEvent -from upstream. -The type is experimental to account for spigot -potentially changing some api contracts, however -the event is required for a stable release and -waiting on spigot's PR queue is not an option. - -See: https://hub.spigotmc.org/stash/projects/SPIGOT/repos/bukkit/pull-requests/1044/overview - -diff --git a/src/main/java/org/bukkit/event/block/CrafterCraftEvent.java b/src/main/java/org/bukkit/event/block/CrafterCraftEvent.java -new file mode 100644 -index 0000000000000000000000000000000000000000..8dec6d16aa3c3579eadd77f637c9afa54ee9a90f ---- /dev/null -+++ b/src/main/java/org/bukkit/event/block/CrafterCraftEvent.java -@@ -0,0 +1,77 @@ -+package org.bukkit.event.block; -+ -+import org.bukkit.block.Block; -+import org.bukkit.event.Cancellable; -+import org.bukkit.event.HandlerList; -+import org.bukkit.inventory.CraftingRecipe; -+import org.bukkit.inventory.ItemStack; -+import org.jetbrains.annotations.NotNull; -+ -+/** -+ * Event called when a Crafter is about to craft an item -+ * @apiNote Currently still experimental as it is ported from an open, not merged, spigot PR. -+ * The event was pulled to allow protection plugins and the likes to properly manage crafters. -+ * The type remains experimental as upstream *may* change the event before pulling it, resulting in a breaking change. -+ */ -+@org.jetbrains.annotations.ApiStatus.Experimental -+public class CrafterCraftEvent extends BlockEvent implements Cancellable { -+ -+ private static final HandlerList handlers = new HandlerList(); -+ private boolean cancelled; -+ private ItemStack result; -+ private final CraftingRecipe recipe; -+ -+ @org.jetbrains.annotations.ApiStatus.Internal // Paper - internal constructor. -+ public CrafterCraftEvent(@NotNull Block theBlock, @NotNull CraftingRecipe recipe, @NotNull ItemStack result) { -+ super(theBlock); -+ this.result = result; -+ this.recipe = recipe; -+ } -+ -+ /** -+ * Gets the result for the craft -+ * @return the result for the craft -+ */ -+ @NotNull -+ public ItemStack getResult() { -+ return result.clone(); -+ } -+ -+ /** -+ * Sets the result of the craft -+ * @param result the result of the craft -+ */ -+ public void setResult(@NotNull ItemStack result) { -+ this.result = result.clone(); -+ } -+ -+ /** -+ * The recipe that was used to craft this item -+ * @return the recipe that was used to craft this item -+ */ -+ @NotNull -+ public CraftingRecipe getRecipe() { -+ return recipe; -+ } -+ -+ @NotNull -+ @Override -+ public HandlerList getHandlers() { -+ return handlers; -+ } -+ -+ @Override -+ public boolean isCancelled() { -+ return cancelled; -+ } -+ -+ @Override -+ public void setCancelled(boolean cancel) { -+ this.cancelled = cancel; -+ } -+ -+ @NotNull -+ public static HandlerList getHandlerList() { -+ return handlers; -+ } -+} diff --git a/patches/api/0482-Add-an-API-for-CanPlaceOn-and-CanDestroy-NBT-values.patch b/patches/api/0482-Add-an-API-for-CanPlaceOn-and-CanDestroy-NBT-values.patch new file mode 100644 index 0000000000..3dd2df1411 --- /dev/null +++ b/patches/api/0482-Add-an-API-for-CanPlaceOn-and-CanDestroy-NBT-values.patch @@ -0,0 +1,332 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Mark Vainomaa +Date: Wed, 12 Sep 2018 18:53:35 +0300 +Subject: [PATCH] Add an API for CanPlaceOn and CanDestroy NBT values + + +diff --git a/src/main/java/com/destroystokyo/paper/Namespaced.java b/src/main/java/com/destroystokyo/paper/Namespaced.java +new file mode 100644 +index 0000000000000000000000000000000000000000..e708cc48f480e91a60834897e447e4a2fc1244d4 +--- /dev/null ++++ b/src/main/java/com/destroystokyo/paper/Namespaced.java +@@ -0,0 +1,41 @@ ++package com.destroystokyo.paper; ++ ++import org.jetbrains.annotations.NotNull; ++ ++/** ++ * Represents a namespaced resource, see {@link org.bukkit.NamespacedKey} for single elements ++ * or {@link com.destroystokyo.paper.NamespacedTag} for a collection of elements ++ * ++ * Namespaces may only contain lowercase alphanumeric characters, periods, ++ * underscores, and hyphens. ++ *

++ * Keys may only contain lowercase alphanumeric characters, periods, ++ * underscores, hyphens, and forward slashes. ++ *

++ * You should not be implementing this interface yourself, use {@link org.bukkit.NamespacedKey} ++ * or {@link com.destroystokyo.paper.NamespacedTag} as needed instead. ++ */ ++@Deprecated(forRemoval = true, since = "1.20.6") ++public interface Namespaced { ++ /** ++ * Gets the namespace this resource is a part of ++ *

++ * This is contractually obligated to only contain lowercase alphanumeric characters, ++ * periods, underscores, and hyphens. ++ * ++ * @return resource namespace ++ */ ++ @NotNull ++ String getNamespace(); ++ ++ /** ++ * Gets the key corresponding to this resource ++ *

++ * This is contractually obligated to only contain lowercase alphanumeric characters, ++ * periods, underscores, hyphens, and forward slashes. ++ * ++ * @return resource key ++ */ ++ @NotNull ++ String getKey(); ++} +diff --git a/src/main/java/com/destroystokyo/paper/NamespacedTag.java b/src/main/java/com/destroystokyo/paper/NamespacedTag.java +new file mode 100644 +index 0000000000000000000000000000000000000000..c976995a0fceaf0cbddd399906a866747b12a202 +--- /dev/null ++++ b/src/main/java/com/destroystokyo/paper/NamespacedTag.java +@@ -0,0 +1,143 @@ ++package com.destroystokyo.paper; ++ ++import com.google.common.base.Preconditions; ++import java.util.Locale; ++import java.util.UUID; ++import java.util.regex.Pattern; ++import org.bukkit.plugin.Plugin; ++import org.jetbrains.annotations.NotNull; ++ ++/** ++ * Represents a String based key pertaining to a tagged entry. Consists of two components - a namespace ++ * and a key. ++ *

++ * Namespaces may only contain lowercase alphanumeric characters, periods, ++ * underscores, and hyphens. ++ *

++ * Keys may only contain lowercase alphanumeric characters, periods, ++ * underscores, hyphens, and forward slashes. ++ * ++ */ ++// Paper - entire class, based on org.bukkit.NamespacedKey ++@Deprecated(forRemoval = true, since = "1.20.6") ++public final class NamespacedTag implements com.destroystokyo.paper.Namespaced { ++ ++ /** ++ * The namespace representing all inbuilt keys. ++ */ ++ public static final String MINECRAFT = "minecraft"; ++ /** ++ * The namespace representing all keys generated by Bukkit for backwards ++ * compatibility measures. ++ */ ++ public static final String BUKKIT = "bukkit"; ++ // ++ private static final Pattern VALID_NAMESPACE = Pattern.compile("[a-z0-9._-]+"); ++ private static final Pattern VALID_KEY = Pattern.compile("[a-z0-9/._-]+"); ++ // ++ private final String namespace; ++ private final String key; ++ ++ /** ++ * Create a key in a specific namespace. ++ * ++ * @param namespace String representing a grouping of keys ++ * @param key Name for this specific key ++ * @deprecated should never be used by plugins, for internal use only!! ++ */ ++ @Deprecated ++ public NamespacedTag(@NotNull String namespace, @NotNull String key) { ++ Preconditions.checkArgument(namespace != null && VALID_NAMESPACE.matcher(namespace).matches(), "Invalid namespace. Must be [a-z0-9._-]: %s", namespace); ++ Preconditions.checkArgument(key != null && VALID_KEY.matcher(key).matches(), "Invalid key. Must be [a-z0-9/._-]: %s", key); ++ ++ this.namespace = namespace; ++ this.key = key; ++ ++ String string = toString(); ++ Preconditions.checkArgument(string.length() < 256, "NamespacedTag must be less than 256 characters", string); ++ } ++ ++ /** ++ * Create a key in the plugin's namespace. ++ *

++ * Namespaces may only contain lowercase alphanumeric characters, periods, ++ * underscores, and hyphens. ++ *

++ * Keys may only contain lowercase alphanumeric characters, periods, ++ * underscores, hyphens, and forward slashes. ++ * ++ * @param plugin the plugin to use for the namespace ++ * @param key the key to create ++ */ ++ public NamespacedTag(@NotNull Plugin plugin, @NotNull String key) { ++ Preconditions.checkArgument(plugin != null, "Plugin cannot be null"); ++ Preconditions.checkArgument(key != null, "Key cannot be null"); ++ ++ this.namespace = plugin.getName().toLowerCase(Locale.ROOT); ++ this.key = key.toLowerCase().toLowerCase(Locale.ROOT); ++ ++ // Check validity after normalization ++ Preconditions.checkArgument(VALID_NAMESPACE.matcher(this.namespace).matches(), "Invalid namespace. Must be [a-z0-9._-]: %s", this.namespace); ++ Preconditions.checkArgument(VALID_KEY.matcher(this.key).matches(), "Invalid key. Must be [a-z0-9/._-]: %s", this.key); ++ ++ String string = toString(); ++ Preconditions.checkArgument(string.length() < 256, "NamespacedTag must be less than 256 characters (%s)", string); ++ } ++ ++ @NotNull ++ public String getNamespace() { ++ return namespace; ++ } ++ ++ @NotNull ++ public String getKey() { ++ return key; ++ } ++ ++ @Override ++ public int hashCode() { ++ int hash = 7; ++ hash = 47 * hash + this.namespace.hashCode(); ++ hash = 47 * hash + this.key.hashCode(); ++ return hash; ++ } ++ ++ @Override ++ public boolean equals(Object obj) { ++ if (obj == null) { ++ return false; ++ } ++ if (getClass() != obj.getClass()) { ++ return false; ++ } ++ final NamespacedTag other = (NamespacedTag) obj; ++ return this.namespace.equals(other.namespace) && this.key.equals(other.key); ++ } ++ ++ @Override ++ public String toString() { ++ return "#" + this.namespace + ":" + this.key; ++ } ++ ++ /** ++ * Return a new random key in the {@link #BUKKIT} namespace. ++ * ++ * @return new key ++ * @deprecated should never be used by plugins, for internal use only!! ++ */ ++ @Deprecated ++ public static NamespacedTag randomKey() { ++ return new NamespacedTag(BUKKIT, UUID.randomUUID().toString()); ++ } ++ ++ /** ++ * Get a key in the Minecraft namespace. ++ * ++ * @param key the key to use ++ * @return new key in the Minecraft namespace ++ */ ++ @NotNull ++ public static NamespacedTag minecraft(@NotNull String key) { ++ return new NamespacedTag(MINECRAFT, key); ++ } ++} +diff --git a/src/main/java/org/bukkit/NamespacedKey.java b/src/main/java/org/bukkit/NamespacedKey.java +index 7ff6d60deb129e23b2a4d772aee123eb6c0b6433..52a2763773b234c581b2dcc6f0584f8d8b0fbc60 100644 +--- a/src/main/java/org/bukkit/NamespacedKey.java ++++ b/src/main/java/org/bukkit/NamespacedKey.java +@@ -19,7 +19,7 @@ import org.jetbrains.annotations.Nullable; + * underscores, hyphens, and forward slashes. + * + */ +-public final class NamespacedKey implements net.kyori.adventure.key.Key { // Paper - implement Key ++public final class NamespacedKey implements net.kyori.adventure.key.Key, com.destroystokyo.paper.Namespaced { // Paper - implement Key and Namespaced + + /** + * The namespace representing all inbuilt keys. +@@ -121,11 +121,13 @@ public final class NamespacedKey implements net.kyori.adventure.key.Key { // Pap + } + + @NotNull ++ @Override // Paper + public String getNamespace() { + return namespace; + } + + @NotNull ++ @Override // Paper + public String getKey() { + return key; + } +diff --git a/src/main/java/org/bukkit/inventory/meta/ItemMeta.java b/src/main/java/org/bukkit/inventory/meta/ItemMeta.java +index 5d5fcb2720b62e47d47f441032c4de02574b051a..f5541454ba5e508a72c83989c6feaef5406e2535 100644 +--- a/src/main/java/org/bukkit/inventory/meta/ItemMeta.java ++++ b/src/main/java/org/bukkit/inventory/meta/ItemMeta.java +@@ -806,4 +806,98 @@ public interface ItemMeta extends Cloneable, ConfigurationSerializable, Persiste + @SuppressWarnings("javadoc") + @NotNull + ItemMeta clone(); ++ ++ // Paper start - Add an API for can-place-on/can-break adventure mode predicates ++ /** ++ * Gets set of materials what given item can destroy in {@link org.bukkit.GameMode#ADVENTURE} ++ * ++ * @return Set of materials ++ * @deprecated this API is unsupported and will be replaced, its usage may result in data loss related to place/destroy predicates. ++ */ ++ @Deprecated(forRemoval = true, since = "1.14") ++ Set getCanDestroy(); ++ ++ /** ++ * Sets set of materials what given item can destroy in {@link org.bukkit.GameMode#ADVENTURE} ++ * ++ * @param canDestroy Set of materials ++ * @deprecated this API is unsupported and will be replaced, its usage may result in data loss related to place/destroy predicates. ++ */ ++ @Deprecated(forRemoval = true, since = "1.14") ++ void setCanDestroy(Set canDestroy); ++ ++ /** ++ * Gets set of materials where given item can be placed on in {@link org.bukkit.GameMode#ADVENTURE} ++ * ++ * @return Set of materials ++ * @deprecated this API is unsupported and will be replaced, its usage may result in data loss related to place/destroy predicates. ++ */ ++ @Deprecated(forRemoval = true, since = "1.14") ++ Set getCanPlaceOn(); ++ ++ /** ++ * Sets set of materials where given item can be placed on in {@link org.bukkit.GameMode#ADVENTURE} ++ * ++ * @param canPlaceOn Set of materials ++ * @deprecated this API is unsupported and will be replaced, its usage may result in data loss related to place/destroy predicates. ++ */ ++ @Deprecated(forRemoval = true, since = "1.14") ++ void setCanPlaceOn(Set canPlaceOn); ++ ++ /** ++ * Gets the collection of namespaced keys that the item can destroy in {@link org.bukkit.GameMode#ADVENTURE} ++ * ++ * @return Set of {@link com.destroystokyo.paper.Namespaced} ++ * @deprecated this API is unsupported and will be replaced, its usage may result in data loss related to place/destroy predicates. ++ */ ++ @Deprecated(forRemoval = true, since = "1.20.6") ++ @NotNull ++ Set getDestroyableKeys(); ++ ++ /** ++ * Sets the collection of namespaced keys that the item can destroy in {@link org.bukkit.GameMode#ADVENTURE} ++ * ++ * @param canDestroy Collection of {@link com.destroystokyo.paper.Namespaced} ++ * @deprecated this API is unsupported and will be replaced, its usage may result in data loss related to place/destroy predicates. ++ */ ++ @Deprecated(forRemoval = true, since = "1.20.6") ++ void setDestroyableKeys(@NotNull Collection canDestroy); ++ ++ /** ++ * Gets the collection of namespaced keys that the item can be placed on in {@link org.bukkit.GameMode#ADVENTURE} ++ * ++ * @return Set of {@link com.destroystokyo.paper.Namespaced} ++ * @deprecated this API is unsupported and will be replaced, its usage may result in data loss related to place/destroy predicates. ++ */ ++ @NotNull ++ @Deprecated(forRemoval = true, since = "1.20.6") ++ Set getPlaceableKeys(); ++ ++ /** ++ * Sets the set of namespaced keys that the item can be placed on in {@link org.bukkit.GameMode#ADVENTURE} ++ * ++ * @param canPlaceOn Collection of {@link com.destroystokyo.paper.Namespaced} ++ * @deprecated this API is unsupported and will be replaced, its usage may result in data loss related to place/destroy predicates. ++ */ ++ @Deprecated(forRemoval = true, since = "1.20.6") ++ void setPlaceableKeys(@NotNull Collection canPlaceOn); ++ ++ /** ++ * Checks for the existence of any keys that the item can be placed on ++ * ++ * @return true if this item has placeable keys ++ * @deprecated this API is unsupported and will be replaced ++ */ ++ @Deprecated(forRemoval = true, since = "1.20.6") ++ boolean hasPlaceableKeys(); ++ ++ /** ++ * Checks for the existence of any keys that the item can destroy ++ * ++ * @return true if this item has destroyable keys ++ * @deprecated this API is unsupported and will be replaced ++ */ ++ @Deprecated(forRemoval = true, since = "1.20.6") ++ boolean hasDestroyableKeys(); ++ // Paper end - Add an API for can-place-on/can-break adventure mode predicates + } diff --git a/patches/api/0483-Improve-StandardMessenger-exception-messages.patch b/patches/api/0483-Improve-StandardMessenger-exception-messages.patch new file mode 100644 index 0000000000..db8286512a --- /dev/null +++ b/patches/api/0483-Improve-StandardMessenger-exception-messages.patch @@ -0,0 +1,56 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Nassim Jahnke +Date: Mon, 12 Aug 2024 18:38:19 +0200 +Subject: [PATCH] Improve StandardMessenger exception messages + + +diff --git a/src/main/java/org/bukkit/plugin/messaging/ChannelNameTooLongException.java b/src/main/java/org/bukkit/plugin/messaging/ChannelNameTooLongException.java +index 80ef8a2a342ff9dc16c98b5254cadd539f6ea0d9..ea73d9cd9d9d84731c083089d0b9913b4b1f92b6 100644 +--- a/src/main/java/org/bukkit/plugin/messaging/ChannelNameTooLongException.java ++++ b/src/main/java/org/bukkit/plugin/messaging/ChannelNameTooLongException.java +@@ -9,7 +9,9 @@ public class ChannelNameTooLongException extends RuntimeException { + super("Attempted to send a Plugin Message to a channel that was too large. The maximum length a channel may be is " + Messenger.MAX_CHANNEL_SIZE + " chars."); + } + +- public ChannelNameTooLongException(String channel) { +- super("Attempted to send a Plugin Message to a channel that was too large. The maximum length a channel may be is " + Messenger.MAX_CHANNEL_SIZE + " chars (attempted " + channel.length() + " - '" + channel + "."); ++ // Paper start ++ public ChannelNameTooLongException(int length, String shortenedChannel) { ++ super("Attempted to send a Plugin Message to a channel that was too large. The maximum length a channel may be is " + Messenger.MAX_CHANNEL_SIZE + " chars (attempted " + length + " - '" + shortenedChannel + "."); ++ // Paper end + } + } +diff --git a/src/main/java/org/bukkit/plugin/messaging/StandardMessenger.java b/src/main/java/org/bukkit/plugin/messaging/StandardMessenger.java +index 6fda7f3aa68e76af64362e9afed70fc6a5e92986..230ecf9f9752b0369da3ba7aa6ce68b34a0814c5 100644 +--- a/src/main/java/org/bukkit/plugin/messaging/StandardMessenger.java ++++ b/src/main/java/org/bukkit/plugin/messaging/StandardMessenger.java +@@ -496,19 +496,26 @@ public class StandardMessenger implements Messenger { + if (channel.equals("bungeecord:main")) { + return "BungeeCord"; + } ++ // Paper start - improve error message + if (channel.length() > Messenger.MAX_CHANNEL_SIZE) { +- throw new ChannelNameTooLongException(channel); ++ throw new ChannelNameTooLongException(channel.length(), shortened(channel)); + } + if (channel.indexOf(':') == -1) { +- throw new IllegalArgumentException("Channel must contain : separator (attempted to use " + channel + ")"); ++ throw new IllegalArgumentException("Channel must contain : separator (attempted to use " + shortened(channel) + ")"); + } + if (!channel.toLowerCase(Locale.ROOT).equals(channel)) { + // TODO: use NamespacedKey validation here +- throw new IllegalArgumentException("Channel must be entirely lowercase (attempted to use " + channel + ")"); ++ throw new IllegalArgumentException("Channel must be entirely lowercase (attempted to use " + shortened(channel) + ")"); + } + return channel; + } + ++ private static String shortened(String channel) { ++ channel = org.apache.commons.lang3.StringUtils.normalizeSpace(channel); ++ return channel.length() > 32 ? channel.substring(0, 32) + "..." : channel; ++ } ++ // Paper end - improve error message ++ + /** + * Validates the input of a Plugin Message, ensuring the arguments are all + * valid. diff --git a/patches/removed/1.20.5/0259-Add-API-for-CanPlaceOn-and-CanDestroy-NBT-values.patch b/patches/removed/1.20.5/0259-Add-API-for-CanPlaceOn-and-CanDestroy-NBT-values.patch deleted file mode 100644 index f179b48bd7..0000000000 --- a/patches/removed/1.20.5/0259-Add-API-for-CanPlaceOn-and-CanDestroy-NBT-values.patch +++ /dev/null @@ -1,397 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Mark Vainomaa -Date: Wed, 12 Sep 2018 18:53:55 +0300 -Subject: [PATCH] Add API for CanPlaceOn and CanDestroy NBT values - - -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -index 1920cf7ad846f57cd278cb9a72dce03f3d014fbb..7cf1153ae532a9d53ee85b05f77ed74b94cf5fbc 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -@@ -85,6 +85,12 @@ import org.bukkit.persistence.PersistentDataContainer; - import static org.spigotmc.ValidateUtils.*; - // Spigot end - -+// Paper start -+import com.destroystokyo.paper.Namespaced; -+import com.destroystokyo.paper.NamespacedTag; -+import java.util.Collections; -+// Paper end -+ - /** - * Children must include the following: - * -@@ -273,6 +279,10 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { - @Specific(Specific.To.NBT) - static final ItemMetaKey BLOCK_DATA = new ItemMetaKey("BlockStateTag"); - static final ItemMetaKey BUKKIT_CUSTOM_TAG = new ItemMetaKey("PublicBukkitValues"); -+ // Paper start - Add API for CanPlaceOn and CanDestroy NBT values -+ static final ItemMetaKey CAN_DESTROY = new ItemMetaKey("CanDestroy"); -+ static final ItemMetaKey CAN_PLACE_ON = new ItemMetaKey("CanPlaceOn"); -+ // Paper end - Add API for CanPlaceOn and CanDestroy NBT values - - // We store the raw original JSON representation of all text data. See SPIGOT-5063, SPIGOT-5656, SPIGOT-5304 - private String displayName; -@@ -286,6 +296,10 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { - private int hideFlag; - private boolean unbreakable; - private int damage; -+ // Paper start - Add API for CanPlaceOn and CanDestroy NBT values -+ private Set placeableKeys = Sets.newHashSet(); -+ private Set destroyableKeys = Sets.newHashSet(); -+ // Paper end - Add API for CanPlaceOn and CanDestroy NBT values - - private static final Set HANDLED_TAGS = Sets.newHashSet(); - private static final CraftPersistentDataTypeRegistry DATA_TYPE_REGISTRY = new CraftPersistentDataTypeRegistry(); -@@ -323,6 +337,15 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { - this.hideFlag = meta.hideFlag; - this.unbreakable = meta.unbreakable; - this.damage = meta.damage; -+ // Paper start - Add API for CanPlaceOn and CanDestroy NBT values -+ if (meta.hasPlaceableKeys()) { -+ this.placeableKeys = new java.util.HashSet<>(meta.placeableKeys); -+ } -+ -+ if (meta.hasDestroyableKeys()) { -+ this.destroyableKeys = new java.util.HashSet<>(meta.destroyableKeys); -+ } -+ // Paper end - Add API for CanPlaceOn and CanDestroy NBT values - this.unhandledTags.putAll(meta.unhandledTags); - this.persistentDataContainer.putAll(meta.persistentDataContainer.getRaw()); - -@@ -386,6 +409,31 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { - this.persistentDataContainer.put(key, compound.get(key).copy()); - } - } -+ // Paper start - Add API for CanPlaceOn and CanDestroy NBT values -+ if (tag.contains(CAN_DESTROY.NBT)) { -+ ListTag list = tag.getList(CAN_DESTROY.NBT, CraftMagicNumbers.NBT.TAG_STRING); -+ for (int i = 0; i < list.size(); i++) { -+ Namespaced namespaced = this.blockKeyFromString(list.getString(i)); -+ if (namespaced == null) { -+ continue; -+ } -+ -+ this.destroyableKeys.add(namespaced); -+ } -+ } -+ -+ if (tag.contains(CAN_PLACE_ON.NBT)) { -+ ListTag list = tag.getList(CAN_PLACE_ON.NBT, CraftMagicNumbers.NBT.TAG_STRING); -+ for (int i = 0; i < list.size(); i++) { -+ Namespaced namespaced = this.blockKeyFromString(list.getString(i)); -+ if (namespaced == null) { -+ continue; -+ } -+ -+ this.placeableKeys.add(namespaced); -+ } -+ } -+ // Paper end - Add API for CanPlaceOn and CanDestroy NBT values - - Set keys = tag.getAllKeys(); - for (String key : keys) { -@@ -524,6 +572,34 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { - this.setDamage(damage); - } - -+ // Paper start - Add API for CanPlaceOn and CanDestroy NBT values -+ Iterable canPlaceOnSerialized = SerializableMeta.getObject(Iterable.class, map, CAN_PLACE_ON.BUKKIT, true); -+ if (canPlaceOnSerialized != null) { -+ for (Object canPlaceOnElement : canPlaceOnSerialized) { -+ String canPlaceOnRaw = (String) canPlaceOnElement; -+ Namespaced value = this.blockKeyFromString(canPlaceOnRaw); -+ if (value == null) { -+ continue; -+ } -+ -+ this.placeableKeys.add(value); -+ } -+ } -+ -+ Iterable canDestroySerialized = SerializableMeta.getObject(Iterable.class, map, CAN_DESTROY.BUKKIT, true); -+ if (canDestroySerialized != null) { -+ for (Object canDestroyElement : canDestroySerialized) { -+ String canDestroyRaw = (String) canDestroyElement; -+ Namespaced value = this.blockKeyFromString(canDestroyRaw); -+ if (value == null) { -+ continue; -+ } -+ -+ this.destroyableKeys.add(value); -+ } -+ } -+ // Paper end - Add API for CanPlaceOn and CanDestroy NBT values -+ - String internal = SerializableMeta.getString(map, "internal", true); - if (internal != null) { - ByteArrayInputStream buf = new ByteArrayInputStream(Base64.getDecoder().decode(internal)); -@@ -652,6 +728,23 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { - if (this.hasDamage()) { - itemTag.putInt(CraftMetaItem.DAMAGE.NBT, this.damage); - } -+ // Paper start - Add API for CanPlaceOn and CanDestroy NBT values -+ if (hasPlaceableKeys()) { -+ List items = this.placeableKeys.stream() -+ .map(this::serializeNamespaced) -+ .collect(java.util.stream.Collectors.toList()); -+ -+ itemTag.put(CAN_PLACE_ON.NBT, createNonComponentStringList(items)); -+ } -+ -+ if (hasDestroyableKeys()) { -+ List items = this.destroyableKeys.stream() -+ .map(this::serializeNamespaced) -+ .collect(java.util.stream.Collectors.toList()); -+ -+ itemTag.put(CAN_DESTROY.NBT, createNonComponentStringList(items)); -+ } -+ // Paper end - Add API for CanPlaceOn and CanDestroy NBT values - - for (Map.Entry e : this.unhandledTags.entrySet()) { - itemTag.put(e.getKey(), e.getValue()); -@@ -668,6 +761,21 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { - } - } - -+ // Paper start - Add API for CanPlaceOn and CanDestroy NBT values -+ static ListTag createNonComponentStringList(List list) { -+ if (list == null || list.isEmpty()) { -+ return null; -+ } -+ -+ ListTag tagList = new ListTag(); -+ for (String value : list) { -+ tagList.add(StringTag.valueOf(value)); // Paper - NBTTagString.of(String str) -+ } -+ -+ return tagList; -+ } -+ // Paper end - Add API for CanPlaceOn and CanDestroy NBT values -+ - ListTag createStringList(List list) { - if (list == null) { - return null; -@@ -751,7 +859,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { - - @Overridden - boolean isEmpty() { -- return !(this.hasDisplayName() || this.hasLocalizedName() || this.hasEnchants() || (this.lore != null) || this.hasCustomModelData() || this.hasBlockData() || this.hasRepairCost() || !this.unhandledTags.isEmpty() || !this.persistentDataContainer.isEmpty() || this.hideFlag != 0 || this.isUnbreakable() || this.hasDamage() || this.hasAttributeModifiers()); -+ return !(this.hasDisplayName() || this.hasLocalizedName() || this.hasEnchants() || (this.lore != null) || this.hasCustomModelData() || this.hasBlockData() || this.hasRepairCost() || !this.unhandledTags.isEmpty() || !this.persistentDataContainer.isEmpty() || this.hideFlag != 0 || this.isUnbreakable() || this.hasDamage() || this.hasAttributeModifiers() || this.hasPlaceableKeys() || this.hasDestroyableKeys()); // Paper - Implement an API for CanPlaceOn and CanDestroy NBT values - } - - // Paper start -@@ -1223,7 +1331,11 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { - && (this.hideFlag == that.hideFlag) - && (this.isUnbreakable() == that.isUnbreakable()) - && (this.hasDamage() ? that.hasDamage() && this.damage == that.damage : !that.hasDamage()) -- && (this.version == that.version); -+ && (this.version == that.version) -+ // Paper start - Implement an API for CanPlaceOn and CanDestroy NBT values -+ && (this.hasPlaceableKeys() ? that.hasPlaceableKeys() && this.placeableKeys.equals(that.placeableKeys) : !that.hasPlaceableKeys()) -+ && (this.hasDestroyableKeys() ? that.hasDestroyableKeys() && this.destroyableKeys.equals(that.destroyableKeys) : !that.hasDestroyableKeys()); -+ // Paper end - } - - /** -@@ -1258,6 +1370,10 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { - hash = 61 * hash + (this.hasDamage() ? this.damage : 0); - hash = 61 * hash + (this.hasAttributeModifiers() ? this.attributeModifiers.hashCode() : 0); - hash = 61 * hash + this.version; -+ // Paper start - Implement an API for CanPlaceOn and CanDestroy NBT values -+ hash = 61 * hash + (this.hasPlaceableKeys() ? this.placeableKeys.hashCode() : 0); -+ hash = 61 * hash + (this.hasDestroyableKeys() ? this.destroyableKeys.hashCode() : 0); -+ // Paper end - return hash; - } - -@@ -1282,6 +1398,14 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { - clone.unbreakable = this.unbreakable; - clone.damage = this.damage; - clone.version = this.version; -+ // Paper start - Implement an API for CanPlaceOn and CanDestroy NBT values -+ if (this.placeableKeys != null) { -+ clone.placeableKeys = Sets.newHashSet(this.placeableKeys); -+ } -+ if (this.destroyableKeys != null) { -+ clone.destroyableKeys = Sets.newHashSet(this.destroyableKeys); -+ } -+ // Paper end - return clone; - } catch (CloneNotSupportedException e) { - throw new Error(e); -@@ -1339,6 +1463,23 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { - builder.put(CraftMetaItem.DAMAGE.BUKKIT, this.damage); - } - -+ // Paper start - Implement an API for CanPlaceOn and CanDestroy NBT values -+ if (this.hasPlaceableKeys()) { -+ List cerealPlaceable = this.placeableKeys.stream() -+ .map(this::serializeNamespaced) -+ .collect(java.util.stream.Collectors.toList()); -+ -+ builder.put(CAN_PLACE_ON.BUKKIT, cerealPlaceable); -+ } -+ -+ if (this.hasDestroyableKeys()) { -+ List cerealDestroyable = this.destroyableKeys.stream() -+ .map(this::serializeNamespaced) -+ .collect(java.util.stream.Collectors.toList()); -+ -+ builder.put(CAN_DESTROY.BUKKIT, cerealDestroyable); -+ } -+ // Paper end - final Map internalTags = new HashMap(this.unhandledTags); - this.serializeInternal(internalTags); - if (!internalTags.isEmpty()) { -@@ -1516,6 +1657,8 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { - CraftMetaArmorStand.SHOW_ARMS.NBT, - CraftMetaArmorStand.SMALL.NBT, - CraftMetaArmorStand.MARKER.NBT, -+ CAN_DESTROY.NBT, -+ CAN_PLACE_ON.NBT, - // Paper end - CraftMetaCompass.LODESTONE_DIMENSION.NBT, - CraftMetaCompass.LODESTONE_POS.NBT, -@@ -1545,4 +1688,141 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { - } - // Paper end - -+ // Paper start - Implement an API for CanPlaceOn and CanDestroy NBT values -+ @Override -+ @SuppressWarnings("deprecation") -+ public Set getCanDestroy() { -+ return !hasDestroyableKeys() ? Collections.emptySet() : legacyGetMatsFromKeys(this.destroyableKeys); -+ } -+ -+ @Override -+ @SuppressWarnings("deprecation") -+ public void setCanDestroy(Set canDestroy) { -+ Preconditions.checkArgument(canDestroy != null, "Cannot replace with null set!"); -+ legacyClearAndReplaceKeys(this.destroyableKeys, canDestroy); -+ } -+ -+ @Override -+ @SuppressWarnings("deprecation") -+ public Set getCanPlaceOn() { -+ return !hasPlaceableKeys() ? Collections.emptySet() : legacyGetMatsFromKeys(this.placeableKeys); -+ } -+ -+ @Override -+ @SuppressWarnings("deprecation") -+ public void setCanPlaceOn(Set canPlaceOn) { -+ Preconditions.checkArgument(canPlaceOn != null, "Cannot replace with null set!"); -+ legacyClearAndReplaceKeys(this.placeableKeys, canPlaceOn); -+ } -+ -+ @Override -+ public Set getDestroyableKeys() { -+ return !hasDestroyableKeys() ? Collections.emptySet() : Sets.newHashSet(this.destroyableKeys); -+ } -+ -+ @Override -+ public void setDestroyableKeys(Collection canDestroy) { -+ Preconditions.checkArgument(canDestroy != null, "Cannot replace with null collection!"); -+ Preconditions.checkArgument(ofAcceptableType(canDestroy), "Can only use NamespacedKey or NamespacedTag objects!"); -+ this.destroyableKeys.clear(); -+ this.destroyableKeys.addAll(canDestroy); -+ } -+ -+ @Override -+ public Set getPlaceableKeys() { -+ return !hasPlaceableKeys() ? Collections.emptySet() : Sets.newHashSet(this.placeableKeys); -+ } -+ -+ @Override -+ public void setPlaceableKeys(Collection canPlaceOn) { -+ Preconditions.checkArgument(canPlaceOn != null, "Cannot replace with null collection!"); -+ Preconditions.checkArgument(ofAcceptableType(canPlaceOn), "Can only use NamespacedKey or NamespacedTag objects!"); -+ this.placeableKeys.clear(); -+ this.placeableKeys.addAll(canPlaceOn); -+ } -+ -+ @Override -+ public boolean hasPlaceableKeys() { -+ return this.placeableKeys != null && !this.placeableKeys.isEmpty(); -+ } -+ -+ @Override -+ public boolean hasDestroyableKeys() { -+ return this.destroyableKeys != null && !this.destroyableKeys.isEmpty(); -+ } -+ -+ @Deprecated -+ private void legacyClearAndReplaceKeys(Collection toUpdate, Collection beingSet) { -+ if (beingSet.stream().anyMatch(Material::isLegacy)) { -+ throw new IllegalArgumentException("Set must not contain any legacy materials!"); -+ } -+ -+ toUpdate.clear(); -+ toUpdate.addAll(beingSet.stream().map(Material::getKey).collect(java.util.stream.Collectors.toSet())); -+ } -+ -+ @Deprecated -+ private Set legacyGetMatsFromKeys(Collection names) { -+ Set mats = Sets.newHashSet(); -+ for (Namespaced key : names) { -+ if (!(key instanceof org.bukkit.NamespacedKey)) { -+ continue; -+ } -+ -+ Material material = Material.matchMaterial(key.toString(), false); -+ if (material != null) { -+ mats.add(material); -+ } -+ } -+ -+ return mats; -+ } -+ -+ private @Nullable Namespaced blockKeyFromString(String raw) { -+ boolean isTag = !raw.isEmpty() && raw.codePointAt(0) == '#'; -+ com.mojang.datafixers.util.Either result; -+ try { -+ result = net.minecraft.commands.arguments.blocks.BlockStateParser.parseForTesting(net.minecraft.core.registries.BuiltInRegistries.BLOCK.asLookup(), raw, false); -+ } catch (com.mojang.brigadier.exceptions.CommandSyntaxException e) { -+ return null; -+ } -+ -+ net.minecraft.resources.ResourceLocation key = null; -+ if (isTag && result.right().isPresent() && result.right().get().tag() instanceof net.minecraft.core.HolderSet.Named namedSet) { -+ key = namedSet.key().location(); -+ } else if (result.left().isPresent()) { -+ key = net.minecraft.core.registries.BuiltInRegistries.BLOCK.getKey(result.left().get().blockState().getBlock()); -+ } -+ -+ if (key == null) { -+ return null; -+ } -+ -+ try { -+ if (isTag) { -+ return new NamespacedTag(key.getNamespace(), key.getPath()); -+ -+ } -+ return CraftNamespacedKey.fromMinecraft(key); -+ } catch (IllegalArgumentException ignored) { -+ return null; -+ } -+ } -+ -+ private @Nonnull String serializeNamespaced(Namespaced resource) { -+ return resource.toString(); -+ } -+ -+ // not a fan of this -+ private boolean ofAcceptableType(Collection namespacedResources) { -+ -+ for (Namespaced resource : namespacedResources) { -+ if (!(resource instanceof org.bukkit.NamespacedKey || resource instanceof com.destroystokyo.paper.NamespacedTag)) { -+ return false; -+ } -+ } -+ -+ return true; -+ } -+ // Paper end - } diff --git a/patches/server/0001-Setup-Gradle-project.patch b/patches/server/0001-Setup-Gradle-project.patch index 8cdbf973d7..d8dace80ea 100644 --- a/patches/server/0001-Setup-Gradle-project.patch +++ b/patches/server/0001-Setup-Gradle-project.patch @@ -160,7 +160,7 @@ index 0000000000000000000000000000000000000000..9ea079d14a92367629dc8fb30d1be043 +} diff --git a/pom.xml b/pom.xml deleted file mode 100644 -index e6f88c20b3a3ba28b917bea9a671b2709d32b3cd..0000000000000000000000000000000000000000 +index 5abcca1894a0d7795d394834f56c189c0bbeb82f..0000000000000000000000000000000000000000 --- a/pom.xml +++ /dev/null @@ -1,604 +0,0 @@ @@ -170,7 +170,7 @@ index e6f88c20b3a3ba28b917bea9a671b2709d32b3cd..00000000000000000000000000000000 - org.spigotmc - spigot - jar -- 1.21-R0.1-SNAPSHOT +- 1.21.1-R0.1-SNAPSHOT - Spigot - https://www.spigotmc.org/ - diff --git a/patches/server/0003-Build-system-changes.patch b/patches/server/0003-Build-system-changes.patch index 505d9bbbb0..3e04e97c06 100644 --- a/patches/server/0003-Build-system-changes.patch +++ b/patches/server/0003-Build-system-changes.patch @@ -131,10 +131,10 @@ index feca36209fd2405fab70f564f63e627b8b78ac18..396ec10a76bdadbf5be2f0e15e88eed4 public static PackRepository createPackRepository(Path dataPacksPath, DirectoryValidator symlinkFinder) { diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 82b8485a4781105bce874485119110576d1e2d63..a07e26caf48acf9ef193a74497a201166bfbe098 100644 +index 9bae4835882a7c1b5a623d57330c36cc61b9b6d1..273a6658deacbf00f6cc498cf3fcd20d144bd9e4 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -210,7 +210,7 @@ public class Main { +@@ -199,7 +199,7 @@ public class Main { } if (Main.class.getPackage().getImplementationVendor() != null && System.getProperty("IReallyKnowWhatIAmDoingISwear") == null) { diff --git a/patches/server/0004-Test-changes.patch b/patches/server/0004-Test-changes.patch index a4b4a61e66..97ddef9404 100644 --- a/patches/server/0004-Test-changes.patch +++ b/patches/server/0004-Test-changes.patch @@ -351,6 +351,22 @@ index ebcb65cb74acdb9d1bcf2b4b3551a2dc6d809bc9..7d9dbed7281099b78d7f898885b37cdc } @Test +diff --git a/src/test/java/org/bukkit/support/AbstractTestingBase.java b/src/test/java/org/bukkit/support/AbstractTestingBase.java +index 544307fe34cbcfa286a7d7b30900ebea127d189e..5bda0bc976920f224586f2c0e083b771c676e307 100644 +--- a/src/test/java/org/bukkit/support/AbstractTestingBase.java ++++ b/src/test/java/org/bukkit/support/AbstractTestingBase.java +@@ -53,6 +53,11 @@ public abstract class AbstractTestingBase { + MultiPackResourceManager resourceManager = new MultiPackResourceManager(PackType.SERVER_DATA, resourceRepository.getAvailablePacks().stream().map(Pack::open).toList()); + // add tags and loot tables for unit tests + LayeredRegistryAccess layers = RegistryLayer.createRegistryAccess(); ++ // Paper start - load registry here to ensure bukkit object registry are correctly delayed if needed ++ try { ++ Class.forName("org.bukkit.Registry"); ++ } catch (ClassNotFoundException ignored) {} ++ // Paper end - load registry here to ensure bukkit object registry are correctly delayed if needed + layers = WorldLoader.loadAndReplaceLayer(resourceManager, layers, RegistryLayer.WORLDGEN, RegistryDataLoader.WORLDGEN_REGISTRIES); + REGISTRY_CUSTOM = layers.compositeAccess().freeze(); + // Register vanilla pack diff --git a/src/test/java/org/bukkit/support/DummyServer.java b/src/test/java/org/bukkit/support/DummyServer.java index 1acdf5bc439c073c1777c2c4f5743ae082f4a621..183d30e3d3d413b05c762f374a964498d6ffdec4 100644 --- a/src/test/java/org/bukkit/support/DummyServer.java diff --git a/patches/server/0005-Paper-config-files.patch b/patches/server/0005-Paper-config-files.patch index 8fa709f084..199fcccc04 100644 --- a/patches/server/0005-Paper-config-files.patch +++ b/patches/server/0005-Paper-config-files.patch @@ -1414,10 +1414,10 @@ index 0000000000000000000000000000000000000000..990d1bb46e0f9719f4e9af928d80ac6f +} diff --git a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java new file mode 100644 -index 0000000000000000000000000000000000000000..7509b17414f836e8b53fc62b02b386ba4e8c5ca9 +index 0000000000000000000000000000000000000000..4bcf27f98765abf693e535cfc1756c27a10cb316 --- /dev/null +++ b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java -@@ -0,0 +1,551 @@ +@@ -0,0 +1,554 @@ +package io.papermc.paper.configuration; + +import com.google.common.collect.HashBasedTable; @@ -1474,6 +1474,7 @@ index 0000000000000000000000000000000000000000..7509b17414f836e8b53fc62b02b386ba +import org.slf4j.Logger; +import org.spigotmc.SpigotWorldConfig; +import org.spongepowered.configurate.objectmapping.ConfigSerializable; ++import org.spongepowered.configurate.objectmapping.meta.Comment; +import org.spongepowered.configurate.objectmapping.meta.PostProcess; +import org.spongepowered.configurate.objectmapping.meta.Required; +import org.spongepowered.configurate.objectmapping.meta.Setting; @@ -1710,6 +1711,8 @@ index 0000000000000000000000000000000000000000..7509b17414f836e8b53fc62b02b386ba + + public boolean disablePlayerCrits = false; + public boolean nerfPigmenFromNetherPortals = false; ++ @Comment("Prevents merging items that are not on the same y level, preventing potential visual artifacts.") ++ public boolean onlyMergeItemsHorizontally = false; + public PillagerPatrols pillagerPatrols; + + public class PillagerPatrols extends ConfigurationPart { @@ -5053,7 +5056,7 @@ index e433037a03ffafabb952887ae3980e1d51411d4c..c061813d275fbc48d7629cc59d90dbb4 this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index e8fac2863c5feb875cf0c78f062b4b87acbcb49b..751900e0c2a946ba4291174c81b2bdbdbe994e94 100644 +index 3c0691ef65c8db1002b76984f4ddfe2072d793c9..b3c4cdd9cfff6857f3007fbd91a280bcc53ab072 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -962,6 +962,7 @@ public final class CraftServer implements Server { @@ -5065,7 +5068,7 @@ index e8fac2863c5feb875cf0c78f062b4b87acbcb49b..751900e0c2a946ba4291174c81b2bdbd world.serverLevelData.setDifficulty(config.difficulty); world.setSpawnSettings(config.spawnMonsters, config.spawnAnimals); diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index a07e26caf48acf9ef193a74497a201166bfbe098..dbcde37cfdeb6141c3f5c4f8b95d60fca91c7977 100644 +index 273a6658deacbf00f6cc498cf3fcd20d144bd9e4..cf06abf508fab734f5945e1d292c01512a50749e 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -142,6 +142,19 @@ public class Main { @@ -5190,10 +5193,10 @@ index 0000000000000000000000000000000000000000..0396589795da1f83ddf62426236dde9a + } +} diff --git a/src/test/java/org/bukkit/support/AbstractTestingBase.java b/src/test/java/org/bukkit/support/AbstractTestingBase.java -index 544307fe34cbcfa286a7d7b30900ebea127d189e..1b1d51a68c0abe7d8f0aa1172064192c71ae645e 100644 +index 5bda0bc976920f224586f2c0e083b771c676e307..4e9612600822bc1b52b8528dff2783d43385ec73 100644 --- a/src/test/java/org/bukkit/support/AbstractTestingBase.java +++ b/src/test/java/org/bukkit/support/AbstractTestingBase.java -@@ -63,6 +63,7 @@ public abstract class AbstractTestingBase { +@@ -68,6 +68,7 @@ public abstract class AbstractTestingBase { BIOMES = REGISTRY_CUSTOM.registryOrThrow(Registries.BIOME); DummyServer.setup(); diff --git a/patches/server/0009-MC-Utils.patch b/patches/server/0009-MC-Utils.patch index 1cda21bd7d..1fc2a2627a 100644 --- a/patches/server/0009-MC-Utils.patch +++ b/patches/server/0009-MC-Utils.patch @@ -5064,7 +5064,7 @@ index 12db4c5db3d7951df984db03d09d14d808e58699..44d4aee059d74676bffb8b6bc6f6ad4d @Override public float getBukkitYaw() { diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 15f0b0977fe7b41e29346df9d49120f14f02ea43..b6cb1de08e955dfc99a0cb736b2ed456c99fde5c 100644 +index d7a3f704cce228c50d26f1ecd98e819eca561bfc..3457e1c9791b294b5e4dab478d90cdd1a1cf7fef 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -953,6 +953,25 @@ public final class ItemStack implements DataComponentHolder { @@ -5351,10 +5351,10 @@ index 497792978bdf0e6a53d772304770e8df3e7416ea..c5454b92ca2565461c799d7340160f9f public WorldBorder getWorldBorder() { return this.level.getWorldBorder(); diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -index 9569d9d1c8f809420e08038e5bc38c2c7887ff90..d5d638d955dbcc1034bc79aace77d43e20db5995 100644 +index e0594a1c381487b43bfc55212044e1b3122cee66..59fcaca90b67c03e1a6799e58061dbae3b1f1ceb 100644 --- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java +++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -@@ -834,12 +834,14 @@ public abstract class BlockBehaviour implements FeatureElement { +@@ -841,12 +841,14 @@ public abstract class BlockBehaviour implements FeatureElement { } } @@ -5369,7 +5369,7 @@ index 9569d9d1c8f809420e08038e5bc38c2c7887ff90..d5d638d955dbcc1034bc79aace77d43e this.legacySolid = this.calculateSolid(); } -@@ -886,8 +888,8 @@ public abstract class BlockBehaviour implements FeatureElement { +@@ -893,8 +895,8 @@ public abstract class BlockBehaviour implements FeatureElement { return this.getBlock().getOcclusionShape(this.asState(), world, pos); } @@ -5421,7 +5421,7 @@ index a52077f0d93c94b0ea644bc14b9b28e84fd1b154..dcc0acd259920463a4464213b9a5e793 @Nullable @Override diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index b537e7a079497db428db405edfccde74f32f4208..c664021dbfffcf0db3247041270ce9a1ee6940de 100644 +index 5b73fcfe278f57de249f3a96da58dc08eda7aff6..25380a44e5cc94f3924cfee6a03c3091fea04ae2 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java @@ -116,6 +116,10 @@ public class LevelChunk extends ChunkAccess { @@ -5480,7 +5480,7 @@ index b537e7a079497db428db405edfccde74f32f4208..c664021dbfffcf0db3247041270ce9a1 @Override public FluidState getFluidState(BlockPos pos) { return this.getFluidState(pos.getX(), pos.getY(), pos.getZ()); -@@ -549,7 +582,11 @@ public class LevelChunk extends ChunkAccess { +@@ -554,7 +587,11 @@ public class LevelChunk extends ChunkAccess { // CraftBukkit start public void loadCallback() { @@ -5492,7 +5492,7 @@ index b537e7a079497db428db405edfccde74f32f4208..c664021dbfffcf0db3247041270ce9a1 if (server != null) { /* * If it's a new world, the first few chunks are generated inside -@@ -590,6 +627,10 @@ public class LevelChunk extends ChunkAccess { +@@ -595,6 +632,10 @@ public class LevelChunk extends ChunkAccess { server.getPluginManager().callEvent(unloadEvent); // note: saving can be prevented, but not forced if no saving is actually required this.mustNotSave = !unloadEvent.isSaveChunk(); @@ -5563,7 +5563,7 @@ index 34933c5324126f9afdc5cba9dea997ace8f01806..1cfc906317f07a44f06a4adf021c44e3 return false; } else { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index f04c0f8b3905b488aac221fedde335a54ad1ff58..7f8864da8a6f9c2410191851add1ba566b8c171c 100644 +index a094eb1348509fea0c3d253cddfe409998dcbf23..2ea3ad9ab43dec0555d6716bebefbc3bb6553f1a 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -2601,4 +2601,9 @@ public final class CraftServer implements Server { diff --git a/patches/server/0010-Adventure.patch b/patches/server/0010-Adventure.patch index 906c9d1f54..bed3f0467a 100644 --- a/patches/server/0010-Adventure.patch +++ b/patches/server/0010-Adventure.patch @@ -2191,10 +2191,10 @@ index f30cdfa5fd294479e35680b2f758b3295f659b74..ec34e402104d7a696ea95e0b11ee7018 public CommandSourceStack(CommandSource output, Vec3 pos, Vec2 rot, ServerLevel world, int level, String name, Component displayName, MinecraftServer server, @Nullable Entity entity) { this(output, pos, rot, world, level, name, displayName, server, entity, false, CommandResultCallback.EMPTY, EntityAnchorArgument.Anchor.FEET, CommandSigningContext.ANONYMOUS, TaskChainer.immediate(server)); diff --git a/src/main/java/net/minecraft/commands/arguments/MessageArgument.java b/src/main/java/net/minecraft/commands/arguments/MessageArgument.java -index 0047fd758ad43cc7b13355b60c410a9bcc37bec0..982b2bab27e3d55d0ba07060862c0c3183ad91b0 100644 +index 8f03eed020a99b96189f4f5d42d806d06f4d6b5e..55484826fc5ddd04ae024e25a0251796d7fa9c28 100644 --- a/src/main/java/net/minecraft/commands/arguments/MessageArgument.java +++ b/src/main/java/net/minecraft/commands/arguments/MessageArgument.java -@@ -53,17 +53,21 @@ public class MessageArgument implements SignedArgument +@@ -54,17 +54,21 @@ public class MessageArgument implements SignedArgument private static void resolveSignedMessage(Consumer callback, CommandSourceStack source, PlayerChatMessage message) { MinecraftServer minecraftServer = source.getServer(); CompletableFuture completableFuture = filterPlainText(source, message); @@ -2584,10 +2584,10 @@ index c5ba5e30cd74ca2cfc3f952c7b992df239a53a34..fdb75db02603ef97b624219211a0db22 @Override public PacketType type() { diff --git a/src/main/java/net/minecraft/network/protocol/login/ClientboundLoginDisconnectPacket.java b/src/main/java/net/minecraft/network/protocol/login/ClientboundLoginDisconnectPacket.java -index bb97fdb9aa6167083442a928276ebe4225a586ef..5d1758086ed4fce5b36a5b31df44ccea42abc590 100644 +index bb97fdb9aa6167083442a928276ebe4225a586ef..eeaa40e8121643c6c1d951e76e7361e29210ba48 100644 --- a/src/main/java/net/minecraft/network/protocol/login/ClientboundLoginDisconnectPacket.java +++ b/src/main/java/net/minecraft/network/protocol/login/ClientboundLoginDisconnectPacket.java -@@ -18,11 +18,15 @@ public class ClientboundLoginDisconnectPacket implements Packet extends CraftAb return CraftItemStack.asCraftMirror(this.container.getSlot(slot).getItem()); } @@ -5164,10 +5165,10 @@ index c71a4971f127fdfc753306019313ce1a31201120..fd3b12477c30d1eabdbe57ea77902793 + // Paper end } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -index e56e6d07f297491c8f92598b8105bfebead7a0a1..86a5e4f7b2a0d50d0a58d88e10a277cfbd09bf9d 100644 +index 1c5d63fb6a9ed5cc40d735793cf5889e189feadf..568d6fab743039b20715d8181555f52baa05f0f3 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -@@ -952,6 +952,18 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -959,6 +959,18 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { return !(this.hasDisplayName() || this.hasItemName() || this.hasLocalizedName() || this.hasEnchants() || (this.lore != null) || this.hasCustomModelData() || this.hasBlockData() || this.hasRepairCost() || !this.unhandledTags.build().isEmpty() || !this.removedTags.isEmpty() || !this.persistentDataContainer.isEmpty() || this.hideFlag != 0 || this.isHideTooltip() || this.isUnbreakable() || this.hasEnchantmentGlintOverride() || this.isFireResistant() || this.hasMaxStackSize() || this.hasRarity() || this.hasFood() || this.hasTool() || this.hasDamage() || this.hasMaxDamage() || this.hasAttributeModifiers() || this.customTag != null); } @@ -5186,7 +5187,7 @@ index e56e6d07f297491c8f92598b8105bfebead7a0a1..86a5e4f7b2a0d50d0a58d88e10a277cf @Override public String getDisplayName() { return CraftChatMessage.fromComponent(this.displayName); -@@ -982,6 +994,18 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -989,6 +1001,18 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { return this.itemName != null; } @@ -5205,7 +5206,7 @@ index e56e6d07f297491c8f92598b8105bfebead7a0a1..86a5e4f7b2a0d50d0a58d88e10a277cf @Override public String getLocalizedName() { return this.getDisplayName(); -@@ -1001,6 +1025,18 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1008,6 +1032,18 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { return this.lore != null && !this.lore.isEmpty(); } @@ -5588,7 +5589,7 @@ index ff040613083c015d9c52c0995591b64305fd5018..1b552b3f05ac7fc44450de4b1ec78907 boolean hadFormat = false; diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index aa6a9dcd5528df38dddc0c661334c35658a19cee..5a89b9ca6a62f0bfb5fe01ed4097870788cf5d83 100644 +index eeffc4be4ae7168c9f69edbbff6642fd4c214b3d..b64be3f292d88fa60746a3fe542740ef8ad2b41c 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java @@ -77,6 +77,43 @@ public final class CraftMagicNumbers implements UnsafeValues { diff --git a/patches/server/0011-Use-TerminalConsoleAppender-for-console-improvements.patch b/patches/server/0011-Use-TerminalConsoleAppender-for-console-improvements.patch index 05265dfcf1..f2b824516b 100644 --- a/patches/server/0011-Use-TerminalConsoleAppender-for-console-improvements.patch +++ b/patches/server/0011-Use-TerminalConsoleAppender-for-console-improvements.patch @@ -423,7 +423,7 @@ index bec1fdabbc3727c1f7297b2d23914a5179f4adcb..17df1085e29429b202a6f9003343b15b @Override public PluginCommand getPluginCommand(String name) { diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 43790f555743e9945c1b82cf8f2f4719feedc165..26dfb02286e836cad0242c71f743265d55d9d032 100644 +index 9c1fab8db74757e1fb57d4f47099ba6e1536cd6d..3eecea2e6df217ccf2c432d02022c53443a37014 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -13,7 +13,6 @@ import java.util.logging.Logger; @@ -434,7 +434,7 @@ index 43790f555743e9945c1b82cf8f2f4719feedc165..26dfb02286e836cad0242c71f743265d public class Main { public static boolean useJline = true; -@@ -207,6 +206,8 @@ public class Main { +@@ -196,6 +195,8 @@ public class Main { } try { @@ -443,7 +443,7 @@ index 43790f555743e9945c1b82cf8f2f4719feedc165..26dfb02286e836cad0242c71f743265d // This trick bypasses Maven Shade's clever rewriting of our getProperty call when using String literals String jline_UnsupportedTerminal = new String(new char[]{'j', 'l', 'i', 'n', 'e', '.', 'U', 'n', 's', 'u', 'p', 'p', 'o', 'r', 't', 'e', 'd', 'T', 'e', 'r', 'm', 'i', 'n', 'a', 'l'}); String jline_terminal = new String(new char[]{'j', 'l', 'i', 'n', 'e', '.', 't', 'e', 'r', 'm', 'i', 'n', 'a', 'l'}); -@@ -224,9 +225,18 @@ public class Main { +@@ -213,9 +214,18 @@ public class Main { // This ensures the terminal literal will always match the jline implementation System.setProperty(jline.TerminalFactory.JLINE_TERMINAL, jline.UnsupportedTerminal.class.getName()); } @@ -462,7 +462,7 @@ index 43790f555743e9945c1b82cf8f2f4719feedc165..26dfb02286e836cad0242c71f743265d } if (Main.class.getPackage().getImplementationVendor() != null && System.getProperty("IReallyKnowWhatIAmDoingISwear") == null) { -@@ -242,6 +252,7 @@ public class Main { +@@ -231,6 +241,7 @@ public class Main { } } diff --git a/patches/server/0021-Hook-into-CB-plugin-rewrites.patch b/patches/server/0021-Hook-into-CB-plugin-rewrites.patch index 6c6939c01e..8f4c15153f 100644 --- a/patches/server/0021-Hook-into-CB-plugin-rewrites.patch +++ b/patches/server/0021-Hook-into-CB-plugin-rewrites.patch @@ -8,7 +8,7 @@ our own relocation. Also lets us rewrite NMS calls for when we're debugging in an IDE pre-relocate. diff --git a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java -index 4afaab8978d4c4d9b0e9339f1bea9a9a9963d20d..421ddf6ca955215dff77655a7eda62eb9d90aa92 100644 +index f80625a2b1dc266131ba3bfda9a918c72a592d82..ebc160fd4c8aed95087130bb6fddc1d4f83c6f87 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java +++ b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java @@ -11,6 +11,7 @@ import java.util.Arrays; @@ -27,7 +27,7 @@ index 4afaab8978d4c4d9b0e9339f1bea9a9a9963d20d..421ddf6ca955215dff77655a7eda62eb import joptsimple.OptionParser; import joptsimple.OptionSet; import joptsimple.OptionSpec; -@@ -99,6 +101,40 @@ public class Commodore { +@@ -100,6 +102,40 @@ public class Commodore { private static final Map METHOD_REROUTE = Commodore.createReroutes(MethodRerouting.class); private static final Map ENUM_METHOD_REROUTE = Commodore.createReroutes(EnumEvil.class); @@ -68,7 +68,7 @@ index 4afaab8978d4c4d9b0e9339f1bea9a9a9963d20d..421ddf6ca955215dff77655a7eda62eb public static void main(String[] args) { OptionParser parser = new OptionParser(); OptionSpec inputFlag = parser.acceptsAll(Arrays.asList("i", "input")).withRequiredArg().ofType(File.class).required(); -@@ -252,9 +288,49 @@ public class Commodore { +@@ -253,9 +289,49 @@ public class Commodore { } return new MethodVisitor(this.api, super.visitMethod(access, name, desc, signature, exceptions)) { @@ -118,7 +118,7 @@ index 4afaab8978d4c4d9b0e9339f1bea9a9a9963d20d..421ddf6ca955215dff77655a7eda62eb name = FieldRename.rename(pluginVersion, owner, name); if (modern) { -@@ -374,6 +450,13 @@ public class Commodore { +@@ -375,6 +451,13 @@ public class Commodore { return; } @@ -132,7 +132,7 @@ index 4afaab8978d4c4d9b0e9339f1bea9a9a9963d20d..421ddf6ca955215dff77655a7eda62eb if (modern) { if (owner.equals("org/bukkit/Material") || (instantiatedMethodType != null && instantiatedMethodType.getDescriptor().startsWith("(Lorg/bukkit/Material;)"))) { switch (name) { -@@ -470,6 +553,13 @@ public class Commodore { +@@ -471,6 +554,13 @@ public class Commodore { @Override public void visitLdcInsn(Object value) { @@ -146,7 +146,7 @@ index 4afaab8978d4c4d9b0e9339f1bea9a9a9963d20d..421ddf6ca955215dff77655a7eda62eb if (value instanceof String && ((String) value).equals("com.mysql.jdbc.Driver")) { super.visitLdcInsn("com.mysql.cj.jdbc.Driver"); return; -@@ -480,6 +570,14 @@ public class Commodore { +@@ -481,6 +571,14 @@ public class Commodore { @Override public void visitInvokeDynamicInsn(String name, String descriptor, Handle bootstrapMethodHandle, Object... bootstrapMethodArguments) { @@ -161,7 +161,7 @@ index 4afaab8978d4c4d9b0e9339f1bea9a9a9963d20d..421ddf6ca955215dff77655a7eda62eb if (bootstrapMethodHandle.getOwner().equals("java/lang/invoke/LambdaMetafactory") && bootstrapMethodHandle.getName().equals("metafactory") && bootstrapMethodArguments.length == 3) { Type samMethodType = (Type) bootstrapMethodArguments[0]; -@@ -496,7 +594,7 @@ public class Commodore { +@@ -497,7 +595,7 @@ public class Commodore { methodArgs.add(new Handle(newOpcode, newOwner, newName, newDescription, newItf)); methodArgs.add(newInstantiated); @@ -170,7 +170,7 @@ index 4afaab8978d4c4d9b0e9339f1bea9a9a9963d20d..421ddf6ca955215dff77655a7eda62eb }, implMethod.getTag(), implMethod.getOwner(), implMethod.getName(), implMethod.getDesc(), implMethod.isInterface(), samMethodType, instantiatedMethodType); return; } -@@ -547,6 +645,12 @@ public class Commodore { +@@ -548,6 +646,12 @@ public class Commodore { @Override public FieldVisitor visitField(int access, String name, String descriptor, String signature, Object value) { diff --git a/patches/server/0022-Remap-reflection-calls-in-plugins-using-internals.patch b/patches/server/0022-Remap-reflection-calls-in-plugins-using-internals.patch index ed625b27de..a1af0e562f 100644 --- a/patches/server/0022-Remap-reflection-calls-in-plugins-using-internals.patch +++ b/patches/server/0022-Remap-reflection-calls-in-plugins-using-internals.patch @@ -645,10 +645,10 @@ index 242811578a786e3807a1a7019d472d5a68f87116..0b65fdf53124f3dd042b2363b1b8df8e return traceElements; } diff --git a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java -index 421ddf6ca955215dff77655a7eda62eb9d90aa92..8a1570ceb4755a1872911751943c84b8f06eb4c2 100644 +index ebc160fd4c8aed95087130bb6fddc1d4f83c6f87..65f64de05a88844e62b5a0dd1e2f53edfb4e0c1f 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java +++ b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java -@@ -102,36 +102,26 @@ public class Commodore { +@@ -103,36 +103,26 @@ public class Commodore { private static final Map ENUM_METHOD_REROUTE = Commodore.createReroutes(EnumEvil.class); // Paper start - Plugin rewrites @@ -696,7 +696,7 @@ index 421ddf6ca955215dff77655a7eda62eb9d90aa92..8a1570ceb4755a1872911751943c84b8 } // Paper end - Plugin rewrites -@@ -214,6 +204,7 @@ public class Commodore { +@@ -215,6 +205,7 @@ public class Commodore { visitor = new LimitedClassRemapper(cw, new SimpleRemapper(Commodore.ENUM_RENAMES)); } diff --git a/patches/server/0023-Timings-v2.patch b/patches/server/0023-Timings-v2.patch index 0d0d81a7a8..2af23f8ad7 100644 --- a/patches/server/0023-Timings-v2.patch +++ b/patches/server/0023-Timings-v2.patch @@ -1526,7 +1526,7 @@ index d1cfcc8a36964f006f1af6764c52b5ca458b478d..def3e28edc206e0ba41111e26332db46 private String descriptionId; @Nullable diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -index e6c586eb85c6c477a3c130e1e1a37b41f17c30c8..6e35709f2a7c32050908e7e5af5529c9f342b787 100644 +index 6a4e5bfa70b31311a9076eb314c0a0146d5b08a5..17cda4c8b61efd99c1a43f921ed604827bb064f3 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java @@ -34,10 +34,12 @@ import org.bukkit.inventory.InventoryHolder; @@ -1544,10 +1544,10 @@ index e6c586eb85c6c477a3c130e1e1a37b41f17c30c8..6e35709f2a7c32050908e7e5af5529c9 private static final CraftPersistentDataTypeRegistry DATA_TYPE_REGISTRY = new CraftPersistentDataTypeRegistry(); public CraftPersistentDataContainer persistentDataContainer; diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index c664021dbfffcf0db3247041270ce9a1ee6940de..332351b78fa22cd354b916c4a29bea5b4b223e40 100644 +index 25380a44e5cc94f3924cfee6a03c3091fea04ae2..418ba374886d93f69afd614e4be05f6561e1f897 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -597,6 +597,7 @@ public class LevelChunk extends ChunkAccess { +@@ -602,6 +602,7 @@ public class LevelChunk extends ChunkAccess { server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkLoadEvent(bukkitChunk, this.needsDecoration)); if (this.needsDecoration) { @@ -1555,7 +1555,7 @@ index c664021dbfffcf0db3247041270ce9a1ee6940de..332351b78fa22cd354b916c4a29bea5b this.needsDecoration = false; java.util.Random random = new java.util.Random(); random.setSeed(this.level.getSeed()); -@@ -616,6 +617,7 @@ public class LevelChunk extends ChunkAccess { +@@ -621,6 +622,7 @@ public class LevelChunk extends ChunkAccess { } } server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkPopulateEvent(bukkitChunk)); @@ -1590,7 +1590,7 @@ index 46a090123e205394791cdbde2af84c58ce55f7e1..47f5f3d58bb3bf85cf35f9baae77df7f }; } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 7839e34cbd42e1b77c533b0dede42e0a19daf2a4..f2355612b497079f1de84e953c36720794da51d8 100644 +index ee63b8134b8b3187a65d2b99962cfacbee18ff9f..29bb34e9207bd6c49cfbe58d4b598dcd35b7a65c 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -376,7 +376,7 @@ public final class CraftServer implements Server { @@ -1985,7 +1985,7 @@ index f97eccb6a17c7876e1e002d798eb67bbe80571a0..76effc345d362047e64d064eb64a5222 + } // Paper } diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index fa2e43020fafc283a9c063d10a82280158c7f93d..9576cabff99d154ef77595b074082adf9212698d 100644 +index 6aa5b1e05893bcf61a91cb4de578d8996ca0a868..9383bf47404fca8d008d5c401ed37ddaa7bef4f7 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java @@ -197,6 +197,12 @@ public final class CraftMagicNumbers implements UnsafeValues { diff --git a/patches/server/0026-Support-components-in-ItemMeta.patch b/patches/server/0026-Support-components-in-ItemMeta.patch index beae574f9a..680fd5d70f 100644 --- a/patches/server/0026-Support-components-in-ItemMeta.patch +++ b/patches/server/0026-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 86a5e4f7b2a0d50d0a58d88e10a277cfbd09bf9d..46e1fabf85cc0d92f79a7adf24e5724dc1dc08a9 100644 +index 568d6fab743039b20715d8181555f52baa05f0f3..7ae3cdb80335cbeb0ff695eb719a170651586722 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -@@ -969,11 +969,23 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -976,11 +976,23 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { return CraftChatMessage.fromComponent(this.displayName); } @@ -32,7 +32,7 @@ index 86a5e4f7b2a0d50d0a58d88e10a277cfbd09bf9d..46e1fabf85cc0d92f79a7adf24e5724d @Override public boolean hasDisplayName() { return this.displayName != null; -@@ -1147,6 +1159,14 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1154,6 +1166,14 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { return this.lore == null ? null : new ArrayList(Lists.transform(this.lore, CraftChatMessage::fromComponent)); } @@ -47,7 +47,7 @@ index 86a5e4f7b2a0d50d0a58d88e10a277cfbd09bf9d..46e1fabf85cc0d92f79a7adf24e5724d @Override public void setLore(List lore) { if (lore == null || lore.isEmpty()) { -@@ -1161,6 +1181,21 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1168,6 +1188,21 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { } } @@ -69,7 +69,7 @@ index 86a5e4f7b2a0d50d0a58d88e10a277cfbd09bf9d..46e1fabf85cc0d92f79a7adf24e5724d @Override public boolean hasCustomModelData() { return this.customModelData != null; -@@ -1873,6 +1908,11 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1880,6 +1915,11 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { } for (Object object : addFrom) { diff --git a/patches/server/0033-Expose-server-build-information.patch b/patches/server/0033-Expose-server-build-information.patch index 2a0bceab6c..978c66d922 100644 --- a/patches/server/0033-Expose-server-build-information.patch +++ b/patches/server/0033-Expose-server-build-information.patch @@ -659,7 +659,7 @@ index acab477a4a026799319054c2eb4d0f2c99ab3d83..2a36e562967ec6174efe456e489c50ca public List getOnlinePlayers() { return this.playerView; diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 1c8049bbc08be77673d375205bd42a346ff951b8..1aa75b11ee3297e379baa111cf53e1cfcd8b016e 100644 +index 8da38624b5867ce88bdb3036e1ed6d99fc626f31..2097be352dc585b805dc73194cec095627f311bc 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -15,6 +15,7 @@ import joptsimple.OptionSet; @@ -670,7 +670,7 @@ index 1c8049bbc08be77673d375205bd42a346ff951b8..1aa75b11ee3297e379baa111cf53e1cf public static boolean useJline = true; public static boolean useConsole = true; -@@ -252,15 +253,17 @@ public class Main { +@@ -241,15 +242,17 @@ public class Main { deadline.add(Calendar.DAY_OF_YEAR, -14); if (buildDate.before(deadline.getTime())) { System.err.println("*** Error, this build is outdated ***"); diff --git a/patches/server/0037-Prevent-block-entity-and-entity-crashes.patch b/patches/server/0037-Prevent-block-entity-and-entity-crashes.patch index 8c0b53d52b..59cb59cc0f 100644 --- a/patches/server/0037-Prevent-block-entity-and-entity-crashes.patch +++ b/patches/server/0037-Prevent-block-entity-and-entity-crashes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Prevent block entity and entity crashes diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 1702cd6aa8b4fc29b8f2539604f6e203bf95d020..e19ee11905417918c7ec142fd2016ab3f000e4e2 100644 +index 79d5423be919dfe4db75ad7dd0ce403ad0214462..e8b8475dd6fd7b89651f744da2cb9696c73ddc3e 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -731,11 +731,11 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -26,12 +26,12 @@ index 1702cd6aa8b4fc29b8f2539604f6e203bf95d020..e19ee11905417918c7ec142fd2016ab3 } diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -index 6e35709f2a7c32050908e7e5af5529c9f342b787..d20f71a2098b327423cbdbbc096aa9e358cb809d 100644 +index 17cda4c8b61efd99c1a43f921ed604827bb064f3..d6ad310d3b472c40c128cfb459171d9f48e50915 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -@@ -263,7 +263,12 @@ public abstract class BlockEntity { - return s + " // " + this.getClass().getCanonicalName(); - }); +@@ -272,7 +272,12 @@ public abstract class BlockEntity { + public void fillCrashReportCategory(CrashReportCategory crashReportSection) { + crashReportSection.setDetail("Name", this::getNameForReporting); if (this.level != null) { - CrashReportCategory.populateBlockDetails(crashReportSection, this.level, this.worldPosition, this.getBlockState()); + // Paper start - Prevent block entity and entity crashes @@ -44,10 +44,10 @@ index 6e35709f2a7c32050908e7e5af5529c9f342b787..d20f71a2098b327423cbdbbc096aa9e3 } } diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 332351b78fa22cd354b916c4a29bea5b4b223e40..7bfe757b605f4e5a16b28214ac3b497e738b45b5 100644 +index 418ba374886d93f69afd614e4be05f6561e1f897..6889991885cc2075e0936b2c480befeef30d308c 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -948,11 +948,11 @@ public class LevelChunk extends ChunkAccess { +@@ -953,11 +953,11 @@ public class LevelChunk extends ChunkAccess { gameprofilerfiller.pop(); } catch (Throwable throwable) { diff --git a/patches/server/0041-Configurable-end-credits.patch b/patches/server/0041-Configurable-end-credits.patch index e3957bbc6c..65f5ee3bd5 100644 --- a/patches/server/0041-Configurable-end-credits.patch +++ b/patches/server/0041-Configurable-end-credits.patch @@ -4,15 +4,15 @@ Date: Wed, 16 Mar 2016 02:21:39 -0500 Subject: [PATCH] Configurable end credits -diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index ee5188f3aa2ff71306f5af8046e8ddf919c8601b..decd0dd48d8b77126b184ee21ceaf6c387085946 100644 ---- a/src/main/java/net/minecraft/server/level/ServerPlayer.java -+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1162,6 +1162,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { - this.unRide(); - this.serverLevel().removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); - if (!this.wonGame) { -+ if (this.level().paperConfig().misc.disableEndCredits) this.seenCredits = true; // Paper - Option to disable end credits - this.wonGame = true; - this.connection.send(new ClientboundGameEventPacket(ClientboundGameEventPacket.WIN_GAME, 0.0F)); - this.seenCredits = true; +diff --git a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java +index e2d6693da4abe6204c0ecb5e924a3903fa80ab7d..a9c7a74b38a57c118c1ad67a77ba6f2e5c05d91e 100644 +--- a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java ++++ b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java +@@ -71,6 +71,7 @@ public class EndPortalBlock extends BaseEntityBlock implements Portal { + if (!world.isClientSide && world.dimension() == Level.END && entity instanceof ServerPlayer) { + ServerPlayer entityplayer = (ServerPlayer) entity; + ++ if (world.paperConfig().misc.disableEndCredits) entityplayer.seenCredits = true; // Paper - Option to disable end credits + if (!entityplayer.seenCredits) { + entityplayer.showEndCredits(); + return; diff --git a/patches/server/0048-Use-null-Locale-by-default.patch b/patches/server/0048-Use-null-Locale-by-default.patch index 2daeb821c5..3fcadee5b5 100644 --- a/patches/server/0048-Use-null-Locale-by-default.patch +++ b/patches/server/0048-Use-null-Locale-by-default.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Use null Locale by default diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index decd0dd48d8b77126b184ee21ceaf6c387085946..e61460a06708429738e0ed5f903a4226158aa334 100644 +index ee5188f3aa2ff71306f5af8046e8ddf919c8601b..13a069483db22f25008bf4081d4aa2b36a75bc68 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -237,7 +237,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { @@ -26,7 +26,7 @@ index decd0dd48d8b77126b184ee21ceaf6c387085946..e61460a06708429738e0ed5f903a4226 this.lastSectionPos = SectionPos.of(0, 0, 0); this.chunkTrackingView = ChunkTrackingView.EMPTY; this.respawnDimension = Level.OVERWORLD; -@@ -2052,7 +2052,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { +@@ -2051,7 +2051,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { PlayerChangedMainHandEvent event = new PlayerChangedMainHandEvent(this.getBukkitEntity(), this.getMainArm() == HumanoidArm.LEFT ? MainHand.LEFT : MainHand.RIGHT); this.server.server.getPluginManager().callEvent(event); } diff --git a/patches/server/0062-Add-exception-reporting-event.patch b/patches/server/0062-Add-exception-reporting-event.patch index 3efe1b1f98..36051c1835 100644 --- a/patches/server/0062-Add-exception-reporting-event.patch +++ b/patches/server/0062-Add-exception-reporting-event.patch @@ -123,10 +123,10 @@ index 6a80479554f0c860a8dd6baa1a6506858fca83e3..6324689f52363f19501143c1649f0885 } diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 7bfe757b605f4e5a16b28214ac3b497e738b45b5..fb953b2172c322e8abf5aa50060adbc00fe92832 100644 +index 6889991885cc2075e0936b2c480befeef30d308c..4495c5051b0c7a04d433c39d91f74cb7924d3ff2 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -466,8 +466,13 @@ public class LevelChunk extends ChunkAccess { +@@ -471,8 +471,13 @@ public class LevelChunk extends ChunkAccess { BlockState iblockdata = this.getBlockState(blockposition); if (!iblockdata.hasBlockEntity()) { @@ -142,7 +142,7 @@ index 7bfe757b605f4e5a16b28214ac3b497e738b45b5..fb953b2172c322e8abf5aa50060adbc0 } else { BlockState iblockdata1 = blockEntity.getBlockState(); -@@ -951,6 +956,7 @@ public class LevelChunk extends ChunkAccess { +@@ -956,6 +961,7 @@ public class LevelChunk extends ChunkAccess { // Paper start - Prevent block entity and entity crashes final String msg = String.format("BlockEntity threw exception at %s:%s,%s,%s", LevelChunk.this.getLevel().getWorld().getName(), this.getPos().getX(), this.getPos().getY(), this.getPos().getZ()); net.minecraft.server.MinecraftServer.LOGGER.error(msg, throwable); diff --git a/patches/server/0070-Handle-Item-Meta-Inconsistencies.patch b/patches/server/0070-Handle-Item-Meta-Inconsistencies.patch index 17e1d51ed5..00c91ac5e5 100644 --- a/patches/server/0070-Handle-Item-Meta-Inconsistencies.patch +++ b/patches/server/0070-Handle-Item-Meta-Inconsistencies.patch @@ -149,7 +149,7 @@ index 17fa2d3db112762bcb8b941b69b8ddcc53f47224..6c76aeddb34239a5acc204a17b2aa2d8 static Map getEnchantments(net.minecraft.world.item.ItemStack item) { diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -index 46e1fabf85cc0d92f79a7adf24e5724dc1dc08a9..69be26f8f47854f39cfed0559d944ef4f983c0f3 100644 +index 7ae3cdb80335cbeb0ff695eb719a170651586722..97c40582bca095532fff9a81515f38ea4ac527e0 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java @@ -6,6 +6,7 @@ import com.google.common.collect.ImmutableList; @@ -197,7 +197,7 @@ index 46e1fabf85cc0d92f79a7adf24e5724dc1dc08a9..69be26f8f47854f39cfed0559d944ef4 tag.entrySet().forEach((entry) -> { Holder id = entry.getKey(); -@@ -729,13 +731,13 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -736,13 +738,13 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { return modifiers; } @@ -213,7 +213,7 @@ index 46e1fabf85cc0d92f79a7adf24e5724dc1dc08a9..69be26f8f47854f39cfed0559d944ef4 for (Map.Entry entry : ench.entrySet()) { Enchantment enchantment = CraftEnchantment.stringToBukkit(entry.getKey().toString()); if ((enchantment != null) && (entry.getValue() instanceof Integer)) { -@@ -1072,14 +1074,14 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1079,14 +1081,14 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { @Override public Map getEnchants() { @@ -230,7 +230,7 @@ index 46e1fabf85cc0d92f79a7adf24e5724dc1dc08a9..69be26f8f47854f39cfed0559d944ef4 } if (ignoreRestrictions || level >= ench.getStartLevel() && level <= ench.getMaxLevel()) { -@@ -1679,7 +1681,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1686,7 +1688,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { clone.customModelData = this.customModelData; clone.blockData = this.blockData; if (this.enchantments != null) { @@ -239,7 +239,7 @@ index 46e1fabf85cc0d92f79a7adf24e5724dc1dc08a9..69be26f8f47854f39cfed0559d944ef4 } if (this.hasAttributeModifiers()) { clone.attributeModifiers = LinkedHashMultimap.create(this.attributeModifiers); -@@ -2028,4 +2030,22 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -2036,4 +2038,22 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { return (result != null) ? result : Optional.empty(); } diff --git a/patches/server/0083-Add-PlayerUseUnknownEntityEvent.patch b/patches/server/0083-Add-PlayerUseUnknownEntityEvent.patch index fd354e6963..3ac4e0b315 100644 --- a/patches/server/0083-Add-PlayerUseUnknownEntityEvent.patch +++ b/patches/server/0083-Add-PlayerUseUnknownEntityEvent.patch @@ -59,10 +59,10 @@ index 64db7e017b41bffcaac202ee4ecfd7df46d69331..14a821bfc6b20475889d3138b8da9e6b @Override diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 63e20db8ad84b332a4962d5cea83f1064b7c1a3d..bb296f649afd143adad47595479532cfdd778b71 100644 +index 78f4bb474c85e32448a385e108707d92082bfe02..b68068c783f782258f86e5ecf54664916f069e38 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1901,4 +1901,13 @@ public class CraftEventFactory { +@@ -1915,4 +1915,13 @@ public class CraftEventFactory { Bukkit.getPluginManager().callEvent(new EntityRemoveEvent(entity.getBukkitEntity(), cause)); } diff --git a/patches/server/0108-Add-EntityZapEvent.patch b/patches/server/0108-Add-EntityZapEvent.patch index 9349d4820b..3f2644e38f 100644 --- a/patches/server/0108-Add-EntityZapEvent.patch +++ b/patches/server/0108-Add-EntityZapEvent.patch @@ -28,10 +28,10 @@ index 63c10be6eacd7108b8b4795d76bf624e0614440a..243eb1e54293c763a06febff551c0513 entitywitch.finalizeSpawn(world, world.getCurrentDifficultyAt(entitywitch.blockPosition()), MobSpawnType.CONVERSION, (SpawnGroupData) null); entitywitch.setNoAi(this.isNoAi()); diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index bb296f649afd143adad47595479532cfdd778b71..5cf1b15160647b6e8e42a167502643882a231c55 100644 +index b68068c783f782258f86e5ecf54664916f069e38..44c416f812867f19a26aeefc5710a7aef9dfdf64 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1211,6 +1211,14 @@ public class CraftEventFactory { +@@ -1215,6 +1215,14 @@ public class CraftEventFactory { return !event.isCancelled(); } diff --git a/patches/server/0112-Add-source-to-PlayerExpChangeEvent.patch b/patches/server/0112-Add-source-to-PlayerExpChangeEvent.patch index d472f677f5..46f6c063c9 100644 --- a/patches/server/0112-Add-source-to-PlayerExpChangeEvent.patch +++ b/patches/server/0112-Add-source-to-PlayerExpChangeEvent.patch @@ -18,10 +18,10 @@ index 56402312e44d12c859e2c4b39902d31b7cfd1573..25a45e680f9fdea90f43d59de87a3a50 --this.count; diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 5cf1b15160647b6e8e42a167502643882a231c55..6ffc5b9eb2fa084c7cf397d944e6fc1d8d770dbb 100644 +index 44c416f812867f19a26aeefc5710a7aef9dfdf64..a83b7f350bf20f944de92df76e112aaa49dc608d 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1164,6 +1164,17 @@ public class CraftEventFactory { +@@ -1168,6 +1168,17 @@ public class CraftEventFactory { return event; } diff --git a/patches/server/0113-Add-ProjectileCollideEvent.patch b/patches/server/0113-Add-ProjectileCollideEvent.patch index 867e422520..4a6b57dae0 100644 --- a/patches/server/0113-Add-ProjectileCollideEvent.patch +++ b/patches/server/0113-Add-ProjectileCollideEvent.patch @@ -6,13 +6,13 @@ Subject: [PATCH] Add ProjectileCollideEvent Deprecated now and replaced with ProjectileHitEvent diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 6ffc5b9eb2fa084c7cf397d944e6fc1d8d770dbb..50a4e657508e21717a61900660d85203d9373e19 100644 +index a83b7f350bf20f944de92df76e112aaa49dc608d..b5b237c56575e8ceb3e6471deec1e7712891a8e0 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1308,6 +1308,17 @@ public class CraftEventFactory { - return CraftItemStack.asNMSCopy(bitem); +@@ -1321,6 +1321,16 @@ public class CraftEventFactory { + Bukkit.getPluginManager().callEvent(crafterCraftEvent); + return crafterCraftEvent; } - + // Paper start + @Deprecated + public static com.destroystokyo.paper.event.entity.ProjectileCollideEvent callProjectileCollideEvent(Entity entity, EntityHitResult position) { @@ -23,11 +23,10 @@ index 6ffc5b9eb2fa084c7cf397d944e6fc1d8d770dbb..50a4e657508e21717a61900660d85203 + return event; + } + // Paper end -+ + public static ProjectileLaunchEvent callProjectileLaunchEvent(Entity entity) { Projectile bukkitEntity = (Projectile) entity.getBukkitEntity(); - ProjectileLaunchEvent event = new ProjectileLaunchEvent(bukkitEntity); -@@ -1332,8 +1343,15 @@ public class CraftEventFactory { +@@ -1346,8 +1356,15 @@ public class CraftEventFactory { if (position.getType() == HitResult.Type.ENTITY) { hitEntity = ((EntityHitResult) position).getEntity().getBukkitEntity(); } diff --git a/patches/server/0120-Properly-fix-item-duplication-bug.patch b/patches/server/0120-Properly-fix-item-duplication-bug.patch index 2a12aa436f..95bf2bd4b5 100644 --- a/patches/server/0120-Properly-fix-item-duplication-bug.patch +++ b/patches/server/0120-Properly-fix-item-duplication-bug.patch @@ -6,10 +6,10 @@ 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/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index ed920ed90569b7b8886a09a1c3772fd7147d44f9..9b2861b7894a634ce60a2675ee25c949d6e63ea0 100644 +index 984dc7f7f7315b8a8cdb9744ef8454a330888ba7..f067b10e13f01e751fc4ebf088740c7d40afcb99 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2628,7 +2628,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { +@@ -2627,7 +2627,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { @Override public boolean isImmobile() { diff --git a/patches/server/0122-PlayerTeleportEndGatewayEvent.patch b/patches/server/0122-PlayerTeleportEndGatewayEvent.patch index d7fec65674..69691d8630 100644 --- a/patches/server/0122-PlayerTeleportEndGatewayEvent.patch +++ b/patches/server/0122-PlayerTeleportEndGatewayEvent.patch @@ -7,10 +7,10 @@ Allows you to access the Gateway being used in a teleport event Fix the offset used for player teleportation diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 9b2861b7894a634ce60a2675ee25c949d6e63ea0..a049a54ee70839706787f8de661ca6e6b1f54071 100644 +index f067b10e13f01e751fc4ebf088740c7d40afcb99..e13692373d0efba9402c35ae5cce615dce0a5e1e 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1193,11 +1193,22 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { +@@ -1192,11 +1192,22 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { ResourceKey resourcekey = worldserver1.getTypeKey(); if (worldserver != null && worldserver.dimension() == worldserver1.dimension()) { // CraftBukkit diff --git a/patches/server/0141-Entity-fromMobSpawner.patch b/patches/server/0141-Entity-fromMobSpawner.patch index 0f1ce9369a..4afd9e1ed2 100644 --- a/patches/server/0141-Entity-fromMobSpawner.patch +++ b/patches/server/0141-Entity-fromMobSpawner.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Entity#fromMobSpawner() diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 46a21ed2408a42aafd16647e17e556730e799cbd..946f289e0e681524c6fde696921965dbdedda372 100644 +index 85d8c4865b65792b99f812b579d7c23823d76e52..0e800e3aeeec84f5f7ed0a391c9b66ae5689bd40 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -402,6 +402,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -48,6 +48,18 @@ index aa54237205989f619ac6a3faa2e4285427b9e31d..43d399e1a0ba2fb0541f851a28032fa6 // CraftBukkit start if (org.bukkit.craftbukkit.event.CraftEventFactory.callSpawnerSpawnEvent(entity, pos).isCancelled()) { continue; +diff --git a/src/main/java/net/minecraft/world/level/block/entity/trialspawner/TrialSpawner.java b/src/main/java/net/minecraft/world/level/block/entity/trialspawner/TrialSpawner.java +index 571756dacfa16f6755b67457e17969c35104f971..52d71a03cd5b2af56704f265ce5b5f14d3236ebb 100644 +--- a/src/main/java/net/minecraft/world/level/block/entity/trialspawner/TrialSpawner.java ++++ b/src/main/java/net/minecraft/world/level/block/entity/trialspawner/TrialSpawner.java +@@ -225,6 +225,7 @@ public final class TrialSpawner { + optional1.ifPresent(entityinsentient::equip); + } + ++ entity.spawnedViaMobSpawner = true; // Paper + // CraftBukkit start + if (org.bukkit.craftbukkit.event.CraftEventFactory.callTrialSpawnerSpawnEvent(entity, pos).isCancelled()) { + return Optional.empty(); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java index df6da730134da754d0ff23bd1b57c82486b9ab73..69b5946625a53a1351ffc4bdf61c6874949bbeae 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java diff --git a/patches/server/0146-Fix-this-stupid-bullshit.patch b/patches/server/0146-Fix-this-stupid-bullshit.patch index 2e5a252a99..35f07c8aba 100644 --- a/patches/server/0146-Fix-this-stupid-bullshit.patch +++ b/patches/server/0146-Fix-this-stupid-bullshit.patch @@ -31,10 +31,10 @@ index 8f1992188f7fd9e735569e099b36a7eafed47aae..061c89b985dafc79c808dd5f0e296b9f Bootstrap.isBootstrapped = true; Instant instant = Instant.now(); diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index fcc7cdd0adfcaa135d08ea36746dca980590d6eb..4c8d98598b5cdcdbe4a778f1ec142e3a7ab33196 100644 +index 837db57c19df3d5c986a52edf3d9d8105cc87cde..446403f73fb1b5687d587889e6f32dce464d05a6 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -260,10 +260,12 @@ public class Main { +@@ -249,10 +249,12 @@ public class Main { Calendar deadline = Calendar.getInstance(); deadline.add(Calendar.DAY_OF_YEAR, -14); if (buildDate.before(deadline.getTime())) { diff --git a/patches/server/0160-API-to-get-a-BlockState-without-a-snapshot.patch b/patches/server/0160-API-to-get-a-BlockState-without-a-snapshot.patch index c7fd071747..b2a5f27dd2 100644 --- a/patches/server/0160-API-to-get-a-BlockState-without-a-snapshot.patch +++ b/patches/server/0160-API-to-get-a-BlockState-without-a-snapshot.patch @@ -13,18 +13,18 @@ also Avoid NPE during CraftBlockEntityState load if could not get TE If Tile Entity was null, correct Sign to return empty lines instead of null diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -index d20f71a2098b327423cbdbbc096aa9e358cb809d..7147484eefad44ba67db03b6ef2090a596e278de 100644 +index d6ad310d3b472c40c128cfb459171d9f48e50915..48bee70ba4188a4a55beb6584224b0f23784dd88 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -@@ -58,6 +58,7 @@ public abstract class BlockEntity { - this.type = type; +@@ -59,6 +59,7 @@ public abstract class BlockEntity { this.worldPosition = pos.immutable(); + this.validateBlockState(state); this.blockState = state; + this.persistentDataContainer = new CraftPersistentDataContainer(DATA_TYPE_REGISTRY); // Paper - always init } - public static BlockPos getPosFromTag(CompoundTag nbt) { -@@ -79,7 +80,7 @@ public abstract class BlockEntity { + private void validateBlockState(BlockState state) { +@@ -92,7 +93,7 @@ public abstract class BlockEntity { // CraftBukkit start - read container protected void loadAdditional(CompoundTag nbt, HolderLookup.Provider registryLookup) { @@ -33,7 +33,7 @@ index d20f71a2098b327423cbdbbc096aa9e358cb809d..7147484eefad44ba67db03b6ef2090a5 net.minecraft.nbt.Tag persistentDataTag = nbt.get("PublicBukkitValues"); if (persistentDataTag instanceof CompoundTag) { -@@ -363,8 +364,15 @@ public abstract class BlockEntity { +@@ -379,8 +380,15 @@ public abstract class BlockEntity { // CraftBukkit start - add method public InventoryHolder getOwner() { diff --git a/patches/server/0169-Add-ArmorStand-Item-Meta.patch b/patches/server/0169-Add-ArmorStand-Item-Meta.patch index b6aa22ecaf..554e001492 100644 --- a/patches/server/0169-Add-ArmorStand-Item-Meta.patch +++ b/patches/server/0169-Add-ArmorStand-Item-Meta.patch @@ -13,7 +13,7 @@ starting point for future additions in this area. Fixes GH-559 diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemMetas.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemMetas.java -index 85aab880fdb2f23d09096f8f2b1ede4f068fa023..4ae9930c2d74e5b1e3ad0c2ecf6556dc59cbf23c 100644 +index eef3517833ff5c0cf41b89973ebc972b8ed31e0f..c9fbc01be0b0e7fd1cafb091d06496f4ba1e7c2c 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemMetas.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemMetas.java @@ -1,5 +1,6 @@ @@ -22,8 +22,8 @@ index 85aab880fdb2f23d09096f8f2b1ede4f068fa023..4ae9930c2d74e5b1e3ad0c2ecf6556dc +import com.destroystokyo.paper.inventory.meta.ArmorStandMeta; import java.util.function.BiFunction; import java.util.function.Function; - import net.minecraft.world.item.ItemStack; -@@ -95,7 +96,7 @@ public final class CraftItemMetas { + import net.minecraft.world.item.BannerItem; +@@ -102,7 +103,7 @@ public final class CraftItemMetas { item -> new CraftMetaSpawnEgg(item.getComponentsPatch()), (type, meta) -> meta instanceof CraftMetaSpawnEgg spawnEgg ? spawnEgg : new CraftMetaSpawnEgg(meta)); @@ -272,7 +272,7 @@ index c4f12f96e39cb6189799a796b4cb2cb4f0b92392..59bdac414e8205ed608f79ef0d1502ac + // Paper end } diff --git a/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java b/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java -index 99a555ca72cd95d760d68072242203deeddd0ce1..a1d8da4e0de3f84194f28d7d18fa795d53714590 100644 +index b46032190dbb0d47ee3c1a11959f6278ddf5eb5a..0715f43f3f8235d28a12b9d49d78c765a946c53f 100644 --- a/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java +++ b/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java @@ -364,6 +364,7 @@ public class ItemMetaTest extends AbstractTestingBase { diff --git a/patches/server/0176-Player.setPlayerProfile-API.patch b/patches/server/0176-Player.setPlayerProfile-API.patch index d847c9d191..21f5229b12 100644 --- a/patches/server/0176-Player.setPlayerProfile-API.patch +++ b/patches/server/0176-Player.setPlayerProfile-API.patch @@ -220,10 +220,10 @@ index 4602c3d0be94f0146a2b205268f70aaf85410f20..422c25577a0d95b31b5528fad8fc9b3a public void onEntityRemove(Entity entity) { this.invertedVisibilityEntities.remove(entity.getUUID()); diff --git a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java -index 8a1570ceb4755a1872911751943c84b8f06eb4c2..38339b8b1b3b70bbbf0259d7095b02ee8c22b609 100644 +index 65f64de05a88844e62b5a0dd1e2f53edfb4e0c1f..e1b86308f737b957b6d00bc902b91856694b7cbf 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java +++ b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java -@@ -448,6 +448,13 @@ public class Commodore { +@@ -449,6 +449,13 @@ public class Commodore { } // Paper end - Rewrite plugins diff --git a/patches/server/0181-Flag-to-disable-the-channel-limit.patch b/patches/server/0181-Flag-to-disable-the-channel-limit.patch index fa388c8eb7..0745b45aae 100644 --- a/patches/server/0181-Flag-to-disable-the-channel-limit.patch +++ b/patches/server/0181-Flag-to-disable-the-channel-limit.patch @@ -9,7 +9,7 @@ e.g. servers which allow and support the usage of mod packs. provide an optional flag to disable this check, at your own risk. diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 19f644442eb7ae352d655d5e62f47f261b7b1b0a..db79201906e231b13c6f237193c3e8597bce9106 100644 +index 422c25577a0d95b31b5528fad8fc9b3ae97fa7f0..4e5dba1da323f12d77a36635c9227b1239856254 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -209,6 +209,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -25,7 +25,7 @@ index 19f644442eb7ae352d655d5e62f47f261b7b1b0a..db79201906e231b13c6f237193c3e859 public void addChannel(String channel) { - Preconditions.checkState(this.channels.size() < 128, "Cannot register channel '%s'. Too many channels registered!", channel); -+ Preconditions.checkState(DISABLE_CHANNEL_LIMIT || this.channels.size() < 128, "Cannot register channel '%s'. Too many channels registered!", channel); // Paper - flag to disable channel limit ++ Preconditions.checkState(DISABLE_CHANNEL_LIMIT || this.channels.size() < 128, "Cannot register channel. Too many channels registered!"); // Paper - flag to disable channel limit channel = StandardMessenger.validateAndCorrectChannel(channel); if (this.channels.add(channel)) { this.server.getPluginManager().callEvent(new PlayerRegisterChannelEvent(this, channel)); diff --git a/patches/server/0192-WitchReadyPotionEvent.patch b/patches/server/0192-WitchReadyPotionEvent.patch index 8bbf7b47e0..56d606d8f3 100644 --- a/patches/server/0192-WitchReadyPotionEvent.patch +++ b/patches/server/0192-WitchReadyPotionEvent.patch @@ -22,10 +22,10 @@ index a14e00d55930628333cc63b18727ea56dbdc4ee3..f6d01d21745391595d61b191832be4c2 this.setUsingItem(true); if (!this.isSilent()) { diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 50a4e657508e21717a61900660d85203d9373e19..1c53b872b30bcd8535b8686015935025a4c9837f 100644 +index b5b237c56575e8ceb3e6471deec1e7712891a8e0..cfdabb93c2d30845af9108552ed9bee9929250ce 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1947,4 +1947,14 @@ public class CraftEventFactory { +@@ -1960,4 +1960,14 @@ public class CraftEventFactory { ).callEvent(); } // Paper end - PlayerUseUnknownEntityEvent diff --git a/patches/server/0202-Add-entity-knockback-events.patch b/patches/server/0202-Add-entity-knockback-events.patch index 2fa28dc910..f6ab3bd4fe 100644 --- a/patches/server/0202-Add-entity-knockback-events.patch +++ b/patches/server/0202-Add-entity-knockback-events.patch @@ -38,7 +38,7 @@ index fd49b9d739b1bbab8cf110659cb83bad03b56102..a2b727dea997ed0d7b1ef677a94b5957 } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index cccc60602360f25f0aeddbd16dad2bb63a1728a8..bf1b8ee85551ff1989369268edf8012758b86fd7 100644 +index cccc60602360f25f0aeddbd16dad2bb63a1728a8..ada79af49d1cafe25ca6c1fb456e1c4c3a42cb73 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1528,7 +1528,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -80,7 +80,7 @@ index cccc60602360f25f0aeddbd16dad2bb63a1728a8..bf1b8ee85551ff1989369268edf80127 + // Paper start - knockback events + Vec3 finalVelocity = new Vec3(vec3d.x / 2.0D - vec3d1.x, this.onGround() ? Math.min(0.4D, vec3d.y / 2.0D + d0) : vec3d.y, vec3d.z / 2.0D - vec3d1.z); + Vec3 diff = finalVelocity.subtract(vec3d); -+ io.papermc.paper.event.entity.EntityKnockbackEvent event = CraftEventFactory.callEntityKnockbackEvent((org.bukkit.craftbukkit.entity.CraftLivingEntity) this.getBukkitEntity(), attacker, cause, d0, diff); ++ io.papermc.paper.event.entity.EntityKnockbackEvent event = CraftEventFactory.callEntityKnockbackEvent((org.bukkit.craftbukkit.entity.CraftLivingEntity) this.getBukkitEntity(), attacker, attacker, cause, d0, diff); + // Paper end - knockback events if (event.isCancelled()) { return; @@ -251,7 +251,7 @@ index de2bc78415ab4efb651030be6560d9c9778a1d17..1e00df3fa3c3b61daa3d59ee1173269a public abstract void explode(Vec3 pos); diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index 6476c644d3da824c5ee4190cb45cde678ff1188f..a5f4ecb96c508b94a92a43c864c075f6c61e296e 100644 +index 6476c644d3da824c5ee4190cb45cde678ff1188f..b216140a8be65e210250358af8daf49344850f20 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java @@ -297,13 +297,10 @@ public class Explosion { @@ -266,49 +266,49 @@ index 6476c644d3da824c5ee4190cb45cde678ff1188f..a5f4ecb96c508b94a92a43c864c075f6 - // want the vector to be the relative velocity will the event provides the absolute velocity - vec3d1 = (event.isCancelled()) ? Vec3.ZERO : new Vec3(event.getFinalKnockback().getX(), event.getFinalKnockback().getY(), event.getFinalKnockback().getZ()).subtract(entity.getDeltaMovement()); + // Paper start - knockback events -+ io.papermc.paper.event.entity.EntityKnockbackEvent event = CraftEventFactory.callEntityKnockbackEvent((org.bukkit.craftbukkit.entity.CraftLivingEntity) entity.getBukkitEntity(), this.damageSource.getEntity() != null ? this.damageSource.getEntity() : this.source, io.papermc.paper.event.entity.EntityKnockbackEvent.Cause.EXPLOSION, d13, vec3d1); ++ io.papermc.paper.event.entity.EntityKnockbackEvent event = CraftEventFactory.callEntityKnockbackEvent((org.bukkit.craftbukkit.entity.CraftLivingEntity) entity.getBukkitEntity(), this.source, this.damageSource.getEntity() != null ? this.damageSource.getEntity() : this.source, io.papermc.paper.event.entity.EntityKnockbackEvent.Cause.EXPLOSION, d13, vec3d1); + vec3d1 = event.isCancelled() ? Vec3.ZERO : org.bukkit.craftbukkit.util.CraftVector.toNMS(event.getKnockback()); + // Paper end - knockback events } // CraftBukkit end entity.setDeltaMovement(entity.getDeltaMovement().add(vec3d1)); diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 1c53b872b30bcd8535b8686015935025a4c9837f..0888692736ef62e741aa41d3a72b9b8c3075dfcd 100644 +index cfdabb93c2d30845af9108552ed9bee9929250ce..e1b7bd5c23ba79b84ad257b7fb45e251da3978e5 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1909,19 +1909,33 @@ public class CraftEventFactory { +@@ -1922,19 +1922,33 @@ public class CraftEventFactory { return event; } - public static EntityKnockbackEvent callEntityKnockbackEvent(CraftLivingEntity entity, Entity attacker, EntityKnockbackEvent.KnockbackCause cause, double force, Vec3 raw, double x, double y, double z) { - Vector bukkitRaw = new Vector(-raw.x, raw.y, -raw.z); // Due to how the knockback calculation works, we need to invert x and z. -- -- EntityKnockbackEvent event; + // Paper start - replace knockback events -+ public static io.papermc.paper.event.entity.EntityKnockbackEvent callEntityKnockbackEvent(CraftLivingEntity entity, Entity attacker, io.papermc.paper.event.entity.EntityKnockbackEvent.Cause cause, double force, Vec3 knockback) { ++ public static io.papermc.paper.event.entity.EntityKnockbackEvent callEntityKnockbackEvent(CraftLivingEntity entity, Entity pusher, Entity attacker, io.papermc.paper.event.entity.EntityKnockbackEvent.Cause cause, double force, Vec3 knockback) { + Vector apiKnockback = CraftVector.toBukkit(knockback); + + final Vector currentVelocity = entity.getVelocity(); + final Vector legacyFinalKnockback = currentVelocity.clone().add(apiKnockback); + final org.bukkit.event.entity.EntityKnockbackEvent.KnockbackCause legacyCause = org.bukkit.event.entity.EntityKnockbackEvent.KnockbackCause.valueOf(cause.name()); + EntityKnockbackEvent legacyEvent; - if (attacker != null) { -- event = new EntityKnockbackByEntityEvent(entity, attacker.getBukkitEntity(), cause, force, new Vector(-raw.x, raw.y, -raw.z), new Vector(x, y, z)); -+ legacyEvent = new EntityKnockbackByEntityEvent(entity, attacker.getBukkitEntity(), legacyCause, force, apiKnockback, legacyFinalKnockback); - } else { -- event = new EntityKnockbackEvent(entity, cause, force, new Vector(-raw.x, raw.y, -raw.z), new Vector(x, y, z)); ++ if (pusher != null) { ++ legacyEvent = new EntityKnockbackByEntityEvent(entity, pusher.getBukkitEntity(), legacyCause, force, apiKnockback, legacyFinalKnockback); ++ } else { + legacyEvent = new EntityKnockbackEvent(entity, legacyCause, force, apiKnockback, legacyFinalKnockback); - } ++ } + legacyEvent.callEvent(); -- Bukkit.getPluginManager().callEvent(event); +- EntityKnockbackEvent event; + final io.papermc.paper.event.entity.EntityKnockbackEvent event; + apiKnockback = legacyEvent.getFinalKnockback().subtract(currentVelocity); -+ if (attacker != null) { + if (attacker != null) { +- event = new EntityKnockbackByEntityEvent(entity, attacker.getBukkitEntity(), cause, force, new Vector(-raw.x, raw.y, -raw.z), new Vector(x, y, z)); + event = new com.destroystokyo.paper.event.entity.EntityKnockbackByEntityEvent(entity, attacker.getBukkitEntity(), cause, (float) force, apiKnockback); -+ } else { + } else { +- event = new EntityKnockbackEvent(entity, cause, force, new Vector(-raw.x, raw.y, -raw.z), new Vector(x, y, z)); + event = new io.papermc.paper.event.entity.EntityKnockbackEvent(entity, cause, apiKnockback); -+ } + } +- +- Bukkit.getPluginManager().callEvent(event); + event.setCancelled(legacyEvent.isCancelled()); + event.callEvent(); return event; diff --git a/patches/server/0208-InventoryCloseEvent-Reason-API.patch b/patches/server/0208-InventoryCloseEvent-Reason-API.patch index 02104aa8f1..04cfe0f0de 100644 --- a/patches/server/0208-InventoryCloseEvent-Reason-API.patch +++ b/patches/server/0208-InventoryCloseEvent-Reason-API.patch @@ -29,7 +29,7 @@ index 1fac100819e59d00f50e530d3a4157b56d966dba..4f777c9d8c3052f68bc0465c8a7386b8 } // Spigot End diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index db72318d822b876eb937f0f0f7f2b2139fb77df7..a3a1450949703851625bbb257e92b3be4d79a06a 100644 +index fb5130b6378554ccb23fb7992e408497ca093ff3..0dee94f1dd27a0d7e709367450c5ef7956e27217 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -705,7 +705,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { @@ -50,7 +50,7 @@ index db72318d822b876eb937f0f0f7f2b2139fb77df7..a3a1450949703851625bbb257e92b3be } net.kyori.adventure.text.Component deathMessage = event.deathMessage() != null ? event.deathMessage() : net.kyori.adventure.text.Component.empty(); // Paper - Adventure -@@ -1592,7 +1592,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { +@@ -1591,7 +1591,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { } // CraftBukkit end if (this.containerMenu != this.inventoryMenu) { @@ -59,7 +59,7 @@ index db72318d822b876eb937f0f0f7f2b2139fb77df7..a3a1450949703851625bbb257e92b3be } // this.nextContainerCounter(); // CraftBukkit - moved up -@@ -1622,7 +1622,13 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { +@@ -1621,7 +1621,13 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { @Override public void closeContainer() { @@ -96,7 +96,7 @@ index 72edfb965aca81c2d2442b794b42baa04ec713b3..a954d3b0ff0917d857002dba70c54b3f this.player.doCloseContainer(); } diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 9019e25f61d4fdb7c5d12ea7630b0bc23827ab6e..38cf3cf1cc7ebae4b6ca8a89dc026b5b4f0b4c2b 100644 +index 26cee48ea3650aaf87fd2ba9c70d4ca9a88e2d87..25dee4848c8b2cff74075c6d26d384e71f706627 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -510,7 +510,7 @@ public abstract class PlayerList { @@ -165,7 +165,7 @@ index 2e02fc22a889c9c8010ae8bff1b59a13219ae014..703bb1bb42b1668c04824489fd2f3490 @Override public boolean isBlocking() { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 326f36726c124385145c469566c2089439b5dd0f..0b4c5a2604f61a34b5666a9a83a2e644449997fd 100644 +index 4e5dba1da323f12d77a36635c9227b1239856254..12c61db6d4b1284765f9bed3ae26131a118b318e 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -1273,7 +1273,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -178,10 +178,10 @@ index 326f36726c124385145c469566c2089439b5dd0f..0b4c5a2604f61a34b5666a9a83a2e644 // Check if the fromWorld and toWorld are the same. diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 0888692736ef62e741aa41d3a72b9b8c3075dfcd..7fa68654c2e0c87dd779a1354fc103be4d7d7a46 100644 +index 9225746382bcecb0bab655a8232fecc09169225d..bf3995795295c3224db97e4d6809c0f5da6ce55c 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1277,7 +1277,7 @@ public class CraftEventFactory { +@@ -1281,7 +1281,7 @@ public class CraftEventFactory { public static AbstractContainerMenu callInventoryOpenEvent(ServerPlayer player, AbstractContainerMenu container, boolean cancelled) { if (player.containerMenu != player.inventoryMenu) { // fire INVENTORY_CLOSE if one already open @@ -190,7 +190,7 @@ index 0888692736ef62e741aa41d3a72b9b8c3075dfcd..7fa68654c2e0c87dd779a1354fc103be } CraftServer server = player.level().getCraftServer(); -@@ -1464,8 +1464,18 @@ public class CraftEventFactory { +@@ -1477,8 +1477,18 @@ public class CraftEventFactory { return event; } diff --git a/patches/server/0217-Vanished-players-don-t-have-rights.patch b/patches/server/0217-Vanished-players-don-t-have-rights.patch index b81b6e54e3..3ee31bb1d3 100644 --- a/patches/server/0217-Vanished-players-don-t-have-rights.patch +++ b/patches/server/0217-Vanished-players-don-t-have-rights.patch @@ -89,10 +89,10 @@ index a9227581ec78a56e96dc3a342006e4a649906326..5929b450a26e7c3cf63de3dc1d0e67cb public boolean isClientSide() { return this.isClientSide; diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 7fa68654c2e0c87dd779a1354fc103be4d7d7a46..a221ae7ec1a7db9c38037fa71ea35b5309b99973 100644 +index ad271871b207b425ef8d599fe74a67d065d66686..d1b473ef83df0ed4ae7cd9dd0525dac5e8a41223 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1314,6 +1314,14 @@ public class CraftEventFactory { +@@ -1327,6 +1327,14 @@ public class CraftEventFactory { Projectile projectile = (Projectile) entity.getBukkitEntity(); org.bukkit.entity.Entity collided = position.getEntity().getBukkitEntity(); com.destroystokyo.paper.event.entity.ProjectileCollideEvent event = new com.destroystokyo.paper.event.entity.ProjectileCollideEvent(projectile, collided); diff --git a/patches/server/0235-Optimize-CraftBlockData-Creation.patch b/patches/server/0235-Optimize-CraftBlockData-Creation.patch index 8f037e052a..501971aa29 100644 --- a/patches/server/0235-Optimize-CraftBlockData-Creation.patch +++ b/patches/server/0235-Optimize-CraftBlockData-Creation.patch @@ -7,10 +7,10 @@ Avoids a hashmap lookup by cacheing a reference to the CraftBlockData and cloning it when one is needed. diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -index 4ac248f9f5f4f7aa95ddd6e3c3dab1ce94e73d66..d02f7a547dbe8943f82c07103b1fff203e4533c2 100644 +index 59fcaca90b67c03e1a6799e58061dbae3b1f1ceb..46dd499c2023ec482ae7204d2894fb4100d9233b 100644 --- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java +++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -@@ -813,6 +813,14 @@ public abstract class BlockBehaviour implements FeatureElement { +@@ -820,6 +820,14 @@ public abstract class BlockBehaviour implements FeatureElement { this.instrument = blockbase_info.instrument; this.replaceable = blockbase_info.replaceable; } diff --git a/patches/server/0243-Improve-death-events.patch b/patches/server/0243-Improve-death-events.patch index ccf6f18a9d..235279b5fe 100644 --- a/patches/server/0243-Improve-death-events.patch +++ b/patches/server/0243-Improve-death-events.patch @@ -443,10 +443,10 @@ index 92f9502a2d5721ebb1757a069a0f138db66628d7..6c5bd88777ff79c7408cf5ffed0f099a public void injectScaledMaxHealth(Collection collection, boolean force) { diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index a221ae7ec1a7db9c38037fa71ea35b5309b99973..d3baf38cf45d13eeffedcc697468842e3ac117d3 100644 +index d1b473ef83df0ed4ae7cd9dd0525dac5e8a41223..a9a2b35378d6654ba00a48737f596553445214aa 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -897,9 +897,16 @@ public class CraftEventFactory { +@@ -901,9 +901,16 @@ public class CraftEventFactory { CraftLivingEntity entity = (CraftLivingEntity) victim.getBukkitEntity(); CraftDamageSource bukkitDamageSource = new CraftDamageSource(damageSource); EntityDeathEvent event = new EntityDeathEvent(entity, bukkitDamageSource, drops, victim.getExpReward(damageSource.getEntity())); @@ -463,7 +463,7 @@ index a221ae7ec1a7db9c38037fa71ea35b5309b99973..d3baf38cf45d13eeffedcc697468842e victim.expToDrop = event.getDroppedExp(); for (org.bukkit.inventory.ItemStack stack : event.getDrops()) { -@@ -917,7 +924,14 @@ public class CraftEventFactory { +@@ -921,7 +928,14 @@ public class CraftEventFactory { PlayerDeathEvent event = new PlayerDeathEvent(entity, bukkitDamageSource, drops, victim.getExpReward(damageSource.getEntity()), 0, deathMessage); event.setKeepInventory(keepInventory); event.setKeepLevel(victim.keepLevel); // SPIGOT-2222: pre-set keepLevel @@ -478,7 +478,7 @@ index a221ae7ec1a7db9c38037fa71ea35b5309b99973..d3baf38cf45d13eeffedcc697468842e victim.keepLevel = event.getKeepLevel(); victim.newLevel = event.getNewLevel(); -@@ -940,6 +954,31 @@ public class CraftEventFactory { +@@ -944,6 +958,31 @@ public class CraftEventFactory { return event; } diff --git a/patches/server/0256-Call-player-spectator-target-events-and-improve-impl.patch b/patches/server/0256-Call-player-spectator-target-events-and-improve-impl.patch index 17c81b197d..b29358d325 100644 --- a/patches/server/0256-Call-player-spectator-target-events-and-improve-impl.patch +++ b/patches/server/0256-Call-player-spectator-target-events-and-improve-impl.patch @@ -19,10 +19,10 @@ spectate the target entity. Co-authored-by: Spottedleaf diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index ff3f70b8c266dc3b2ab374ffd6905ecbfe8510be..29dc317d43532399651719d45ca05b086043ae6b 100644 +index fa8640f961b93dc811296131dfda58faa1908add..15328d344a26f5c40011ee6ba0bc54dd5ab0b87b 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2183,6 +2183,21 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { +@@ -2182,6 +2182,21 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { this.camera = (Entity) (entity == null ? this : entity); if (entity1 != this.camera) { diff --git a/patches/server/0260-Reset-players-airTicks-on-respawn.patch b/patches/server/0260-Reset-players-airTicks-on-respawn.patch index 1707fb452b..0669db4de0 100644 --- a/patches/server/0260-Reset-players-airTicks-on-respawn.patch +++ b/patches/server/0260-Reset-players-airTicks-on-respawn.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Reset players airTicks on respawn diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 29dc317d43532399651719d45ca05b086043ae6b..1108fa6c7ac28304d104d4e5df2bdf4e9a6bd929 100644 +index 15328d344a26f5c40011ee6ba0bc54dd5ab0b87b..7cca5c778f9d20cfa6cb543c9afcf74779aaa355 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2704,6 +2704,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { +@@ -2703,6 +2703,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { this.setHealth(this.getMaxHealth()); this.stopUsingItem(); // CraftBukkit - SPIGOT-6682: Clear active item on reset diff --git a/patches/server/0268-force-entity-dismount-during-teleportation.patch b/patches/server/0268-force-entity-dismount-during-teleportation.patch index 0bdcf9e117..a91a738571 100644 --- a/patches/server/0268-force-entity-dismount-during-teleportation.patch +++ b/patches/server/0268-force-entity-dismount-during-teleportation.patch @@ -20,10 +20,10 @@ this is going to be the best soultion all around. Improvements/suggestions welcome! diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 1108fa6c7ac28304d104d4e5df2bdf4e9a6bd929..b4947ee9615b1b2108046b9ab87b65b53dbb23f6 100644 +index 7cca5c778f9d20cfa6cb543c9afcf74779aaa355..c2571855ca6a8ecd144b8fbb97d601d1808e8d61 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2523,9 +2523,15 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { +@@ -2522,9 +2522,15 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { @Override public void stopRiding() { @@ -106,7 +106,7 @@ index 7fd1a75ba0068ee3ca6c29a550a9a1b33c5cacc5..f330ddca00ed11bf76ae825820423b94 if (this.valid) { Bukkit.getPluginManager().callEvent(event); diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 43eddcd8496ff2f089119f6632acfe1b56466c3d..e047911c7faa3cdcd3df8899857fcadf3eec3d89 100644 +index 689aaf4ceedc598fe71db726215cceae6cc97296..fad0445628499ac14cd9d8ab7f618c490885e798 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -3619,9 +3619,15 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0270-Book-Size-Limits.patch b/patches/server/0270-Book-size-limits.patch similarity index 67% rename from patches/server/0270-Book-Size-Limits.patch rename to patches/server/0270-Book-size-limits.patch index 5fd23a7c1e..f4a8924ba4 100644 --- a/patches/server/0270-Book-Size-Limits.patch +++ b/patches/server/0270-Book-size-limits.patch @@ -1,15 +1,15 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Aikar Date: Fri, 16 Nov 2018 23:08:50 -0500 -Subject: [PATCH] Book Size Limits +Subject: [PATCH] Book size limits Puts some limits on the size of books. diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 2e35c6cfdf0cded5adc9f512612faaa68876961c..abab7c6ce2079a0101c59c130fd65db7b2a73498 100644 +index 2e35c6cfdf0cded5adc9f512612faaa68876961c..d69b678b2611f3d1b1ef64541863256868969671 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1043,6 +1043,45 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1043,6 +1043,40 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @Override public void handleEditBook(ServerboundEditBookPacket packet) { @@ -18,15 +18,10 @@ index 2e35c6cfdf0cded5adc9f512612faaa68876961c..abab7c6ce2079a0101c59c130fd65db7 + List pageList = packet.pages(); + long byteTotal = 0; + int maxBookPageSize = io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.pageMax; -+ double multiplier = Math.max(0.3D, Math.min(1D, io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.totalMultiplier)); ++ double multiplier = Math.clamp(io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.totalMultiplier, 0.3D, 1D); + long byteAllowed = maxBookPageSize; + for (String testString : pageList) { + int byteLength = testString.getBytes(java.nio.charset.StandardCharsets.UTF_8).length; -+ if (byteLength > 256 * 4) { -+ ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send a book with with a page too large!"); -+ this.disconnect(Component.literal("Book too large!")); -+ return; -+ } + byteTotal += byteLength; + int length = testString.length(); + int multibytes = 0; @@ -37,7 +32,7 @@ index 2e35c6cfdf0cded5adc9f512612faaa68876961c..abab7c6ce2079a0101c59c130fd65db7 + } + } + } -+ byteAllowed += (maxBookPageSize * Math.min(1, Math.max(0.1D, (double) length / 255D))) * multiplier; ++ byteAllowed += maxBookPageSize * Math.clamp((double) length / 255D, 0.1D, 1) * multiplier; + + if (multibytes > 1) { + // penalize MB @@ -46,7 +41,7 @@ index 2e35c6cfdf0cded5adc9f512612faaa68876961c..abab7c6ce2079a0101c59c130fd65db7 + } + + if (byteTotal > byteAllowed) { -+ ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send too large of a book. Book Size: " + byteTotal + " - Allowed: "+ byteAllowed + " - Pages: " + pageList.size()); ++ ServerGamePacketListenerImpl.LOGGER.warn("{} tried to send a book too large. Book size: {} - Allowed: {} - Pages: {}", this.player.getScoreboardName(), byteTotal, byteAllowed, pageList.size()); + this.disconnect(Component.literal("Book too large!")); + return; + } diff --git a/patches/server/0273-Workaround-for-vehicle-tracking-issue-on-disconnect.patch b/patches/server/0273-Workaround-for-vehicle-tracking-issue-on-disconnect.patch index c321bed5e2..a8477b1786 100644 --- a/patches/server/0273-Workaround-for-vehicle-tracking-issue-on-disconnect.patch +++ b/patches/server/0273-Workaround-for-vehicle-tracking-issue-on-disconnect.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Workaround for vehicle tracking issue on disconnect diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index dbdc6b4065acc363c128580fdffe9049259386c2..afed961e6714abc1a1709d12973cbfae40b950fa 100644 +index bd130d3a4d0cfe431be627c3f4d85bb394fe099b..ad2b8ea068469f2b0597c0e0436ad3c94dcb62ea 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1834,6 +1834,13 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { +@@ -1833,6 +1833,13 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { public void disconnect() { this.disconnected = true; this.ejectPassengers(); diff --git a/patches/server/0279-Limit-Client-Sign-length-more.patch b/patches/server/0279-Limit-Client-Sign-length-more.patch index 20e898577a..d24066269f 100644 --- a/patches/server/0279-Limit-Client-Sign-length-more.patch +++ b/patches/server/0279-Limit-Client-Sign-length-more.patch @@ -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/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 29678ddb0cb53fae9ae497614690f9d855f9eb86..86cb92b7cf18272ee4b46c292ed4a7192119ce1a 100644 +index 1c91e1812e536bb59dbb37aec47afca1d59ffa8d..e78a6234d6699e7f14c5ac7faa7d1ee60e46d7f9 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -299,6 +299,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -33,7 +33,7 @@ index 29678ddb0cb53fae9ae497614690f9d855f9eb86..86cb92b7cf18272ee4b46c292ed4a719 public ServerGamePacketListenerImpl(MinecraftServer server, Connection connection, ServerPlayer player, CommonListenerCookie clientData) { super(server, connection, clientData, player); // CraftBukkit -@@ -3151,7 +3152,19 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -3146,7 +3147,19 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @Override public void handleSignUpdate(ServerboundSignUpdatePacket packet) { diff --git a/patches/server/0281-Fixes-and-additions-to-the-spawn-reason-API.patch b/patches/server/0281-Fixes-and-additions-to-the-spawn-reason-API.patch index 223d99ce64..944ab1ff65 100644 --- a/patches/server/0281-Fixes-and-additions-to-the-spawn-reason-API.patch +++ b/patches/server/0281-Fixes-and-additions-to-the-spawn-reason-API.patch @@ -201,6 +201,18 @@ index dbc0b69603dcffbf3d41d79719aa0f2b7da4a131..dd86f5ec5b2051aeea4e19ff97146362 .isPresent(); } +diff --git a/src/main/java/net/minecraft/world/level/block/entity/trialspawner/TrialSpawner.java b/src/main/java/net/minecraft/world/level/block/entity/trialspawner/TrialSpawner.java +index 52d71a03cd5b2af56704f265ce5b5f14d3236ebb..ffca6563c20f53c92b162054fec727d83e54e58a 100644 +--- a/src/main/java/net/minecraft/world/level/block/entity/trialspawner/TrialSpawner.java ++++ b/src/main/java/net/minecraft/world/level/block/entity/trialspawner/TrialSpawner.java +@@ -226,6 +226,7 @@ public final class TrialSpawner { + } + + entity.spawnedViaMobSpawner = true; // Paper ++ entity.spawnReason = org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.TRIAL_SPAWNER; // Paper - Entity#getEntitySpawnReason + // CraftBukkit start + if (org.bukkit.craftbukkit.event.CraftEventFactory.callTrialSpawnerSpawnEvent(entity, pos).isCancelled()) { + return Optional.empty(); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java index bddf98bdf60473eb1d2e533cf533ed7eee797aaa..ce70c8fddbe63d0af2b1f988ce9a2b40c5d48066 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java diff --git a/patches/server/0295-Configurable-projectile-relative-velocity.patch b/patches/server/0295-Configurable-projectile-relative-velocity.patch index 9406e01b81..1616b1c050 100644 --- a/patches/server/0295-Configurable-projectile-relative-velocity.patch +++ b/patches/server/0295-Configurable-projectile-relative-velocity.patch @@ -25,15 +25,22 @@ P3) Solutions for 1) and especially 2) might not be future-proof, while this server-internal fix makes this change future-proof. diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -index 30eb86b52f00cfa61af4f93aca50ffc3547c95e8..7863625d49baa13ea87f2ee295b16706071fb960 100644 +index 30eb86b52f00cfa61af4f93aca50ffc3547c95e8..19452d1e591afc06675d57bbebae963517ab7217 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -@@ -183,7 +183,7 @@ public abstract class Projectile extends Entity implements TraceableEntity { +@@ -182,8 +182,14 @@ public abstract class Projectile extends Entity implements TraceableEntity { + this.shoot((double) f5, (double) f6, (double) f7, speed, divergence); Vec3 vec3d = shooter.getKnownMovement(); - -- this.setDeltaMovement(this.getDeltaMovement().add(vec3d.x, shooter.onGround() ? 0.0D : vec3d.y, vec3d.z)); -+ if (!shooter.level().paperConfig().misc.disableRelativeProjectileVelocity) this.setDeltaMovement(this.getDeltaMovement().add(vec3d.x, shooter.onGround() ? 0.0D : vec3d.y, vec3d.z)); // Paper - allow disabling relative velocity +- ++ // Paper start - allow disabling relative velocity ++ if (vec3d.lengthSqr() > 4D * 4D) { ++ vec3d = vec3d.normalize().scale(2D); ++ } ++ if (!shooter.level().paperConfig().misc.disableRelativeProjectileVelocity) { + this.setDeltaMovement(this.getDeltaMovement().add(vec3d.x, shooter.onGround() ? 0.0D : vec3d.y, vec3d.z)); ++ } ++ // Paper end - allow disabling relative velocity } // CraftBukkit start - call projectile hit event diff --git a/patches/server/0316-Improve-java-version-check.patch b/patches/server/0316-Improve-java-version-check.patch index 4bd8947722..3d9eed5372 100644 --- a/patches/server/0316-Improve-java-version-check.patch +++ b/patches/server/0316-Improve-java-version-check.patch @@ -6,42 +6,31 @@ Subject: [PATCH] Improve java version check Co-Authored-By: MiniDigger diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 8245b38d37b4cee6f4e7b61d7af40a18e54a3f43..e226eda5efc0e45e59cb5f6251ed008b67d5299a 100644 +index 446403f73fb1b5687d587889e6f32dce464d05a6..ed167d0d399924d54d9ff99c10ab8ee093efc149 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -203,23 +203,27 @@ public class Main { +@@ -203,11 +203,20 @@ public class Main { return; } -+ // Paper start - Improve java version check -+ boolean skip = Boolean.getBoolean("Paper.IgnoreJavaVersion"); - float javaVersion = Float.parseFloat(System.getProperty("java.class.version")); -- if (javaVersion < 61.0) { -- System.err.println("Unsupported Java detected (" + javaVersion + "). This version of Minecraft requires at least Java 17. Check your Java version with the command 'java -version'."); -- return; -- } +- float javaVersion = Float.parseFloat(System.getProperty("java.class.version")); - if (javaVersion > 66.0) { - System.err.println("Unsupported Java detected (" + javaVersion + "). Only up to Java 22 is supported."); -+ boolean isOldVersion = javaVersion < 61.0; -+ if (!skip && isOldVersion) { -+ System.err.println("Unsupported Java detected (" + javaVersion + "). This version of Minecraft requires at least Java 21. Check your Java version with the command 'java -version'. For more info see https://docs.papermc.io/misc/java-install"); - return; - } - String javaVersionName = System.getProperty("java.version"); - // J2SE SDK/JRE Version String Naming Convention - boolean isPreRelease = javaVersionName.contains("-"); -- if (isPreRelease && javaVersion == 61.0) { -- System.err.println("Unsupported Java detected (" + javaVersionName + "). You are running an outdated, pre-release version. Only general availability versions of Java are supported. Please update your Java version."); -+ if (!skip && isPreRelease) { -+ System.err.println("Unsupported Java detected (" + javaVersionName + "). You are running an unsupported, non official, version. Only general availability versions of Java are supported. Please update your Java version. See https://docs.papermc.io/paper/faq#unsupported-java-detected-what-do-i-do for more information."); - return; - } - -+ if (skip && (isOldVersion || isPreRelease)) { -+ System.err.println("Unsupported Java detected ("+ javaVersionName + "), but the check was skipped. Proceed with caution! "); -+ } -+ // Paper end - Improve java version check +- return; ++ // Paper start - Improve java version check ++ boolean skip = Boolean.getBoolean("Paper.IgnoreJavaVersion"); ++ String javaVersionName = System.getProperty("java.version"); ++ // J2SE SDK/JRE Version String Naming Convention ++ boolean isPreRelease = javaVersionName.contains("-"); ++ if (isPreRelease) { ++ if (!skip) { ++ System.err.println("Unsupported Java detected (" + javaVersionName + "). You are running an unsupported, non official, version. Only general availability versions of Java are supported. Please update your Java version. See https://docs.papermc.io/paper/faq#unsupported-java-detected-what-do-i-do for more information."); ++ return; ++ } + ++ System.err.println("Unsupported Java detected ("+ javaVersionName + "), but the check was skipped. Proceed with caution! "); + } ++ // Paper end - Improve java version check + try { // Paper start - Handled by TerminalConsoleAppender - /* diff --git a/patches/server/0321-add-hand-to-BlockMultiPlaceEvent.patch b/patches/server/0321-add-hand-to-BlockMultiPlaceEvent.patch index a80da71d1f..ca43013242 100644 --- a/patches/server/0321-add-hand-to-BlockMultiPlaceEvent.patch +++ b/patches/server/0321-add-hand-to-BlockMultiPlaceEvent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] add hand to BlockMultiPlaceEvent diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index d3baf38cf45d13eeffedcc697468842e3ac117d3..3ba695a29dcf9e7137dae16835e6f7a375d560f7 100644 +index a9a2b35378d6654ba00a48737f596553445214aa..7d21f3ec394b53461ca5fb73449b551fbe6e96aa 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -406,13 +406,18 @@ public class CraftEventFactory { +@@ -410,13 +410,18 @@ public class CraftEventFactory { } org.bukkit.inventory.ItemStack item; diff --git a/patches/server/0340-Prevent-opening-inventories-when-frozen.patch b/patches/server/0340-Prevent-opening-inventories-when-frozen.patch index c714d1fde8..1e3d68bf93 100644 --- a/patches/server/0340-Prevent-opening-inventories-when-frozen.patch +++ b/patches/server/0340-Prevent-opening-inventories-when-frozen.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Prevent opening inventories when frozen diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 9b6887f40dea57d4b5e2f08d7645b1edfaa5b189..d164ae1b965310a260f79240b6e2fd4ddd7249f3 100644 +index f8d4bd18f98ed914e116d0cc4a80140e4e8d759f..7daa310dd5d3eb1befb9983ce85e0354771af71d 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -710,7 +710,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { @@ -17,7 +17,7 @@ index 9b6887f40dea57d4b5e2f08d7645b1edfaa5b189..d164ae1b965310a260f79240b6e2fd4d this.closeContainer(org.bukkit.event.inventory.InventoryCloseEvent.Reason.CANT_USE); // Paper - Inventory close reason this.containerMenu = this.inventoryMenu; } -@@ -1635,7 +1635,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { +@@ -1634,7 +1634,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { } else { // CraftBukkit start this.containerMenu = container; diff --git a/patches/server/0342-Implement-Player-Client-Options-API.patch b/patches/server/0342-Implement-Player-Client-Options-API.patch index 978b47f364..e7bff21f02 100644 --- a/patches/server/0342-Implement-Player-Client-Options-API.patch +++ b/patches/server/0342-Implement-Player-Client-Options-API.patch @@ -87,7 +87,7 @@ index 0000000000000000000000000000000000000000..b6f4400df3d8ec7e06a996de54f8cabb + } +} diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index d164ae1b965310a260f79240b6e2fd4ddd7249f3..a794131746c6cfdcbeeb64b31fb122a38be085c1 100644 +index 7daa310dd5d3eb1befb9983ce85e0354771af71d..8938f90c53de8aef71aa70522a66a69edb467e73 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -359,7 +359,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { @@ -99,7 +99,7 @@ index d164ae1b965310a260f79240b6e2fd4ddd7249f3..a794131746c6cfdcbeeb64b31fb122a3 this.object = null; // CraftBukkit start -@@ -2147,7 +2147,23 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { +@@ -2146,7 +2146,23 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { } } @@ -123,7 +123,7 @@ index d164ae1b965310a260f79240b6e2fd4ddd7249f3..a794131746c6cfdcbeeb64b31fb122a3 // CraftBukkit start if (this.getMainArm() != clientOptions.mainHand()) { PlayerChangedMainHandEvent event = new PlayerChangedMainHandEvent(this.getBukkitEntity(), this.getMainArm() == HumanoidArm.LEFT ? MainHand.LEFT : MainHand.RIGHT); -@@ -2158,6 +2174,11 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { +@@ -2157,6 +2173,11 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { this.server.server.getPluginManager().callEvent(event); } // CraftBukkit end @@ -136,7 +136,7 @@ index d164ae1b965310a260f79240b6e2fd4ddd7249f3..a794131746c6cfdcbeeb64b31fb122a3 this.adventure$locale = java.util.Objects.requireNonNullElse(net.kyori.adventure.translation.Translator.parseLocale(this.language), java.util.Locale.US); // Paper this.requestedViewDistance = clientOptions.viewDistance(); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index d29107105b7bc56b50864777f32420d0c7f379dc..8c61e7a1681cbf4c2fd153d9cba5929bc853235a 100644 +index d0af4b838bd43ef2388e918ac14e7acec71b63ef..b9487ce9391413c4c596cc5450ed5c396347ec1b 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -653,6 +653,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0349-Fix-item-duplication-and-teleport-issues.patch b/patches/server/0349-Fix-item-duplication-and-teleport-issues.patch index 9e2640a497..3482c69ed8 100644 --- a/patches/server/0349-Fix-item-duplication-and-teleport-issues.patch +++ b/patches/server/0349-Fix-item-duplication-and-teleport-issues.patch @@ -124,10 +124,10 @@ index 92bb0c63330ad3a4cb13b2dc655020714e9b1ffd..cc1189c2d7dc57ba8f29aad4ba5d2a07 } } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 3ba695a29dcf9e7137dae16835e6f7a375d560f7..e0cbef395c479da40dc7079835f0eae1ee122da1 100644 +index 7d21f3ec394b53461ca5fb73449b551fbe6e96aa..408f677337759f529fa41f6ba2b516b71a7940f1 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -899,6 +899,11 @@ public class CraftEventFactory { +@@ -903,6 +903,11 @@ public class CraftEventFactory { } public static EntityDeathEvent callEntityDeathEvent(net.minecraft.world.entity.LivingEntity victim, DamageSource damageSource, List drops) { @@ -139,7 +139,7 @@ index 3ba695a29dcf9e7137dae16835e6f7a375d560f7..e0cbef395c479da40dc7079835f0eae1 CraftLivingEntity entity = (CraftLivingEntity) victim.getBukkitEntity(); CraftDamageSource bukkitDamageSource = new CraftDamageSource(damageSource); EntityDeathEvent event = new EntityDeathEvent(entity, bukkitDamageSource, drops, victim.getExpReward(damageSource.getEntity())); -@@ -913,11 +918,13 @@ public class CraftEventFactory { +@@ -917,11 +922,13 @@ public class CraftEventFactory { playDeathSound(victim, event); // Paper end victim.expToDrop = event.getDroppedExp(); diff --git a/patches/server/0354-Prevent-teleporting-dead-entities.patch b/patches/server/0354-Prevent-teleporting-dead-entities.patch index 70302fe34b..4eb4569139 100644 --- a/patches/server/0354-Prevent-teleporting-dead-entities.patch +++ b/patches/server/0354-Prevent-teleporting-dead-entities.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Prevent teleporting dead entities diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 9103d27e5a80c095b22569bb1bba754f98a9b43c..9b77b711a172d653a4a96d667551ce83040112e4 100644 +index 2fb31c0223f2638de0ebec170095fa20991738ff..e62415cf6a13634f85289c875092bb706c316fd3 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1553,6 +1553,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1548,6 +1548,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } public void internalTeleport(double d0, double d1, double d2, float f, float f1, Set set) { // Paper diff --git a/patches/server/0357-ExperienceOrb-merging-stacking-API-and-fixes.patch b/patches/server/0357-ExperienceOrb-merging-stacking-API-and-fixes.patch index 4afcd62001..6d45bdaa2f 100644 --- a/patches/server/0357-ExperienceOrb-merging-stacking-API-and-fixes.patch +++ b/patches/server/0357-ExperienceOrb-merging-stacking-API-and-fixes.patch @@ -77,10 +77,10 @@ index 5a7d314ec0562e472f5dc45924a7b24841cff126..650e4a01cecc4cc08e7ff9ebcc4c3670 public java.util.UUID getTriggerEntityId() { return getHandle().triggerEntityId; diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index e0cbef395c479da40dc7079835f0eae1ee122da1..ec364ab90df6276c1976e876337636f4bb06d097 100644 +index 408f677337759f529fa41f6ba2b516b71a7940f1..1177a9310f686f3b4d75a713cdac75c5628e8bbb 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -708,15 +708,29 @@ public class CraftEventFactory { +@@ -712,15 +712,29 @@ public class CraftEventFactory { if (entity instanceof net.minecraft.world.entity.ExperienceOrb xp) { double radius = world.spigotConfig.expMerge; if (radius > 0) { diff --git a/patches/server/0369-Prevent-position-desync-causing-tp-exploit.patch b/patches/server/0369-Prevent-position-desync-causing-tp-exploit.patch index 7fcd84e1b6..d6354e0fa5 100644 --- a/patches/server/0369-Prevent-position-desync-causing-tp-exploit.patch +++ b/patches/server/0369-Prevent-position-desync-causing-tp-exploit.patch @@ -13,10 +13,10 @@ behaviour, we need to move all of this dangerous logic outside of the move call and into an appropriate place in the tick method. diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 9b77b711a172d653a4a96d667551ce83040112e4..151f078ab6081637189d3d532718dac0ec5e46df 100644 +index e62415cf6a13634f85289c875092bb706c316fd3..d93415023bed72d736f625977ca3e21497bc8f74 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1350,6 +1350,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1345,6 +1345,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.player.move(MoverType.PLAYER, new Vec3(d6, d7, d8)); this.player.onGround = packet.isOnGround(); // CraftBukkit - SPIGOT-5810, SPIGOT-5835, SPIGOT-6828: reset by this.player.move diff --git a/patches/server/0371-Add-PlayerRecipeBookClickEvent.patch b/patches/server/0371-Add-PlayerRecipeBookClickEvent.patch index eab3672167..e5ffda1446 100644 --- a/patches/server/0371-Add-PlayerRecipeBookClickEvent.patch +++ b/patches/server/0371-Add-PlayerRecipeBookClickEvent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add PlayerRecipeBookClickEvent diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 151f078ab6081637189d3d532718dac0ec5e46df..090b42aba7353d232a210d67936d024d00388047 100644 +index d93415023bed72d736f625977ca3e21497bc8f74..d003494e741b97cbb8541d3132c7c448219e8ced 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -3058,16 +3058,40 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -3053,16 +3053,40 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl if (!this.player.containerMenu.stillValid(this.player)) { ServerGamePacketListenerImpl.LOGGER.debug("Player {} interacted with invalid menu {}", this.player, this.player.containerMenu); } else { diff --git a/patches/server/0375-Fix-Per-World-Difficulty-Remembering-Difficulty.patch b/patches/server/0375-Fix-Per-World-Difficulty-Remembering-Difficulty.patch index 5da6c94c5d..d0a4c576b7 100644 --- a/patches/server/0375-Fix-Per-World-Difficulty-Remembering-Difficulty.patch +++ b/patches/server/0375-Fix-Per-World-Difficulty-Remembering-Difficulty.patch @@ -76,10 +76,10 @@ index d6dc8c983d26ce89f17a990be4284fdc78ad164b..2b1d7a2360a9ee7bca9d93a2dc8c61d1 @Override diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 01def06cf90faaf67421b6e5a87f4c47dd4c1142..9f28c9f2e8f8323aa374c2ac5e7610b825890b18 100644 +index dae64538b34c7cc7d1af0f58e3a150c7f5e3c1c9..19f49465cfc80c1cf36755f24aa246e0656da75a 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -3261,7 +3261,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -3256,7 +3256,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl public void handleChangeDifficulty(ServerboundChangeDifficultyPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); if (this.player.hasPermissions(2) || this.isSingleplayerOwner()) { diff --git a/patches/server/0379-Add-BlockStateMeta-clearBlockState.patch b/patches/server/0379-Add-BlockStateMeta-clearBlockState.patch index 802f698e6f..680235a49a 100644 --- a/patches/server/0379-Add-BlockStateMeta-clearBlockState.patch +++ b/patches/server/0379-Add-BlockStateMeta-clearBlockState.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add BlockStateMeta#clearBlockState diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java -index 80ace77a9b11d63a1b2271c868c59711f5d2f89d..4faada5f974214f3054dc1bec9c79e2600c8df48 100644 +index 301d883a7626e3abd222517400367fc40d6fa2bd..23dbc56edf0d16cf07ced2899942abae28397694 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java -@@ -195,6 +195,13 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta +@@ -198,6 +198,13 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta return this.blockEntityTag != null; } @@ -22,3 +22,21 @@ index 80ace77a9b11d63a1b2271c868c59711f5d2f89d..4faada5f974214f3054dc1bec9c79e26 @Override public BlockState getBlockState() { return (this.blockEntityTag != null) ? this.blockEntityTag.copy() : CraftMetaBlockState.getBlockState(this.material, null); +diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaShield.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaShield.java +index 3542c6e72f5ff459d50b73fa210ea835f52dfa49..c8eec04685456d89cb41466cddcc3975d0ceeb29 100644 +--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaShield.java ++++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaShield.java +@@ -257,6 +257,13 @@ public class CraftMetaShield extends CraftMetaItem implements ShieldMeta, BlockS + this.banner = (Banner) blockState; + } + ++ // Paper start - add method to clear block state ++ @Override ++ public void clearBlockState() { ++ this.banner = null; ++ } ++ // Paper end - add method to clear block state ++ + private static Banner getBlockState(DyeColor color) { + BlockPos pos = BlockPos.ZERO; + Material stateMaterial = CraftMetaShield.shieldToBannerHack(color); diff --git a/patches/server/0380-Convert-legacy-attributes-in-Item-Meta.patch b/patches/server/0380-Convert-legacy-attributes-in-Item-Meta.patch index b929596c4e..76437f1a9b 100644 --- a/patches/server/0380-Convert-legacy-attributes-in-Item-Meta.patch +++ b/patches/server/0380-Convert-legacy-attributes-in-Item-Meta.patch @@ -30,10 +30,10 @@ index de40e522960469b98f987bd688489740446d9f85..5678d2007d5adf45dec0638c5dd848b6 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 69be26f8f47854f39cfed0559d944ef4f983c0f3..0b87cfbdf039ee5bc017d2b1783c7c4853047952 100644 +index 97c40582bca095532fff9a81515f38ea4ac527e0..5c76ba7f9ceb285d27e18369172612205be96224 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -@@ -695,7 +695,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -702,7 +702,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { AttributeModifier attribMod = CraftAttributeInstance.convert(nmsModifier); diff --git a/patches/server/0381-Do-not-accept-invalid-client-settings.patch b/patches/server/0381-Do-not-accept-invalid-client-settings.patch index 5c428d433e..9760be5dbe 100644 --- a/patches/server/0381-Do-not-accept-invalid-client-settings.patch +++ b/patches/server/0381-Do-not-accept-invalid-client-settings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Do not accept invalid client settings diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 9f28c9f2e8f8323aa374c2ac5e7610b825890b18..762998180eb7b10151f390ee79690c68d66622f2 100644 +index 19f49465cfc80c1cf36755f24aa246e0656da75a..19f13d845467364a25417ac8fd6404f16e18eaa2 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -3253,6 +3253,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -3248,6 +3248,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @Override public void handleClientInformation(ServerboundClientInformationPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); diff --git a/patches/server/0384-Add-PrepareResultEvent.patch b/patches/server/0384-Add-PrepareResultEvent.patch index 05484fe151..24f55e8025 100644 --- a/patches/server/0384-Add-PrepareResultEvent.patch +++ b/patches/server/0384-Add-PrepareResultEvent.patch @@ -8,7 +8,7 @@ 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/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -index c6ec9fc6ccde2a5c086a2bfe32686954c074c31d..7198dc9ffc9a37dab3654e12aa497c442a9993c5 100644 +index ffda2c984c5683edb38a56f04c53b0ea339e08fc..d685511104ac552dfc9ae2111e1bfb60fa812102 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java @@ -327,6 +327,7 @@ public class AnvilMenu extends ItemCombinerMenu { @@ -56,7 +56,7 @@ index 62432c347b86fc79ab529a7dde66bef32d0424dd..be840717e180b6b5abd14db6cc926334 } diff --git a/src/main/java/net/minecraft/world/inventory/LoomMenu.java b/src/main/java/net/minecraft/world/inventory/LoomMenu.java -index fb7027985c6442fc50573e96031a05a3c64f4426..4bd720a97da27c4fd97788d4c504c0174f0f6c25 100644 +index 69ed0753c224cb7746762b4b94c4d79d608951b8..2de558dd205a1078fdcac1bce256d059b9bf5d5f 100644 --- a/src/main/java/net/minecraft/world/inventory/LoomMenu.java +++ b/src/main/java/net/minecraft/world/inventory/LoomMenu.java @@ -249,7 +249,8 @@ public class LoomMenu extends AbstractContainerMenu { @@ -82,7 +82,7 @@ index 0735705def4f9505b7f16df2497cc78bbf5a8373..86e51fcce767d265ee0d3beb611be211 @Override diff --git a/src/main/java/net/minecraft/world/inventory/StonecutterMenu.java b/src/main/java/net/minecraft/world/inventory/StonecutterMenu.java -index 04d9793a83c724350f74616558f650082f9805d9..bb29107cb15e2ec644a14cabb3cf91f4bde5471d 100644 +index 30ea1f9e97db86a2ad7baeea4f5a76c821874daa..5b4f03128499b0c1a4b8c5f5ccd17e4bdb391e81 100644 --- a/src/main/java/net/minecraft/world/inventory/StonecutterMenu.java +++ b/src/main/java/net/minecraft/world/inventory/StonecutterMenu.java @@ -182,6 +182,7 @@ public class StonecutterMenu extends AbstractContainerMenu { @@ -94,13 +94,13 @@ index 04d9793a83c724350f74616558f650082f9805d9..bb29107cb15e2ec644a14cabb3cf91f4 private static SingleRecipeInput createRecipeInput(Container inventory) { diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index ec364ab90df6276c1976e876337636f4bb06d097..3159e52006ad348bfce4905dcb0987222e4894a5 100644 +index 1177a9310f686f3b4d75a713cdac75c5628e8bbb..838ad7bc8a7488adf52d462e1a3f2faa275bebd0 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1666,6 +1666,12 @@ public class CraftEventFactory { +@@ -1679,6 +1679,12 @@ public class CraftEventFactory { } - public static PrepareAnvilEvent callPrepareAnvilEvent(InventoryView view, ItemStack item) { + public static PrepareAnvilEvent callPrepareAnvilEvent(AnvilView view, ItemStack item) { + // Paper start - Add PrepareResultEvent + if (true) { + view.getTopInventory().setItem(net.minecraft.world.inventory.AnvilMenu.RESULT_SLOT, CraftItemStack.asCraftMirror(item)); @@ -110,7 +110,7 @@ index ec364ab90df6276c1976e876337636f4bb06d097..3159e52006ad348bfce4905dcb098722 PrepareAnvilEvent event = new PrepareAnvilEvent(view, CraftItemStack.asCraftMirror(item).clone()); event.getView().getPlayer().getServer().getPluginManager().callEvent(event); event.getInventory().setItem(2, event.getResult()); -@@ -1673,6 +1679,12 @@ public class CraftEventFactory { +@@ -1686,6 +1692,12 @@ public class CraftEventFactory { } public static PrepareGrindstoneEvent callPrepareGrindstoneEvent(InventoryView view, ItemStack item) { @@ -123,7 +123,7 @@ index ec364ab90df6276c1976e876337636f4bb06d097..3159e52006ad348bfce4905dcb098722 PrepareGrindstoneEvent event = new PrepareGrindstoneEvent(view, CraftItemStack.asCraftMirror(item).clone()); event.getView().getPlayer().getServer().getPluginManager().callEvent(event); event.getInventory().setItem(2, event.getResult()); -@@ -1680,12 +1692,39 @@ public class CraftEventFactory { +@@ -1693,12 +1705,39 @@ public class CraftEventFactory { } public static PrepareSmithingEvent callPrepareSmithingEvent(InventoryView view, ItemStack item) { @@ -145,8 +145,8 @@ index ec364ab90df6276c1976e876337636f4bb06d097..3159e52006ad348bfce4905dcb098722 + InventoryView view = container.getBukkitView(); + org.bukkit.inventory.ItemStack origItem = view.getTopInventory().getItem(resultSlot); + CraftItemStack result = origItem != null ? CraftItemStack.asCraftCopy(origItem) : null; -+ if (view.getTopInventory() instanceof org.bukkit.inventory.AnvilInventory) { -+ event = new PrepareAnvilEvent(view, result); ++ if (view.getTopInventory() instanceof org.bukkit.inventory.AnvilInventory && view instanceof AnvilView anvilView) { ++ event = new PrepareAnvilEvent(anvilView, result); + } else if (view.getTopInventory() instanceof org.bukkit.inventory.GrindstoneInventory) { + event = new PrepareGrindstoneEvent(view, result); + } else if (view.getTopInventory() instanceof org.bukkit.inventory.SmithingInventory) { diff --git a/patches/server/0401-Add-BellRingEvent.patch b/patches/server/0401-Add-BellRingEvent.patch index 934d70c696..1e306374a2 100644 --- a/patches/server/0401-Add-BellRingEvent.patch +++ b/patches/server/0401-Add-BellRingEvent.patch @@ -7,10 +7,10 @@ Add a new event, BellRingEvent, to trigger whenever a player rings a village bell. Passes along the bell block and the player who rang it. diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 3159e52006ad348bfce4905dcb0987222e4894a5..c803948c713fa898430f478dddfb2a75f6d355ef 100644 +index a3e359d174e4c175e49a6e7c03cbca0661cf8b34..2596159784a6ae0502b9a1b5a7cc573966021380 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -372,10 +372,11 @@ public class CraftEventFactory { +@@ -376,10 +376,11 @@ public class CraftEventFactory { return tradeSelectEvent; } diff --git a/patches/server/0406-Add-more-Evoker-API.patch b/patches/server/0405-Add-more-Evoker-API.patch similarity index 100% rename from patches/server/0406-Add-more-Evoker-API.patch rename to patches/server/0405-Add-more-Evoker-API.patch diff --git a/patches/server/0405-PortalCreateEvent-needs-to-know-its-entity.patch b/patches/server/0405-PortalCreateEvent-needs-to-know-its-entity.patch deleted file mode 100644 index 2a196acb45..0000000000 --- a/patches/server/0405-PortalCreateEvent-needs-to-know-its-entity.patch +++ /dev/null @@ -1,119 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Mariell Hoversholm -Date: Fri, 21 Aug 2020 20:57:54 +0200 -Subject: [PATCH] PortalCreateEvent needs to know its entity - - -diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index cc8825acea0d84b36194313656a6f70d8c049072..7f7445a2b68fd2e6e5fcd509d950a0f8d680c1fe 100644 ---- a/src/main/java/net/minecraft/world/item/ItemStack.java -+++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -522,7 +522,7 @@ public final class ItemStack implements DataComponentHolder { - net.minecraft.world.level.block.state.BlockState block = world.getBlockState(newblockposition); - - if (!(block.getBlock() instanceof BaseEntityBlock)) { // Containers get placed automatically -- block.onPlace(world, newblockposition, oldBlock, true); -+ block.onPlace(world, newblockposition, oldBlock, true, context); // Paper - pass context - } - - world.notifyAndUpdatePhysics(newblockposition, null, oldBlock, block, world.getBlockState(newblockposition), updateFlag, 512); // send null chunk as chunk.k() returns false by this point -diff --git a/src/main/java/net/minecraft/world/level/block/BaseFireBlock.java b/src/main/java/net/minecraft/world/level/block/BaseFireBlock.java -index e499a5eb843af3e2417bcb31add3c63443c0deff..993538f613e52ecd009f01e7b68fddba76b6a3e8 100644 ---- a/src/main/java/net/minecraft/world/level/block/BaseFireBlock.java -+++ b/src/main/java/net/minecraft/world/level/block/BaseFireBlock.java -@@ -144,12 +144,19 @@ public abstract class BaseFireBlock extends Block { - - @Override - protected void onPlace(BlockState state, Level world, BlockPos pos, BlockState oldState, boolean notify) { -+ // Paper start - UseOnContext param -+ this.onPlace(state, world, pos, oldState, notify, null); -+ } -+ -+ @Override -+ protected void onPlace(BlockState state, Level world, BlockPos pos, BlockState oldState, boolean notify, @javax.annotation.Nullable net.minecraft.world.item.context.UseOnContext context) { -+ // Paper end - UseOnContext param - if (!oldState.is(state.getBlock())) { - if (BaseFireBlock.inPortalDimension(world)) { - Optional optional = PortalShape.findEmptyPortalShape(world, pos, Direction.Axis.X); - - if (optional.isPresent()) { -- ((PortalShape) optional.get()).createPortalBlocks(); -+ ((PortalShape) optional.get()).createPortalBlocks(context); // Paper - pass context param - return; - } - } -diff --git a/src/main/java/net/minecraft/world/level/block/FireBlock.java b/src/main/java/net/minecraft/world/level/block/FireBlock.java -index ceaa2a7048afc4955d3695af5291e83a79d83c5d..5dad1aa26a8908cba6a08398a4bad27f31d4c2c0 100644 ---- a/src/main/java/net/minecraft/world/level/block/FireBlock.java -+++ b/src/main/java/net/minecraft/world/level/block/FireBlock.java -@@ -368,8 +368,10 @@ public class FireBlock extends BaseFireBlock { - } - - @Override -- protected void onPlace(BlockState state, Level world, BlockPos pos, BlockState oldState, boolean notify) { -- super.onPlace(state, world, pos, oldState, notify); -+ // Paper start - UseOnContext param -+ protected void onPlace(BlockState state, Level world, BlockPos pos, BlockState oldState, boolean notify, net.minecraft.world.item.context.UseOnContext context) { -+ super.onPlace(state, world, pos, oldState, notify, context); -+ // Paper end - UseOnContext param - world.scheduleTick(pos, (Block) this, FireBlock.getFireTickDelay(world.random)); - } - -diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -index 34f03184f018d00be7c5884f29f98a9ebe461475..6fe078fdf619c4df664f1dce6a0f5d202c21b35e 100644 ---- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -+++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -@@ -154,6 +154,12 @@ public abstract class BlockBehaviour implements FeatureElement { - DebugPackets.sendNeighborsUpdatePacket(world, pos); - } - -+ // Paper start - UseOnContext param -+ protected void onPlace(BlockState state, Level world, BlockPos pos, BlockState oldState, boolean notify, net.minecraft.world.item.context.UseOnContext context) { -+ this.onPlace(state, world, pos, oldState, notify); -+ } -+ // Paper end - UseOnContext param -+ - protected void onPlace(BlockState state, Level world, BlockPos pos, BlockState oldState, boolean notify) { - org.spigotmc.AsyncCatcher.catchOp("block onPlace"); // Spigot - } -@@ -1080,6 +1086,12 @@ public abstract class BlockBehaviour implements FeatureElement { - this.getBlock().updateIndirectNeighbourShapes(this.asState(), world, pos, flags, maxUpdateDepth); - } - -+ // Paper start -+ public void onPlace(Level world, BlockPos pos, BlockState state, boolean notify, net.minecraft.world.item.context.UseOnContext context) { -+ this.getBlock().onPlace(this.asState(), world, pos, state, notify, context); -+ } -+ // Paper end -+ - public void onPlace(Level world, BlockPos pos, BlockState state, boolean notify) { - this.getBlock().onPlace(this.asState(), world, pos, state, notify); - } -diff --git a/src/main/java/net/minecraft/world/level/portal/PortalShape.java b/src/main/java/net/minecraft/world/level/portal/PortalShape.java -index bb22b12b05de29bed00e433630c91f233fa9a366..57139a0b8adcd1ea25cd100be78402681856ee75 100644 ---- a/src/main/java/net/minecraft/world/level/portal/PortalShape.java -+++ b/src/main/java/net/minecraft/world/level/portal/PortalShape.java -@@ -189,7 +189,14 @@ public class PortalShape { - } - - // CraftBukkit start - return boolean -+ @io.papermc.paper.annotation.DoNotUse @Deprecated // Paper - public boolean createPortalBlocks() { -+ // Paper start - UseOnContext param -+ return this.createPortalBlocks(null); -+ } -+ -+ public boolean createPortalBlocks(@Nullable net.minecraft.world.item.context.UseOnContext useOnContext) { -+ // Paper end - UseOnContext param - org.bukkit.World bworld = this.level.getMinecraftWorld().getWorld(); - - // Copy below for loop -@@ -199,7 +206,7 @@ public class PortalShape { - this.blocks.setBlock(blockposition, iblockdata, 18); - }); - -- PortalCreateEvent event = new PortalCreateEvent((java.util.List) (java.util.List) this.blocks.getList(), bworld, null, PortalCreateEvent.CreateReason.FIRE); -+ PortalCreateEvent event = new PortalCreateEvent((java.util.List) (java.util.List) blocks.getList(), bworld, useOnContext == null || useOnContext.getPlayer() == null ? null : useOnContext.getPlayer().getBukkitEntity(), PortalCreateEvent.CreateReason.FIRE); // Paper - pass entity param - this.level.getMinecraftWorld().getServer().server.getPluginManager().callEvent(event); - - if (event.isCancelled()) { diff --git a/patches/server/0407-Add-methods-to-get-translation-keys.patch b/patches/server/0406-Add-methods-to-get-translation-keys.patch similarity index 100% rename from patches/server/0407-Add-methods-to-get-translation-keys.patch rename to patches/server/0406-Add-methods-to-get-translation-keys.patch diff --git a/patches/server/0408-Create-HoverEvent-from-ItemStack-Entity.patch b/patches/server/0407-Create-HoverEvent-from-ItemStack-Entity.patch similarity index 100% rename from patches/server/0408-Create-HoverEvent-from-ItemStack-Entity.patch rename to patches/server/0407-Create-HoverEvent-from-ItemStack-Entity.patch diff --git a/patches/server/0409-Cache-block-data-strings.patch b/patches/server/0408-Cache-block-data-strings.patch similarity index 100% rename from patches/server/0409-Cache-block-data-strings.patch rename to patches/server/0408-Cache-block-data-strings.patch diff --git a/patches/server/0410-Fix-Entity-Teleportation-and-cancel-velocity-if-tele.patch b/patches/server/0409-Fix-Entity-Teleportation-and-cancel-velocity-if-tele.patch similarity index 97% rename from patches/server/0410-Fix-Entity-Teleportation-and-cancel-velocity-if-tele.patch rename to patches/server/0409-Fix-Entity-Teleportation-and-cancel-velocity-if-tele.patch index be1b5bc114..7a5f2e8a41 100644 --- a/patches/server/0410-Fix-Entity-Teleportation-and-cancel-velocity-if-tele.patch +++ b/patches/server/0409-Fix-Entity-Teleportation-and-cancel-velocity-if-tele.patch @@ -9,7 +9,7 @@ as this is how Vanilla teleports entities. Cancel any pending motion when teleported. diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 762998180eb7b10151f390ee79690c68d66622f2..d97b1040ecec1d30fdd1bf309a8215955642fb93 100644 +index 19f13d845467364a25417ac8fd6404f16e18eaa2..45313a53ef181e4494e4d024c5b79a3ca7f803e1 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -679,7 +679,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -21,7 +21,7 @@ index 762998180eb7b10151f390ee79690c68d66622f2..d97b1040ecec1d30fdd1bf309a821595 this.lastGoodX = this.awaitingPositionFromClient.x; this.lastGoodY = this.awaitingPositionFromClient.y; this.lastGoodZ = this.awaitingPositionFromClient.z; -@@ -1595,7 +1595,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1590,7 +1590,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl // CraftBukkit end this.awaitingTeleportTime = this.tickCount; diff --git a/patches/server/0411-Add-additional-open-container-api-to-HumanEntity.patch b/patches/server/0410-Add-additional-open-container-api-to-HumanEntity.patch similarity index 100% rename from patches/server/0411-Add-additional-open-container-api-to-HumanEntity.patch rename to patches/server/0410-Add-additional-open-container-api-to-HumanEntity.patch diff --git a/patches/server/0412-Cache-DataFixerUpper-Rewrite-Rules-on-demand.patch b/patches/server/0411-Cache-DataFixerUpper-Rewrite-Rules-on-demand.patch similarity index 100% rename from patches/server/0412-Cache-DataFixerUpper-Rewrite-Rules-on-demand.patch rename to patches/server/0411-Cache-DataFixerUpper-Rewrite-Rules-on-demand.patch diff --git a/patches/server/0413-Extend-block-drop-capture-to-capture-all-items-added.patch b/patches/server/0412-Extend-block-drop-capture-to-capture-all-items-added.patch similarity index 100% rename from patches/server/0413-Extend-block-drop-capture-to-capture-all-items-added.patch rename to patches/server/0412-Extend-block-drop-capture-to-capture-all-items-added.patch diff --git a/patches/server/0414-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch b/patches/server/0413-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch similarity index 100% rename from patches/server/0414-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch rename to patches/server/0413-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch diff --git a/patches/server/0415-Lazily-track-plugin-scoreboards-by-default.patch b/patches/server/0414-Lazily-track-plugin-scoreboards-by-default.patch similarity index 100% rename from patches/server/0415-Lazily-track-plugin-scoreboards-by-default.patch rename to patches/server/0414-Lazily-track-plugin-scoreboards-by-default.patch diff --git a/patches/server/0416-Entity-isTicking.patch b/patches/server/0415-Entity-isTicking.patch similarity index 100% rename from patches/server/0416-Entity-isTicking.patch rename to patches/server/0415-Entity-isTicking.patch diff --git a/patches/server/0417-Fix-deop-kicking-non-whitelisted-player-when-white-l.patch b/patches/server/0416-Fix-deop-kicking-non-whitelisted-player-when-white-l.patch similarity index 100% rename from patches/server/0417-Fix-deop-kicking-non-whitelisted-player-when-white-l.patch rename to patches/server/0416-Fix-deop-kicking-non-whitelisted-player-when-white-l.patch diff --git a/patches/server/0418-Fix-Concurrency-issue-in-ShufflingList.patch b/patches/server/0417-Fix-Concurrency-issue-in-ShufflingList.patch similarity index 100% rename from patches/server/0418-Fix-Concurrency-issue-in-ShufflingList.patch rename to patches/server/0417-Fix-Concurrency-issue-in-ShufflingList.patch diff --git a/patches/server/0419-Reset-Ender-Crystals-on-Dragon-Spawn.patch b/patches/server/0418-Reset-Ender-Crystals-on-Dragon-Spawn.patch similarity index 100% rename from patches/server/0419-Reset-Ender-Crystals-on-Dragon-Spawn.patch rename to patches/server/0418-Reset-Ender-Crystals-on-Dragon-Spawn.patch diff --git a/patches/server/0420-Fix-for-large-move-vectors-crashing-server.patch b/patches/server/0419-Fix-for-large-move-vectors-crashing-server.patch similarity index 96% rename from patches/server/0420-Fix-for-large-move-vectors-crashing-server.patch rename to patches/server/0419-Fix-for-large-move-vectors-crashing-server.patch index e987725d68..bdedd8e886 100644 --- a/patches/server/0420-Fix-for-large-move-vectors-crashing-server.patch +++ b/patches/server/0419-Fix-for-large-move-vectors-crashing-server.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Fix for large move vectors crashing server Check movement distance also based on current position. diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index d97b1040ecec1d30fdd1bf309a8215955642fb93..7a743d81c387179218c519a7e27702605069caeb 100644 +index 45313a53ef181e4494e4d024c5b79a3ca7f803e1..ffdd7c427bf563b1d87d65586b125fd081e73dd8 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -492,9 +492,9 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -53,7 +53,7 @@ index d97b1040ecec1d30fdd1bf309a8215955642fb93..7a743d81c387179218c519a7e2770260 boolean flag1 = entity.verticalCollisionBelow; if (entity instanceof LivingEntity) { -@@ -1254,7 +1263,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1249,7 +1258,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl double d7 = d1 - this.firstGoodY; double d8 = d2 - this.firstGoodZ; double d9 = this.player.getDeltaMovement().lengthSqr(); @@ -71,7 +71,7 @@ index d97b1040ecec1d30fdd1bf309a8215955642fb93..7a743d81c387179218c519a7e2770260 if (this.player.isSleeping()) { if (d10 > 1.0D) { -@@ -1310,9 +1328,9 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1305,9 +1323,9 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl AABB axisalignedbb = this.player.getBoundingBox(); diff --git a/patches/server/0421-Optimise-getType-calls.patch b/patches/server/0420-Optimise-getType-calls.patch similarity index 100% rename from patches/server/0421-Optimise-getType-calls.patch rename to patches/server/0420-Optimise-getType-calls.patch diff --git a/patches/server/0422-Villager-resetOffers.patch b/patches/server/0421-Villager-resetOffers.patch similarity index 100% rename from patches/server/0422-Villager-resetOffers.patch rename to patches/server/0421-Villager-resetOffers.patch diff --git a/patches/server/0423-Retain-block-place-order-when-capturing-blockstates.patch b/patches/server/0422-Retain-block-place-order-when-capturing-blockstates.patch similarity index 93% rename from patches/server/0423-Retain-block-place-order-when-capturing-blockstates.patch rename to patches/server/0422-Retain-block-place-order-when-capturing-blockstates.patch index e7d46e41eb..bac1a1074b 100644 --- a/patches/server/0423-Retain-block-place-order-when-capturing-blockstates.patch +++ b/patches/server/0422-Retain-block-place-order-when-capturing-blockstates.patch @@ -10,7 +10,7 @@ In general, look at making this logic more robust (i.e properly handling cases where a captured entry is overriden) - but for now this will do. diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 5a3a89c568d42a2adbc2b6e2631fd4b70e54f0bf..cfd5d3e50197b38d0ffef6debbb7f5b4b208382a 100644 +index 60b04a16c6cb0a7109bda5c16e23c1d56ab7afad..144d243e0d6ba3ae3f0b0bf457fa516e2b4f416f 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -152,7 +152,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { diff --git a/patches/server/0424-Fix-item-locations-dropped-from-campfires.patch b/patches/server/0423-Fix-item-locations-dropped-from-campfires.patch similarity index 100% rename from patches/server/0424-Fix-item-locations-dropped-from-campfires.patch rename to patches/server/0423-Fix-item-locations-dropped-from-campfires.patch diff --git a/patches/server/0425-Fix-bell-block-entity-memory-leak.patch b/patches/server/0424-Fix-bell-block-entity-memory-leak.patch similarity index 100% rename from patches/server/0425-Fix-bell-block-entity-memory-leak.patch rename to patches/server/0424-Fix-bell-block-entity-memory-leak.patch diff --git a/patches/server/0426-Avoid-error-bubbling-up-when-item-stack-is-empty-in-.patch b/patches/server/0425-Avoid-error-bubbling-up-when-item-stack-is-empty-in-.patch similarity index 100% rename from patches/server/0426-Avoid-error-bubbling-up-when-item-stack-is-empty-in-.patch rename to patches/server/0425-Avoid-error-bubbling-up-when-item-stack-is-empty-in-.patch diff --git a/patches/server/0427-Add-getOfflinePlayerIfCached-String.patch b/patches/server/0426-Add-getOfflinePlayerIfCached-String.patch similarity index 100% rename from patches/server/0427-Add-getOfflinePlayerIfCached-String.patch rename to patches/server/0426-Add-getOfflinePlayerIfCached-String.patch diff --git a/patches/server/0428-Add-ignore-discounts-API.patch b/patches/server/0427-Add-ignore-discounts-API.patch similarity index 100% rename from patches/server/0428-Add-ignore-discounts-API.patch rename to patches/server/0427-Add-ignore-discounts-API.patch diff --git a/patches/server/0429-Toggle-for-removing-existing-dragon.patch b/patches/server/0428-Toggle-for-removing-existing-dragon.patch similarity index 100% rename from patches/server/0429-Toggle-for-removing-existing-dragon.patch rename to patches/server/0428-Toggle-for-removing-existing-dragon.patch diff --git a/patches/server/0430-Fix-client-lag-on-advancement-loading.patch b/patches/server/0429-Fix-client-lag-on-advancement-loading.patch similarity index 95% rename from patches/server/0430-Fix-client-lag-on-advancement-loading.patch rename to patches/server/0429-Fix-client-lag-on-advancement-loading.patch index 80a48d30b1..f93c34b2cb 100644 --- a/patches/server/0430-Fix-client-lag-on-advancement-loading.patch +++ b/patches/server/0429-Fix-client-lag-on-advancement-loading.patch @@ -15,7 +15,7 @@ manually reload the advancement data for all players, which normally takes place as a part of the datapack reloading. diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 22fc5bf2024f70f85cc278ddd374bff0a6d626fa..12c4f68623119427a30c1eec28b4aff0400aa8c0 100644 +index 2979277847635c0bef54d06be30e5051557cc5e9..5fe9b94c342a91d6fb3bc582ac7e84cb25b90a9e 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java @@ -317,7 +317,13 @@ public final class CraftMagicNumbers implements UnsafeValues { diff --git a/patches/server/0431-Item-no-age-no-player-pickup.patch b/patches/server/0430-Item-no-age-no-player-pickup.patch similarity index 100% rename from patches/server/0431-Item-no-age-no-player-pickup.patch rename to patches/server/0430-Item-no-age-no-player-pickup.patch diff --git a/patches/server/0432-Beacon-API-custom-effect-ranges.patch b/patches/server/0431-Beacon-API-custom-effect-ranges.patch similarity index 100% rename from patches/server/0432-Beacon-API-custom-effect-ranges.patch rename to patches/server/0431-Beacon-API-custom-effect-ranges.patch diff --git a/patches/server/0433-Add-API-for-quit-reason.patch b/patches/server/0432-Add-API-for-quit-reason.patch similarity index 98% rename from patches/server/0433-Add-API-for-quit-reason.patch rename to patches/server/0432-Add-API-for-quit-reason.patch index 6a3fe2a2e8..22a6ea3114 100644 --- a/patches/server/0433-Add-API-for-quit-reason.patch +++ b/patches/server/0432-Add-API-for-quit-reason.patch @@ -52,7 +52,7 @@ index a3c67bdc2c08b3550534f37d15b0db90b479e34f..24bf661e76fb421a8be565d9ea68edf7 this.connection.disconnect(disconnectiondetails); })); diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 51426da5f3e7b9f8631880a04cef0a58b00233df..ec080eb8e3930b6c5cc08c3061535b379a99a7d1 100644 +index c322d8284b4d17d6b9a949d85849892d7c88817e..f11309e0a067546aa5b14272156087664dbdd021 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -570,7 +570,7 @@ public abstract class PlayerList { diff --git a/patches/server/0434-Add-Wandering-Trader-spawn-rate-config-options.patch b/patches/server/0433-Add-Wandering-Trader-spawn-rate-config-options.patch similarity index 100% rename from patches/server/0434-Add-Wandering-Trader-spawn-rate-config-options.patch rename to patches/server/0433-Add-Wandering-Trader-spawn-rate-config-options.patch diff --git a/patches/server/0435-Add-Destroy-Speed-API.patch b/patches/server/0434-Add-Destroy-Speed-API.patch similarity index 100% rename from patches/server/0435-Add-Destroy-Speed-API.patch rename to patches/server/0434-Add-Destroy-Speed-API.patch diff --git a/patches/server/0436-Fix-Player-spawnParticle-x-y-z-precision-loss.patch b/patches/server/0435-Fix-Player-spawnParticle-x-y-z-precision-loss.patch similarity index 93% rename from patches/server/0436-Fix-Player-spawnParticle-x-y-z-precision-loss.patch rename to patches/server/0435-Fix-Player-spawnParticle-x-y-z-precision-loss.patch index 60ac65b823..ed356df971 100644 --- a/patches/server/0436-Fix-Player-spawnParticle-x-y-z-precision-loss.patch +++ b/patches/server/0435-Fix-Player-spawnParticle-x-y-z-precision-loss.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix Player spawnParticle x/y/z precision loss diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 99799563942693ae36188092d76054fdff97d4ca..766242aa6930b37630be77e421b4b5675c5feb0d 100644 +index 1292e7b9889777448b728ef3bb3ae4cb25d42d61..a3b1a19fb28dfba93ae04ea0859f744ede1579f6 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -2707,7 +2707,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0437-Add-LivingEntity-clearActiveItem.patch b/patches/server/0436-Add-LivingEntity-clearActiveItem.patch similarity index 100% rename from patches/server/0437-Add-LivingEntity-clearActiveItem.patch rename to patches/server/0436-Add-LivingEntity-clearActiveItem.patch diff --git a/patches/server/0438-Add-PlayerItemCooldownEvent.patch b/patches/server/0437-Add-PlayerItemCooldownEvent.patch similarity index 100% rename from patches/server/0438-Add-PlayerItemCooldownEvent.patch rename to patches/server/0437-Add-PlayerItemCooldownEvent.patch diff --git a/patches/server/0439-Significantly-improve-performance-of-the-end-generat.patch b/patches/server/0438-Significantly-improve-performance-of-the-end-generat.patch similarity index 100% rename from patches/server/0439-Significantly-improve-performance-of-the-end-generat.patch rename to patches/server/0438-Significantly-improve-performance-of-the-end-generat.patch diff --git a/patches/server/0440-More-lightning-API.patch b/patches/server/0439-More-lightning-API.patch similarity index 100% rename from patches/server/0440-More-lightning-API.patch rename to patches/server/0439-More-lightning-API.patch diff --git a/patches/server/0441-Climbing-should-not-bypass-cramming-gamerule.patch b/patches/server/0440-Climbing-should-not-bypass-cramming-gamerule.patch similarity index 100% rename from patches/server/0441-Climbing-should-not-bypass-cramming-gamerule.patch rename to patches/server/0440-Climbing-should-not-bypass-cramming-gamerule.patch diff --git a/patches/server/0442-Add-missing-default-perms-for-commands.patch b/patches/server/0441-Add-missing-default-perms-for-commands.patch similarity index 100% rename from patches/server/0442-Add-missing-default-perms-for-commands.patch rename to patches/server/0441-Add-missing-default-perms-for-commands.patch diff --git a/patches/server/0443-Add-PlayerShearBlockEvent.patch b/patches/server/0442-Add-PlayerShearBlockEvent.patch similarity index 100% rename from patches/server/0443-Add-PlayerShearBlockEvent.patch rename to patches/server/0442-Add-PlayerShearBlockEvent.patch diff --git a/patches/server/0444-Limit-recipe-packets.patch b/patches/server/0443-Limit-recipe-packets.patch similarity index 94% rename from patches/server/0444-Limit-recipe-packets.patch rename to patches/server/0443-Limit-recipe-packets.patch index f880991f70..8b3e4ef5c1 100644 --- a/patches/server/0444-Limit-recipe-packets.patch +++ b/patches/server/0443-Limit-recipe-packets.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Limit recipe packets diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 7a743d81c387179218c519a7e27702605069caeb..a0bac2fe6222964b098cfaf9470f09c43328fcf5 100644 +index ffdd7c427bf563b1d87d65586b125fd081e73dd8..cdf29c17cac7a5bcfcd12d6e306efad0bc87a382 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -266,6 +266,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -24,7 +24,7 @@ index 7a743d81c387179218c519a7e27702605069caeb..a0bac2fe6222964b098cfaf9470f09c4 /* Use thread-safe field access instead if (this.chatSpamTickCount > 0) { --this.chatSpamTickCount; -@@ -3070,6 +3072,14 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -3065,6 +3067,14 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @Override public void handlePlaceRecipe(ServerboundPlaceRecipePacket packet) { diff --git a/patches/server/0445-Fix-CraftSound-backwards-compatibility.patch b/patches/server/0444-Fix-CraftSound-backwards-compatibility.patch similarity index 100% rename from patches/server/0445-Fix-CraftSound-backwards-compatibility.patch rename to patches/server/0444-Fix-CraftSound-backwards-compatibility.patch diff --git a/patches/server/0446-Player-Chunk-Load-Unload-Events.patch b/patches/server/0445-Player-Chunk-Load-Unload-Events.patch similarity index 100% rename from patches/server/0446-Player-Chunk-Load-Unload-Events.patch rename to patches/server/0445-Player-Chunk-Load-Unload-Events.patch diff --git a/patches/server/0447-Optimize-Dynamic-get-Missing-Keys.patch b/patches/server/0446-Optimize-Dynamic-get-Missing-Keys.patch similarity index 100% rename from patches/server/0447-Optimize-Dynamic-get-Missing-Keys.patch rename to patches/server/0446-Optimize-Dynamic-get-Missing-Keys.patch diff --git a/patches/server/0448-Expose-LivingEntity-hurt-direction.patch b/patches/server/0447-Expose-LivingEntity-hurt-direction.patch similarity index 100% rename from patches/server/0448-Expose-LivingEntity-hurt-direction.patch rename to patches/server/0447-Expose-LivingEntity-hurt-direction.patch diff --git a/patches/server/0449-Add-OBSTRUCTED-reason-to-BedEnterResult.patch b/patches/server/0448-Add-OBSTRUCTED-reason-to-BedEnterResult.patch similarity index 86% rename from patches/server/0449-Add-OBSTRUCTED-reason-to-BedEnterResult.patch rename to patches/server/0448-Add-OBSTRUCTED-reason-to-BedEnterResult.patch index 5affb3e4f5..e2b1ac7753 100644 --- a/patches/server/0449-Add-OBSTRUCTED-reason-to-BedEnterResult.patch +++ b/patches/server/0448-Add-OBSTRUCTED-reason-to-BedEnterResult.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add OBSTRUCTED reason to BedEnterResult diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index c803948c713fa898430f478dddfb2a75f6d355ef..21c8dcf66847c83f38b57a592cf3b58a68a5657f 100644 +index 2596159784a6ae0502b9a1b5a7cc573966021380..2be5135d3e17c3344ffbdb3f2f55d45eb6753c61 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -307,6 +307,10 @@ public class CraftEventFactory { +@@ -311,6 +311,10 @@ public class CraftEventFactory { return BedEnterResult.TOO_FAR_AWAY; case NOT_SAFE: return BedEnterResult.NOT_SAFE; diff --git a/patches/server/0450-Fix-crash-from-invalid-ingredient-lists-in-VillagerA.patch b/patches/server/0449-Fix-crash-from-invalid-ingredient-lists-in-VillagerA.patch similarity index 100% rename from patches/server/0450-Fix-crash-from-invalid-ingredient-lists-in-VillagerA.patch rename to patches/server/0449-Fix-crash-from-invalid-ingredient-lists-in-VillagerA.patch diff --git a/patches/server/0451-Add-TargetHitEvent.patch b/patches/server/0450-Add-TargetHitEvent.patch similarity index 100% rename from patches/server/0451-Add-TargetHitEvent.patch rename to patches/server/0450-Add-TargetHitEvent.patch diff --git a/patches/server/0452-MC-4-Fix-item-position-desync.patch b/patches/server/0451-MC-4-Fix-item-position-desync.patch similarity index 100% rename from patches/server/0452-MC-4-Fix-item-position-desync.patch rename to patches/server/0451-MC-4-Fix-item-position-desync.patch diff --git a/patches/server/0453-Additional-Block-Material-API.patch b/patches/server/0452-Additional-Block-Material-API.patch similarity index 100% rename from patches/server/0453-Additional-Block-Material-API.patch rename to patches/server/0452-Additional-Block-Material-API.patch diff --git a/patches/server/0454-Fix-harming-potion-dupe.patch b/patches/server/0453-Fix-harming-potion-dupe.patch similarity index 100% rename from patches/server/0454-Fix-harming-potion-dupe.patch rename to patches/server/0453-Fix-harming-potion-dupe.patch diff --git a/patches/server/0455-API-to-get-Material-from-Boats-and-Minecarts.patch b/patches/server/0454-API-to-get-Material-from-Boats-and-Minecarts.patch similarity index 100% rename from patches/server/0455-API-to-get-Material-from-Boats-and-Minecarts.patch rename to patches/server/0454-API-to-get-Material-from-Boats-and-Minecarts.patch diff --git a/patches/server/0456-Allow-disabling-mob-spawner-spawn-egg-transformation.patch b/patches/server/0455-Allow-disabling-mob-spawner-spawn-egg-transformation.patch similarity index 100% rename from patches/server/0456-Allow-disabling-mob-spawner-spawn-egg-transformation.patch rename to patches/server/0455-Allow-disabling-mob-spawner-spawn-egg-transformation.patch diff --git a/patches/server/0457-Fix-Not-a-string-Map-Conversion-spam.patch b/patches/server/0456-Fix-Not-a-string-Map-Conversion-spam.patch similarity index 100% rename from patches/server/0457-Fix-Not-a-string-Map-Conversion-spam.patch rename to patches/server/0456-Fix-Not-a-string-Map-Conversion-spam.patch diff --git a/patches/server/0458-Add-PlayerFlowerPotManipulateEvent.patch b/patches/server/0457-Add-PlayerFlowerPotManipulateEvent.patch similarity index 100% rename from patches/server/0458-Add-PlayerFlowerPotManipulateEvent.patch rename to patches/server/0457-Add-PlayerFlowerPotManipulateEvent.patch diff --git a/patches/server/0459-Fix-interact-event-not-being-called-sometimes.patch b/patches/server/0458-Fix-interact-event-not-being-called-sometimes.patch similarity index 94% rename from patches/server/0459-Fix-interact-event-not-being-called-sometimes.patch rename to patches/server/0458-Fix-interact-event-not-being-called-sometimes.patch index 50b8b7414c..50207db6c0 100644 --- a/patches/server/0459-Fix-interact-event-not-being-called-sometimes.patch +++ b/patches/server/0458-Fix-interact-event-not-being-called-sometimes.patch @@ -11,10 +11,10 @@ Subject: [PATCH] Fix interact event not being called sometimes Co-authored-by: Moulberry diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index a0bac2fe6222964b098cfaf9470f09c43328fcf5..09e40d6e50b7c1ddd1451981d05ecbbef43cfed2 100644 +index cdf29c17cac7a5bcfcd12d6e306efad0bc87a382..afed142d5155c178807c6b26cb5766ae7d6e328a 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1771,7 +1771,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1766,7 +1766,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl MutableComponent ichatmutablecomponent = Component.translatable("build.tooHigh", i - 1).withStyle(ChatFormatting.RED); this.player.sendSystemMessage(ichatmutablecomponent, true); @@ -23,7 +23,7 @@ index a0bac2fe6222964b098cfaf9470f09c43328fcf5..09e40d6e50b7c1ddd1451981d05ecbbe this.player.swing(enumhand, true); } } -@@ -2392,13 +2392,20 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2387,13 +2387,20 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl double d3 = Math.max(this.player.blockInteractionRange(), this.player.entityInteractionRange()); // SPIGOT-5607: Only call interact event if no block or entity is being clicked. Use bukkit ray trace method, because it handles blocks and entities at the same time // SPIGOT-7429: Make sure to call PlayerInteractEvent for spectators and non-pickable entities diff --git a/patches/server/0460-Zombie-API-breaking-doors.patch b/patches/server/0459-Zombie-API-breaking-doors.patch similarity index 100% rename from patches/server/0460-Zombie-API-breaking-doors.patch rename to patches/server/0459-Zombie-API-breaking-doors.patch diff --git a/patches/server/0461-Fix-nerfed-slime-when-splitting.patch b/patches/server/0460-Fix-nerfed-slime-when-splitting.patch similarity index 100% rename from patches/server/0461-Fix-nerfed-slime-when-splitting.patch rename to patches/server/0460-Fix-nerfed-slime-when-splitting.patch diff --git a/patches/server/0462-Add-EntityLoadCrossbowEvent.patch b/patches/server/0461-Add-EntityLoadCrossbowEvent.patch similarity index 100% rename from patches/server/0462-Add-EntityLoadCrossbowEvent.patch rename to patches/server/0461-Add-EntityLoadCrossbowEvent.patch diff --git a/patches/server/0463-Add-WorldGameRuleChangeEvent.patch b/patches/server/0462-Add-WorldGameRuleChangeEvent.patch similarity index 100% rename from patches/server/0463-Add-WorldGameRuleChangeEvent.patch rename to patches/server/0462-Add-WorldGameRuleChangeEvent.patch diff --git a/patches/server/0464-Add-ServerResourcesReloadedEvent.patch b/patches/server/0463-Add-ServerResourcesReloadedEvent.patch similarity index 100% rename from patches/server/0464-Add-ServerResourcesReloadedEvent.patch rename to patches/server/0463-Add-ServerResourcesReloadedEvent.patch diff --git a/patches/server/0465-Add-world-settings-for-mobs-picking-up-loot.patch b/patches/server/0464-Add-world-settings-for-mobs-picking-up-loot.patch similarity index 100% rename from patches/server/0465-Add-world-settings-for-mobs-picking-up-loot.patch rename to patches/server/0464-Add-world-settings-for-mobs-picking-up-loot.patch diff --git a/patches/server/0466-Add-BlockFailedDispenseEvent.patch b/patches/server/0465-Add-BlockFailedDispenseEvent.patch similarity index 92% rename from patches/server/0466-Add-BlockFailedDispenseEvent.patch rename to patches/server/0465-Add-BlockFailedDispenseEvent.patch index 835b80d34d..2b4d4bdeac 100644 --- a/patches/server/0466-Add-BlockFailedDispenseEvent.patch +++ b/patches/server/0465-Add-BlockFailedDispenseEvent.patch @@ -20,7 +20,7 @@ index c7256ffbe57c594556ee85134c9ab166f8c0e0c7..94bcbaf7daf7dfe566f508d1170a4339 ItemStack itemstack = tileentitydispenser.getItem(i); DispenseItemBehavior idispensebehavior = this.getDispenseMethod(world, itemstack); diff --git a/src/main/java/net/minecraft/world/level/block/DropperBlock.java b/src/main/java/net/minecraft/world/level/block/DropperBlock.java -index a1599eae0d8e9f0298fc6996ad03b0d6ba78f04f..083ddfb8fffa04dad6eeca2274f290a08e62b5eb 100644 +index a08e8571f3a83afc80c2f1758a9029cd28ed6947..91b514967405115f22edf4255775361a672e5c2f 100644 --- a/src/main/java/net/minecraft/world/level/block/DropperBlock.java +++ b/src/main/java/net/minecraft/world/level/block/DropperBlock.java @@ -60,6 +60,7 @@ public class DropperBlock extends DispenserBlock { @@ -32,10 +32,10 @@ index a1599eae0d8e9f0298fc6996ad03b0d6ba78f04f..083ddfb8fffa04dad6eeca2274f290a0 } else { ItemStack itemstack = tileentitydispenser.getItem(i); diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 21c8dcf66847c83f38b57a592cf3b58a68a5657f..19ca8953facd69a5720652c3bcf1e1e3be34a3a3 100644 +index 2be5135d3e17c3344ffbdb3f2f55d45eb6753c61..c01d4302e145c779cc4031927ab555e1c7748155 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -2098,4 +2098,12 @@ public class CraftEventFactory { +@@ -2111,4 +2111,12 @@ public class CraftEventFactory { return org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(event.getPotion()); } // Paper end - WitchReadyPotionEvent diff --git a/patches/server/0467-Add-PlayerLecternPageChangeEvent.patch b/patches/server/0466-Add-PlayerLecternPageChangeEvent.patch similarity index 96% rename from patches/server/0467-Add-PlayerLecternPageChangeEvent.patch rename to patches/server/0466-Add-PlayerLecternPageChangeEvent.patch index 2e62d2becf..15052d962d 100644 --- a/patches/server/0467-Add-PlayerLecternPageChangeEvent.patch +++ b/patches/server/0466-Add-PlayerLecternPageChangeEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add PlayerLecternPageChangeEvent diff --git a/src/main/java/net/minecraft/world/inventory/LecternMenu.java b/src/main/java/net/minecraft/world/inventory/LecternMenu.java -index 19858ecd7cfaaf0fb09552292bf573bb02b3a6ec..ccba06c419732c63f6b255f5f8c1f7a95f3ecbee 100644 +index 1b3119751617366cf753008d38be566cd7ee2453..df4ae5d37b9aa5b8fb26c5773a47a5a85f831982 100644 --- a/src/main/java/net/minecraft/world/inventory/LecternMenu.java +++ b/src/main/java/net/minecraft/world/inventory/LecternMenu.java @@ -64,6 +64,7 @@ public class LecternMenu extends AbstractContainerMenu { diff --git a/patches/server/0468-Add-PlayerLoomPatternSelectEvent.patch b/patches/server/0467-Add-PlayerLoomPatternSelectEvent.patch similarity index 96% rename from patches/server/0468-Add-PlayerLoomPatternSelectEvent.patch rename to patches/server/0467-Add-PlayerLoomPatternSelectEvent.patch index 4d74c20681..fbbc2f6ae8 100644 --- a/patches/server/0468-Add-PlayerLoomPatternSelectEvent.patch +++ b/patches/server/0467-Add-PlayerLoomPatternSelectEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add PlayerLoomPatternSelectEvent diff --git a/src/main/java/net/minecraft/world/inventory/LoomMenu.java b/src/main/java/net/minecraft/world/inventory/LoomMenu.java -index 4bd720a97da27c4fd97788d4c504c0174f0f6c25..72ad78659a373213ed1f37498754adaf18f1f68b 100644 +index 2de558dd205a1078fdcac1bce256d059b9bf5d5f..f76ef029132c6a08d4e70585bc440eccdc626b16 100644 --- a/src/main/java/net/minecraft/world/inventory/LoomMenu.java +++ b/src/main/java/net/minecraft/world/inventory/LoomMenu.java @@ -174,8 +174,32 @@ public class LoomMenu extends AbstractContainerMenu { diff --git a/patches/server/0469-Configurable-door-breaking-difficulty.patch b/patches/server/0468-Configurable-door-breaking-difficulty.patch similarity index 100% rename from patches/server/0469-Configurable-door-breaking-difficulty.patch rename to patches/server/0468-Configurable-door-breaking-difficulty.patch diff --git a/patches/server/0470-Empty-commands-shall-not-be-dispatched.patch b/patches/server/0469-Empty-commands-shall-not-be-dispatched.patch similarity index 100% rename from patches/server/0470-Empty-commands-shall-not-be-dispatched.patch rename to patches/server/0469-Empty-commands-shall-not-be-dispatched.patch diff --git a/patches/server/0471-Remove-stale-POIs.patch b/patches/server/0470-Remove-stale-POIs.patch similarity index 100% rename from patches/server/0471-Remove-stale-POIs.patch rename to patches/server/0470-Remove-stale-POIs.patch diff --git a/patches/server/0472-Fix-villager-boat-exploit.patch b/patches/server/0471-Fix-villager-boat-exploit.patch similarity index 93% rename from patches/server/0472-Fix-villager-boat-exploit.patch rename to patches/server/0471-Fix-villager-boat-exploit.patch index 8f9249892b..e835b1ee94 100644 --- a/patches/server/0472-Fix-villager-boat-exploit.patch +++ b/patches/server/0471-Fix-villager-boat-exploit.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix villager boat exploit diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index ec080eb8e3930b6c5cc08c3061535b379a99a7d1..846132dad557b04a3d52184cfb1c0dd35673f8c6 100644 +index f11309e0a067546aa5b14272156087664dbdd021..44422100246a61f8353f26d5149f3e96c8832fea 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -595,6 +595,14 @@ public abstract class PlayerList { diff --git a/patches/server/0473-Add-sendOpLevel-API.patch b/patches/server/0472-Add-sendOpLevel-API.patch similarity index 92% rename from patches/server/0473-Add-sendOpLevel-API.patch rename to patches/server/0472-Add-sendOpLevel-API.patch index 25dff52343..d1c8e24cc4 100644 --- a/patches/server/0473-Add-sendOpLevel-API.patch +++ b/patches/server/0472-Add-sendOpLevel-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add sendOpLevel API diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 846132dad557b04a3d52184cfb1c0dd35673f8c6..5100b2d00452f97849239ca32164eed4345e4024 100644 +index 44422100246a61f8353f26d5149f3e96c8832fea..3c7d31725c4a5dd7728fa394f88d37a0e493e919 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -1062,6 +1062,11 @@ public abstract class PlayerList { @@ -32,7 +32,7 @@ index 846132dad557b04a3d52184cfb1c0dd35673f8c6..5100b2d00452f97849239ca32164eed4 public boolean isWhiteListed(GameProfile profile) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 766242aa6930b37630be77e421b4b5675c5feb0d..7652da85170cd5a64d1b443430b85c388e2939a9 100644 +index a3b1a19fb28dfba93ae04ea0859f744ede1579f6..963ae66acc25602e15134d30d3e496802b17dc41 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -677,6 +677,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0474-Add-RegistryAccess-for-managing-Registries.patch b/patches/server/0473-Add-RegistryAccess-for-managing-Registries.patch similarity index 98% rename from patches/server/0474-Add-RegistryAccess-for-managing-Registries.patch rename to patches/server/0473-Add-RegistryAccess-for-managing-Registries.patch index 1c7e1f531e..0ee306bcf5 100644 --- a/patches/server/0474-Add-RegistryAccess-for-managing-Registries.patch +++ b/patches/server/0473-Add-RegistryAccess-for-managing-Registries.patch @@ -12,10 +12,10 @@ public net.minecraft.server.RegistryLayer STATIC_ACCESS diff --git a/src/main/java/io/papermc/paper/registry/PaperRegistries.java b/src/main/java/io/papermc/paper/registry/PaperRegistries.java new file mode 100644 -index 0000000000000000000000000000000000000000..ead718efde812846fefec3e86d896fef7deb3d97 +index 0000000000000000000000000000000000000000..675f5d03478907e3d8284cbea191f01c1eb15769 --- /dev/null +++ b/src/main/java/io/papermc/paper/registry/PaperRegistries.java -@@ -0,0 +1,141 @@ +@@ -0,0 +1,143 @@ +package io.papermc.paper.registry; + +import io.papermc.paper.adventure.PaperAdventure; @@ -35,10 +35,12 @@ index 0000000000000000000000000000000000000000..ead718efde812846fefec3e86d896fef +import org.bukkit.Keyed; +import org.bukkit.MusicInstrument; +import org.bukkit.block.BlockType; ++import org.bukkit.block.banner.PatternType; +import org.bukkit.craftbukkit.CraftGameEvent; +import org.bukkit.craftbukkit.CraftJukeboxSong; +import org.bukkit.craftbukkit.CraftMusicInstrument; +import org.bukkit.craftbukkit.block.CraftBlockType; ++import org.bukkit.craftbukkit.block.banner.CraftPatternType; +import org.bukkit.craftbukkit.damage.CraftDamageType; +import org.bukkit.craftbukkit.enchantments.CraftEnchantment; +import org.bukkit.craftbukkit.entity.CraftCat; @@ -102,12 +104,12 @@ index 0000000000000000000000000000000000000000..ead718efde812846fefec3e86d896fef + entry(Registries.WOLF_VARIANT, RegistryKey.WOLF_VARIANT, Wolf.Variant.class, CraftWolf.CraftVariant::new).delayed(), + entry(Registries.ENCHANTMENT, RegistryKey.ENCHANTMENT, Enchantment.class, CraftEnchantment::new).withSerializationUpdater(FieldRename.ENCHANTMENT_RENAME).delayed(), + entry(Registries.JUKEBOX_SONG, RegistryKey.JUKEBOX_SONG, JukeboxSong.class, CraftJukeboxSong::new).delayed(), ++ entry(Registries.BANNER_PATTERN, RegistryKey.BANNER_PATTERN, PatternType.class, CraftPatternType::new).delayed(), + + // api-only + apiOnly(Registries.BIOME, RegistryKey.BIOME, () -> org.bukkit.Registry.BIOME), + apiOnly(Registries.PAINTING_VARIANT, RegistryKey.PAINTING_VARIANT, () -> org.bukkit.Registry.ART), + apiOnly(Registries.ATTRIBUTE, RegistryKey.ATTRIBUTE, () -> org.bukkit.Registry.ATTRIBUTE), -+ apiOnly(Registries.BANNER_PATTERN, RegistryKey.BANNER_PATTERN, () -> org.bukkit.Registry.BANNER_PATTERN), + apiOnly(Registries.ENTITY_TYPE, RegistryKey.ENTITY_TYPE, () -> org.bukkit.Registry.ENTITY_TYPE), + apiOnly(Registries.PARTICLE_TYPE, RegistryKey.PARTICLE_TYPE, () -> org.bukkit.Registry.PARTICLE_TYPE), + apiOnly(Registries.POTION, RegistryKey.POTION, () -> org.bukkit.Registry.POTION), @@ -727,10 +729,10 @@ index 1dd22f11b7e2983a3069dea94c0f02b43ff1f736..397bdacab9517354875ebc0bc68d3505 String string = Registries.elementsDirPath(type.registryKey()); SimpleJsonResourceReloadListener.scanDirectory(resourceManager, string, GSON, map); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java b/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java -index 10ce6b9f748b69283e03454e9b1ed0b7df379a17..002449e66f83a419afa8357d2e7192670eaf869e 100644 +index a9832482500f08df30568ecbc65e4496ee01b414..154733684a53ff84ca8c2a994b96b68733e9fba5 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java -@@ -118,75 +118,12 @@ public class CraftRegistry implements Registry { +@@ -120,78 +120,12 @@ public class CraftRegistry implements Registry { + ", this can happen if a plugin creates its own registry entry with out properly registering it."); } @@ -796,6 +798,9 @@ index 10ce6b9f748b69283e03454e9b1ed0b7df379a17..002449e66f83a419afa8357d2e719267 - if (bukkitClass == MapCursor.Type.class) { - return new CraftRegistry<>(MapCursor.Type.class, registryHolder.registryOrThrow(Registries.MAP_DECORATION_TYPE), CraftMapCursor.CraftType::new, FieldRename.NONE); - } +- if (bukkitClass == PatternType.class) { +- return new CraftRegistry<>(PatternType.class, registryHolder.registryOrThrow(Registries.BANNER_PATTERN), CraftPatternType::new, FieldRename.NONE); +- } - - return null; - } @@ -809,7 +814,7 @@ index 10ce6b9f748b69283e03454e9b1ed0b7df379a17..002449e66f83a419afa8357d2e719267 } if (bukkit instanceof Registry.SimpleRegistry simple) { -@@ -212,23 +149,21 @@ public class CraftRegistry implements Registry { +@@ -217,23 +151,21 @@ public class CraftRegistry implements Registry { return bukkit.get(namespacedKey); } @@ -893,10 +898,10 @@ index 1f58b92c17d28e14621e8dc28042a5368f1f4a1f..ef80e6b4dff557daaab1b9fde4d8d401 // PatternType private static final FieldRenameData PATTERN_TYPE_DATA = FieldRenameData.Builder.newBuilder() diff --git a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java -index 38339b8b1b3b70bbbf0259d7095b02ee8c22b609..9fffb9c9161caad8eb62a99b37d0f31862b568a5 100644 +index e1b86308f737b957b6d00bc902b91856694b7cbf..0cb2b616e0fa060b7aae6c47502f75ee7647e917 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java +++ b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java -@@ -189,20 +189,10 @@ public class Commodore { +@@ -190,20 +190,10 @@ public class Commodore { public static byte[] convert(byte[] b, final String pluginName, final ApiVersion pluginVersion, final Set activeCompatibilities) { final boolean modern = pluginVersion.isNewerThanOrSameAs(ApiVersion.FLATTENING); @@ -917,7 +922,7 @@ index 38339b8b1b3b70bbbf0259d7095b02ee8c22b609..9fffb9c9161caad8eb62a99b37d0f318 visitor = io.papermc.paper.pluginremap.reflect.ReflectionRemapper.visitor(visitor); // Paper cr.accept(new ClassRemapper(new ClassVisitor(Opcodes.ASM9, visitor) { -@@ -269,15 +259,6 @@ public class Commodore { +@@ -270,15 +260,6 @@ public class Commodore { @Override public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { @@ -1157,7 +1162,7 @@ index bfbd80b60ac5df500d03c80de57e38aa7548dd46..cce9e2226ef554c10e1df1dbaa179165 when(instance.getTag(any(), any(), any())).then(mock -> { String registry = mock.getArgument(0); diff --git a/src/test/java/org/bukkit/support/provider/RegistriesArgumentProvider.java b/src/test/java/org/bukkit/support/provider/RegistriesArgumentProvider.java -index b4d2546094a154af8fca2f63d02090ed9cb355a5..38b0e091234a00d57e9e9d4fb3eac6afb7343477 100644 +index 9d6c3d91b505a683b353577bf39f869173243459..c1f886c906a9f9313d97a223f719095fa2624c57 100644 --- a/src/test/java/org/bukkit/support/provider/RegistriesArgumentProvider.java +++ b/src/test/java/org/bukkit/support/provider/RegistriesArgumentProvider.java @@ -1,6 +1,7 @@ @@ -1168,7 +1173,7 @@ index b4d2546094a154af8fca2f63d02090ed9cb355a5..38b0e091234a00d57e9e9d4fb3eac6af import java.util.List; import java.util.stream.Stream; import net.minecraft.core.registries.Registries; -@@ -56,34 +57,34 @@ public class RegistriesArgumentProvider implements ArgumentsProvider { +@@ -59,35 +60,34 @@ public class RegistriesArgumentProvider implements ArgumentsProvider { private static final List DATA = Lists.newArrayList(); static { @@ -1191,6 +1196,8 @@ index b4d2546094a154af8fca2f63d02090ed9cb355a5..38b0e091234a00d57e9e9d4fb3eac6af - register(Frog.Variant.class, Registries.FROG_VARIANT, CraftFrog.CraftVariant.class, FrogVariant.class); - register(Cat.Type.class, Registries.CAT_VARIANT, CraftCat.CraftType.class, CatVariant.class); - register(MapCursor.Type.class, Registries.MAP_DECORATION_TYPE, CraftMapCursor.CraftType.class, MapDecorationType.class); +- register(PatternType.class, Registries.BANNER_PATTERN, CraftPatternType.class, BannerPattern.class); +- + // Order: RegistryKey, Bukkit class, Minecraft Registry key, CraftBukkit class, Minecraft class + register(RegistryKey.ENCHANTMENT, Enchantment.class, Registries.ENCHANTMENT, CraftEnchantment.class, net.minecraft.world.item.enchantment.Enchantment.class); + register(RegistryKey.GAME_EVENT, GameEvent.class, Registries.GAME_EVENT, CraftGameEvent.class, net.minecraft.world.level.gameevent.GameEvent.class); @@ -1210,7 +1217,7 @@ index b4d2546094a154af8fca2f63d02090ed9cb355a5..38b0e091234a00d57e9e9d4fb3eac6af + register(RegistryKey.FROG_VARIANT, Frog.Variant.class, Registries.FROG_VARIANT, CraftFrog.CraftVariant.class, FrogVariant.class); + register(RegistryKey.CAT_VARIANT, Cat.Type.class, Registries.CAT_VARIANT, CraftCat.CraftType.class, CatVariant.class); + register(RegistryKey.MAP_DECORATION_TYPE, MapCursor.Type.class, Registries.MAP_DECORATION_TYPE, CraftMapCursor.CraftType.class, MapDecorationType.class); - ++ register(RegistryKey.BANNER_PATTERN, PatternType.class, Registries.BANNER_PATTERN, CraftPatternType.class, BannerPattern.class); } - private static void register(Class bukkit, ResourceKey registry, Class craft, Class minecraft) { diff --git a/patches/server/0475-Add-StructuresLocateEvent.patch b/patches/server/0474-Add-StructuresLocateEvent.patch similarity index 100% rename from patches/server/0475-Add-StructuresLocateEvent.patch rename to patches/server/0474-Add-StructuresLocateEvent.patch diff --git a/patches/server/0476-Collision-option-for-requiring-a-player-participant.patch b/patches/server/0475-Collision-option-for-requiring-a-player-participant.patch similarity index 100% rename from patches/server/0476-Collision-option-for-requiring-a-player-participant.patch rename to patches/server/0475-Collision-option-for-requiring-a-player-participant.patch diff --git a/patches/server/0477-Remove-ProjectileHitEvent-call-when-fireballs-dead.patch b/patches/server/0476-Remove-ProjectileHitEvent-call-when-fireballs-dead.patch similarity index 100% rename from patches/server/0477-Remove-ProjectileHitEvent-call-when-fireballs-dead.patch rename to patches/server/0476-Remove-ProjectileHitEvent-call-when-fireballs-dead.patch diff --git a/patches/server/0478-Return-chat-component-with-empty-text-instead-of-thr.patch b/patches/server/0477-Return-chat-component-with-empty-text-instead-of-thr.patch similarity index 100% rename from patches/server/0478-Return-chat-component-with-empty-text-instead-of-thr.patch rename to patches/server/0477-Return-chat-component-with-empty-text-instead-of-thr.patch diff --git a/patches/server/0479-Make-schedule-command-per-world.patch b/patches/server/0478-Make-schedule-command-per-world.patch similarity index 100% rename from patches/server/0479-Make-schedule-command-per-world.patch rename to patches/server/0478-Make-schedule-command-per-world.patch diff --git a/patches/server/0480-Configurable-max-leash-distance.patch b/patches/server/0479-Configurable-max-leash-distance.patch similarity index 100% rename from patches/server/0480-Configurable-max-leash-distance.patch rename to patches/server/0479-Configurable-max-leash-distance.patch diff --git a/patches/server/0481-Add-BlockPreDispenseEvent.patch b/patches/server/0480-Add-BlockPreDispenseEvent.patch similarity index 92% rename from patches/server/0481-Add-BlockPreDispenseEvent.patch rename to patches/server/0480-Add-BlockPreDispenseEvent.patch index a1d2d79f35..b60aca7f7d 100644 --- a/patches/server/0481-Add-BlockPreDispenseEvent.patch +++ b/patches/server/0480-Add-BlockPreDispenseEvent.patch @@ -17,7 +17,7 @@ index 94bcbaf7daf7dfe566f508d1170a433930d9d49a..f6edfea463b3725d3a79aca38825e86d tileentitydispenser.setItem(i, idispensebehavior.dispense(sourceblock, itemstack)); } diff --git a/src/main/java/net/minecraft/world/level/block/DropperBlock.java b/src/main/java/net/minecraft/world/level/block/DropperBlock.java -index 083ddfb8fffa04dad6eeca2274f290a08e62b5eb..45fafee2cf1893dccf477939dad05e9e1938ec8c 100644 +index 91b514967405115f22edf4255775361a672e5c2f..ddecf443df3679e3098eb54edd19585a0512e342 100644 --- a/src/main/java/net/minecraft/world/level/block/DropperBlock.java +++ b/src/main/java/net/minecraft/world/level/block/DropperBlock.java @@ -71,6 +71,7 @@ public class DropperBlock extends DispenserBlock { @@ -29,10 +29,10 @@ index 083ddfb8fffa04dad6eeca2274f290a08e62b5eb..45fafee2cf1893dccf477939dad05e9e } else { // CraftBukkit start - Fire event when pushing items into other inventories diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 19ca8953facd69a5720652c3bcf1e1e3be34a3a3..5c511fe60bf59ca1fe773b8c9c39bc88eebf2752 100644 +index c01d4302e145c779cc4031927ab555e1c7748155..97a17f2b782196b51ebbc6740aad1768fc73f7ba 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -2105,5 +2105,11 @@ public class CraftEventFactory { +@@ -2118,5 +2118,11 @@ public class CraftEventFactory { io.papermc.paper.event.block.BlockFailedDispenseEvent event = new io.papermc.paper.event.block.BlockFailedDispenseEvent(block); return event.callEvent(); } diff --git a/patches/server/0482-Add-PlayerChangeBeaconEffectEvent.patch b/patches/server/0481-Add-PlayerChangeBeaconEffectEvent.patch similarity index 96% rename from patches/server/0482-Add-PlayerChangeBeaconEffectEvent.patch rename to patches/server/0481-Add-PlayerChangeBeaconEffectEvent.patch index b3444419ee..1903c21ba8 100644 --- a/patches/server/0482-Add-PlayerChangeBeaconEffectEvent.patch +++ b/patches/server/0481-Add-PlayerChangeBeaconEffectEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add PlayerChangeBeaconEffectEvent diff --git a/src/main/java/net/minecraft/world/inventory/BeaconMenu.java b/src/main/java/net/minecraft/world/inventory/BeaconMenu.java -index c2fa423e14fc08c10483415baa2148af269c3758..5b6133f6758d322713321b7e918db0c3e0d4be51 100644 +index 7c4d2c184d9a1e4a1856e6771d39db384381e300..396559c281eee9e8c677cb222721414e8d9e12a2 100644 --- a/src/main/java/net/minecraft/world/inventory/BeaconMenu.java +++ b/src/main/java/net/minecraft/world/inventory/BeaconMenu.java @@ -171,12 +171,25 @@ public class BeaconMenu extends AbstractContainerMenu { diff --git a/patches/server/0483-Add-toggle-for-always-placing-the-dragon-egg.patch b/patches/server/0482-Add-toggle-for-always-placing-the-dragon-egg.patch similarity index 100% rename from patches/server/0483-Add-toggle-for-always-placing-the-dragon-egg.patch rename to patches/server/0482-Add-toggle-for-always-placing-the-dragon-egg.patch diff --git a/patches/server/0484-Add-PlayerStonecutterRecipeSelectEvent.patch b/patches/server/0483-Add-PlayerStonecutterRecipeSelectEvent.patch similarity index 97% rename from patches/server/0484-Add-PlayerStonecutterRecipeSelectEvent.patch rename to patches/server/0483-Add-PlayerStonecutterRecipeSelectEvent.patch index ec46b8f54b..0c96d8fa15 100644 --- a/patches/server/0484-Add-PlayerStonecutterRecipeSelectEvent.patch +++ b/patches/server/0483-Add-PlayerStonecutterRecipeSelectEvent.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Add PlayerStonecutterRecipeSelectEvent Co-Authored-By: MiniDigger diff --git a/src/main/java/net/minecraft/world/inventory/StonecutterMenu.java b/src/main/java/net/minecraft/world/inventory/StonecutterMenu.java -index bb29107cb15e2ec644a14cabb3cf91f4bde5471d..977ccef3c9fa7685209f3eca894a3b69501ebcc1 100644 +index 5b4f03128499b0c1a4b8c5f5ccd17e4bdb391e81..37e75c02c374314372630f4bda0b92519809f2a4 100644 --- a/src/main/java/net/minecraft/world/inventory/StonecutterMenu.java +++ b/src/main/java/net/minecraft/world/inventory/StonecutterMenu.java @@ -64,7 +64,7 @@ public class StonecutterMenu extends AbstractContainerMenu { diff --git a/patches/server/0485-Expand-EntityUnleashEvent.patch b/patches/server/0484-Expand-EntityUnleashEvent.patch similarity index 98% rename from patches/server/0485-Expand-EntityUnleashEvent.patch rename to patches/server/0484-Expand-EntityUnleashEvent.patch index b83bd1bb30..4c9e6f4afd 100644 --- a/patches/server/0485-Expand-EntityUnleashEvent.patch +++ b/patches/server/0484-Expand-EntityUnleashEvent.patch @@ -121,10 +121,10 @@ index 3c0af74ed65610b1d5e3b72fdcf28c5a3423f0da..01173fc7177d78588978e087e63efda0 flag1 = true; } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 5c511fe60bf59ca1fe773b8c9c39bc88eebf2752..204c6ef33725eee1c582fdbc4e29caface0f27e9 100644 +index 97a17f2b782196b51ebbc6740aad1768fc73f7ba..2786398e99af94d8dc1251009cdb5fa71206bcf3 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1583,8 +1583,10 @@ public class CraftEventFactory { +@@ -1596,8 +1596,10 @@ public class CraftEventFactory { Bukkit.getPluginManager().callEvent(new PlayerRecipeBookSettingsChangeEvent(player.getBukkitEntity(), bukkitType, open, filter)); } diff --git a/patches/server/0486-Reset-shield-blocking-on-dimension-change.patch b/patches/server/0485-Reset-shield-blocking-on-dimension-change.patch similarity index 86% rename from patches/server/0486-Reset-shield-blocking-on-dimension-change.patch rename to patches/server/0485-Reset-shield-blocking-on-dimension-change.patch index fc78073d82..f0f37986b6 100644 --- a/patches/server/0486-Reset-shield-blocking-on-dimension-change.patch +++ b/patches/server/0485-Reset-shield-blocking-on-dimension-change.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Reset shield blocking on dimension change diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index c973b003ea22a37e841b20ca8b9e2915264820cf..433102e21d18bbfc3cba9abf9f9a760a71d2ba74 100644 +index 2ea613f818403f8e8ece4b36891738139345cf89..fffd3ae6c4fc0b86057cd915bb4f0987f41a64d0 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1350,6 +1350,11 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { +@@ -1349,6 +1349,11 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { PlayerChangedWorldEvent changeEvent = new PlayerChangedWorldEvent(this.getBukkitEntity(), worldserver1.getWorld()); this.level().getCraftServer().getPluginManager().callEvent(changeEvent); // CraftBukkit end diff --git a/patches/server/0487-Add-DragonEggFormEvent.patch b/patches/server/0486-Add-DragonEggFormEvent.patch similarity index 100% rename from patches/server/0487-Add-DragonEggFormEvent.patch rename to patches/server/0486-Add-DragonEggFormEvent.patch diff --git a/patches/server/0488-Add-EntityMoveEvent.patch b/patches/server/0487-Add-EntityMoveEvent.patch similarity index 100% rename from patches/server/0488-Add-EntityMoveEvent.patch rename to patches/server/0487-Add-EntityMoveEvent.patch diff --git a/patches/server/0489-added-option-to-disable-pathfinding-updates-on-block.patch b/patches/server/0488-added-option-to-disable-pathfinding-updates-on-block.patch similarity index 100% rename from patches/server/0489-added-option-to-disable-pathfinding-updates-on-block.patch rename to patches/server/0488-added-option-to-disable-pathfinding-updates-on-block.patch diff --git a/patches/server/0490-Inline-shift-direction-fields.patch b/patches/server/0489-Inline-shift-direction-fields.patch similarity index 100% rename from patches/server/0490-Inline-shift-direction-fields.patch rename to patches/server/0489-Inline-shift-direction-fields.patch diff --git a/patches/server/0491-Allow-adding-items-to-BlockDropItemEvent.patch b/patches/server/0490-Allow-adding-items-to-BlockDropItemEvent.patch similarity index 93% rename from patches/server/0491-Allow-adding-items-to-BlockDropItemEvent.patch rename to patches/server/0490-Allow-adding-items-to-BlockDropItemEvent.patch index e58287a5fb..9b70fab956 100644 --- a/patches/server/0491-Allow-adding-items-to-BlockDropItemEvent.patch +++ b/patches/server/0490-Allow-adding-items-to-BlockDropItemEvent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow adding items to BlockDropItemEvent diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 204c6ef33725eee1c582fdbc4e29caface0f27e9..3d64a514b4932bf80953b8e18b0fc9fd14868021 100644 +index 2786398e99af94d8dc1251009cdb5fa71206bcf3..4f05f8d73b824cd2985e6c6d90338fc7479ef2a5 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -456,13 +456,30 @@ public class CraftEventFactory { +@@ -460,13 +460,30 @@ public class CraftEventFactory { } public static void handleBlockDropItemEvent(Block block, BlockState state, ServerPlayer player, List items) { diff --git a/patches/server/0492-Add-getMainThreadExecutor-to-BukkitScheduler.patch b/patches/server/0491-Add-getMainThreadExecutor-to-BukkitScheduler.patch similarity index 100% rename from patches/server/0492-Add-getMainThreadExecutor-to-BukkitScheduler.patch rename to patches/server/0491-Add-getMainThreadExecutor-to-BukkitScheduler.patch diff --git a/patches/server/0493-living-entity-allow-attribute-registration.patch b/patches/server/0492-living-entity-allow-attribute-registration.patch similarity index 100% rename from patches/server/0493-living-entity-allow-attribute-registration.patch rename to patches/server/0492-living-entity-allow-attribute-registration.patch diff --git a/patches/server/0494-fix-dead-slime-setSize-invincibility.patch b/patches/server/0493-fix-dead-slime-setSize-invincibility.patch similarity index 100% rename from patches/server/0494-fix-dead-slime-setSize-invincibility.patch rename to patches/server/0493-fix-dead-slime-setSize-invincibility.patch diff --git a/patches/server/0495-Merchant-getRecipes-should-return-an-immutable-list.patch b/patches/server/0494-Merchant-getRecipes-should-return-an-immutable-list.patch similarity index 100% rename from patches/server/0495-Merchant-getRecipes-should-return-an-immutable-list.patch rename to patches/server/0494-Merchant-getRecipes-should-return-an-immutable-list.patch diff --git a/patches/server/0496-Expose-Tracked-Players.patch b/patches/server/0495-Expose-Tracked-Players.patch similarity index 100% rename from patches/server/0496-Expose-Tracked-Players.patch rename to patches/server/0495-Expose-Tracked-Players.patch diff --git a/patches/server/0497-Improve-ServerGUI.patch b/patches/server/0496-Improve-ServerGUI.patch similarity index 100% rename from patches/server/0497-Improve-ServerGUI.patch rename to patches/server/0496-Improve-ServerGUI.patch diff --git a/patches/server/0498-fix-converting-txt-to-json-file.patch b/patches/server/0497-fix-converting-txt-to-json-file.patch similarity index 97% rename from patches/server/0498-fix-converting-txt-to-json-file.patch rename to patches/server/0497-fix-converting-txt-to-json-file.patch index efc09dd833..dde0a0677e 100644 --- a/patches/server/0498-fix-converting-txt-to-json-file.patch +++ b/patches/server/0497-fix-converting-txt-to-json-file.patch @@ -48,7 +48,7 @@ index 2b1d7a2360a9ee7bca9d93a2dc8c61d1648a8348..d5153f804cfcfd1a70c46975e3fb1e50 if (!OldUsersConverter.serverReadyAfterUserconversion(this)) { return false; diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 5100b2d00452f97849239ca32164eed4345e4024..6ef0e5c607c1b7ef9ba6a9f5c7bc452ce9a84250 100644 +index 3c7d31725c4a5dd7728fa394f88d37a0e493e919..59c30bb1fd19b718662dd10b0eb9dcd5ed79e400 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -179,6 +179,7 @@ public abstract class PlayerList { diff --git a/patches/server/0499-Add-worldborder-events.patch b/patches/server/0498-Add-worldborder-events.patch similarity index 100% rename from patches/server/0499-Add-worldborder-events.patch rename to patches/server/0498-Add-worldborder-events.patch diff --git a/patches/server/0500-Add-PlayerNameEntityEvent.patch b/patches/server/0499-Add-PlayerNameEntityEvent.patch similarity index 100% rename from patches/server/0500-Add-PlayerNameEntityEvent.patch rename to patches/server/0499-Add-PlayerNameEntityEvent.patch diff --git a/patches/server/0501-Add-recipe-to-cook-events.patch b/patches/server/0500-Add-recipe-to-cook-events.patch similarity index 100% rename from patches/server/0501-Add-recipe-to-cook-events.patch rename to patches/server/0500-Add-recipe-to-cook-events.patch diff --git a/patches/server/0502-Add-Block-isValidTool.patch b/patches/server/0501-Add-Block-isValidTool.patch similarity index 100% rename from patches/server/0502-Add-Block-isValidTool.patch rename to patches/server/0501-Add-Block-isValidTool.patch diff --git a/patches/server/0503-Allow-using-signs-inside-spawn-protection.patch b/patches/server/0502-Allow-using-signs-inside-spawn-protection.patch similarity index 90% rename from patches/server/0503-Allow-using-signs-inside-spawn-protection.patch rename to patches/server/0502-Allow-using-signs-inside-spawn-protection.patch index b105615726..cac2a775a6 100644 --- a/patches/server/0503-Allow-using-signs-inside-spawn-protection.patch +++ b/patches/server/0502-Allow-using-signs-inside-spawn-protection.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow using signs inside spawn protection diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 09e40d6e50b7c1ddd1451981d05ecbbef43cfed2..95942fcf46bb14257faa7f5095bbf853b589be1e 100644 +index afed142d5155c178807c6b26cb5766ae7d6e328a..8e888be601190e69389fa5a8596a4e7d52dd1749 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1759,8 +1759,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1754,8 +1754,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl int i = this.player.level().getMaxBuildHeight(); if (blockposition.getY() < i) { diff --git a/patches/server/0504-Expand-world-key-API.patch b/patches/server/0503-Expand-world-key-API.patch similarity index 100% rename from patches/server/0504-Expand-world-key-API.patch rename to patches/server/0503-Expand-world-key-API.patch diff --git a/patches/server/0505-Add-fast-alternative-constructor-for-Rotations.patch b/patches/server/0504-Add-fast-alternative-constructor-for-Rotations.patch similarity index 100% rename from patches/server/0505-Add-fast-alternative-constructor-for-Rotations.patch rename to patches/server/0504-Add-fast-alternative-constructor-for-Rotations.patch diff --git a/patches/server/0506-Drop-carried-item-when-player-has-disconnected.patch b/patches/server/0505-Drop-carried-item-when-player-has-disconnected.patch similarity index 93% rename from patches/server/0506-Drop-carried-item-when-player-has-disconnected.patch rename to patches/server/0505-Drop-carried-item-when-player-has-disconnected.patch index 757cfd681e..5a79f00284 100644 --- a/patches/server/0506-Drop-carried-item-when-player-has-disconnected.patch +++ b/patches/server/0505-Drop-carried-item-when-player-has-disconnected.patch @@ -7,7 +7,7 @@ Fixes disappearance of held items, when a player gets disconnected and PlayerDro Closes #5036 diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 6ef0e5c607c1b7ef9ba6a9f5c7bc452ce9a84250..7ef760cb1c88f557947e9b88409a2935666f86f0 100644 +index 59c30bb1fd19b718662dd10b0eb9dcd5ed79e400..0cbd4e6bc9b3695fd2ff0b943a69b8fd393e0f36 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -588,6 +588,14 @@ public abstract class PlayerList { diff --git a/patches/server/0507-forced-whitelist-use-configurable-kick-message.patch b/patches/server/0506-forced-whitelist-use-configurable-kick-message.patch similarity index 100% rename from patches/server/0507-forced-whitelist-use-configurable-kick-message.patch rename to patches/server/0506-forced-whitelist-use-configurable-kick-message.patch diff --git a/patches/server/0508-Don-t-ignore-result-of-PlayerEditBookEvent.patch b/patches/server/0507-Don-t-ignore-result-of-PlayerEditBookEvent.patch similarity index 87% rename from patches/server/0508-Don-t-ignore-result-of-PlayerEditBookEvent.patch rename to patches/server/0507-Don-t-ignore-result-of-PlayerEditBookEvent.patch index ea634835be..55667fd1f5 100644 --- a/patches/server/0508-Don-t-ignore-result-of-PlayerEditBookEvent.patch +++ b/patches/server/0507-Don-t-ignore-result-of-PlayerEditBookEvent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Don't ignore result of PlayerEditBookEvent diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 95942fcf46bb14257faa7f5095bbf853b589be1e..80b0da98233dd98a05c898a73e519db9d30a3e74 100644 +index 8e888be601190e69389fa5a8596a4e7d52dd1749..773ada940f3bb2cf6a9ff1c32b3306d91dda27d9 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1155,7 +1155,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1150,7 +1150,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl List> list1 = pages.stream().map(this::filterableFromOutgoing).toList(); itemstack.set(DataComponents.WRITABLE_BOOK_CONTENT, new WritableBookContent(list1)); diff --git a/patches/server/0509-Expose-protocol-version.patch b/patches/server/0508-Expose-protocol-version.patch similarity index 100% rename from patches/server/0509-Expose-protocol-version.patch rename to patches/server/0508-Expose-protocol-version.patch diff --git a/patches/server/0510-Enhance-console-tab-completions-for-brigadier-comman.patch b/patches/server/0509-Enhance-console-tab-completions-for-brigadier-comman.patch similarity index 100% rename from patches/server/0510-Enhance-console-tab-completions-for-brigadier-comman.patch rename to patches/server/0509-Enhance-console-tab-completions-for-brigadier-comman.patch diff --git a/patches/server/0511-Fix-PlayerItemConsumeEvent-cancelling-properly.patch b/patches/server/0510-Fix-PlayerItemConsumeEvent-cancelling-properly.patch similarity index 100% rename from patches/server/0511-Fix-PlayerItemConsumeEvent-cancelling-properly.patch rename to patches/server/0510-Fix-PlayerItemConsumeEvent-cancelling-properly.patch diff --git a/patches/server/0512-Add-bypass-host-check.patch b/patches/server/0511-Add-bypass-host-check.patch similarity index 100% rename from patches/server/0512-Add-bypass-host-check.patch rename to patches/server/0511-Add-bypass-host-check.patch diff --git a/patches/server/0513-Set-area-affect-cloud-rotation.patch b/patches/server/0512-Set-area-affect-cloud-rotation.patch similarity index 100% rename from patches/server/0513-Set-area-affect-cloud-rotation.patch rename to patches/server/0512-Set-area-affect-cloud-rotation.patch diff --git a/patches/server/0514-add-isDeeplySleeping-to-HumanEntity.patch b/patches/server/0513-add-isDeeplySleeping-to-HumanEntity.patch similarity index 100% rename from patches/server/0514-add-isDeeplySleeping-to-HumanEntity.patch rename to patches/server/0513-add-isDeeplySleeping-to-HumanEntity.patch diff --git a/patches/server/0515-add-consumeFuel-to-FurnaceBurnEvent.patch b/patches/server/0514-add-consumeFuel-to-FurnaceBurnEvent.patch similarity index 100% rename from patches/server/0515-add-consumeFuel-to-FurnaceBurnEvent.patch rename to patches/server/0514-add-consumeFuel-to-FurnaceBurnEvent.patch diff --git a/patches/server/0516-add-get-set-drop-chance-to-EntityEquipment.patch b/patches/server/0515-add-get-set-drop-chance-to-EntityEquipment.patch similarity index 100% rename from patches/server/0516-add-get-set-drop-chance-to-EntityEquipment.patch rename to patches/server/0515-add-get-set-drop-chance-to-EntityEquipment.patch diff --git a/patches/server/0517-fix-PigZombieAngerEvent-cancellation.patch b/patches/server/0516-fix-PigZombieAngerEvent-cancellation.patch similarity index 100% rename from patches/server/0517-fix-PigZombieAngerEvent-cancellation.patch rename to patches/server/0516-fix-PigZombieAngerEvent-cancellation.patch diff --git a/patches/server/0518-fix-PlayerItemHeldEvent-firing-twice.patch b/patches/server/0517-fix-PlayerItemHeldEvent-firing-twice.patch similarity index 88% rename from patches/server/0518-fix-PlayerItemHeldEvent-firing-twice.patch rename to patches/server/0517-fix-PlayerItemHeldEvent-firing-twice.patch index 1934fa9d5d..c5f9160f22 100644 --- a/patches/server/0518-fix-PlayerItemHeldEvent-firing-twice.patch +++ b/patches/server/0517-fix-PlayerItemHeldEvent-firing-twice.patch @@ -5,10 +5,10 @@ Subject: [PATCH] fix PlayerItemHeldEvent firing twice diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 80b0da98233dd98a05c898a73e519db9d30a3e74..699658bd80eb88907041efb01d31e4051edb91de 100644 +index 773ada940f3bb2cf6a9ff1c32b3306d91dda27d9..4ed4a2f5f03790fab394429334881377c1b3ab60 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1934,6 +1934,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1929,6 +1929,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); if (this.player.isImmobile()) return; // CraftBukkit if (packet.getSlot() >= 0 && packet.getSlot() < Inventory.getSelectionSize()) { diff --git a/patches/server/0519-Add-PlayerDeepSleepEvent.patch b/patches/server/0518-Add-PlayerDeepSleepEvent.patch similarity index 100% rename from patches/server/0519-Add-PlayerDeepSleepEvent.patch rename to patches/server/0518-Add-PlayerDeepSleepEvent.patch diff --git a/patches/server/0520-More-World-API.patch b/patches/server/0519-More-World-API.patch similarity index 100% rename from patches/server/0520-More-World-API.patch rename to patches/server/0519-More-World-API.patch diff --git a/patches/server/0521-Add-PlayerBedFailEnterEvent.patch b/patches/server/0520-Add-PlayerBedFailEnterEvent.patch similarity index 100% rename from patches/server/0521-Add-PlayerBedFailEnterEvent.patch rename to patches/server/0520-Add-PlayerBedFailEnterEvent.patch diff --git a/patches/server/0522-Implement-methods-to-convert-between-Component-and-B.patch b/patches/server/0521-Implement-methods-to-convert-between-Component-and-B.patch similarity index 100% rename from patches/server/0522-Implement-methods-to-convert-between-Component-and-B.patch rename to patches/server/0521-Implement-methods-to-convert-between-Component-and-B.patch diff --git a/patches/server/0523-Expand-PlayerRespawnEvent-fix-passed-parameter-issue.patch b/patches/server/0522-Expand-PlayerRespawnEvent-fix-passed-parameter-issue.patch similarity index 100% rename from patches/server/0523-Expand-PlayerRespawnEvent-fix-passed-parameter-issue.patch rename to patches/server/0522-Expand-PlayerRespawnEvent-fix-passed-parameter-issue.patch diff --git a/patches/server/0524-Introduce-beacon-activation-deactivation-events.patch b/patches/server/0523-Introduce-beacon-activation-deactivation-events.patch similarity index 100% rename from patches/server/0524-Introduce-beacon-activation-deactivation-events.patch rename to patches/server/0523-Introduce-beacon-activation-deactivation-events.patch diff --git a/patches/server/0525-Add-Channel-initialization-listeners.patch b/patches/server/0524-Add-Channel-initialization-listeners.patch similarity index 100% rename from patches/server/0525-Add-Channel-initialization-listeners.patch rename to patches/server/0524-Add-Channel-initialization-listeners.patch diff --git a/patches/server/0526-Send-empty-commands-if-tab-completion-is-disabled.patch b/patches/server/0525-Send-empty-commands-if-tab-completion-is-disabled.patch similarity index 100% rename from patches/server/0526-Send-empty-commands-if-tab-completion-is-disabled.patch rename to patches/server/0525-Send-empty-commands-if-tab-completion-is-disabled.patch diff --git a/patches/server/0527-Add-more-WanderingTrader-API.patch b/patches/server/0526-Add-more-WanderingTrader-API.patch similarity index 100% rename from patches/server/0527-Add-more-WanderingTrader-API.patch rename to patches/server/0526-Add-more-WanderingTrader-API.patch diff --git a/patches/server/0528-Add-EntityBlockStorage-clearEntities.patch b/patches/server/0527-Add-EntityBlockStorage-clearEntities.patch similarity index 100% rename from patches/server/0528-Add-EntityBlockStorage-clearEntities.patch rename to patches/server/0527-Add-EntityBlockStorage-clearEntities.patch diff --git a/patches/server/0529-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch b/patches/server/0528-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch similarity index 100% rename from patches/server/0529-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch rename to patches/server/0528-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch diff --git a/patches/server/0530-Add-HiddenPotionEffect-API.patch b/patches/server/0529-Add-HiddenPotionEffect-API.patch similarity index 100% rename from patches/server/0530-Add-HiddenPotionEffect-API.patch rename to patches/server/0529-Add-HiddenPotionEffect-API.patch diff --git a/patches/server/0531-Inventory-close.patch b/patches/server/0530-Inventory-close.patch similarity index 100% rename from patches/server/0531-Inventory-close.patch rename to patches/server/0530-Inventory-close.patch diff --git a/patches/server/0532-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch b/patches/server/0531-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch similarity index 100% rename from patches/server/0532-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch rename to patches/server/0531-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch diff --git a/patches/server/0533-Add-basic-Datapack-API.patch b/patches/server/0532-Add-basic-Datapack-API.patch similarity index 100% rename from patches/server/0533-Add-basic-Datapack-API.patch rename to patches/server/0532-Add-basic-Datapack-API.patch diff --git a/patches/server/0534-Add-environment-variable-to-disable-server-gui.patch b/patches/server/0533-Add-environment-variable-to-disable-server-gui.patch similarity index 100% rename from patches/server/0534-Add-environment-variable-to-disable-server-gui.patch rename to patches/server/0533-Add-environment-variable-to-disable-server-gui.patch diff --git a/patches/server/0535-Expand-PlayerGameModeChangeEvent.patch b/patches/server/0534-Expand-PlayerGameModeChangeEvent.patch similarity index 94% rename from patches/server/0535-Expand-PlayerGameModeChangeEvent.patch rename to patches/server/0534-Expand-PlayerGameModeChangeEvent.patch index ca358f5250..e24fdaca27 100644 --- a/patches/server/0535-Expand-PlayerGameModeChangeEvent.patch +++ b/patches/server/0534-Expand-PlayerGameModeChangeEvent.patch @@ -45,10 +45,10 @@ index 7f09119bc7d661e08a960dd2bd46006efe752d3e..d1da3600dc07107309b20ebe6e7c0c4d } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 6b2c82d80bc673a74ae894f794eb50402b9cc30d..da783ccab230197a4258a2e8509ad893d5417c18 100644 +index 52a5274fb811870481a48bf0505769d7ac5df31f..42df8d45ceb963043cf6467b8fc47272ce0873da 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2085,10 +2085,18 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { +@@ -2084,10 +2084,18 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { } public boolean setGameMode(GameType gameMode) { @@ -69,7 +69,7 @@ index 6b2c82d80bc673a74ae894f794eb50402b9cc30d..da783ccab230197a4258a2e8509ad893 } else { this.connection.send(new ClientboundGameEventPacket(ClientboundGameEventPacket.CHANGE_GAME_MODE, (float) gameMode.getId())); if (gameMode == GameType.SPECTATOR) { -@@ -2104,7 +2112,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { +@@ -2103,7 +2111,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { this.onUpdateAbilities(); this.updateEffectVisibility(); @@ -78,7 +78,7 @@ index 6b2c82d80bc673a74ae894f794eb50402b9cc30d..da783ccab230197a4258a2e8509ad893 } } -@@ -2510,6 +2518,16 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { +@@ -2509,6 +2517,16 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { } public void loadGameTypes(@Nullable CompoundTag nbt) { @@ -134,10 +134,10 @@ index 5de472df78940d1b8320f73d18b2edf3a796227e..073cf184a0e7af41048ae67a9b17b4cd } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 699658bd80eb88907041efb01d31e4051edb91de..58e5acbd00c4f8c0fcafa4f2c21b6a9f4dcc4151 100644 +index 7721d329e9949bf84f31792d4c06ab9e04ab4ade..75cb96d392eff322eb93894b5c2b5ad22c3fd261 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2732,7 +2732,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2727,7 +2727,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.player = this.server.getPlayerList().respawn(this.player, false, Entity.RemovalReason.KILLED, RespawnReason.DEATH); // CraftBukkit if (this.server.isHardcore()) { @@ -147,7 +147,7 @@ index 699658bd80eb88907041efb01d31e4051edb91de..58e5acbd00c4f8c0fcafa4f2c21b6a9f } } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 963ae66acc25602e15134d30d3e496802b17dc41..3f603688b9ad895edc2bfc07093c42bc17a35b19 100644 +index 3bc62788d63e98eb9b2a2b381272b262040dcb5f..c9dc7c570e86f420cf8c6343c6ffbdbca427e7a7 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -1654,7 +1654,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0536-ItemStack-repair-check-API.patch b/patches/server/0535-ItemStack-repair-check-API.patch similarity index 100% rename from patches/server/0536-ItemStack-repair-check-API.patch rename to patches/server/0535-ItemStack-repair-check-API.patch diff --git a/patches/server/0537-More-Enchantment-API.patch b/patches/server/0536-More-Enchantment-API.patch similarity index 100% rename from patches/server/0537-More-Enchantment-API.patch rename to patches/server/0536-More-Enchantment-API.patch diff --git a/patches/server/0538-Move-range-check-for-block-placing-up.patch b/patches/server/0537-Move-range-check-for-block-placing-up.patch similarity index 88% rename from patches/server/0538-Move-range-check-for-block-placing-up.patch rename to patches/server/0537-Move-range-check-for-block-placing-up.patch index 684068f18d..34cf22d1fa 100644 --- a/patches/server/0538-Move-range-check-for-block-placing-up.patch +++ b/patches/server/0537-Move-range-check-for-block-placing-up.patch @@ -5,10 +5,10 @@ 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 58e5acbd00c4f8c0fcafa4f2c21b6a9f4dcc4151..e713a2abca824e92a4922c34fca8c1f0bfdcdf68 100644 +index e91200b8b1da00b4b13697e950433de661a4e419..091863f559b74b93f129cc0bf5413ab4b81a0155 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1746,6 +1746,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1741,6 +1741,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl if (itemstack.isItemEnabled(worldserver.enabledFeatures())) { BlockHitResult movingobjectpositionblock = packet.getHitResult(); Vec3 vec3d = movingobjectpositionblock.getLocation(); diff --git a/patches/server/0539-Add-Mob-lookAt-API.patch b/patches/server/0538-Add-Mob-lookAt-API.patch similarity index 100% rename from patches/server/0539-Add-Mob-lookAt-API.patch rename to patches/server/0538-Add-Mob-lookAt-API.patch diff --git a/patches/server/0540-Correctly-check-if-bucket-dispenses-will-succeed-for.patch b/patches/server/0539-Correctly-check-if-bucket-dispenses-will-succeed-for.patch similarity index 100% rename from patches/server/0540-Correctly-check-if-bucket-dispenses-will-succeed-for.patch rename to patches/server/0539-Correctly-check-if-bucket-dispenses-will-succeed-for.patch diff --git a/patches/server/0541-Add-Unix-domain-socket-support.patch b/patches/server/0540-Add-Unix-domain-socket-support.patch similarity index 98% rename from patches/server/0541-Add-Unix-domain-socket-support.patch rename to patches/server/0540-Add-Unix-domain-socket-support.patch index 7def3d56ce..8f22e1a8a7 100644 --- a/patches/server/0541-Add-Unix-domain-socket-support.patch +++ b/patches/server/0540-Add-Unix-domain-socket-support.patch @@ -87,10 +87,10 @@ index d6d7f1c446ba5507f67038ff27775ba75156f4a7..c63c194c44646e6bc1a5942655278701 } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index e713a2abca824e92a4922c34fca8c1f0bfdcdf68..ada5016ee354e799a8241a0706ea04e236efd1eb 100644 +index 091863f559b74b93f129cc0bf5413ab4b81a0155..9aceb641acde6840b45899e60fe3319a4a89b357 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2551,6 +2551,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2546,6 +2546,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl // Spigot Start public SocketAddress getRawAddress() { diff --git a/patches/server/0542-Add-EntityInsideBlockEvent.patch b/patches/server/0541-Add-EntityInsideBlockEvent.patch similarity index 99% rename from patches/server/0542-Add-EntityInsideBlockEvent.patch rename to patches/server/0541-Add-EntityInsideBlockEvent.patch index 5080baf21f..0e0939b39f 100644 --- a/patches/server/0542-Add-EntityInsideBlockEvent.patch +++ b/patches/server/0541-Add-EntityInsideBlockEvent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add EntityInsideBlockEvent diff --git a/src/main/java/net/minecraft/world/level/block/BaseFireBlock.java b/src/main/java/net/minecraft/world/level/block/BaseFireBlock.java -index 993538f613e52ecd009f01e7b68fddba76b6a3e8..c36e64c3df09f14ffb06b81ef20c5e200e386e50 100644 +index 779d188bac9744889c1f4f554b300311e0effa29..0c5409af685ef1f251db3d9f9e21295c82a1e02a 100644 --- a/src/main/java/net/minecraft/world/level/block/BaseFireBlock.java +++ b/src/main/java/net/minecraft/world/level/block/BaseFireBlock.java -@@ -124,6 +124,7 @@ public abstract class BaseFireBlock extends Block { +@@ -125,6 +125,7 @@ public abstract class BaseFireBlock extends Block { @Override protected void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) { diff --git a/patches/server/0543-Improve-item-default-attribute-API.patch b/patches/server/0542-Improve-item-default-attribute-API.patch similarity index 100% rename from patches/server/0543-Improve-item-default-attribute-API.patch rename to patches/server/0542-Improve-item-default-attribute-API.patch diff --git a/patches/server/0544-Add-cause-to-Weather-ThunderChangeEvents.patch b/patches/server/0543-Add-cause-to-Weather-ThunderChangeEvents.patch similarity index 100% rename from patches/server/0544-Add-cause-to-Weather-ThunderChangeEvents.patch rename to patches/server/0543-Add-cause-to-Weather-ThunderChangeEvents.patch diff --git a/patches/server/0545-More-Lidded-Block-API.patch b/patches/server/0544-More-Lidded-Block-API.patch similarity index 100% rename from patches/server/0545-More-Lidded-Block-API.patch rename to patches/server/0544-More-Lidded-Block-API.patch diff --git a/patches/server/0546-Limit-item-frame-cursors-on-maps.patch b/patches/server/0545-Limit-item-frame-cursors-on-maps.patch similarity index 100% rename from patches/server/0546-Limit-item-frame-cursors-on-maps.patch rename to patches/server/0545-Limit-item-frame-cursors-on-maps.patch diff --git a/patches/server/0547-Add-PlayerKickEvent-causes.patch b/patches/server/0546-Add-PlayerKickEvent-causes.patch similarity index 95% rename from patches/server/0547-Add-PlayerKickEvent-causes.patch rename to patches/server/0546-Add-PlayerKickEvent-causes.patch index 261ceab74d..d48123b299 100644 --- a/patches/server/0547-Add-PlayerKickEvent-causes.patch +++ b/patches/server/0546-Add-PlayerKickEvent-causes.patch @@ -218,7 +218,7 @@ index 24bf661e76fb421a8be565d9ea68edf7205254d2..feb529adf2168025c785ab92d95a3246 if (this.cserver.getServer().isRunning()) { this.cserver.getPluginManager().callEvent(event); diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index ada5016ee354e799a8241a0706ea04e236efd1eb..70b215dfbe53bd475192ca1d021032c8fba97228 100644 +index b908e292d7b2fbff6cc5058ea32648dbde52fa19..c07d6a05737da570e7dc52e73b45e7550dcc61d0 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -349,7 +349,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -284,19 +284,10 @@ index ada5016ee354e799a8241a0706ea04e236efd1eb..70b215dfbe53bd475192ca1d021032c8 return; } this.player.getInventory().pickSlot(packet.getSlot()); // Paper - Diff above if changed -@@ -1088,7 +1088,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl - int byteLength = testString.getBytes(java.nio.charset.StandardCharsets.UTF_8).length; - if (byteLength > 256 * 4) { - ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send a book with with a page too large!"); -- this.disconnect(Component.literal("Book too large!")); -+ this.disconnect(Component.literal("Book too large!"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION); // Paper - kick event cause - return; - } - byteTotal += byteLength; -@@ -1111,14 +1111,14 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1106,14 +1106,14 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl if (byteTotal > byteAllowed) { - ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send too large of a book. Book Size: " + byteTotal + " - Allowed: "+ byteAllowed + " - Pages: " + pageList.size()); + ServerGamePacketListenerImpl.LOGGER.warn("{} tried to send a book too large. Book size: {} - Allowed: {} - Pages: {}", this.player.getScoreboardName(), byteTotal, byteAllowed, pageList.size()); - this.disconnect(Component.literal("Book too large!")); + this.disconnect(Component.literal("Book too large!"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION); // Paper - kick event cause return; @@ -310,7 +301,7 @@ index ada5016ee354e799a8241a0706ea04e236efd1eb..70b215dfbe53bd475192ca1d021032c8 return; } this.lastBookTick = MinecraftServer.currentTick; -@@ -1230,7 +1230,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1225,7 +1225,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl public void handleMovePlayer(ServerboundMovePlayerPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); if (ServerGamePacketListenerImpl.containsInvalidValues(packet.getX(0.0D), packet.getY(0.0D), packet.getZ(0.0D), packet.getYRot(0.0F), packet.getXRot(0.0F))) { @@ -319,7 +310,7 @@ index ada5016ee354e799a8241a0706ea04e236efd1eb..70b215dfbe53bd475192ca1d021032c8 } else { ServerLevel worldserver = this.player.serverLevel(); -@@ -1668,7 +1668,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1663,7 +1663,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.dropCount++; if (this.dropCount >= 20) { ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " dropped their items too quickly!"); @@ -328,7 +319,7 @@ index ada5016ee354e799a8241a0706ea04e236efd1eb..70b215dfbe53bd475192ca1d021032c8 return; } } -@@ -1956,7 +1956,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1951,7 +1951,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.player.resetLastActionTime(); } else { ServerGamePacketListenerImpl.LOGGER.warn("{} tried to set an invalid carried item", this.player.getName().getString()); @@ -337,7 +328,7 @@ index ada5016ee354e799a8241a0706ea04e236efd1eb..70b215dfbe53bd475192ca1d021032c8 } } -@@ -2154,7 +2154,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2149,7 +2149,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl private void tryHandleChat(String s, Runnable runnable, boolean sync) { // CraftBukkit if (ServerGamePacketListenerImpl.isChatMessageIllegal(s)) { @@ -346,7 +337,7 @@ index ada5016ee354e799a8241a0706ea04e236efd1eb..70b215dfbe53bd475192ca1d021032c8 } else if (this.player.isRemoved() || this.player.getChatVisibility() == ChatVisiblity.HIDDEN) { // CraftBukkit - dead men tell no tales this.send(new ClientboundSystemChatPacket(Component.translatable("chat.disabled.options").withStyle(ChatFormatting.RED), false)); } else { -@@ -2177,7 +2177,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2172,7 +2172,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl if (optional.isEmpty()) { ServerGamePacketListenerImpl.LOGGER.warn("Failed to validate message acknowledgements from {}", this.player.getName().getString()); @@ -355,7 +346,7 @@ index ada5016ee354e799a8241a0706ea04e236efd1eb..70b215dfbe53bd475192ca1d021032c8 } return optional; -@@ -2363,7 +2363,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2358,7 +2358,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl // this.chatSpamTickCount += 20; if (this.chatSpamTickCount.addAndGet(20) > 200 && !this.server.getPlayerList().isOp(this.player.getGameProfile()) && !this.server.isSingleplayerOwner(this.player.getGameProfile())) { // CraftBukkit end @@ -364,7 +355,7 @@ index ada5016ee354e799a8241a0706ea04e236efd1eb..70b215dfbe53bd475192ca1d021032c8 } } -@@ -2375,7 +2375,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2370,7 +2370,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl synchronized (this.lastSeenMessages) { if (!this.lastSeenMessages.applyOffset(packet.offset())) { ServerGamePacketListenerImpl.LOGGER.warn("Failed to validate message acknowledgements from {}", this.player.getName().getString()); @@ -373,7 +364,7 @@ index ada5016ee354e799a8241a0706ea04e236efd1eb..70b215dfbe53bd475192ca1d021032c8 } } -@@ -2523,7 +2523,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2518,7 +2518,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } if (i > 4096) { @@ -382,7 +373,7 @@ index ada5016ee354e799a8241a0706ea04e236efd1eb..70b215dfbe53bd475192ca1d021032c8 } } -@@ -2581,7 +2581,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2576,7 +2576,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl // Spigot Start if ( entity == this.player && !this.player.isSpectator() ) { @@ -391,7 +382,7 @@ index ada5016ee354e799a8241a0706ea04e236efd1eb..70b215dfbe53bd475192ca1d021032c8 return; } // Spigot End -@@ -2695,7 +2695,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2690,7 +2690,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } } @@ -400,7 +391,7 @@ index ada5016ee354e799a8241a0706ea04e236efd1eb..70b215dfbe53bd475192ca1d021032c8 ServerGamePacketListenerImpl.LOGGER.warn("Player {} tried to attack an invalid entity", ServerGamePacketListenerImpl.this.player.getName().getString()); } }); -@@ -3092,7 +3092,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -3087,7 +3087,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl // Paper start - auto recipe limit if (!org.bukkit.Bukkit.isPrimaryThread()) { if (this.recipeSpamPackets.addAndGet(io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.recipeSpamIncrement) > io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.recipeSpamLimit) { @@ -409,7 +400,7 @@ index ada5016ee354e799a8241a0706ea04e236efd1eb..70b215dfbe53bd475192ca1d021032c8 return; } } -@@ -3334,7 +3334,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -3329,7 +3329,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl if (!Objects.equals(profilepublickey_a, profilepublickey_a1)) { if (profilepublickey_a != null && profilepublickey_a1.expiresAt().isBefore(profilepublickey_a.expiresAt())) { @@ -418,7 +409,7 @@ index ada5016ee354e799a8241a0706ea04e236efd1eb..70b215dfbe53bd475192ca1d021032c8 } else { try { SignatureValidator signaturevalidator = this.server.getProfileKeySignatureValidator(); -@@ -3347,7 +3347,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -3342,7 +3342,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.resetPlayerChatState(remotechatsession_a.validate(this.player.getGameProfile(), signaturevalidator)); } catch (ProfilePublicKey.ValidationException profilepublickey_b) { ServerGamePacketListenerImpl.LOGGER.error("Failed to validate profile key: {}", profilepublickey_b.getMessage()); diff --git a/patches/server/0548-Add-PufferFishStateChangeEvent.patch b/patches/server/0547-Add-PufferFishStateChangeEvent.patch similarity index 100% rename from patches/server/0548-Add-PufferFishStateChangeEvent.patch rename to patches/server/0547-Add-PufferFishStateChangeEvent.patch diff --git a/patches/server/0549-Fix-PlayerBucketEmptyEvent-result-itemstack.patch b/patches/server/0548-Fix-PlayerBucketEmptyEvent-result-itemstack.patch similarity index 100% rename from patches/server/0549-Fix-PlayerBucketEmptyEvent-result-itemstack.patch rename to patches/server/0548-Fix-PlayerBucketEmptyEvent-result-itemstack.patch diff --git a/patches/server/0550-Synchronize-PalettedContainer-instead-of-ThreadingDe.patch b/patches/server/0549-Synchronize-PalettedContainer-instead-of-ThreadingDe.patch similarity index 100% rename from patches/server/0550-Synchronize-PalettedContainer-instead-of-ThreadingDe.patch rename to patches/server/0549-Synchronize-PalettedContainer-instead-of-ThreadingDe.patch diff --git a/patches/server/0551-Add-option-to-fix-items-merging-through-walls.patch b/patches/server/0550-Add-option-to-fix-items-merging-through-walls.patch similarity index 100% rename from patches/server/0551-Add-option-to-fix-items-merging-through-walls.patch rename to patches/server/0550-Add-option-to-fix-items-merging-through-walls.patch diff --git a/patches/server/0552-Add-BellRevealRaiderEvent.patch b/patches/server/0551-Add-BellRevealRaiderEvent.patch similarity index 100% rename from patches/server/0552-Add-BellRevealRaiderEvent.patch rename to patches/server/0551-Add-BellRevealRaiderEvent.patch diff --git a/patches/server/0553-Fix-invulnerable-end-crystals.patch b/patches/server/0552-Fix-invulnerable-end-crystals.patch similarity index 100% rename from patches/server/0553-Fix-invulnerable-end-crystals.patch rename to patches/server/0552-Fix-invulnerable-end-crystals.patch diff --git a/patches/server/0554-Add-ElderGuardianAppearanceEvent.patch b/patches/server/0553-Add-ElderGuardianAppearanceEvent.patch similarity index 100% rename from patches/server/0554-Add-ElderGuardianAppearanceEvent.patch rename to patches/server/0553-Add-ElderGuardianAppearanceEvent.patch diff --git a/patches/server/0555-Optimize-Biome-Mob-Lookups-for-Mob-Spawning.patch b/patches/server/0554-Optimize-Biome-Mob-Lookups-for-Mob-Spawning.patch similarity index 100% rename from patches/server/0555-Optimize-Biome-Mob-Lookups-for-Mob-Spawning.patch rename to patches/server/0554-Optimize-Biome-Mob-Lookups-for-Mob-Spawning.patch diff --git a/patches/server/0556-Line-Of-Sight-Changes.patch b/patches/server/0555-Line-Of-Sight-Changes.patch similarity index 100% rename from patches/server/0556-Line-Of-Sight-Changes.patch rename to patches/server/0555-Line-Of-Sight-Changes.patch diff --git a/patches/server/0557-add-per-world-spawn-limits.patch b/patches/server/0556-add-per-world-spawn-limits.patch similarity index 100% rename from patches/server/0557-add-per-world-spawn-limits.patch rename to patches/server/0556-add-per-world-spawn-limits.patch diff --git a/patches/server/0558-Fix-potions-splash-events.patch b/patches/server/0557-Fix-potions-splash-events.patch similarity index 98% rename from patches/server/0558-Fix-potions-splash-events.patch rename to patches/server/0557-Fix-potions-splash-events.patch index dfcd16159d..d086a3db0a 100644 --- a/patches/server/0558-Fix-potions-splash-events.patch +++ b/patches/server/0557-Fix-potions-splash-events.patch @@ -143,10 +143,10 @@ index be787a5b52e90796d4f06e17e564f4324807c3e6..cb34cc9443da56c0497c7a0192c8b836 public boolean isLingering() { diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 3d64a514b4932bf80953b8e18b0fc9fd14868021..be9fc7a0f5b4ad651847a20367cdc82b8f67ff29 100644 +index 4f05f8d73b824cd2985e6c6d90338fc7479ef2a5..61caedf05b28b2ba351e231c5f76e4df1ebd271a 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -880,6 +880,32 @@ public class CraftEventFactory { +@@ -884,6 +884,32 @@ public class CraftEventFactory { return event; } diff --git a/patches/server/0559-Add-more-LimitedRegion-API.patch b/patches/server/0558-Add-more-LimitedRegion-API.patch similarity index 100% rename from patches/server/0559-Add-more-LimitedRegion-API.patch rename to patches/server/0558-Add-more-LimitedRegion-API.patch diff --git a/patches/server/0560-Fix-PlayerDropItemEvent-using-wrong-item.patch b/patches/server/0559-Fix-PlayerDropItemEvent-using-wrong-item.patch similarity index 95% rename from patches/server/0560-Fix-PlayerDropItemEvent-using-wrong-item.patch rename to patches/server/0559-Fix-PlayerDropItemEvent-using-wrong-item.patch index 75e9f5ab62..8f8228a1d4 100644 --- a/patches/server/0560-Fix-PlayerDropItemEvent-using-wrong-item.patch +++ b/patches/server/0559-Fix-PlayerDropItemEvent-using-wrong-item.patch @@ -31,10 +31,10 @@ index c81fd3e1108fb0a02f9240263404af2b968c8494..0d9de4c61c7b26a6ff37c12fde629161 } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index da783ccab230197a4258a2e8509ad893d5417c18..38d493b03c02bbfed297b7735590e799d26c07f7 100644 +index 42df8d45ceb963043cf6467b8fc47272ce0873da..f20019261a09f425137731f7a4b92e889b617334 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2487,7 +2487,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { +@@ -2486,7 +2486,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { if (flag1) { if (!itemstack1.isEmpty()) { diff --git a/patches/server/0561-Missing-Entity-API.patch b/patches/server/0560-Missing-Entity-API.patch similarity index 100% rename from patches/server/0561-Missing-Entity-API.patch rename to patches/server/0560-Missing-Entity-API.patch diff --git a/patches/server/0562-Fix-return-value-of-Block-applyBoneMeal-always-being.patch b/patches/server/0561-Fix-return-value-of-Block-applyBoneMeal-always-being.patch similarity index 100% rename from patches/server/0562-Fix-return-value-of-Block-applyBoneMeal-always-being.patch rename to patches/server/0561-Fix-return-value-of-Block-applyBoneMeal-always-being.patch diff --git a/patches/server/0563-Use-getChunkIfLoadedImmediately-in-places.patch b/patches/server/0562-Use-getChunkIfLoadedImmediately-in-places.patch similarity index 97% rename from patches/server/0563-Use-getChunkIfLoadedImmediately-in-places.patch rename to patches/server/0562-Use-getChunkIfLoadedImmediately-in-places.patch index 0fb834902a..b2446b7c2b 100644 --- a/patches/server/0563-Use-getChunkIfLoadedImmediately-in-places.patch +++ b/patches/server/0562-Use-getChunkIfLoadedImmediately-in-places.patch @@ -21,7 +21,7 @@ index 055650b315d53b56798ded7af2054c3e8e3ee319..c72687fb23e8d01639cce7d79e3f9780 @Override diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index cfd5d3e50197b38d0ffef6debbb7f5b4b208382a..ed1fc466151ebebf7c3ac135c6893f4ea9a55a52 100644 +index 144d243e0d6ba3ae3f0b0bf457fa516e2b4f416f..20a14b4163807b806bf2ce5a88d3c35098bed929 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -180,6 +180,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable { diff --git a/patches/server/0564-Fix-commands-from-signs-not-firing-command-events.patch b/patches/server/0563-Fix-commands-from-signs-not-firing-command-events.patch similarity index 100% rename from patches/server/0564-Fix-commands-from-signs-not-firing-command-events.patch rename to patches/server/0563-Fix-commands-from-signs-not-firing-command-events.patch diff --git a/patches/server/0565-Add-PlayerArmSwingEvent.patch b/patches/server/0564-Add-PlayerArmSwingEvent.patch similarity index 88% rename from patches/server/0565-Add-PlayerArmSwingEvent.patch rename to patches/server/0564-Add-PlayerArmSwingEvent.patch index 080029d23f..3c7532588e 100644 --- a/patches/server/0565-Add-PlayerArmSwingEvent.patch +++ b/patches/server/0564-Add-PlayerArmSwingEvent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add PlayerArmSwingEvent diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 70b215dfbe53bd475192ca1d021032c8fba97228..0a5cad166e852888208125a80b5e2d5e7e9a3a82 100644 +index 3a656daa941993f240fa7fc54ee1106eaa504673..633c13dc22793f5a5c4c137c614c1bb695308888 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2413,7 +2413,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2408,7 +2408,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } // Paper end - Call interact event // Arm swing animation diff --git a/patches/server/0566-Fix-kick-event-leave-message-not-being-sent.patch b/patches/server/0565-Fix-kick-event-leave-message-not-being-sent.patch similarity index 95% rename from patches/server/0566-Fix-kick-event-leave-message-not-being-sent.patch rename to patches/server/0565-Fix-kick-event-leave-message-not-being-sent.patch index 7b01621edd..716ccd113a 100644 --- a/patches/server/0566-Fix-kick-event-leave-message-not-being-sent.patch +++ b/patches/server/0565-Fix-kick-event-leave-message-not-being-sent.patch @@ -55,10 +55,10 @@ index feb529adf2168025c785ab92d95a3246e73c0236..b43f87ff4b9853b5d4bbea5ff9686d64 MinecraftServer minecraftserver = this.server; Connection networkmanager = this.connection; diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 0a5cad166e852888208125a80b5e2d5e7e9a3a82..dd728c297335581ad69c94f768ec5201b7879264 100644 +index 633c13dc22793f5a5c4c137c614c1bb695308888..5276ce5b6fa19e0810da61c9a3c51b6318356339 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1895,6 +1895,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1890,6 +1890,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @Override public void onDisconnect(DisconnectionDetails info) { @@ -71,7 +71,7 @@ index 0a5cad166e852888208125a80b5e2d5e7e9a3a82..dd728c297335581ad69c94f768ec5201 // CraftBukkit start - Rarely it would send a disconnect line twice if (this.processedDisconnect) { return; -@@ -1903,11 +1909,17 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1898,11 +1904,17 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } // CraftBukkit end ServerGamePacketListenerImpl.LOGGER.info("{} lost connection: {}", this.player.getName().getString(), info.reason().getString()); @@ -91,7 +91,7 @@ index 0a5cad166e852888208125a80b5e2d5e7e9a3a82..dd728c297335581ad69c94f768ec5201 this.chatMessageChain.close(); // CraftBukkit start - Replace vanilla quit message handling with our own. /* -@@ -1917,7 +1929,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1912,7 +1924,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.player.disconnect(); // Paper start - Adventure @@ -101,7 +101,7 @@ index 0a5cad166e852888208125a80b5e2d5e7e9a3a82..dd728c297335581ad69c94f768ec5201 this.server.getPlayerList().broadcastSystemMessage(PaperAdventure.asVanilla(quitMessage), false); // Paper end diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 0474b88416e0d016da38909196d32fe992b37d00..5b449dd681390eb7aee229a3b6366dcbb96ce2d7 100644 +index 46f46685081c3c164bd4ba306dfb1220a4e13e52..b36cb031b153c452c7f030105f6963072b5858fc 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -561,6 +561,11 @@ public abstract class PlayerList { diff --git a/patches/server/0567-Don-t-apply-cramming-damage-to-players.patch b/patches/server/0566-Don-t-apply-cramming-damage-to-players.patch similarity index 90% rename from patches/server/0567-Don-t-apply-cramming-damage-to-players.patch rename to patches/server/0566-Don-t-apply-cramming-damage-to-players.patch index c95ca38ef7..f23c0c584f 100644 --- a/patches/server/0567-Don-t-apply-cramming-damage-to-players.patch +++ b/patches/server/0566-Don-t-apply-cramming-damage-to-players.patch @@ -11,7 +11,7 @@ It does not make a lot of sense to damage players if they get crammed, For those who really want it a config option is provided. diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 09e72aee16ceb7b300482fbaf28f856d4ed472d3..e9eec0e4e2e533e4ddc7f52a16a1b2b1ce21d6da 100644 +index 9982940af7d10ca7799e2c21ac994ea3afa0b805..d1b21afe48dbe1e53d4a046434336be580497165 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -95,6 +95,7 @@ import net.minecraft.util.Mth; @@ -22,7 +22,7 @@ index 09e72aee16ceb7b300482fbaf28f856d4ed472d3..e9eec0e4e2e533e4ddc7f52a16a1b2b1 import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.Entity; -@@ -1546,7 +1547,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { +@@ -1545,7 +1546,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { @Override public boolean isInvulnerableTo(DamageSource damageSource) { diff --git a/patches/server/0568-Rate-options-and-timings-for-sensors-and-behaviors.patch b/patches/server/0567-Rate-options-and-timings-for-sensors-and-behaviors.patch similarity index 100% rename from patches/server/0568-Rate-options-and-timings-for-sensors-and-behaviors.patch rename to patches/server/0567-Rate-options-and-timings-for-sensors-and-behaviors.patch diff --git a/patches/server/0569-Add-missing-forceDrop-toggles.patch b/patches/server/0568-Add-missing-forceDrop-toggles.patch similarity index 100% rename from patches/server/0569-Add-missing-forceDrop-toggles.patch rename to patches/server/0568-Add-missing-forceDrop-toggles.patch diff --git a/patches/server/0570-Stinger-API.patch b/patches/server/0569-Stinger-API.patch similarity index 100% rename from patches/server/0570-Stinger-API.patch rename to patches/server/0569-Stinger-API.patch diff --git a/patches/server/0571-Add-System.out-err-catcher.patch b/patches/server/0570-Add-System.out-err-catcher.patch similarity index 98% rename from patches/server/0571-Add-System.out-err-catcher.patch rename to patches/server/0570-Add-System.out-err-catcher.patch index 1a4bfc12d1..905517df95 100644 --- a/patches/server/0571-Add-System.out-err-catcher.patch +++ b/patches/server/0570-Add-System.out-err-catcher.patch @@ -105,7 +105,7 @@ index 0000000000000000000000000000000000000000..a8e813ca89b033f061e695288b3383bd + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index d0eefb53fb88c56d72dea68269bd2b0ce6fd1c1b..0fc2e453c63b63e12f33cde28ad5afea5657ac57 100644 +index 691ad3df67ff32528ac18c2927e96c91db25741e..c57428b235f7bc0444ba0024d05c7c15b5e74fc4 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -307,6 +307,7 @@ public final class CraftServer implements Server { diff --git a/patches/server/0572-Prevent-AFK-kick-while-watching-end-credits.patch b/patches/server/0571-Prevent-AFK-kick-while-watching-end-credits.patch similarity index 100% rename from patches/server/0572-Prevent-AFK-kick-while-watching-end-credits.patch rename to patches/server/0571-Prevent-AFK-kick-while-watching-end-credits.patch diff --git a/patches/server/0573-Allow-skipping-writing-of-comments-to-server.propert.patch b/patches/server/0572-Allow-skipping-writing-of-comments-to-server.propert.patch similarity index 100% rename from patches/server/0573-Allow-skipping-writing-of-comments-to-server.propert.patch rename to patches/server/0572-Allow-skipping-writing-of-comments-to-server.propert.patch diff --git a/patches/server/0574-Add-PlayerSetSpawnEvent.patch b/patches/server/0573-Add-PlayerSetSpawnEvent.patch similarity index 96% rename from patches/server/0574-Add-PlayerSetSpawnEvent.patch rename to patches/server/0573-Add-PlayerSetSpawnEvent.patch index 4b9bd3eb51..4e745dc806 100644 --- a/patches/server/0574-Add-PlayerSetSpawnEvent.patch +++ b/patches/server/0573-Add-PlayerSetSpawnEvent.patch @@ -49,10 +49,10 @@ index a2d0699e8427b2262a2396495111125eccafbb66..15db9368227dbc29d07d74e85bd126b3 } } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index e9eec0e4e2e533e4ddc7f52a16a1b2b1ce21d6da..db4bdce4eae9a91babe95c28cb0f6c96ab5f10df 100644 +index d1b21afe48dbe1e53d4a046434336be580497165..2dd10cada8d36ed5565481f3f5a5fba168ba9b26 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1423,7 +1423,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { +@@ -1422,7 +1422,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { } else if (this.bedBlocked(blockposition, enumdirection)) { return Either.left(net.minecraft.world.entity.player.Player.BedSleepingProblem.OBSTRUCTED); } else { @@ -61,7 +61,7 @@ index e9eec0e4e2e533e4ddc7f52a16a1b2b1ce21d6da..db4bdce4eae9a91babe95c28cb0f6c96 if (this.level().isDay()) { return Either.left(net.minecraft.world.entity.player.Player.BedSleepingProblem.NOT_POSSIBLE_NOW); } else { -@@ -2400,44 +2400,50 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { +@@ -2399,44 +2399,50 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { this.setRespawnPosition(player.getRespawnDimension(), player.getRespawnPosition(), player.getRespawnAngle(), player.isRespawnForced(), false); } @@ -145,7 +145,7 @@ index e9eec0e4e2e533e4ddc7f52a16a1b2b1ce21d6da..db4bdce4eae9a91babe95c28cb0f6c96 } else { this.respawnPosition = null; this.respawnDimension = Level.OVERWORLD; -@@ -2445,6 +2451,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { +@@ -2444,6 +2450,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { this.respawnForced = false; } @@ -154,7 +154,7 @@ index e9eec0e4e2e533e4ddc7f52a16a1b2b1ce21d6da..db4bdce4eae9a91babe95c28cb0f6c96 public SectionPos getLastSectionPos() { diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 5b449dd681390eb7aee229a3b6366dcbb96ce2d7..2eced5d3b539dfd072b8b4eafb34f21f849b1bd5 100644 +index b36cb031b153c452c7f030105f6963072b5858fc..d4fa173cebcef5fa86e5d077c2bad8e831392bf0 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -841,7 +841,7 @@ public abstract class PlayerList { @@ -187,7 +187,7 @@ index ba22ad1e4253477572d10d71db6db0ebc14d6755..94d067e9eeee73183de25165d8c97043 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 6bc3209b6039ed3d33131e1c6bc56a47916be3ee..37f220976b1f1b0a423d7354e6730b6ad8096495 100644 +index 7fb6bfe2863d856f27da29a77026f4bc821c929c..2f9c5d6825795b6dc8074d04bec944f93ac71a5a 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -1413,9 +1413,9 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0575-Make-hoppers-respect-inventory-max-stack-size.patch b/patches/server/0574-Make-hoppers-respect-inventory-max-stack-size.patch similarity index 91% rename from patches/server/0575-Make-hoppers-respect-inventory-max-stack-size.patch rename to patches/server/0574-Make-hoppers-respect-inventory-max-stack-size.patch index a062b815e2..c5b4e66926 100644 --- a/patches/server/0575-Make-hoppers-respect-inventory-max-stack-size.patch +++ b/patches/server/0574-Make-hoppers-respect-inventory-max-stack-size.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Make hoppers respect inventory max stack size diff --git a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java -index 6d948b6151c6194bdba1cd461960397615c4bc40..0d6132abd49d66fbf84c046e09144cb33651be15 100644 +index 1c8a08e317591413426285874de74f4de54efa07..542a5501ac94f57810d34e0f769a9a7855604f91 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java -@@ -487,15 +487,17 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen +@@ -495,15 +495,17 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen if (itemstack1.isEmpty()) { // Spigot start - SPIGOT-6693, InventorySubcontainer#setItem diff --git a/patches/server/0576-Optimize-entity-tracker-passenger-checks.patch b/patches/server/0575-Optimize-entity-tracker-passenger-checks.patch similarity index 100% rename from patches/server/0576-Optimize-entity-tracker-passenger-checks.patch rename to patches/server/0575-Optimize-entity-tracker-passenger-checks.patch diff --git a/patches/server/0577-Config-option-for-Piglins-guarding-chests.patch b/patches/server/0576-Config-option-for-Piglins-guarding-chests.patch similarity index 100% rename from patches/server/0577-Config-option-for-Piglins-guarding-chests.patch rename to patches/server/0576-Config-option-for-Piglins-guarding-chests.patch diff --git a/patches/server/0578-Add-EntityDamageItemEvent.patch b/patches/server/0577-Add-EntityDamageItemEvent.patch similarity index 98% rename from patches/server/0578-Add-EntityDamageItemEvent.patch rename to patches/server/0577-Add-EntityDamageItemEvent.patch index d9c3b86a2a..e289bb08f8 100644 --- a/patches/server/0578-Add-EntityDamageItemEvent.patch +++ b/patches/server/0577-Add-EntityDamageItemEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add EntityDamageItemEvent diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 7f7445a2b68fd2e6e5fcd509d950a0f8d680c1fe..ebc5f2e8d59da4bec25ff156ec95fe49366be59c 100644 +index 2ee949e1b0015c62499c557d5e359df4b9de6027..14d6e4548703b9b8640913f77406fff85f28d7ef 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -646,14 +646,14 @@ public final class ItemStack implements DataComponentHolder { diff --git a/patches/server/0579-Optimize-indirect-passenger-iteration.patch b/patches/server/0578-Optimize-indirect-passenger-iteration.patch similarity index 100% rename from patches/server/0579-Optimize-indirect-passenger-iteration.patch rename to patches/server/0578-Optimize-indirect-passenger-iteration.patch diff --git a/patches/server/0580-Configurable-item-frame-map-cursor-update-interval.patch b/patches/server/0579-Configurable-item-frame-map-cursor-update-interval.patch similarity index 100% rename from patches/server/0580-Configurable-item-frame-map-cursor-update-interval.patch rename to patches/server/0579-Configurable-item-frame-map-cursor-update-interval.patch diff --git a/patches/server/0581-Change-EnderEye-target-without-changing-other-things.patch b/patches/server/0580-Change-EnderEye-target-without-changing-other-things.patch similarity index 100% rename from patches/server/0581-Change-EnderEye-target-without-changing-other-things.patch rename to patches/server/0580-Change-EnderEye-target-without-changing-other-things.patch diff --git a/patches/server/0582-Add-BlockBreakBlockEvent.patch b/patches/server/0581-Add-BlockBreakBlockEvent.patch similarity index 100% rename from patches/server/0582-Add-BlockBreakBlockEvent.patch rename to patches/server/0581-Add-BlockBreakBlockEvent.patch diff --git a/patches/server/0583-Option-to-prevent-data-components-copy-in-smithing-r.patch b/patches/server/0582-Option-to-prevent-data-components-copy-in-smithing-r.patch similarity index 100% rename from patches/server/0583-Option-to-prevent-data-components-copy-in-smithing-r.patch rename to patches/server/0582-Option-to-prevent-data-components-copy-in-smithing-r.patch diff --git a/patches/server/0584-More-CommandBlock-API.patch b/patches/server/0583-More-CommandBlock-API.patch similarity index 100% rename from patches/server/0584-More-CommandBlock-API.patch rename to patches/server/0583-More-CommandBlock-API.patch diff --git a/patches/server/0585-Add-missing-team-sidebar-display-slots.patch b/patches/server/0584-Add-missing-team-sidebar-display-slots.patch similarity index 100% rename from patches/server/0585-Add-missing-team-sidebar-display-slots.patch rename to patches/server/0584-Add-missing-team-sidebar-display-slots.patch diff --git a/patches/server/0586-Add-back-EntityPortalExitEvent.patch b/patches/server/0585-Add-back-EntityPortalExitEvent.patch similarity index 100% rename from patches/server/0586-Add-back-EntityPortalExitEvent.patch rename to patches/server/0585-Add-back-EntityPortalExitEvent.patch diff --git a/patches/server/0587-Add-methods-to-find-targets-for-lightning-strikes.patch b/patches/server/0586-Add-methods-to-find-targets-for-lightning-strikes.patch similarity index 100% rename from patches/server/0587-Add-methods-to-find-targets-for-lightning-strikes.patch rename to patches/server/0586-Add-methods-to-find-targets-for-lightning-strikes.patch diff --git a/patches/server/0588-Get-entity-default-attributes.patch b/patches/server/0587-Get-entity-default-attributes.patch similarity index 100% rename from patches/server/0588-Get-entity-default-attributes.patch rename to patches/server/0587-Get-entity-default-attributes.patch diff --git a/patches/server/0589-Left-handed-API.patch b/patches/server/0588-Left-handed-API.patch similarity index 100% rename from patches/server/0589-Left-handed-API.patch rename to patches/server/0588-Left-handed-API.patch diff --git a/patches/server/0590-Add-more-advancement-API.patch b/patches/server/0589-Add-more-advancement-API.patch similarity index 98% rename from patches/server/0590-Add-more-advancement-API.patch rename to patches/server/0589-Add-more-advancement-API.patch index 160686a23d..ed610abf5d 100644 --- a/patches/server/0590-Add-more-advancement-API.patch +++ b/patches/server/0589-Add-more-advancement-API.patch @@ -164,10 +164,10 @@ index 8ca86852319d7463f60832bc98b825b0b4325995..62ada73302c6b3ce3fb2dcc8c31a1d9c private final DisplayInfo handle; diff --git a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java -index 9fffb9c9161caad8eb62a99b37d0f31862b568a5..72eca2c6e2107f695ad6c1d85e02dae1890ea410 100644 +index 0cb2b616e0fa060b7aae6c47502f75ee7647e917..17d6a4cdd16d34f83e0752c3bdaee08288425a07 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java +++ b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java -@@ -434,6 +434,11 @@ public class Commodore { +@@ -435,6 +435,11 @@ public class Commodore { super.visitMethodInsn(opcode, owner, name, "()Lcom/destroystokyo/paper/profile/PlayerProfile;", itf); return; } diff --git a/patches/server/0591-Add-ItemFactory-getSpawnEgg-API.patch b/patches/server/0590-Add-ItemFactory-getSpawnEgg-API.patch similarity index 96% rename from patches/server/0591-Add-ItemFactory-getSpawnEgg-API.patch rename to patches/server/0590-Add-ItemFactory-getSpawnEgg-API.patch index e31dc566fb..c4fffcd5cc 100644 --- a/patches/server/0591-Add-ItemFactory-getSpawnEgg-API.patch +++ b/patches/server/0590-Add-ItemFactory-getSpawnEgg-API.patch @@ -37,10 +37,10 @@ index eabb8b42b890224dd19b879ff276e9908674310d..803a19063c03627dbea79cb1c395ae35 + // Paper end - old getSpawnEgg API } diff --git a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java -index 72eca2c6e2107f695ad6c1d85e02dae1890ea410..b67dfb358a9c1ae26793557ca2151357db4b1691 100644 +index 17d6a4cdd16d34f83e0752c3bdaee08288425a07..157fbe09ab22f3218d9d3f72e8c0a5a3d727eaeb 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java +++ b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java -@@ -441,6 +441,15 @@ public class Commodore { +@@ -442,6 +442,15 @@ public class Commodore { } // Paper end diff --git a/patches/server/0592-Add-critical-damage-API.patch b/patches/server/0591-Add-critical-damage-API.patch similarity index 96% rename from patches/server/0592-Add-critical-damage-API.patch rename to patches/server/0591-Add-critical-damage-API.patch index e738b6fb6e..0cb51d12e2 100644 --- a/patches/server/0592-Add-critical-damage-API.patch +++ b/patches/server/0591-Add-critical-damage-API.patch @@ -61,10 +61,10 @@ index 746bb8a36bd6c6ef953289576af499caad588d79..57ebb96707748e90810dc07471f9769f int k = entity.getRemainingFireTicks(); diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index be9fc7a0f5b4ad651847a20367cdc82b8f67ff29..76be6bf839bb6aec7f2ab0295a3509fb106a95bf 100644 +index 61caedf05b28b2ba351e231c5f76e4df1ebd271a..4180b86620aa18a95e0793f646515779801a343e 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1074,7 +1074,7 @@ public class CraftEventFactory { +@@ -1078,7 +1078,7 @@ public class CraftEventFactory { return CraftEventFactory.callEntityDamageEvent(source.getDirectBlock(), source.getDirectBlockState(), entity, DamageCause.BLOCK_EXPLOSION, bukkitDamageSource, modifiers, modifierFunctions, cancelled); } DamageCause damageCause = (damager.getBukkitEntity() instanceof org.bukkit.entity.TNTPrimed) ? DamageCause.BLOCK_EXPLOSION : DamageCause.ENTITY_EXPLOSION; @@ -73,7 +73,7 @@ index be9fc7a0f5b4ad651847a20367cdc82b8f67ff29..76be6bf839bb6aec7f2ab0295a3509fb } else if (damager != null || source.getDirectEntity() != null) { DamageCause cause = (source.isSweep()) ? DamageCause.ENTITY_SWEEP_ATTACK : DamageCause.ENTITY_ATTACK; -@@ -1100,7 +1100,7 @@ public class CraftEventFactory { +@@ -1104,7 +1104,7 @@ public class CraftEventFactory { cause = DamageCause.MAGIC; } @@ -82,7 +82,7 @@ index be9fc7a0f5b4ad651847a20367cdc82b8f67ff29..76be6bf839bb6aec7f2ab0295a3509fb } else if (source.is(DamageTypes.FELL_OUT_OF_WORLD)) { return CraftEventFactory.callEntityDamageEvent(source.getDirectBlock(), source.getDirectBlockState(), entity, DamageCause.VOID, bukkitDamageSource, modifiers, modifierFunctions, cancelled); } else if (source.is(DamageTypes.LAVA)) { -@@ -1160,13 +1160,13 @@ public class CraftEventFactory { +@@ -1164,13 +1164,13 @@ public class CraftEventFactory { cause = DamageCause.CUSTOM; } diff --git a/patches/server/0593-Fix-issues-with-mob-conversion.patch b/patches/server/0592-Fix-issues-with-mob-conversion.patch similarity index 100% rename from patches/server/0593-Fix-issues-with-mob-conversion.patch rename to patches/server/0592-Fix-issues-with-mob-conversion.patch diff --git a/patches/server/0594-Add-hasCollision-methods-to-various-places.patch b/patches/server/0593-Add-hasCollision-methods-to-various-places.patch similarity index 100% rename from patches/server/0594-Add-hasCollision-methods-to-various-places.patch rename to patches/server/0593-Add-hasCollision-methods-to-various-places.patch diff --git a/patches/server/0595-Goat-ram-API.patch b/patches/server/0594-Goat-ram-API.patch similarity index 100% rename from patches/server/0595-Goat-ram-API.patch rename to patches/server/0594-Goat-ram-API.patch diff --git a/patches/server/0596-Add-API-for-resetting-a-single-score.patch b/patches/server/0595-Add-API-for-resetting-a-single-score.patch similarity index 100% rename from patches/server/0596-Add-API-for-resetting-a-single-score.patch rename to patches/server/0595-Add-API-for-resetting-a-single-score.patch diff --git a/patches/server/0597-Add-Raw-Byte-Entity-Serialization.patch b/patches/server/0596-Add-Raw-Byte-Entity-Serialization.patch similarity index 100% rename from patches/server/0597-Add-Raw-Byte-Entity-Serialization.patch rename to patches/server/0596-Add-Raw-Byte-Entity-Serialization.patch diff --git a/patches/server/0598-Vanilla-command-permission-fixes.patch b/patches/server/0597-Vanilla-command-permission-fixes.patch similarity index 100% rename from patches/server/0598-Vanilla-command-permission-fixes.patch rename to patches/server/0597-Vanilla-command-permission-fixes.patch diff --git a/patches/server/0599-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch b/patches/server/0598-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch similarity index 96% rename from patches/server/0599-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch rename to patches/server/0598-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch index eb56ff1385..22f86aa476 100644 --- a/patches/server/0599-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch +++ b/patches/server/0598-Do-not-run-close-logic-for-inventories-on-chunk-unlo.patch @@ -28,10 +28,10 @@ index 778d3f3ea2247be5bd6edd382b872f6de5bc359c..de154106419d57a6b6c410fedc29cec1 } // Spigot End diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index db4bdce4eae9a91babe95c28cb0f6c96ab5f10df..0d5870ef02467d88cfeccf5aa953fcbcdf43117f 100644 +index 2dd10cada8d36ed5565481f3f5a5fba168ba9b26..6648af4d8d795637fae444dc85803b399592fd7d 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1716,6 +1716,18 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { +@@ -1715,6 +1715,18 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { this.connection.send(new ClientboundContainerClosePacket(this.containerMenu.containerId)); this.doCloseContainer(); } diff --git a/patches/server/0600-Fix-GameProfileCache-concurrency.patch b/patches/server/0599-Fix-GameProfileCache-concurrency.patch similarity index 100% rename from patches/server/0600-Fix-GameProfileCache-concurrency.patch rename to patches/server/0599-Fix-GameProfileCache-concurrency.patch diff --git a/patches/server/0601-Improve-and-expand-AsyncCatcher.patch b/patches/server/0600-Improve-and-expand-AsyncCatcher.patch similarity index 98% rename from patches/server/0601-Improve-and-expand-AsyncCatcher.patch rename to patches/server/0600-Improve-and-expand-AsyncCatcher.patch index 43a86ca3d4..9d162a5387 100644 --- a/patches/server/0601-Improve-and-expand-AsyncCatcher.patch +++ b/patches/server/0600-Improve-and-expand-AsyncCatcher.patch @@ -17,10 +17,10 @@ Async catch modifications to critical entity state Co-authored-by: Jake Potrebic diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 93a9ef3fc5620c622ce0dfb010c6dafad8fcdb71..987ad7f7130c45a4b3843e186b6a5662859a06ae 100644 +index 1e442429d30886eee96f68d212548ff741e3e07e..fa1fbd41fce44bb8bb9e3435abfcac4e0652c968 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1578,6 +1578,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1573,6 +1573,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } public void internalTeleport(double d0, double d1, double d2, float f, float f1, Set set) { // Paper diff --git a/patches/server/0602-Add-paper-mobcaps-and-paper-playermobcaps.patch b/patches/server/0601-Add-paper-mobcaps-and-paper-playermobcaps.patch similarity index 100% rename from patches/server/0602-Add-paper-mobcaps-and-paper-playermobcaps.patch rename to patches/server/0601-Add-paper-mobcaps-and-paper-playermobcaps.patch diff --git a/patches/server/0603-Sanitize-ResourceLocation-error-logging.patch b/patches/server/0602-Sanitize-ResourceLocation-error-logging.patch similarity index 100% rename from patches/server/0603-Sanitize-ResourceLocation-error-logging.patch rename to patches/server/0602-Sanitize-ResourceLocation-error-logging.patch diff --git a/patches/server/0604-Manually-inline-methods-in-BlockPosition.patch b/patches/server/0603-Manually-inline-methods-in-BlockPosition.patch similarity index 100% rename from patches/server/0604-Manually-inline-methods-in-BlockPosition.patch rename to patches/server/0603-Manually-inline-methods-in-BlockPosition.patch diff --git a/patches/server/0605-Name-craft-scheduler-threads-according-to-the-plugin.patch b/patches/server/0604-Name-craft-scheduler-threads-according-to-the-plugin.patch similarity index 100% rename from patches/server/0605-Name-craft-scheduler-threads-according-to-the-plugin.patch rename to patches/server/0604-Name-craft-scheduler-threads-according-to-the-plugin.patch diff --git a/patches/server/0606-Make-sure-inlined-getChunkAt-has-inlined-logic-for-l.patch b/patches/server/0605-Make-sure-inlined-getChunkAt-has-inlined-logic-for-l.patch similarity index 94% rename from patches/server/0606-Make-sure-inlined-getChunkAt-has-inlined-logic-for-l.patch rename to patches/server/0605-Make-sure-inlined-getChunkAt-has-inlined-logic-for-l.patch index b950818c7b..23f6d7b245 100644 --- a/patches/server/0606-Make-sure-inlined-getChunkAt-has-inlined-logic-for-l.patch +++ b/patches/server/0605-Make-sure-inlined-getChunkAt-has-inlined-logic-for-l.patch @@ -10,7 +10,7 @@ chunks did get inlined, but the standard CPS.getChunkAt method was not inlined. diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index ed1fc466151ebebf7c3ac135c6893f4ea9a55a52..38bcf9f410e8a9d47c7d486c28dbc16a6225b650 100644 +index 20a14b4163807b806bf2ce5a88d3c35098bed929..b4111bcc6a676dc42b233761aa667708669c2ab8 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -352,7 +352,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { diff --git a/patches/server/0607-Don-t-read-neighbour-chunk-data-off-disk-when-conver.patch b/patches/server/0606-Don-t-read-neighbour-chunk-data-off-disk-when-conver.patch similarity index 100% rename from patches/server/0607-Don-t-read-neighbour-chunk-data-off-disk-when-conver.patch rename to patches/server/0606-Don-t-read-neighbour-chunk-data-off-disk-when-conver.patch diff --git a/patches/server/0608-Don-t-lookup-fluid-state-when-raytracing-skip-air-bl.patch b/patches/server/0607-Don-t-lookup-fluid-state-when-raytracing-skip-air-bl.patch similarity index 100% rename from patches/server/0608-Don-t-lookup-fluid-state-when-raytracing-skip-air-bl.patch rename to patches/server/0607-Don-t-lookup-fluid-state-when-raytracing-skip-air-bl.patch diff --git a/patches/server/0609-Time-scoreboard-search.patch b/patches/server/0608-Time-scoreboard-search.patch similarity index 100% rename from patches/server/0609-Time-scoreboard-search.patch rename to patches/server/0608-Time-scoreboard-search.patch diff --git a/patches/server/0610-Oprimise-map-impl-for-tracked-players.patch b/patches/server/0609-Oprimise-map-impl-for-tracked-players.patch similarity index 100% rename from patches/server/0610-Oprimise-map-impl-for-tracked-players.patch rename to patches/server/0609-Oprimise-map-impl-for-tracked-players.patch diff --git a/patches/server/0611-Add-missing-InventoryType.patch b/patches/server/0610-Add-missing-InventoryType.patch similarity index 100% rename from patches/server/0611-Add-missing-InventoryType.patch rename to patches/server/0610-Add-missing-InventoryType.patch diff --git a/patches/server/0612-Optimise-BlockSoil-nearby-water-lookup.patch b/patches/server/0611-Optimise-BlockSoil-nearby-water-lookup.patch similarity index 100% rename from patches/server/0612-Optimise-BlockSoil-nearby-water-lookup.patch rename to patches/server/0611-Optimise-BlockSoil-nearby-water-lookup.patch diff --git a/patches/server/0613-Fix-merchant-inventory-not-closing-on-entity-removal.patch b/patches/server/0612-Fix-merchant-inventory-not-closing-on-entity-removal.patch similarity index 100% rename from patches/server/0613-Fix-merchant-inventory-not-closing-on-entity-removal.patch rename to patches/server/0612-Fix-merchant-inventory-not-closing-on-entity-removal.patch diff --git a/patches/server/0614-Check-requirement-before-suggesting-root-nodes.patch b/patches/server/0613-Check-requirement-before-suggesting-root-nodes.patch similarity index 100% rename from patches/server/0614-Check-requirement-before-suggesting-root-nodes.patch rename to patches/server/0613-Check-requirement-before-suggesting-root-nodes.patch diff --git a/patches/server/0615-Don-t-respond-to-ServerboundCommandSuggestionPacket-.patch b/patches/server/0614-Don-t-respond-to-ServerboundCommandSuggestionPacket-.patch similarity index 100% rename from patches/server/0615-Don-t-respond-to-ServerboundCommandSuggestionPacket-.patch rename to patches/server/0614-Don-t-respond-to-ServerboundCommandSuggestionPacket-.patch diff --git a/patches/server/0616-Add-packet-limiter-config.patch b/patches/server/0615-Add-packet-limiter-config.patch similarity index 100% rename from patches/server/0616-Add-packet-limiter-config.patch rename to patches/server/0615-Add-packet-limiter-config.patch diff --git a/patches/server/0617-Fix-setPatternColor-on-tropical-fish-bucket-meta.patch b/patches/server/0616-Fix-setPatternColor-on-tropical-fish-bucket-meta.patch similarity index 100% rename from patches/server/0617-Fix-setPatternColor-on-tropical-fish-bucket-meta.patch rename to patches/server/0616-Fix-setPatternColor-on-tropical-fish-bucket-meta.patch diff --git a/patches/server/0618-Ensure-valid-vehicle-status.patch b/patches/server/0617-Ensure-valid-vehicle-status.patch similarity index 100% rename from patches/server/0618-Ensure-valid-vehicle-status.patch rename to patches/server/0617-Ensure-valid-vehicle-status.patch diff --git a/patches/server/0619-Prevent-softlocked-end-exit-portal-generation.patch b/patches/server/0618-Prevent-softlocked-end-exit-portal-generation.patch similarity index 100% rename from patches/server/0619-Prevent-softlocked-end-exit-portal-generation.patch rename to patches/server/0618-Prevent-softlocked-end-exit-portal-generation.patch diff --git a/patches/server/0620-Fix-CocaoDecorator-causing-a-crash-when-trying-to-ge.patch b/patches/server/0619-Fix-CocaoDecorator-causing-a-crash-when-trying-to-ge.patch similarity index 100% rename from patches/server/0620-Fix-CocaoDecorator-causing-a-crash-when-trying-to-ge.patch rename to patches/server/0619-Fix-CocaoDecorator-causing-a-crash-when-trying-to-ge.patch diff --git a/patches/server/0621-Don-t-log-debug-logging-being-disabled.patch b/patches/server/0620-Don-t-log-debug-logging-being-disabled.patch similarity index 100% rename from patches/server/0621-Don-t-log-debug-logging-being-disabled.patch rename to patches/server/0620-Don-t-log-debug-logging-being-disabled.patch diff --git a/patches/server/0622-fix-various-menus-with-empty-level-accesses.patch b/patches/server/0621-fix-various-menus-with-empty-level-accesses.patch similarity index 100% rename from patches/server/0622-fix-various-menus-with-empty-level-accesses.patch rename to patches/server/0621-fix-various-menus-with-empty-level-accesses.patch diff --git a/patches/server/0623-Preserve-overstacked-loot.patch b/patches/server/0622-Preserve-overstacked-loot.patch similarity index 100% rename from patches/server/0623-Preserve-overstacked-loot.patch rename to patches/server/0622-Preserve-overstacked-loot.patch diff --git a/patches/server/0624-Update-head-rotation-in-missing-places.patch b/patches/server/0623-Update-head-rotation-in-missing-places.patch similarity index 100% rename from patches/server/0624-Update-head-rotation-in-missing-places.patch rename to patches/server/0623-Update-head-rotation-in-missing-places.patch diff --git a/patches/server/0625-prevent-unintended-light-block-manipulation.patch b/patches/server/0624-prevent-unintended-light-block-manipulation.patch similarity index 100% rename from patches/server/0625-prevent-unintended-light-block-manipulation.patch rename to patches/server/0624-prevent-unintended-light-block-manipulation.patch diff --git a/patches/server/0626-Fix-CraftCriteria-defaults-map.patch b/patches/server/0625-Fix-CraftCriteria-defaults-map.patch similarity index 100% rename from patches/server/0626-Fix-CraftCriteria-defaults-map.patch rename to patches/server/0625-Fix-CraftCriteria-defaults-map.patch diff --git a/patches/server/0627-Fix-upstreams-block-state-factories.patch b/patches/server/0626-Fix-upstreams-block-state-factories.patch similarity index 99% rename from patches/server/0627-Fix-upstreams-block-state-factories.patch rename to patches/server/0626-Fix-upstreams-block-state-factories.patch index a48a6b0d09..bfb0aa8f8a 100644 --- a/patches/server/0627-Fix-upstreams-block-state-factories.patch +++ b/patches/server/0626-Fix-upstreams-block-state-factories.patch @@ -13,10 +13,10 @@ the material type of the block at that location. public net.minecraft.world.level.block.entity.BlockEntityType validBlocks diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -index 7147484eefad44ba67db03b6ef2090a596e278de..6f6693456cf518b7bd9eb21ba681540a40c588ef 100644 +index 48bee70ba4188a4a55beb6584224b0f23784dd88..cbb777f499a4e8a447153c04d09c0c71321c663c 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -@@ -371,7 +371,7 @@ public abstract class BlockEntity { +@@ -387,7 +387,7 @@ public abstract class BlockEntity { // Paper end if (this.level == null) return null; org.bukkit.block.Block block = this.level.getWorld().getBlockAt(this.worldPosition.getX(), this.worldPosition.getY(), this.worldPosition.getZ()); diff --git a/patches/server/0628-Configurable-feature-seeds.patch b/patches/server/0627-Configurable-feature-seeds.patch similarity index 100% rename from patches/server/0628-Configurable-feature-seeds.patch rename to patches/server/0627-Configurable-feature-seeds.patch diff --git a/patches/server/0629-Add-root-admin-user-detection.patch b/patches/server/0628-Add-root-admin-user-detection.patch similarity index 100% rename from patches/server/0629-Add-root-admin-user-detection.patch rename to patches/server/0628-Add-root-admin-user-detection.patch diff --git a/patches/server/0630-don-t-attempt-to-teleport-dead-entities.patch b/patches/server/0629-don-t-attempt-to-teleport-dead-entities.patch similarity index 100% rename from patches/server/0630-don-t-attempt-to-teleport-dead-entities.patch rename to patches/server/0629-don-t-attempt-to-teleport-dead-entities.patch diff --git a/patches/server/0631-Prevent-excessive-velocity-through-repeated-crits.patch b/patches/server/0630-Prevent-excessive-velocity-through-repeated-crits.patch similarity index 100% rename from patches/server/0631-Prevent-excessive-velocity-through-repeated-crits.patch rename to patches/server/0630-Prevent-excessive-velocity-through-repeated-crits.patch diff --git a/patches/server/0632-Remove-client-side-code-using-deprecated-for-removal.patch b/patches/server/0631-Remove-client-side-code-using-deprecated-for-removal.patch similarity index 100% rename from patches/server/0632-Remove-client-side-code-using-deprecated-for-removal.patch rename to patches/server/0631-Remove-client-side-code-using-deprecated-for-removal.patch diff --git a/patches/server/0633-Fix-Spigot-growth-modifiers.patch b/patches/server/0632-Fix-Spigot-growth-modifiers.patch similarity index 100% rename from patches/server/0633-Fix-Spigot-growth-modifiers.patch rename to patches/server/0632-Fix-Spigot-growth-modifiers.patch diff --git a/patches/server/0634-Prevent-ContainerOpenersCounter-openCount-from-going.patch b/patches/server/0633-Prevent-ContainerOpenersCounter-openCount-from-going.patch similarity index 100% rename from patches/server/0634-Prevent-ContainerOpenersCounter-openCount-from-going.patch rename to patches/server/0633-Prevent-ContainerOpenersCounter-openCount-from-going.patch diff --git a/patches/server/0635-Add-PlayerItemFrameChangeEvent.patch b/patches/server/0634-Add-PlayerItemFrameChangeEvent.patch similarity index 100% rename from patches/server/0635-Add-PlayerItemFrameChangeEvent.patch rename to patches/server/0634-Add-PlayerItemFrameChangeEvent.patch diff --git a/patches/server/0636-Optimize-HashMapPalette.patch b/patches/server/0635-Optimize-HashMapPalette.patch similarity index 100% rename from patches/server/0636-Optimize-HashMapPalette.patch rename to patches/server/0635-Optimize-HashMapPalette.patch diff --git a/patches/server/0637-Fix-ChunkSnapshot-isSectionEmpty-int-and-optimize-Pa.patch b/patches/server/0636-Fix-ChunkSnapshot-isSectionEmpty-int-and-optimize-Pa.patch similarity index 100% rename from patches/server/0637-Fix-ChunkSnapshot-isSectionEmpty-int-and-optimize-Pa.patch rename to patches/server/0636-Fix-ChunkSnapshot-isSectionEmpty-int-and-optimize-Pa.patch diff --git a/patches/server/0638-Add-more-Campfire-API.patch b/patches/server/0637-Add-more-Campfire-API.patch similarity index 100% rename from patches/server/0638-Add-more-Campfire-API.patch rename to patches/server/0637-Add-more-Campfire-API.patch diff --git a/patches/server/0639-Only-write-chunk-data-to-disk-if-it-serializes-witho.patch b/patches/server/0638-Only-write-chunk-data-to-disk-if-it-serializes-witho.patch similarity index 100% rename from patches/server/0639-Only-write-chunk-data-to-disk-if-it-serializes-witho.patch rename to patches/server/0638-Only-write-chunk-data-to-disk-if-it-serializes-witho.patch diff --git a/patches/server/0640-Forward-CraftEntity-in-teleport-command.patch b/patches/server/0639-Forward-CraftEntity-in-teleport-command.patch similarity index 100% rename from patches/server/0640-Forward-CraftEntity-in-teleport-command.patch rename to patches/server/0639-Forward-CraftEntity-in-teleport-command.patch diff --git a/patches/server/0641-Improve-scoreboard-entries.patch b/patches/server/0640-Improve-scoreboard-entries.patch similarity index 100% rename from patches/server/0641-Improve-scoreboard-entries.patch rename to patches/server/0640-Improve-scoreboard-entries.patch diff --git a/patches/server/0642-Entity-powdered-snow-API.patch b/patches/server/0641-Entity-powdered-snow-API.patch similarity index 100% rename from patches/server/0642-Entity-powdered-snow-API.patch rename to patches/server/0641-Entity-powdered-snow-API.patch diff --git a/patches/server/0643-Add-API-for-item-entity-health.patch b/patches/server/0642-Add-API-for-item-entity-health.patch similarity index 100% rename from patches/server/0643-Add-API-for-item-entity-health.patch rename to patches/server/0642-Add-API-for-item-entity-health.patch diff --git a/patches/server/0644-Configurable-max-block-light-for-monster-spawning.patch b/patches/server/0643-Configurable-max-block-light-for-monster-spawning.patch similarity index 100% rename from patches/server/0644-Configurable-max-block-light-for-monster-spawning.patch rename to patches/server/0643-Configurable-max-block-light-for-monster-spawning.patch diff --git a/patches/server/0645-Fix-sticky-pistons-and-BlockPistonRetractEvent.patch b/patches/server/0644-Fix-sticky-pistons-and-BlockPistonRetractEvent.patch similarity index 100% rename from patches/server/0645-Fix-sticky-pistons-and-BlockPistonRetractEvent.patch rename to patches/server/0644-Fix-sticky-pistons-and-BlockPistonRetractEvent.patch diff --git a/patches/server/0646-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch b/patches/server/0645-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch similarity index 100% rename from patches/server/0646-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch rename to patches/server/0645-Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch diff --git a/patches/server/0647-Bucketable-API.patch b/patches/server/0646-Bucketable-API.patch similarity index 100% rename from patches/server/0647-Bucketable-API.patch rename to patches/server/0646-Bucketable-API.patch diff --git a/patches/server/0648-Validate-usernames.patch b/patches/server/0647-Validate-usernames.patch similarity index 97% rename from patches/server/0648-Validate-usernames.patch rename to patches/server/0647-Validate-usernames.patch index 08d6e377eb..788e0c2a0d 100644 --- a/patches/server/0648-Validate-usernames.patch +++ b/patches/server/0647-Validate-usernames.patch @@ -32,7 +32,7 @@ index baedae23865ea80c6546d1f6f439e1d7712258b9..e9cd90b6bb2f57d605323add43f12962 GameProfile gameprofile = this.server.getSingleplayerProfile(); diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 2eced5d3b539dfd072b8b4eafb34f21f849b1bd5..97257e44163ed565b5f1152f0738649b1adbeb07 100644 +index d4fa173cebcef5fa86e5d077c2bad8e831392bf0..9563fc34579992b74451f32e8cbb24b19d1ee19e 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -670,7 +670,7 @@ public abstract class PlayerList { diff --git a/patches/server/0649-Make-water-animal-spawn-height-configurable.patch b/patches/server/0648-Make-water-animal-spawn-height-configurable.patch similarity index 100% rename from patches/server/0649-Make-water-animal-spawn-height-configurable.patch rename to patches/server/0648-Make-water-animal-spawn-height-configurable.patch diff --git a/patches/server/0650-Expose-vanilla-BiomeProvider-from-WorldInfo.patch b/patches/server/0649-Expose-vanilla-BiomeProvider-from-WorldInfo.patch similarity index 100% rename from patches/server/0650-Expose-vanilla-BiomeProvider-from-WorldInfo.patch rename to patches/server/0649-Expose-vanilla-BiomeProvider-from-WorldInfo.patch diff --git a/patches/server/0651-Add-config-option-for-worlds-affected-by-time-cmd.patch b/patches/server/0650-Add-config-option-for-worlds-affected-by-time-cmd.patch similarity index 100% rename from patches/server/0651-Add-config-option-for-worlds-affected-by-time-cmd.patch rename to patches/server/0650-Add-config-option-for-worlds-affected-by-time-cmd.patch diff --git a/patches/server/0652-Add-missing-IAE-check-for-PersistentDataContainer-ha.patch b/patches/server/0651-Add-missing-IAE-check-for-PersistentDataContainer-ha.patch similarity index 100% rename from patches/server/0652-Add-missing-IAE-check-for-PersistentDataContainer-ha.patch rename to patches/server/0651-Add-missing-IAE-check-for-PersistentDataContainer-ha.patch diff --git a/patches/server/0653-Multiple-Entries-with-Scoreboards.patch b/patches/server/0652-Multiple-Entries-with-Scoreboards.patch similarity index 100% rename from patches/server/0653-Multiple-Entries-with-Scoreboards.patch rename to patches/server/0652-Multiple-Entries-with-Scoreboards.patch diff --git a/patches/server/0654-Reset-placed-block-on-exception.patch b/patches/server/0653-Reset-placed-block-on-exception.patch similarity index 100% rename from patches/server/0654-Reset-placed-block-on-exception.patch rename to patches/server/0653-Reset-placed-block-on-exception.patch diff --git a/patches/server/0655-Add-configurable-height-for-slime-spawn.patch b/patches/server/0654-Add-configurable-height-for-slime-spawn.patch similarity index 100% rename from patches/server/0655-Add-configurable-height-for-slime-spawn.patch rename to patches/server/0654-Add-configurable-height-for-slime-spawn.patch diff --git a/patches/server/0656-Fix-xp-reward-for-baby-zombies.patch b/patches/server/0655-Fix-xp-reward-for-baby-zombies.patch similarity index 100% rename from patches/server/0656-Fix-xp-reward-for-baby-zombies.patch rename to patches/server/0655-Fix-xp-reward-for-baby-zombies.patch diff --git a/patches/server/0657-Multi-Block-Change-API-Implementation.patch b/patches/server/0656-Multi-Block-Change-API-Implementation.patch similarity index 97% rename from patches/server/0657-Multi-Block-Change-API-Implementation.patch rename to patches/server/0656-Multi-Block-Change-API-Implementation.patch index 6cf3af0bc9..edfcf23bd1 100644 --- a/patches/server/0657-Multi-Block-Change-API-Implementation.patch +++ b/patches/server/0656-Multi-Block-Change-API-Implementation.patch @@ -24,7 +24,7 @@ index 926ff9be3d9e3f5d620e4c7ccb22b9f64865ff8c..1a37654aff9a9c86c9f7af10a1cf7213 buf.writeLong(this.sectionPos.asLong()); buf.writeVarInt(this.positions.length); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 395d5b5378e122c820fd4632180cf4f859e1f502..1ffbb31f2926a1b076ab213cb32dd19c7b0f8768 100644 +index 37f220976b1f1b0a423d7354e6730b6ad8096495..4b7b812a0203ef8a586c0e0cee10c41935487309 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -930,6 +930,32 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0658-Fix-NotePlayEvent.patch b/patches/server/0657-Fix-NotePlayEvent.patch similarity index 100% rename from patches/server/0658-Fix-NotePlayEvent.patch rename to patches/server/0657-Fix-NotePlayEvent.patch diff --git a/patches/server/0659-Freeze-Tick-Lock-API.patch b/patches/server/0658-Freeze-Tick-Lock-API.patch similarity index 100% rename from patches/server/0659-Freeze-Tick-Lock-API.patch rename to patches/server/0658-Freeze-Tick-Lock-API.patch diff --git a/patches/server/0660-More-PotionEffectType-API.patch b/patches/server/0659-More-PotionEffectType-API.patch similarity index 100% rename from patches/server/0660-More-PotionEffectType-API.patch rename to patches/server/0659-More-PotionEffectType-API.patch diff --git a/patches/server/0661-Use-a-CHM-for-StructureTemplate.Pallete-cache.patch b/patches/server/0660-Use-a-CHM-for-StructureTemplate.Pallete-cache.patch similarity index 100% rename from patches/server/0661-Use-a-CHM-for-StructureTemplate.Pallete-cache.patch rename to patches/server/0660-Use-a-CHM-for-StructureTemplate.Pallete-cache.patch diff --git a/patches/server/0662-API-for-creating-command-sender-which-forwards-feedb.patch b/patches/server/0661-API-for-creating-command-sender-which-forwards-feedb.patch similarity index 100% rename from patches/server/0662-API-for-creating-command-sender-which-forwards-feedb.patch rename to patches/server/0661-API-for-creating-command-sender-which-forwards-feedb.patch diff --git a/patches/server/0663-Add-missing-structure-set-seed-configs.patch b/patches/server/0662-Add-missing-structure-set-seed-configs.patch similarity index 100% rename from patches/server/0663-Add-missing-structure-set-seed-configs.patch rename to patches/server/0662-Add-missing-structure-set-seed-configs.patch diff --git a/patches/server/0664-Fix-cancelled-powdered-snow-bucket-placement.patch b/patches/server/0663-Fix-cancelled-powdered-snow-bucket-placement.patch similarity index 95% rename from patches/server/0664-Fix-cancelled-powdered-snow-bucket-placement.patch rename to patches/server/0663-Fix-cancelled-powdered-snow-bucket-placement.patch index d4169a6e7a..1080cc2e2e 100644 --- a/patches/server/0664-Fix-cancelled-powdered-snow-bucket-placement.patch +++ b/patches/server/0663-Fix-cancelled-powdered-snow-bucket-placement.patch @@ -8,7 +8,7 @@ snow bucket didn't revert grass that became snowy because of the placement. diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index ebc5f2e8d59da4bec25ff156ec95fe49366be59c..823146a66de8ce13e6dc6faf2fd135480bd51c3a 100644 +index 14d6e4548703b9b8640913f77406fff85f28d7ef..eeba6d3aeb50bc7ee6dcfe7cc18eee2487d47357 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -422,7 +422,7 @@ public final class ItemStack implements DataComponentHolder { diff --git a/patches/server/0665-Add-missing-Validate-calls-to-CraftServer-getSpawnLi.patch b/patches/server/0664-Add-missing-Validate-calls-to-CraftServer-getSpawnLi.patch similarity index 100% rename from patches/server/0665-Add-missing-Validate-calls-to-CraftServer-getSpawnLi.patch rename to patches/server/0664-Add-missing-Validate-calls-to-CraftServer-getSpawnLi.patch diff --git a/patches/server/0666-Add-GameEvent-tags.patch b/patches/server/0665-Add-GameEvent-tags.patch similarity index 100% rename from patches/server/0666-Add-GameEvent-tags.patch rename to patches/server/0665-Add-GameEvent-tags.patch diff --git a/patches/server/0667-Execute-chunk-tasks-fairly-for-worlds-while-waiting-.patch b/patches/server/0666-Execute-chunk-tasks-fairly-for-worlds-while-waiting-.patch similarity index 100% rename from patches/server/0667-Execute-chunk-tasks-fairly-for-worlds-while-waiting-.patch rename to patches/server/0666-Execute-chunk-tasks-fairly-for-worlds-while-waiting-.patch diff --git a/patches/server/0668-Furnace-RecipesUsed-API.patch b/patches/server/0667-Furnace-RecipesUsed-API.patch similarity index 100% rename from patches/server/0668-Furnace-RecipesUsed-API.patch rename to patches/server/0667-Furnace-RecipesUsed-API.patch diff --git a/patches/server/0669-Configurable-sculk-sensor-listener-range.patch b/patches/server/0668-Configurable-sculk-sensor-listener-range.patch similarity index 100% rename from patches/server/0669-Configurable-sculk-sensor-listener-range.patch rename to patches/server/0668-Configurable-sculk-sensor-listener-range.patch diff --git a/patches/server/0670-Add-missing-block-data-mins-and-maxes.patch b/patches/server/0669-Add-missing-block-data-mins-and-maxes.patch similarity index 100% rename from patches/server/0670-Add-missing-block-data-mins-and-maxes.patch rename to patches/server/0669-Add-missing-block-data-mins-and-maxes.patch diff --git a/patches/server/0671-Option-to-have-default-CustomSpawners-in-custom-worl.patch b/patches/server/0670-Option-to-have-default-CustomSpawners-in-custom-worl.patch similarity index 100% rename from patches/server/0671-Option-to-have-default-CustomSpawners-in-custom-worl.patch rename to patches/server/0670-Option-to-have-default-CustomSpawners-in-custom-worl.patch diff --git a/patches/server/0672-Put-world-into-worldlist-before-initing-the-world.patch b/patches/server/0671-Put-world-into-worldlist-before-initing-the-world.patch similarity index 100% rename from patches/server/0672-Put-world-into-worldlist-before-initing-the-world.patch rename to patches/server/0671-Put-world-into-worldlist-before-initing-the-world.patch diff --git a/patches/server/0673-Custom-Potion-Mixes.patch b/patches/server/0672-Custom-Potion-Mixes.patch similarity index 99% rename from patches/server/0673-Custom-Potion-Mixes.patch rename to patches/server/0672-Custom-Potion-Mixes.patch index 8cd0b19f49..89fb9f45a5 100644 --- a/patches/server/0673-Custom-Potion-Mixes.patch +++ b/patches/server/0672-Custom-Potion-Mixes.patch @@ -108,7 +108,7 @@ index 04286e907ff14cc8c45dbfc6ab12f520afcca2ca..8142e4a238066404f3d1685f9cee1a2b this.getPlayerList().reloadResources(); this.functionManager.replaceLibrary(this.resources.managers.getFunctionLibrary()); diff --git a/src/main/java/net/minecraft/world/inventory/BrewingStandMenu.java b/src/main/java/net/minecraft/world/inventory/BrewingStandMenu.java -index a7c33675c3777cfbeeecbb3a123a0b03195e679c..93c4657f345b6d3442b1f2ab17b2703ded86b525 100644 +index 993abd8b0b80bfc7a1ce936eaaf3e0804fc9e0a4..eb2cdb36366e376b4e91aea847170b82ca26d274 100644 --- a/src/main/java/net/minecraft/world/inventory/BrewingStandMenu.java +++ b/src/main/java/net/minecraft/world/inventory/BrewingStandMenu.java @@ -53,9 +53,11 @@ public class BrewingStandMenu extends AbstractContainerMenu { diff --git a/patches/server/0674-Force-close-world-loading-screen.patch b/patches/server/0673-Force-close-world-loading-screen.patch similarity index 95% rename from patches/server/0674-Force-close-world-loading-screen.patch rename to patches/server/0673-Force-close-world-loading-screen.patch index 83d9e2f203..28475526c4 100644 --- a/patches/server/0674-Force-close-world-loading-screen.patch +++ b/patches/server/0673-Force-close-world-loading-screen.patch @@ -10,7 +10,7 @@ so we do not need that. The client only needs the chunk it is currently in to be loaded to close the loading screen, so we just send an empty one. diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 97257e44163ed565b5f1152f0738649b1adbeb07..d21d9a66ab7197ea4fa324a9af64a1457d8e602b 100644 +index 9563fc34579992b74451f32e8cbb24b19d1ee19e..2916328a5b94783e68688756b5ad7685f180e27f 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -394,6 +394,16 @@ public abstract class PlayerList { diff --git a/patches/server/0675-Fix-falling-block-spawn-methods.patch b/patches/server/0674-Fix-falling-block-spawn-methods.patch similarity index 100% rename from patches/server/0675-Fix-falling-block-spawn-methods.patch rename to patches/server/0674-Fix-falling-block-spawn-methods.patch diff --git a/patches/server/0676-Expose-furnace-minecart-push-values.patch b/patches/server/0675-Expose-furnace-minecart-push-values.patch similarity index 100% rename from patches/server/0676-Expose-furnace-minecart-push-values.patch rename to patches/server/0675-Expose-furnace-minecart-push-values.patch diff --git a/patches/server/0677-Fix-cancelling-ProjectileHitEvent-for-piercing-arrow.patch b/patches/server/0676-Fix-cancelling-ProjectileHitEvent-for-piercing-arrow.patch similarity index 100% rename from patches/server/0677-Fix-cancelling-ProjectileHitEvent-for-piercing-arrow.patch rename to patches/server/0676-Fix-cancelling-ProjectileHitEvent-for-piercing-arrow.patch diff --git a/patches/server/0678-More-Projectile-API.patch b/patches/server/0677-More-Projectile-API.patch similarity index 99% rename from patches/server/0678-More-Projectile-API.patch rename to patches/server/0677-More-Projectile-API.patch index 34a555256e..3d4ddc9624 100644 --- a/patches/server/0678-More-Projectile-API.patch +++ b/patches/server/0677-More-Projectile-API.patch @@ -50,10 +50,10 @@ index 5b7734020b496ade3740d92908ad2d399bfd55e6..e70ca1b2e6fbbc1f20e65429298d01b4 public boolean calculateOpenWater(BlockPos pos) { FishingHook.OpenWaterType entityfishinghook_waterposition = FishingHook.OpenWaterType.INVALID; diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -index 7863625d49baa13ea87f2ee295b16706071fb960..ff6007bbf8361db7967b6bf621b27a1d23102e77 100644 +index 19452d1e591afc06675d57bbebae963517ab7217..bc65321aee27192c40428ac6f58ccec0f0cdc2ee 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -@@ -187,7 +187,7 @@ public abstract class Projectile extends Entity implements TraceableEntity { +@@ -193,7 +193,7 @@ public abstract class Projectile extends Entity implements TraceableEntity { } // CraftBukkit start - call projectile hit event @@ -713,10 +713,10 @@ index e374b9f40eddca13b30855d25a2030f8df98138f..4fc893378fb0568ddcffc7593d66df6b // Paper end } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 76be6bf839bb6aec7f2ab0295a3509fb106a95bf..3504b19a3748c64a6c93c86aa0b4a7a140996e06 100644 +index 48f320333fa859796f4fff01f721fda903238197..9c85cbc65bf7e1f539f12644ed391c98118c08d2 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -837,19 +837,19 @@ public class CraftEventFactory { +@@ -841,19 +841,19 @@ public class CraftEventFactory { /** * PotionSplashEvent */ @@ -739,7 +739,7 @@ index 76be6bf839bb6aec7f2ab0295a3509fb106a95bf..3504b19a3748c64a6c93c86aa0b4a7a1 hitEntity = ((EntityHitResult) position).getEntity().getBukkitEntity(); } -@@ -858,20 +858,20 @@ public class CraftEventFactory { +@@ -862,20 +862,20 @@ public class CraftEventFactory { return event; } diff --git a/patches/server/0679-Fix-swamp-hut-cat-generation-deadlock.patch b/patches/server/0678-Fix-swamp-hut-cat-generation-deadlock.patch similarity index 100% rename from patches/server/0679-Fix-swamp-hut-cat-generation-deadlock.patch rename to patches/server/0678-Fix-swamp-hut-cat-generation-deadlock.patch diff --git a/patches/server/0680-Don-t-allow-vehicle-movement-from-players-while-tele.patch b/patches/server/0679-Don-t-allow-vehicle-movement-from-players-while-tele.patch similarity index 100% rename from patches/server/0680-Don-t-allow-vehicle-movement-from-players-while-tele.patch rename to patches/server/0679-Don-t-allow-vehicle-movement-from-players-while-tele.patch diff --git a/patches/server/0681-Implement-getComputedBiome-API.patch b/patches/server/0680-Implement-getComputedBiome-API.patch similarity index 100% rename from patches/server/0681-Implement-getComputedBiome-API.patch rename to patches/server/0680-Implement-getComputedBiome-API.patch diff --git a/patches/server/0682-Make-some-itemstacks-nonnull.patch b/patches/server/0681-Make-some-itemstacks-nonnull.patch similarity index 100% rename from patches/server/0682-Make-some-itemstacks-nonnull.patch rename to patches/server/0681-Make-some-itemstacks-nonnull.patch diff --git a/patches/server/0683-Implement-enchantWithLevels-API.patch b/patches/server/0682-Implement-enchantWithLevels-API.patch similarity index 100% rename from patches/server/0683-Implement-enchantWithLevels-API.patch rename to patches/server/0682-Implement-enchantWithLevels-API.patch diff --git a/patches/server/0684-Fix-saving-in-unloadWorld.patch b/patches/server/0683-Fix-saving-in-unloadWorld.patch similarity index 100% rename from patches/server/0684-Fix-saving-in-unloadWorld.patch rename to patches/server/0683-Fix-saving-in-unloadWorld.patch diff --git a/patches/server/0685-Buffer-OOB-setBlock-calls.patch b/patches/server/0684-Buffer-OOB-setBlock-calls.patch similarity index 100% rename from patches/server/0685-Buffer-OOB-setBlock-calls.patch rename to patches/server/0684-Buffer-OOB-setBlock-calls.patch diff --git a/patches/server/0686-Add-TameableDeathMessageEvent.patch b/patches/server/0685-Add-TameableDeathMessageEvent.patch similarity index 100% rename from patches/server/0686-Add-TameableDeathMessageEvent.patch rename to patches/server/0685-Add-TameableDeathMessageEvent.patch diff --git a/patches/server/0687-Fix-new-block-data-for-EntityChangeBlockEvent.patch b/patches/server/0686-Fix-new-block-data-for-EntityChangeBlockEvent.patch similarity index 99% rename from patches/server/0687-Fix-new-block-data-for-EntityChangeBlockEvent.patch rename to patches/server/0686-Fix-new-block-data-for-EntityChangeBlockEvent.patch index 7e7e38c837..48633dc491 100644 --- a/patches/server/0687-Fix-new-block-data-for-EntityChangeBlockEvent.patch +++ b/patches/server/0686-Fix-new-block-data-for-EntityChangeBlockEvent.patch @@ -196,10 +196,10 @@ index edc20745649b0837f1371c8d29e71fc0c8e5528f..932831bb5632ead5850842fc77192c84 } // CraftBukkit end diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 3504b19a3748c64a6c93c86aa0b4a7a140996e06..55eee3a7d922f8c298b4653d733e30edc12005c5 100644 +index ffc55cf79d0e7f90ba2816d7604477f018d75ecd..697ef7d19cca2d3f51ccff9e4ab14d87a7ddaf00 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1374,11 +1374,11 @@ public class CraftEventFactory { +@@ -1378,11 +1378,11 @@ public class CraftEventFactory { return event; } diff --git a/patches/server/0688-fix-player-loottables-running-when-mob-loot-gamerule.patch b/patches/server/0687-fix-player-loottables-running-when-mob-loot-gamerule.patch similarity index 100% rename from patches/server/0688-fix-player-loottables-running-when-mob-loot-gamerule.patch rename to patches/server/0687-fix-player-loottables-running-when-mob-loot-gamerule.patch diff --git a/patches/server/0689-Ensure-entity-passenger-world-matches-ridden-entity.patch b/patches/server/0688-Ensure-entity-passenger-world-matches-ridden-entity.patch similarity index 100% rename from patches/server/0689-Ensure-entity-passenger-world-matches-ridden-entity.patch rename to patches/server/0688-Ensure-entity-passenger-world-matches-ridden-entity.patch diff --git a/patches/server/0690-cache-resource-keys.patch b/patches/server/0689-cache-resource-keys.patch similarity index 100% rename from patches/server/0690-cache-resource-keys.patch rename to patches/server/0689-cache-resource-keys.patch diff --git a/patches/server/0691-Allow-changing-the-EnderDragon-podium.patch b/patches/server/0690-Allow-changing-the-EnderDragon-podium.patch similarity index 100% rename from patches/server/0691-Allow-changing-the-EnderDragon-podium.patch rename to patches/server/0690-Allow-changing-the-EnderDragon-podium.patch diff --git a/patches/server/0692-Fix-NBT-pieces-overriding-a-block-entity-during-worl.patch b/patches/server/0691-Fix-NBT-pieces-overriding-a-block-entity-during-worl.patch similarity index 100% rename from patches/server/0692-Fix-NBT-pieces-overriding-a-block-entity-during-worl.patch rename to patches/server/0691-Fix-NBT-pieces-overriding-a-block-entity-during-worl.patch diff --git a/patches/server/0693-Prevent-tile-entity-copies-loading-chunks.patch b/patches/server/0692-Prevent-tile-entity-copies-loading-chunks.patch similarity index 90% rename from patches/server/0693-Prevent-tile-entity-copies-loading-chunks.patch rename to patches/server/0692-Prevent-tile-entity-copies-loading-chunks.patch index 41eee9f92e..bcd195d880 100644 --- a/patches/server/0693-Prevent-tile-entity-copies-loading-chunks.patch +++ b/patches/server/0692-Prevent-tile-entity-copies-loading-chunks.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Prevent tile entity copies loading chunks diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index f26d092e50e5f1e320ba2e3a264573ad862aca26..c87e243744166fb736ca8db65ac268072e353e16 100644 +index 15bee10f167ebd134688ff570c4773fe088e149a..efa6e8a85f27c18bddd91b7f83656457e58a16bd 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -3202,7 +3202,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -3197,7 +3197,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl BlockPos blockposition = BlockEntity.getPosFromTag(customdata.getUnsafe()); if (this.player.level().isLoaded(blockposition)) { diff --git a/patches/server/0694-Use-username-instead-of-display-name-in-PlayerList-g.patch b/patches/server/0693-Use-username-instead-of-display-name-in-PlayerList-g.patch similarity index 100% rename from patches/server/0694-Use-username-instead-of-display-name-in-PlayerList-g.patch rename to patches/server/0693-Use-username-instead-of-display-name-in-PlayerList-g.patch diff --git a/patches/server/0695-Expand-PlayerItemDamageEvent.patch b/patches/server/0694-Expand-PlayerItemDamageEvent.patch similarity index 94% rename from patches/server/0695-Expand-PlayerItemDamageEvent.patch rename to patches/server/0694-Expand-PlayerItemDamageEvent.patch index bf458d8c9b..d550002186 100644 --- a/patches/server/0695-Expand-PlayerItemDamageEvent.patch +++ b/patches/server/0694-Expand-PlayerItemDamageEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Expand PlayerItemDamageEvent diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 823146a66de8ce13e6dc6faf2fd135480bd51c3a..d825c2e3808e44db9935dab4e7b528146c6d83c2 100644 +index eeba6d3aeb50bc7ee6dcfe7cc18eee2487d47357..598507684aed7978fa2e9bae0d959c7d0f9e53d6 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -650,10 +650,11 @@ public final class ItemStack implements DataComponentHolder { diff --git a/patches/server/0696-WorldCreator-keepSpawnLoaded.patch b/patches/server/0695-WorldCreator-keepSpawnLoaded.patch similarity index 100% rename from patches/server/0696-WorldCreator-keepSpawnLoaded.patch rename to patches/server/0695-WorldCreator-keepSpawnLoaded.patch diff --git a/patches/server/0697-Fix-CME-in-CraftPersistentDataTypeRegistry.patch b/patches/server/0696-Fix-CME-in-CraftPersistentDataTypeRegistry.patch similarity index 100% rename from patches/server/0697-Fix-CME-in-CraftPersistentDataTypeRegistry.patch rename to patches/server/0696-Fix-CME-in-CraftPersistentDataTypeRegistry.patch diff --git a/patches/server/0698-Trigger-bee_nest_destroyed-trigger-in-the-correct-pl.patch b/patches/server/0697-Trigger-bee_nest_destroyed-trigger-in-the-correct-pl.patch similarity index 100% rename from patches/server/0698-Trigger-bee_nest_destroyed-trigger-in-the-correct-pl.patch rename to patches/server/0697-Trigger-bee_nest_destroyed-trigger-in-the-correct-pl.patch diff --git a/patches/server/0699-Add-EntityDyeEvent-and-CollarColorable-interface.patch b/patches/server/0698-Add-EntityDyeEvent-and-CollarColorable-interface.patch similarity index 100% rename from patches/server/0699-Add-EntityDyeEvent-and-CollarColorable-interface.patch rename to patches/server/0698-Add-EntityDyeEvent-and-CollarColorable-interface.patch diff --git a/patches/server/0700-Fire-CauldronLevelChange-on-initial-fill.patch b/patches/server/0699-Fire-CauldronLevelChange-on-initial-fill.patch similarity index 100% rename from patches/server/0700-Fire-CauldronLevelChange-on-initial-fill.patch rename to patches/server/0699-Fire-CauldronLevelChange-on-initial-fill.patch diff --git a/patches/server/0701-fix-powder-snow-cauldrons-not-turning-to-water.patch b/patches/server/0700-fix-powder-snow-cauldrons-not-turning-to-water.patch similarity index 100% rename from patches/server/0701-fix-powder-snow-cauldrons-not-turning-to-water.patch rename to patches/server/0700-fix-powder-snow-cauldrons-not-turning-to-water.patch diff --git a/patches/server/0702-Add-PlayerStopUsingItemEvent.patch b/patches/server/0701-Add-PlayerStopUsingItemEvent.patch similarity index 100% rename from patches/server/0702-Add-PlayerStopUsingItemEvent.patch rename to patches/server/0701-Add-PlayerStopUsingItemEvent.patch diff --git a/patches/server/0703-Don-t-tick-markers.patch b/patches/server/0702-Don-t-tick-markers.patch similarity index 100% rename from patches/server/0703-Don-t-tick-markers.patch rename to patches/server/0702-Don-t-tick-markers.patch diff --git a/patches/server/0704-Expand-FallingBlock-API.patch b/patches/server/0703-Expand-FallingBlock-API.patch similarity index 100% rename from patches/server/0704-Expand-FallingBlock-API.patch rename to patches/server/0703-Expand-FallingBlock-API.patch diff --git a/patches/server/0705-Add-support-for-Proxy-Protocol.patch b/patches/server/0704-Add-support-for-Proxy-Protocol.patch similarity index 100% rename from patches/server/0705-Add-support-for-Proxy-Protocol.patch rename to patches/server/0704-Add-support-for-Proxy-Protocol.patch diff --git a/patches/server/0706-Fix-OfflinePlayer-getBedSpawnLocation.patch b/patches/server/0705-Fix-OfflinePlayer-getBedSpawnLocation.patch similarity index 100% rename from patches/server/0706-Fix-OfflinePlayer-getBedSpawnLocation.patch rename to patches/server/0705-Fix-OfflinePlayer-getBedSpawnLocation.patch diff --git a/patches/server/0707-Fix-FurnaceInventory-for-smokers-and-blast-furnaces.patch b/patches/server/0706-Fix-FurnaceInventory-for-smokers-and-blast-furnaces.patch similarity index 100% rename from patches/server/0707-Fix-FurnaceInventory-for-smokers-and-blast-furnaces.patch rename to patches/server/0706-Fix-FurnaceInventory-for-smokers-and-blast-furnaces.patch diff --git a/patches/server/0708-Sanitize-sent-BlockEntity-NBT.patch b/patches/server/0707-Sanitize-sent-BlockEntity-NBT.patch similarity index 95% rename from patches/server/0708-Sanitize-sent-BlockEntity-NBT.patch rename to patches/server/0707-Sanitize-sent-BlockEntity-NBT.patch index 0f97b535cc..152674ac06 100644 --- a/patches/server/0708-Sanitize-sent-BlockEntity-NBT.patch +++ b/patches/server/0707-Sanitize-sent-BlockEntity-NBT.patch @@ -30,10 +30,10 @@ index ac900dfdc5c90e9e60d47efa734be8f0a5b20dca..ec1cb034d840633240f2b379b09f7d2f } } diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -index 6f6693456cf518b7bd9eb21ba681540a40c588ef..6207c6063cd11ccb1177fe7016c49c02a3416990 100644 +index cbb777f499a4e8a447153c04d09c0c71321c663c..41f43d7d12a47563360f48a793e63db8cf92ac69 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -@@ -378,6 +378,14 @@ public abstract class BlockEntity { +@@ -394,6 +394,14 @@ public abstract class BlockEntity { } // CraftBukkit end diff --git a/patches/server/0709-Disable-component-selector-resolving-in-books-by-def.patch b/patches/server/0708-Disable-component-selector-resolving-in-books-by-def.patch similarity index 100% rename from patches/server/0709-Disable-component-selector-resolving-in-books-by-def.patch rename to patches/server/0708-Disable-component-selector-resolving-in-books-by-def.patch diff --git a/patches/server/0710-Prevent-entity-loading-causing-async-lookups.patch b/patches/server/0709-Prevent-entity-loading-causing-async-lookups.patch similarity index 100% rename from patches/server/0710-Prevent-entity-loading-causing-async-lookups.patch rename to patches/server/0709-Prevent-entity-loading-causing-async-lookups.patch diff --git a/patches/server/0711-Throw-exception-on-world-create-while-being-ticked.patch b/patches/server/0710-Throw-exception-on-world-create-while-being-ticked.patch similarity index 100% rename from patches/server/0711-Throw-exception-on-world-create-while-being-ticked.patch rename to patches/server/0710-Throw-exception-on-world-create-while-being-ticked.patch diff --git a/patches/server/0712-Dont-resent-entity-on-art-update.patch b/patches/server/0711-Dont-resent-entity-on-art-update.patch similarity index 100% rename from patches/server/0712-Dont-resent-entity-on-art-update.patch rename to patches/server/0711-Dont-resent-entity-on-art-update.patch diff --git a/patches/server/0713-Add-WardenAngerChangeEvent.patch b/patches/server/0712-Add-WardenAngerChangeEvent.patch similarity index 100% rename from patches/server/0713-Add-WardenAngerChangeEvent.patch rename to patches/server/0712-Add-WardenAngerChangeEvent.patch diff --git a/patches/server/0714-Add-option-for-strict-advancement-dimension-checks.patch b/patches/server/0713-Add-option-for-strict-advancement-dimension-checks.patch similarity index 94% rename from patches/server/0714-Add-option-for-strict-advancement-dimension-checks.patch rename to patches/server/0713-Add-option-for-strict-advancement-dimension-checks.patch index 238d672cce..488f84c884 100644 --- a/patches/server/0714-Add-option-for-strict-advancement-dimension-checks.patch +++ b/patches/server/0713-Add-option-for-strict-advancement-dimension-checks.patch @@ -24,10 +24,10 @@ index 01b8f7024fbc965bc6a7f97f79ba3dec964ef769..801823d003a8e28a13fe90db4604cd09 } else { BlockPos blockPos = BlockPos.containing(x, y, z); diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index e87c005cf0e82ce56ca99dd40c1dea161faeedda..10ad431d66fcf603f672611759fccb1e2e41cffe 100644 +index f31eb944465e9011d8aad398eb60bafb44203ad5..ad3896dd524acb573adffdfb38b13dd699539cef 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1388,6 +1388,12 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { +@@ -1387,6 +1387,12 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { ResourceKey maindimensionkey = CraftDimensionUtil.getMainDimensionKey(origin); ResourceKey maindimensionkey1 = CraftDimensionUtil.getMainDimensionKey(this.level()); diff --git a/patches/server/0715-Add-missing-important-BlockStateListPopulator-method.patch b/patches/server/0714-Add-missing-important-BlockStateListPopulator-method.patch similarity index 100% rename from patches/server/0715-Add-missing-important-BlockStateListPopulator-method.patch rename to patches/server/0714-Add-missing-important-BlockStateListPopulator-method.patch diff --git a/patches/server/0716-Nameable-Banner-API.patch b/patches/server/0715-Nameable-Banner-API.patch similarity index 100% rename from patches/server/0716-Nameable-Banner-API.patch rename to patches/server/0715-Nameable-Banner-API.patch diff --git a/patches/server/0717-Don-t-broadcast-messages-to-command-blocks.patch b/patches/server/0716-Don-t-broadcast-messages-to-command-blocks.patch similarity index 100% rename from patches/server/0717-Don-t-broadcast-messages-to-command-blocks.patch rename to patches/server/0716-Don-t-broadcast-messages-to-command-blocks.patch diff --git a/patches/server/0718-Prevent-empty-items-from-being-added-to-world.patch b/patches/server/0717-Prevent-empty-items-from-being-added-to-world.patch similarity index 100% rename from patches/server/0718-Prevent-empty-items-from-being-added-to-world.patch rename to patches/server/0717-Prevent-empty-items-from-being-added-to-world.patch diff --git a/patches/server/0719-Fix-CCE-for-SplashPotion-and-LingeringPotion-spawnin.patch b/patches/server/0718-Fix-CCE-for-SplashPotion-and-LingeringPotion-spawnin.patch similarity index 100% rename from patches/server/0719-Fix-CCE-for-SplashPotion-and-LingeringPotion-spawnin.patch rename to patches/server/0718-Fix-CCE-for-SplashPotion-and-LingeringPotion-spawnin.patch diff --git a/patches/server/0720-Add-Player-getFishHook.patch b/patches/server/0719-Add-Player-getFishHook.patch similarity index 100% rename from patches/server/0720-Add-Player-getFishHook.patch rename to patches/server/0719-Add-Player-getFishHook.patch diff --git a/patches/server/0721-Do-not-sync-load-chunk-for-dynamic-game-event-listen.patch b/patches/server/0720-Do-not-sync-load-chunk-for-dynamic-game-event-listen.patch similarity index 100% rename from patches/server/0721-Do-not-sync-load-chunk-for-dynamic-game-event-listen.patch rename to patches/server/0720-Do-not-sync-load-chunk-for-dynamic-game-event-listen.patch diff --git a/patches/server/0722-Add-various-missing-EntityDropItemEvent-calls.patch b/patches/server/0721-Add-various-missing-EntityDropItemEvent-calls.patch similarity index 100% rename from patches/server/0722-Add-various-missing-EntityDropItemEvent-calls.patch rename to patches/server/0721-Add-various-missing-EntityDropItemEvent-calls.patch diff --git a/patches/server/0723-Fix-Bee-flower-NPE.patch b/patches/server/0722-Fix-Bee-flower-NPE.patch similarity index 100% rename from patches/server/0723-Fix-Bee-flower-NPE.patch rename to patches/server/0722-Fix-Bee-flower-NPE.patch diff --git a/patches/server/0724-Fix-Spigot-Config-not-using-commands.spam-exclusions.patch b/patches/server/0723-Fix-Spigot-Config-not-using-commands.spam-exclusions.patch similarity index 89% rename from patches/server/0724-Fix-Spigot-Config-not-using-commands.spam-exclusions.patch rename to patches/server/0723-Fix-Spigot-Config-not-using-commands.spam-exclusions.patch index 6a05adf6b7..fcf350cf20 100644 --- a/patches/server/0724-Fix-Spigot-Config-not-using-commands.spam-exclusions.patch +++ b/patches/server/0723-Fix-Spigot-Config-not-using-commands.spam-exclusions.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix Spigot Config not using commands.spam-exclusions diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index c87e243744166fb736ca8db65ac268072e353e16..8f65943161a6621f8f7926c48322e26a854ae139 100644 +index efa6e8a85f27c18bddd91b7f83656457e58a16bd..52ff31d33edb0c55e2ec4a982525d47e4a19428b 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2384,7 +2384,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2379,7 +2379,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } // Spigot end // this.chatSpamTickCount += 20; diff --git a/patches/server/0725-More-Teleport-API.patch b/patches/server/0724-More-Teleport-API.patch similarity index 97% rename from patches/server/0725-More-Teleport-API.patch rename to patches/server/0724-More-Teleport-API.patch index 658e715895..608b370dbf 100644 --- a/patches/server/0725-More-Teleport-API.patch +++ b/patches/server/0724-More-Teleport-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] More Teleport API diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 8f65943161a6621f8f7926c48322e26a854ae139..58fd502c2a735d4a102de451a002cfd622c58294 100644 +index 52ff31d33edb0c55e2ec4a982525d47e4a19428b..77e31c3851813651dc00e59f8ef31134e3540b91 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1566,11 +1566,17 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1561,11 +1561,17 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl return true; // CraftBukkit - Return event status } @@ -29,7 +29,7 @@ index 8f65943161a6621f8f7926c48322e26a854ae139..58fd502c2a735d4a102de451a002cfd6 d0 = to.getX(); d1 = to.getY(); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 47f24e390efd8eb4cb7f62b5203825f4160772b7..243ac4253a1541dba52126bad96682e43c6f48a1 100644 +index 4c09f2529dd8eb7ac7d260d177f5292ff2339442..94051ae8ea93ab144f3767345b1cda0438d2afc6 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -221,15 +221,36 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -112,7 +112,7 @@ index 47f24e390efd8eb4cb7f62b5203825f4160772b7..243ac4253a1541dba52126bad96682e4 private final org.bukkit.entity.Entity.Spigot spigot = new org.bukkit.entity.Entity.Spigot() { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 1ffbb31f2926a1b076ab213cb32dd19c7b0f8768..7f449bc5a0644709b426dba70a5afccc26a37de8 100644 +index 4b7b812a0203ef8a586c0e0cee10c41935487309..d2f6fb41b16468bf03675b3a331c707e21f8c9ce 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -1286,13 +1286,101 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0726-Add-EntityPortalReadyEvent.patch b/patches/server/0725-Add-EntityPortalReadyEvent.patch similarity index 100% rename from patches/server/0726-Add-EntityPortalReadyEvent.patch rename to patches/server/0725-Add-EntityPortalReadyEvent.patch diff --git a/patches/server/0727-Don-t-use-level-random-in-entity-constructors.patch b/patches/server/0726-Don-t-use-level-random-in-entity-constructors.patch similarity index 100% rename from patches/server/0727-Don-t-use-level-random-in-entity-constructors.patch rename to patches/server/0726-Don-t-use-level-random-in-entity-constructors.patch diff --git a/patches/server/0728-Send-block-entities-after-destroy-prediction.patch b/patches/server/0727-Send-block-entities-after-destroy-prediction.patch similarity index 97% rename from patches/server/0728-Send-block-entities-after-destroy-prediction.patch rename to patches/server/0727-Send-block-entities-after-destroy-prediction.patch index 40992c754a..88deca43ca 100644 --- a/patches/server/0728-Send-block-entities-after-destroy-prediction.patch +++ b/patches/server/0727-Send-block-entities-after-destroy-prediction.patch @@ -57,10 +57,10 @@ index 4d024956156aefde7df308642dfd0a40779e0633..6abecaac8407b992d208a9108e11fd49 } } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 58fd502c2a735d4a102de451a002cfd622c58294..3b1e231c637750821a756c877c9c6b7150b184b8 100644 +index 77e31c3851813651dc00e59f8ef31134e3540b91..719f44cf1bca2cd834b7909e135b0a636c4ccb5e 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1712,8 +1712,28 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1707,8 +1707,28 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl return; } // Paper end - Don't allow digging into unloaded chunks diff --git a/patches/server/0729-Warn-on-plugins-accessing-faraway-chunks.patch b/patches/server/0728-Warn-on-plugins-accessing-faraway-chunks.patch similarity index 98% rename from patches/server/0729-Warn-on-plugins-accessing-faraway-chunks.patch rename to patches/server/0728-Warn-on-plugins-accessing-faraway-chunks.patch index b405c21a44..5030feaf00 100644 --- a/patches/server/0729-Warn-on-plugins-accessing-faraway-chunks.patch +++ b/patches/server/0728-Warn-on-plugins-accessing-faraway-chunks.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Warn on plugins accessing faraway chunks diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 38bcf9f410e8a9d47c7d486c28dbc16a6225b650..210c3b6167dac93e550fe849e34b5aa404ab6dce 100644 +index b4111bcc6a676dc42b233761aa667708669c2ab8..cc92d2e8b77c75da1d8b850c3bc251e8ac221c24 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -339,7 +339,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { diff --git a/patches/server/0730-Custom-Chat-Completion-Suggestions-API.patch b/patches/server/0729-Custom-Chat-Completion-Suggestions-API.patch similarity index 94% rename from patches/server/0730-Custom-Chat-Completion-Suggestions-API.patch rename to patches/server/0729-Custom-Chat-Completion-Suggestions-API.patch index eb2cf4cb83..45789f37e1 100644 --- a/patches/server/0730-Custom-Chat-Completion-Suggestions-API.patch +++ b/patches/server/0729-Custom-Chat-Completion-Suggestions-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Custom Chat Completion Suggestions API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 7f449bc5a0644709b426dba70a5afccc26a37de8..7a4ae758616225002cc14060753bb691ee1d94bb 100644 +index d2f6fb41b16468bf03675b3a331c707e21f8c9ce..5f3045630197f6d515bc66f7fa8014814dbfd8a7 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -691,6 +691,24 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0731-Add-and-fix-missing-BlockFadeEvents.patch b/patches/server/0730-Add-and-fix-missing-BlockFadeEvents.patch similarity index 100% rename from patches/server/0731-Add-and-fix-missing-BlockFadeEvents.patch rename to patches/server/0730-Add-and-fix-missing-BlockFadeEvents.patch diff --git a/patches/server/0732-Collision-API.patch b/patches/server/0731-Collision-API.patch similarity index 100% rename from patches/server/0732-Collision-API.patch rename to patches/server/0731-Collision-API.patch diff --git a/patches/server/0733-Fix-suggest-command-message-for-brigadier-syntax-exc.patch b/patches/server/0732-Fix-suggest-command-message-for-brigadier-syntax-exc.patch similarity index 100% rename from patches/server/0733-Fix-suggest-command-message-for-brigadier-syntax-exc.patch rename to patches/server/0732-Fix-suggest-command-message-for-brigadier-syntax-exc.patch diff --git a/patches/server/0734-Block-Ticking-API.patch b/patches/server/0733-Block-Ticking-API.patch similarity index 100% rename from patches/server/0734-Block-Ticking-API.patch rename to patches/server/0733-Block-Ticking-API.patch diff --git a/patches/server/0735-Add-Velocity-IP-Forwarding-Support.patch b/patches/server/0734-Add-Velocity-IP-Forwarding-Support.patch similarity index 100% rename from patches/server/0735-Add-Velocity-IP-Forwarding-Support.patch rename to patches/server/0734-Add-Velocity-IP-Forwarding-Support.patch diff --git a/patches/server/0736-Add-NamespacedKey-biome-methods.patch b/patches/server/0735-Add-NamespacedKey-biome-methods.patch similarity index 100% rename from patches/server/0736-Add-NamespacedKey-biome-methods.patch rename to patches/server/0735-Add-NamespacedKey-biome-methods.patch diff --git a/patches/server/0737-Fix-plugin-loggers-on-server-shutdown.patch b/patches/server/0736-Fix-plugin-loggers-on-server-shutdown.patch similarity index 96% rename from patches/server/0737-Fix-plugin-loggers-on-server-shutdown.patch rename to patches/server/0736-Fix-plugin-loggers-on-server-shutdown.patch index 18da0811b4..3a9d6b48df 100644 --- a/patches/server/0737-Fix-plugin-loggers-on-server-shutdown.patch +++ b/patches/server/0736-Fix-plugin-loggers-on-server-shutdown.patch @@ -49,7 +49,7 @@ index acdba56f025fe729398c5549175baad8e6818f62..3aba668f9a34cabc26063c61660ab22f } diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index b9b93a4e20eed028b76eab4dcb9610ae05f22faf..1acc0a579804dee7bb3d0f755c24240413ed7540 100644 +index ba95452f99e542638c3a3f7bbfdf6e79849014c5..618f4b2e1d012b647b3e7bf359c8ecdd7f159e63 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -19,6 +19,12 @@ public class Main { diff --git a/patches/server/0738-Stop-large-look-changes-from-crashing-the-server.patch b/patches/server/0737-Stop-large-look-changes-from-crashing-the-server.patch similarity index 91% rename from patches/server/0738-Stop-large-look-changes-from-crashing-the-server.patch rename to patches/server/0737-Stop-large-look-changes-from-crashing-the-server.patch index 592bb75b03..93357dd58b 100644 --- a/patches/server/0738-Stop-large-look-changes-from-crashing-the-server.patch +++ b/patches/server/0737-Stop-large-look-changes-from-crashing-the-server.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Stop large look changes from crashing the server Co-authored-by: Jaren Knodel diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index fa9512da351ef92a8606b3e68ee060dac4c63346..e6335a55d87444d56d6f20dfc51cc4fc797de2cf 100644 +index 4a9abb2457b175c640d1e59de161fa2370053613..9c8e23f92a4cf902b060af4ce74777753e32f207 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -3158,37 +3158,15 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -54,10 +54,10 @@ index fa9512da351ef92a8606b3e68ee060dac4c63346..e6335a55d87444d56d6f20dfc51cc4fc this.level().getProfiler().pop(); this.animStep += f2; diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -index ff6007bbf8361db7967b6bf621b27a1d23102e77..d147f3cc1af28c384005c1c20e37bb588588c88d 100644 +index bc65321aee27192c40428ac6f58ccec0f0cdc2ee..dd53501d39113c4b0b5950bad70a5c667c0781c5 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -@@ -310,13 +310,7 @@ public abstract class Projectile extends Entity implements TraceableEntity { +@@ -316,13 +316,7 @@ public abstract class Projectile extends Entity implements TraceableEntity { } protected static float lerpRotation(float prevRot, float newRot) { diff --git a/patches/server/0739-Fire-EntityChangeBlockEvent-in-more-places.patch b/patches/server/0738-Fire-EntityChangeBlockEvent-in-more-places.patch similarity index 100% rename from patches/server/0739-Fire-EntityChangeBlockEvent-in-more-places.patch rename to patches/server/0738-Fire-EntityChangeBlockEvent-in-more-places.patch diff --git a/patches/server/0740-Missing-eating-regain-reason.patch b/patches/server/0739-Missing-eating-regain-reason.patch similarity index 100% rename from patches/server/0740-Missing-eating-regain-reason.patch rename to patches/server/0739-Missing-eating-regain-reason.patch diff --git a/patches/server/0741-Missing-effect-cause.patch b/patches/server/0740-Missing-effect-cause.patch similarity index 100% rename from patches/server/0741-Missing-effect-cause.patch rename to patches/server/0740-Missing-effect-cause.patch diff --git a/patches/server/0742-Added-byte-array-serialization-deserialization-for-P.patch b/patches/server/0741-Added-byte-array-serialization-deserialization-for-P.patch similarity index 100% rename from patches/server/0742-Added-byte-array-serialization-deserialization-for-P.patch rename to patches/server/0741-Added-byte-array-serialization-deserialization-for-P.patch diff --git a/patches/server/0743-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch b/patches/server/0742-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch similarity index 100% rename from patches/server/0743-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch rename to patches/server/0742-Add-a-consumer-parameter-to-ProjectileSource-launchP.patch diff --git a/patches/server/0744-Call-BlockPhysicsEvent-more-often.patch b/patches/server/0743-Call-BlockPhysicsEvent-more-often.patch similarity index 100% rename from patches/server/0744-Call-BlockPhysicsEvent-more-often.patch rename to patches/server/0743-Call-BlockPhysicsEvent-more-often.patch diff --git a/patches/server/0745-Configurable-chat-thread-limit.patch b/patches/server/0744-Configurable-chat-thread-limit.patch similarity index 100% rename from patches/server/0745-Configurable-chat-thread-limit.patch rename to patches/server/0744-Configurable-chat-thread-limit.patch diff --git a/patches/server/0746-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch b/patches/server/0745-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch similarity index 91% rename from patches/server/0746-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch rename to patches/server/0745-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch index f517c5483b..aaf56a3c17 100644 --- a/patches/server/0746-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch +++ b/patches/server/0745-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch @@ -7,10 +7,10 @@ Subject: [PATCH] Mitigate effects of WorldCreator#keepSpawnLoaded ret type TODO: Remove in 1.21? diff --git a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java -index b67dfb358a9c1ae26793557ca2151357db4b1691..a28bd14454a599014f24ed21210a8a185ac624db 100644 +index 157fbe09ab22f3218d9d3f72e8c0a5a3d727eaeb..cae5c865388aca8041233ca52b25ecf68cd37494 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java +++ b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java -@@ -439,6 +439,12 @@ public class Commodore { +@@ -440,6 +440,12 @@ public class Commodore { super.visitMethodInsn(Opcodes.INVOKEVIRTUAL, runtimeCbPkgPrefix() + "advancement/CraftAdvancement", "getDisplay0", desc, false); return; } diff --git a/patches/server/0747-fix-Jigsaw-block-kicking-user.patch b/patches/server/0746-fix-Jigsaw-block-kicking-user.patch similarity index 100% rename from patches/server/0747-fix-Jigsaw-block-kicking-user.patch rename to patches/server/0746-fix-Jigsaw-block-kicking-user.patch diff --git a/patches/server/0748-use-BlockFormEvent-for-mud-converting-into-clay.patch b/patches/server/0747-use-BlockFormEvent-for-mud-converting-into-clay.patch similarity index 100% rename from patches/server/0748-use-BlockFormEvent-for-mud-converting-into-clay.patch rename to patches/server/0747-use-BlockFormEvent-for-mud-converting-into-clay.patch diff --git a/patches/server/0749-Add-getDrops-to-BlockState.patch b/patches/server/0748-Add-getDrops-to-BlockState.patch similarity index 100% rename from patches/server/0749-Add-getDrops-to-BlockState.patch rename to patches/server/0748-Add-getDrops-to-BlockState.patch diff --git a/patches/server/0750-Fix-a-bunch-of-vanilla-bugs.patch b/patches/server/0749-Fix-a-bunch-of-vanilla-bugs.patch similarity index 98% rename from patches/server/0750-Fix-a-bunch-of-vanilla-bugs.patch rename to patches/server/0749-Fix-a-bunch-of-vanilla-bugs.patch index 074c1a9d45..197bab1c24 100644 --- a/patches/server/0750-Fix-a-bunch-of-vanilla-bugs.patch +++ b/patches/server/0749-Fix-a-bunch-of-vanilla-bugs.patch @@ -85,7 +85,7 @@ index 6854ca4d4fec2b4fa541c3fabf63787665572609..e7b444a10b244828827b3c66c5346520 } diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index b953def299faf1a13e1893d17a476f36e2d6337a..d409791325771909faaef0dffb0f7f02d1bf71af 100644 +index 071e9ef3680c5dc492c6142ccd05f6788ebc3035..61fda6927f060cdf8bcfddaaa08bbbe2c514c630 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -1027,7 +1027,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @@ -124,7 +124,7 @@ index 6abecaac8407b992d208a9108e11fd4954a4106f..03d89f326d320c5d778c3d1e2db7d6b8 this.player.server.getPlayerList().broadcastAll(new ClientboundPlayerInfoUpdatePacket(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_GAME_MODE, this.player), this.player); // CraftBukkit this.level.updateSleepingPlayerList(); diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index d430e6c08bae0a630e71c11c9eae26bef85bde36..a929b8f1c452db08a64e4be53b488cf2676e0a94 100644 +index b0a1f6cf2cc96a2ddc8232f929c134501d99411e..84add5cc89ec912389500b6140a39d6b7ddc9e86 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -260,7 +260,7 @@ public abstract class PlayerList { @@ -249,7 +249,7 @@ index 08dcc94c9eca9a5fd61055f05b7737ba5840b5bf..e0e5046c84941a8d17e18c177f3daea9 return 1; } diff --git a/src/main/java/net/minecraft/world/inventory/BeaconMenu.java b/src/main/java/net/minecraft/world/inventory/BeaconMenu.java -index 5b6133f6758d322713321b7e918db0c3e0d4be51..6173c689013ab02c83ca6ff1fde2b1e47f3e7820 100644 +index 396559c281eee9e8c677cb222721414e8d9e12a2..8b0ebf659f6b219ce2a5d10b0d79f9b89b47c911 100644 --- a/src/main/java/net/minecraft/world/inventory/BeaconMenu.java +++ b/src/main/java/net/minecraft/world/inventory/BeaconMenu.java @@ -178,6 +178,11 @@ public class BeaconMenu extends AbstractContainerMenu { diff --git a/patches/server/0751-Remove-unnecessary-onTrackingStart-during-navigation.patch b/patches/server/0750-Remove-unnecessary-onTrackingStart-during-navigation.patch similarity index 100% rename from patches/server/0751-Remove-unnecessary-onTrackingStart-during-navigation.patch rename to patches/server/0750-Remove-unnecessary-onTrackingStart-during-navigation.patch diff --git a/patches/server/0752-Fix-custom-piglin-loved-items.patch b/patches/server/0751-Fix-custom-piglin-loved-items.patch similarity index 100% rename from patches/server/0752-Fix-custom-piglin-loved-items.patch rename to patches/server/0751-Fix-custom-piglin-loved-items.patch diff --git a/patches/server/0753-EntityPickupItemEvent-fixes.patch b/patches/server/0752-EntityPickupItemEvent-fixes.patch similarity index 100% rename from patches/server/0753-EntityPickupItemEvent-fixes.patch rename to patches/server/0752-EntityPickupItemEvent-fixes.patch diff --git a/patches/server/0754-Correctly-handle-interactions-with-items-on-cooldown.patch b/patches/server/0753-Correctly-handle-interactions-with-items-on-cooldown.patch similarity index 94% rename from patches/server/0754-Correctly-handle-interactions-with-items-on-cooldown.patch rename to patches/server/0753-Correctly-handle-interactions-with-items-on-cooldown.patch index cc9068cb42..e533866d2a 100644 --- a/patches/server/0754-Correctly-handle-interactions-with-items-on-cooldown.patch +++ b/patches/server/0753-Correctly-handle-interactions-with-items-on-cooldown.patch @@ -30,10 +30,10 @@ index 03d89f326d320c5d778c3d1e2db7d6b88753faec..717d015dd4637dd9d568b751be1dc104 this.interactResult = event.useItemInHand() == Event.Result.DENY; this.interactPosition = blockposition.immutable(); diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 55eee3a7d922f8c298b4653d733e30edc12005c5..82b98a9b6418614283ac512f59586877f577b35b 100644 +index 697ef7d19cca2d3f51ccff9e4ab14d87a7ddaf00..668becf24a16af6b834d05608787c8f9420e9ad3 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -550,6 +550,12 @@ public class CraftEventFactory { +@@ -554,6 +554,12 @@ public class CraftEventFactory { } public static PlayerInteractEvent callPlayerInteractEvent(net.minecraft.world.entity.player.Player who, Action action, BlockPos position, Direction direction, ItemStack itemstack, boolean cancelledBlock, InteractionHand hand, Vec3 targetPos) { @@ -46,7 +46,7 @@ index 55eee3a7d922f8c298b4653d733e30edc12005c5..82b98a9b6418614283ac512f59586877 Player player = (who == null) ? null : (Player) who.getBukkitEntity(); CraftItemStack itemInHand = CraftItemStack.asCraftMirror(itemstack); -@@ -584,6 +590,11 @@ public class CraftEventFactory { +@@ -588,6 +594,11 @@ public class CraftEventFactory { if (cancelledBlock) { event.setUseInteractedBlock(Event.Result.DENY); } diff --git a/patches/server/0755-Add-PlayerInventorySlotChangeEvent.patch b/patches/server/0754-Add-PlayerInventorySlotChangeEvent.patch similarity index 100% rename from patches/server/0755-Add-PlayerInventorySlotChangeEvent.patch rename to patches/server/0754-Add-PlayerInventorySlotChangeEvent.patch diff --git a/patches/server/0756-Elder-Guardian-appearance-API.patch b/patches/server/0755-Elder-Guardian-appearance-API.patch similarity index 90% rename from patches/server/0756-Elder-Guardian-appearance-API.patch rename to patches/server/0755-Elder-Guardian-appearance-API.patch index 05ca8f144b..8f007ec892 100644 --- a/patches/server/0756-Elder-Guardian-appearance-API.patch +++ b/patches/server/0755-Elder-Guardian-appearance-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Elder Guardian appearance API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 7a4ae758616225002cc14060753bb691ee1d94bb..3566c607c7d66eb8d64cdcd77204b6b132287f58 100644 +index 5f3045630197f6d515bc66f7fa8014814dbfd8a7..2ec75a25de34b68e7c14416a06facce6a169bac7 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -3298,6 +3298,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0757-Allow-changing-bed-s-occupied-property.patch b/patches/server/0756-Allow-changing-bed-s-occupied-property.patch similarity index 100% rename from patches/server/0757-Allow-changing-bed-s-occupied-property.patch rename to patches/server/0756-Allow-changing-bed-s-occupied-property.patch diff --git a/patches/server/0758-Add-entity-knockback-API.patch b/patches/server/0757-Add-entity-knockback-API.patch similarity index 100% rename from patches/server/0758-Add-entity-knockback-API.patch rename to patches/server/0757-Add-entity-knockback-API.patch diff --git a/patches/server/0759-Detect-headless-JREs.patch b/patches/server/0758-Detect-headless-JREs.patch similarity index 100% rename from patches/server/0759-Detect-headless-JREs.patch rename to patches/server/0758-Detect-headless-JREs.patch diff --git a/patches/server/0760-fix-entity-vehicle-collision-event-not-called.patch b/patches/server/0759-fix-entity-vehicle-collision-event-not-called.patch similarity index 100% rename from patches/server/0760-fix-entity-vehicle-collision-event-not-called.patch rename to patches/server/0759-fix-entity-vehicle-collision-event-not-called.patch diff --git a/patches/server/0761-Add-EntityToggleSitEvent.patch b/patches/server/0760-Add-EntityToggleSitEvent.patch similarity index 100% rename from patches/server/0761-Add-EntityToggleSitEvent.patch rename to patches/server/0760-Add-EntityToggleSitEvent.patch diff --git a/patches/server/0762-Add-fire-tick-delay-option.patch b/patches/server/0761-Add-fire-tick-delay-option.patch similarity index 66% rename from patches/server/0762-Add-fire-tick-delay-option.patch rename to patches/server/0761-Add-fire-tick-delay-option.patch index 848f831f0e..2ad454d1c6 100644 --- a/patches/server/0762-Add-fire-tick-delay-option.patch +++ b/patches/server/0761-Add-fire-tick-delay-option.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add fire-tick-delay option diff --git a/src/main/java/net/minecraft/world/level/block/FireBlock.java b/src/main/java/net/minecraft/world/level/block/FireBlock.java -index 5dad1aa26a8908cba6a08398a4bad27f31d4c2c0..4d467ecf0dd8006b9fa4fb8fb5aadc0622a1e512 100644 +index 9db6df5f28be559a324ead2fcfbe189eac076e2e..0a77a470d78f68e8397f29f298e7f52fbd7ba9a2 100644 --- a/src/main/java/net/minecraft/world/level/block/FireBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FireBlock.java @@ -171,7 +171,7 @@ public class FireBlock extends BaseFireBlock { @@ -13,16 +13,16 @@ index 5dad1aa26a8908cba6a08398a4bad27f31d4c2c0..4d467ecf0dd8006b9fa4fb8fb5aadc06 @Override protected void tick(BlockState state, ServerLevel world, BlockPos pos, RandomSource random) { - world.scheduleTick(pos, (Block) this, FireBlock.getFireTickDelay(world.random)); -+ world.scheduleTick(pos, this, FireBlock.getFireTickDelay(world)); // Paper - Add fire-tick-delay option ++ world.scheduleTick(pos, (Block) this, FireBlock.getFireTickDelay(world)); // Paper - Add fire-tick-delay option if (world.getGameRules().getBoolean(GameRules.RULE_DOFIRETICK)) { if (!state.canSurvive(world, pos)) { this.fireExtinguished(world, pos); // CraftBukkit - invalid place location @@ -372,11 +372,11 @@ public class FireBlock extends BaseFireBlock { - protected void onPlace(BlockState state, Level world, BlockPos pos, BlockState oldState, boolean notify, net.minecraft.world.item.context.UseOnContext context) { - super.onPlace(state, world, pos, oldState, notify, context); - // Paper end - UseOnContext param -- world.scheduleTick(pos, (Block) this, FireBlock.getFireTickDelay(world.random)); -+ world.scheduleTick(pos, this, FireBlock.getFireTickDelay(world)); // Paper - Add fire-tick-delay option + protected void onPlace(BlockState iblockdata, Level world, BlockPos blockposition, BlockState iblockdata1, boolean flag, UseOnContext context) { + super.onPlace(iblockdata, world, blockposition, iblockdata1, flag, context); + // CraftBukkit end +- world.scheduleTick(blockposition, (Block) this, FireBlock.getFireTickDelay(world.random)); ++ world.scheduleTick(blockposition, (Block) this, FireBlock.getFireTickDelay(world)); // Paper - Add fire-tick-delay option } - private static int getFireTickDelay(RandomSource random) { diff --git a/patches/server/0763-Add-Moving-Piston-API.patch b/patches/server/0762-Add-Moving-Piston-API.patch similarity index 100% rename from patches/server/0763-Add-Moving-Piston-API.patch rename to patches/server/0762-Add-Moving-Piston-API.patch diff --git a/patches/server/0764-Ignore-impossible-spawn-tick.patch b/patches/server/0763-Ignore-impossible-spawn-tick.patch similarity index 100% rename from patches/server/0764-Ignore-impossible-spawn-tick.patch rename to patches/server/0763-Ignore-impossible-spawn-tick.patch diff --git a/patches/server/0765-Fix-EntityArgument-suggestion-permissions-to-align-w.patch b/patches/server/0764-Fix-EntityArgument-suggestion-permissions-to-align-w.patch similarity index 86% rename from patches/server/0765-Fix-EntityArgument-suggestion-permissions-to-align-w.patch rename to patches/server/0764-Fix-EntityArgument-suggestion-permissions-to-align-w.patch index c42422ceca..6ec183532e 100644 --- a/patches/server/0765-Fix-EntityArgument-suggestion-permissions-to-align-w.patch +++ b/patches/server/0764-Fix-EntityArgument-suggestion-permissions-to-align-w.patch @@ -9,14 +9,14 @@ suggestions, which especially matters when we force suggestions to the server for this type diff --git a/src/main/java/net/minecraft/commands/arguments/EntityArgument.java b/src/main/java/net/minecraft/commands/arguments/EntityArgument.java -index 78eca3243a276260ff26c3587fb60e17e0439af0..2043001c16b3530c2d3f52efda10bcad424881c0 100644 +index a327939abe2cce22747366051b6b7aaa2db3a8cc..a8487c18d7ef28143a7750bf096d00bcf1e67113 100644 --- a/src/main/java/net/minecraft/commands/arguments/EntityArgument.java +++ b/src/main/java/net/minecraft/commands/arguments/EntityArgument.java -@@ -127,7 +127,12 @@ public class EntityArgument implements ArgumentType { +@@ -135,7 +135,12 @@ public class EntityArgument implements ArgumentType { StringReader stringreader = new StringReader(suggestionsbuilder.getInput()); stringreader.setCursor(suggestionsbuilder.getStart()); -- EntitySelectorParser argumentparserselector = new EntitySelectorParser(stringreader, icompletionprovider.hasPermission(2)); +- EntitySelectorParser argumentparserselector = new EntitySelectorParser(stringreader, EntitySelectorParser.allowSelectors(icompletionprovider)); + // Paper start - Fix EntityArgument suggestion permissions + final boolean permission = object instanceof CommandSourceStack stack + ? stack.bypassSelectorPermissions || stack.hasPermission(2, "minecraft.command.selector") diff --git a/patches/server/0766-Fix-EntityCombustEvent-cancellation-cant-fully-preve.patch b/patches/server/0765-Fix-EntityCombustEvent-cancellation-cant-fully-preve.patch similarity index 92% rename from patches/server/0766-Fix-EntityCombustEvent-cancellation-cant-fully-preve.patch rename to patches/server/0765-Fix-EntityCombustEvent-cancellation-cant-fully-preve.patch index d0cf5c9861..77c18397b3 100644 --- a/patches/server/0766-Fix-EntityCombustEvent-cancellation-cant-fully-preve.patch +++ b/patches/server/0765-Fix-EntityCombustEvent-cancellation-cant-fully-preve.patch @@ -21,10 +21,10 @@ index 43a2570196619bd239170de586626a7112066430..655a0f2328b641ce41c64e9bb1456e05 // CraftBukkit end } diff --git a/src/main/java/net/minecraft/world/level/block/BaseFireBlock.java b/src/main/java/net/minecraft/world/level/block/BaseFireBlock.java -index c36e64c3df09f14ffb06b81ef20c5e200e386e50..bdf432850f8228ed42b09afea79ecc5c1055c930 100644 +index 0c5409af685ef1f251db3d9f9e21295c82a1e02a..8b5918dc07f17ae5001c03dc743128fd9520b819 100644 --- a/src/main/java/net/minecraft/world/level/block/BaseFireBlock.java +++ b/src/main/java/net/minecraft/world/level/block/BaseFireBlock.java -@@ -134,6 +134,10 @@ public abstract class BaseFireBlock extends Block { +@@ -135,6 +135,10 @@ public abstract class BaseFireBlock extends Block { if (!event.isCancelled()) { entity.igniteForSeconds(event.getDuration(), false); diff --git a/patches/server/0767-Add-PrePlayerAttackEntityEvent.patch b/patches/server/0766-Add-PrePlayerAttackEntityEvent.patch similarity index 100% rename from patches/server/0767-Add-PrePlayerAttackEntityEvent.patch rename to patches/server/0766-Add-PrePlayerAttackEntityEvent.patch diff --git a/patches/server/0768-ensure-reset-EnderDragon-boss-event-name.patch b/patches/server/0767-ensure-reset-EnderDragon-boss-event-name.patch similarity index 100% rename from patches/server/0768-ensure-reset-EnderDragon-boss-event-name.patch rename to patches/server/0767-ensure-reset-EnderDragon-boss-event-name.patch diff --git a/patches/server/0769-Add-Player-Warden-Warning-API.patch b/patches/server/0768-Add-Player-Warden-Warning-API.patch similarity index 95% rename from patches/server/0769-Add-Player-Warden-Warning-API.patch rename to patches/server/0768-Add-Player-Warden-Warning-API.patch index 647754a109..84244f79e4 100644 --- a/patches/server/0769-Add-Player-Warden-Warning-API.patch +++ b/patches/server/0768-Add-Player-Warden-Warning-API.patch @@ -10,7 +10,7 @@ public net.minecraft.world.entity.monster.warden.WardenSpawnTracker cooldownTick public net.minecraft.world.entity.monster.warden.WardenSpawnTracker increaseWarningLevel()V diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 3566c607c7d66eb8d64cdcd77204b6b132287f58..cc631c6882ee623cb1191b9d422a7adc4fa742a2 100644 +index 2ec75a25de34b68e7c14416a06facce6a169bac7..cdcdb55f896bb4128f258bf2aee91dc60100b6de 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -3303,6 +3303,41 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0770-More-vanilla-friendly-methods-to-update-trades.patch b/patches/server/0769-More-vanilla-friendly-methods-to-update-trades.patch similarity index 100% rename from patches/server/0770-More-vanilla-friendly-methods-to-update-trades.patch rename to patches/server/0769-More-vanilla-friendly-methods-to-update-trades.patch diff --git a/patches/server/0771-Add-paper-dumplisteners-command.patch b/patches/server/0770-Add-paper-dumplisteners-command.patch similarity index 100% rename from patches/server/0771-Add-paper-dumplisteners-command.patch rename to patches/server/0770-Add-paper-dumplisteners-command.patch diff --git a/patches/server/0772-check-global-player-list-where-appropriate.patch b/patches/server/0771-check-global-player-list-where-appropriate.patch similarity index 100% rename from patches/server/0772-check-global-player-list-where-appropriate.patch rename to patches/server/0771-check-global-player-list-where-appropriate.patch diff --git a/patches/server/0773-Fix-async-entity-add-due-to-fungus-trees.patch b/patches/server/0772-Fix-async-entity-add-due-to-fungus-trees.patch similarity index 100% rename from patches/server/0773-Fix-async-entity-add-due-to-fungus-trees.patch rename to patches/server/0772-Fix-async-entity-add-due-to-fungus-trees.patch diff --git a/patches/server/0774-ItemStack-damage-API.patch b/patches/server/0773-ItemStack-damage-API.patch similarity index 87% rename from patches/server/0774-ItemStack-damage-API.patch rename to patches/server/0773-ItemStack-damage-API.patch index 24e6ad94dd..2f71087902 100644 --- a/patches/server/0774-ItemStack-damage-API.patch +++ b/patches/server/0773-ItemStack-damage-API.patch @@ -11,10 +11,10 @@ the logic associated with damaging them public net.minecraft.world.entity.LivingEntity entityEventForEquipmentBreak(Lnet/minecraft/world/entity/EquipmentSlot;)B diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index d825c2e3808e44db9935dab4e7b528146c6d83c2..57510b85caf8914290ab0afb89cfb773158715b8 100644 +index 598507684aed7978fa2e9bae0d959c7d0f9e53d6..e6588a7fc03df4036b38f9a2011e7a716ff111f4 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -647,11 +647,16 @@ public final class ItemStack implements DataComponentHolder { +@@ -647,8 +647,13 @@ public final class ItemStack implements DataComponentHolder { } public void hurtAndBreak(int amount, ServerLevel world, @Nullable LivingEntity player, Consumer breakCallback) { // Paper - Add EntityDamageItemEvent @@ -28,11 +28,7 @@ index d825c2e3808e44db9935dab4e7b528146c6d83c2..57510b85caf8914290ab0afb89cfb773 + if (player == null || !player.hasInfiniteMaterials() || force) { // Paper if (amount > 0) { int originalDamage = amount; // Paper - Expand PlayerItemDamageEvent -- amount = EnchantmentHelper.processDurabilityChange(world, this, amount); -+ if (!force) amount = EnchantmentHelper.processDurabilityChange(world, this, amount); // Paper - itemstack damage API - do not consider enchantments when damaging from API - // CraftBukkit start - if (player instanceof ServerPlayer serverPlayer) { // Paper - Add EntityDamageItemEvent - PlayerItemDamageEvent event = new PlayerItemDamageEvent(serverPlayer.getBukkitEntity(), CraftItemStack.asCraftMirror(this), amount, originalDamage); // Paper - Add EntityDamageItemEvent & Expand PlayerItemDamageEvent + amount = EnchantmentHelper.processDurabilityChange(world, this, amount); @@ -699,6 +704,11 @@ public final class ItemStack implements DataComponentHolder { } diff --git a/patches/server/0775-Friction-API.patch b/patches/server/0774-Friction-API.patch similarity index 100% rename from patches/server/0775-Friction-API.patch rename to patches/server/0774-Friction-API.patch diff --git a/patches/server/0776-Ability-to-control-player-s-insomnia-and-phantoms.patch b/patches/server/0775-Ability-to-control-player-s-insomnia-and-phantoms.patch similarity index 100% rename from patches/server/0776-Ability-to-control-player-s-insomnia-and-phantoms.patch rename to patches/server/0775-Ability-to-control-player-s-insomnia-and-phantoms.patch diff --git a/patches/server/0777-Fix-premature-player-kicks-on-shutdown.patch b/patches/server/0776-Fix-premature-player-kicks-on-shutdown.patch similarity index 100% rename from patches/server/0777-Fix-premature-player-kicks-on-shutdown.patch rename to patches/server/0776-Fix-premature-player-kicks-on-shutdown.patch diff --git a/patches/server/0778-Sync-offhand-slot-in-menus.patch b/patches/server/0777-Sync-offhand-slot-in-menus.patch similarity index 100% rename from patches/server/0778-Sync-offhand-slot-in-menus.patch rename to patches/server/0777-Sync-offhand-slot-in-menus.patch diff --git a/patches/server/0779-Player-Entity-Tracking-Events.patch b/patches/server/0778-Player-Entity-Tracking-Events.patch similarity index 100% rename from patches/server/0779-Player-Entity-Tracking-Events.patch rename to patches/server/0778-Player-Entity-Tracking-Events.patch diff --git a/patches/server/0780-Limit-pet-look-distance.patch b/patches/server/0779-Limit-pet-look-distance.patch similarity index 100% rename from patches/server/0780-Limit-pet-look-distance.patch rename to patches/server/0779-Limit-pet-look-distance.patch diff --git a/patches/server/0781-fix-Instruments.patch b/patches/server/0780-fix-Instruments.patch similarity index 96% rename from patches/server/0781-fix-Instruments.patch rename to patches/server/0780-fix-Instruments.patch index fd5c343d0b..3c7adaddd6 100644 --- a/patches/server/0781-fix-Instruments.patch +++ b/patches/server/0780-fix-Instruments.patch @@ -6,7 +6,7 @@ Subject: [PATCH] fix Instruments properly handle Player#playNote diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index cc631c6882ee623cb1191b9d422a7adc4fa742a2..c426dbff75f0ad3889594fba9a66669fc71b63e8 100644 +index cdcdb55f896bb4128f258bf2aee91dc60100b6de..fc0db6deca6ff3b8e083fccd312e6ff3b5a78616 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -768,7 +768,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0782-Improve-inlining-for-some-hot-BlockBehavior-and-Flui.patch b/patches/server/0781-Improve-inlining-for-some-hot-BlockBehavior-and-Flui.patch similarity index 92% rename from patches/server/0782-Improve-inlining-for-some-hot-BlockBehavior-and-Flui.patch rename to patches/server/0781-Improve-inlining-for-some-hot-BlockBehavior-and-Flui.patch index d563036457..420107d5c3 100644 --- a/patches/server/0782-Improve-inlining-for-some-hot-BlockBehavior-and-Flui.patch +++ b/patches/server/0781-Improve-inlining-for-some-hot-BlockBehavior-and-Flui.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Improve inlining for some hot BlockBehavior and FluidState diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -index 6fe078fdf619c4df664f1dce6a0f5d202c21b35e..9d6cc0b8dbc451dfff1ddd8e7be32d11434cdb69 100644 +index 46dd499c2023ec482ae7204d2894fb4100d9233b..a8bec3c405732e5863cf717b1fe948d00837bed2 100644 --- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java +++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -@@ -906,15 +906,15 @@ public abstract class BlockBehaviour implements FeatureElement { +@@ -907,15 +907,15 @@ public abstract class BlockBehaviour implements FeatureElement { return this.shapeExceedsCube; // Paper - moved into shape cache init } @@ -28,7 +28,7 @@ index 6fe078fdf619c4df664f1dce6a0f5d202c21b35e..9d6cc0b8dbc451dfff1ddd8e7be32d11 return this.isAir; } -@@ -998,7 +998,7 @@ public abstract class BlockBehaviour implements FeatureElement { +@@ -999,7 +999,7 @@ public abstract class BlockBehaviour implements FeatureElement { } } @@ -37,7 +37,7 @@ index 6fe078fdf619c4df664f1dce6a0f5d202c21b35e..9d6cc0b8dbc451dfff1ddd8e7be32d11 return this.canOcclude; } -@@ -1214,11 +1214,11 @@ public abstract class BlockBehaviour implements FeatureElement { +@@ -1215,11 +1215,11 @@ public abstract class BlockBehaviour implements FeatureElement { return this.getBlock().builtInRegistryHolder().is(key); } diff --git a/patches/server/0783-Fix-inconsistencies-in-dispense-events-regarding-sta.patch b/patches/server/0782-Fix-inconsistencies-in-dispense-events-regarding-sta.patch similarity index 100% rename from patches/server/0783-Fix-inconsistencies-in-dispense-events-regarding-sta.patch rename to patches/server/0782-Fix-inconsistencies-in-dispense-events-regarding-sta.patch diff --git a/patches/server/0784-Add-BlockLockCheckEvent.patch b/patches/server/0783-Add-BlockLockCheckEvent.patch similarity index 100% rename from patches/server/0784-Add-BlockLockCheckEvent.patch rename to patches/server/0783-Add-BlockLockCheckEvent.patch diff --git a/patches/server/0785-Add-Sneaking-API-for-Entities.patch b/patches/server/0784-Add-Sneaking-API-for-Entities.patch similarity index 91% rename from patches/server/0785-Add-Sneaking-API-for-Entities.patch rename to patches/server/0784-Add-Sneaking-API-for-Entities.patch index a8db30ee3c..aaee22c056 100644 --- a/patches/server/0785-Add-Sneaking-API-for-Entities.patch +++ b/patches/server/0784-Add-Sneaking-API-for-Entities.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add Sneaking API for Entities diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 7c223042595c7cd5ccc554211657d9375833122b..3c1e199316ae283210529d4d27b4f9d70b4d9404 100644 +index f950102a324d07aeba260bfa82fe88728f2362e5..ac513d3162a0794f226abc80bff21c799fe5802c 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -874,6 +874,18 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { diff --git a/patches/server/0786-Improve-logging-and-errors.patch b/patches/server/0785-Improve-logging-and-errors.patch similarity index 98% rename from patches/server/0786-Improve-logging-and-errors.patch rename to patches/server/0785-Improve-logging-and-errors.patch index 243a962373..13a5a1f58b 100644 --- a/patches/server/0786-Improve-logging-and-errors.patch +++ b/patches/server/0785-Improve-logging-and-errors.patch @@ -52,10 +52,10 @@ index aa39bdb0a4ba8fedf5052ea9700afa7d4d2a4300..b4af03c4bdd1ce0861f36c3b75fc7e89 } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 3b1e231c637750821a756c877c9c6b7150b184b8..e5b466f71d4c65eb31210ccad05a9fb603d53098 100644 +index 719f44cf1bca2cd834b7909e135b0a636c4ccb5e..af2fb05406616849c8f65bbd971b354d1931a6ac 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -3400,7 +3400,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -3395,7 +3395,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.resetPlayerChatState(remotechatsession_a.validate(this.player.getGameProfile(), signaturevalidator)); } catch (ProfilePublicKey.ValidationException profilepublickey_b) { diff --git a/patches/server/0787-Improve-PortalEvents.patch b/patches/server/0786-Improve-PortalEvents.patch similarity index 62% rename from patches/server/0787-Improve-PortalEvents.patch rename to patches/server/0786-Improve-PortalEvents.patch index 3686fbed23..888317113e 100644 --- a/patches/server/0787-Improve-PortalEvents.patch +++ b/patches/server/0786-Improve-PortalEvents.patch @@ -4,6 +4,19 @@ Date: Thu, 15 Dec 2022 10:33:39 -0800 Subject: [PATCH] Improve PortalEvents +diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java +index 96dff63230e8cda1f5e548d914c119bd64b5ac33..7270b6fa96bae937663c0fea77887e21fbd0eb57 100644 +--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java ++++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java +@@ -1340,7 +1340,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { + } + // CraftBukkit start + Location enter = this.getBukkitEntity().getLocation(); +- Location exit = (worldserver == null) ? null : CraftLocation.toBukkit(teleportTarget.pos(), worldserver.getWorld(), teleportTarget.yRot(), teleportTarget.xRot()); ++ Location exit =/* (worldserver == null) ? null : // Paper - always non-null */CraftLocation.toBukkit(teleportTarget.pos(), worldserver.getWorld(), teleportTarget.yRot(), teleportTarget.xRot()); + PlayerTeleportEvent tpEvent = new PlayerTeleportEvent(this.getBukkitEntity(), enter, exit, teleportTarget.cause()); + Bukkit.getServer().getPluginManager().callEvent(tpEvent); + if (tpEvent.isCancelled() || tpEvent.getTo() == null) { diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java index 3c410f22c92a64b50d77b22c4b3027d51bcd7e05..1c4ec9049d84adbeb26b7abda82836f8ce0ff0ba 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java @@ -41,7 +54,7 @@ index 11486419dd98a013c7387d3d73f322a95a18c574..3f5bb5c9ceb5b31fcc9ef0a7a6157e1e if (!world.isClientSide && tileentity instanceof TheEndGatewayBlockEntity) { diff --git a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java -index cff3e9869340f1ffb7093431cbe1ac5e67792a4e..01333f69b622141b2eb53441c6cbd69e4a059d55 100644 +index 28fba1448309805fc3d687de6bc8454d2c85fcd3..a35a426cc7778a51523f26057b5d61b8a3e23d5d 100644 --- a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java +++ b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java @@ -66,8 +66,9 @@ public class EndPortalBlock extends BaseEntityBlock implements Portal { @@ -55,8 +68,17 @@ index cff3e9869340f1ffb7093431cbe1ac5e67792a4e..01333f69b622141b2eb53441c6cbd69e // CraftBukkit end if (!world.isClientSide && world.dimension() == Level.END && entity instanceof ServerPlayer) { ServerPlayer entityplayer = (ServerPlayer) entity; +@@ -90,7 +91,7 @@ public class EndPortalBlock extends BaseEntityBlock implements Portal { + ServerLevel worldserver1 = world.getServer().getLevel(resourcekey); + + if (worldserver1 == null) { +- return new DimensionTransition(PlayerTeleportEvent.TeleportCause.END_PORTAL); // CraftBukkit- always fire event in case plugins wish to change it ++ return null; // Paper - keep previous behavior of not firing PlayerTeleportEvent if the target world doesn't exist + } else { + boolean flag = resourcekey == Level.END; + BlockPos blockposition1 = flag ? ServerLevel.END_SPAWN_POINT : worldserver1.getSharedSpawnPos(); diff --git a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java -index a530276b0123dee5680d7e09ad3d2f0414909c91..ddab7de1d376e9e486e2f920174397ea8804aa29 100644 +index a530276b0123dee5680d7e09ad3d2f0414909c91..1722188fbfccd233625db540ddcaf646762fd023 100644 --- a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java +++ b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java @@ -110,8 +110,9 @@ public class NetherPortalBlock extends Block implements Portal { @@ -70,3 +92,27 @@ index a530276b0123dee5680d7e09ad3d2f0414909c91..ddab7de1d376e9e486e2f920174397ea // CraftBukkit end entity.setAsInsidePortal(this, pos); } +@@ -143,7 +144,7 @@ public class NetherPortalBlock extends Block implements Portal { + // Paper end - Add EntityPortalReadyEvent + + if (worldserver1 == null) { +- return new DimensionTransition(PlayerTeleportEvent.TeleportCause.NETHER_PORTAL); // always fire event in case plugins wish to change it ++ return null; // Paper - keep previous behavior of not firing PlayerTeleportEvent if the target world doesn't exist + } else { + boolean flag = worldserver1.getTypeKey() == LevelStem.NETHER; + // CraftBukkit end +diff --git a/src/main/java/net/minecraft/world/level/portal/DimensionTransition.java b/src/main/java/net/minecraft/world/level/portal/DimensionTransition.java +index 788f79dc38012595b385ee6a449daa0bccf0079a..36c8735312c885eb153f4ffdf0f2a5495e9c9f65 100644 +--- a/src/main/java/net/minecraft/world/level/portal/DimensionTransition.java ++++ b/src/main/java/net/minecraft/world/level/portal/DimensionTransition.java +@@ -15,9 +15,7 @@ public record DimensionTransition(ServerLevel newLevel, Vec3 pos, Vec3 speed, fl + this(newLevel, pos, speed, yRot, xRot, missingRespawnBlock, postDimensionTransition, PlayerTeleportEvent.TeleportCause.UNKNOWN); + } + +- public DimensionTransition(PlayerTeleportEvent.TeleportCause cause) { +- this(null, Vec3.ZERO, Vec3.ZERO, 0.0F, 0.0F, false, DO_NOTHING, cause); +- } ++ // Paper - remove unused constructor (for safety) + // CraftBukkit end + + public static final DimensionTransition.PostDimensionTransition DO_NOTHING = (entity) -> { diff --git a/patches/server/0788-Add-config-option-for-spider-worldborder-climbing.patch b/patches/server/0787-Add-config-option-for-spider-worldborder-climbing.patch similarity index 100% rename from patches/server/0788-Add-config-option-for-spider-worldborder-climbing.patch rename to patches/server/0787-Add-config-option-for-spider-worldborder-climbing.patch diff --git a/patches/server/0789-Add-missing-SpigotConfig-logCommands-check.patch b/patches/server/0788-Add-missing-SpigotConfig-logCommands-check.patch similarity index 89% rename from patches/server/0789-Add-missing-SpigotConfig-logCommands-check.patch rename to patches/server/0788-Add-missing-SpigotConfig-logCommands-check.patch index a7d5349548..75fc07c3c6 100644 --- a/patches/server/0789-Add-missing-SpigotConfig-logCommands-check.patch +++ b/patches/server/0788-Add-missing-SpigotConfig-logCommands-check.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Add missing SpigotConfig logCommands check Co-authored-by: david diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index e5b466f71d4c65eb31210ccad05a9fb603d53098..1b486d09bd1a84835183a6c8181933fcabb3373f 100644 +index af2fb05406616849c8f65bbd971b354d1931a6ac..50896a73387f9467b83f9a685ab346e3edb4e040 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2058,7 +2058,9 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2053,7 +2053,9 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl private void performUnsignedChatCommand(String command) { // CraftBukkit start String command1 = "/" + command; @@ -19,7 +19,7 @@ index e5b466f71d4c65eb31210ccad05a9fb603d53098..1b486d09bd1a84835183a6c8181933fc PlayerCommandPreprocessEvent event = new PlayerCommandPreprocessEvent(this.getCraftPlayer(), command1, new LazyPlayerSet(this.server)); this.cserver.getPluginManager().callEvent(event); -@@ -2098,7 +2100,9 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2093,7 +2095,9 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl private void performSignedChatCommand(ServerboundChatCommandSignedPacket packet, LastSeenMessages lastSeenMessages) { // CraftBukkit start String command = "/" + packet.command(); diff --git a/patches/server/0790-Fix-NPE-on-Allay-stopDancing-while-not-dancing.patch b/patches/server/0789-Fix-NPE-on-Allay-stopDancing-while-not-dancing.patch similarity index 100% rename from patches/server/0790-Fix-NPE-on-Allay-stopDancing-while-not-dancing.patch rename to patches/server/0789-Fix-NPE-on-Allay-stopDancing-while-not-dancing.patch diff --git a/patches/server/0791-Flying-Fall-Damage.patch b/patches/server/0790-Flying-Fall-Damage.patch similarity index 96% rename from patches/server/0791-Flying-Fall-Damage.patch rename to patches/server/0790-Flying-Fall-Damage.patch index f7fc90f3fd..1731871405 100644 --- a/patches/server/0791-Flying-Fall-Damage.patch +++ b/patches/server/0790-Flying-Fall-Damage.patch @@ -26,7 +26,7 @@ index ad334f149fe1b44d4ebe48489dcd2811ff1b5cd0..950ce40d268d89ff3c503116081db6c9 } else { if (fallDistance >= 2.0F) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index c426dbff75f0ad3889594fba9a66669fc71b63e8..cb191389007ccaae2e3af1defc5e95ee571c46ac 100644 +index fc0db6deca6ff3b8e083fccd312e6ff3b5a78616..78ab37d1359e1d44bd921428038c733b77171cd2 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -2581,6 +2581,19 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0792-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch b/patches/server/0791-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch similarity index 100% rename from patches/server/0792-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch rename to patches/server/0791-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch diff --git a/patches/server/0793-config-for-disabling-entity-tag-tags.patch b/patches/server/0792-config-for-disabling-entity-tag-tags.patch similarity index 100% rename from patches/server/0793-config-for-disabling-entity-tag-tags.patch rename to patches/server/0792-config-for-disabling-entity-tag-tags.patch diff --git a/patches/server/0794-Use-single-player-info-update-packet-on-join.patch b/patches/server/0793-Use-single-player-info-update-packet-on-join.patch similarity index 92% rename from patches/server/0794-Use-single-player-info-update-packet-on-join.patch rename to patches/server/0793-Use-single-player-info-update-packet-on-join.patch index 4552daec45..7067fafbf3 100644 --- a/patches/server/0794-Use-single-player-info-update-packet-on-join.patch +++ b/patches/server/0793-Use-single-player-info-update-packet-on-join.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Use single player info update packet on join diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 1b486d09bd1a84835183a6c8181933fcabb3373f..62b022a72954eeecfa141f4ec93ccb44d955e54b 100644 +index 50896a73387f9467b83f9a685ab346e3edb4e040..e38c437a2e55d0e1cc7ed60f7994232880342c9e 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -3438,7 +3438,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -3433,7 +3433,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.signedMessageDecoder = session.createMessageDecoder(this.player.getUUID()); this.chatMessageChain.append(() -> { this.player.setChatSession(session); @@ -18,7 +18,7 @@ index 1b486d09bd1a84835183a6c8181933fcabb3373f..62b022a72954eeecfa141f4ec93ccb44 } diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index a929b8f1c452db08a64e4be53b488cf2676e0a94..2ea29c9491186d7a25ed3eed99ee4a488bcaa272 100644 +index 84add5cc89ec912389500b6140a39d6b7ddc9e86..944c727fd7770fe4c06af67304005664a7ab9e8a 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -361,6 +361,7 @@ public abstract class PlayerList { diff --git a/patches/server/0795-Correctly-shrink-items-during-EntityResurrectEvent.patch b/patches/server/0794-Correctly-shrink-items-during-EntityResurrectEvent.patch similarity index 100% rename from patches/server/0795-Correctly-shrink-items-during-EntityResurrectEvent.patch rename to patches/server/0794-Correctly-shrink-items-during-EntityResurrectEvent.patch diff --git a/patches/server/0796-Win-Screen-API.patch b/patches/server/0795-Win-Screen-API.patch similarity index 93% rename from patches/server/0796-Win-Screen-API.patch rename to patches/server/0795-Win-Screen-API.patch index 95dd061087..7ab535106b 100644 --- a/patches/server/0796-Win-Screen-API.patch +++ b/patches/server/0795-Win-Screen-API.patch @@ -7,7 +7,7 @@ Subject: [PATCH] Win Screen API public net.minecraft.server.level.ServerPlayer seenCredits diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index cb191389007ccaae2e3af1defc5e95ee571c46ac..756ba61af10b552c5c0bf86e506a31df0f0ce6f5 100644 +index 78ab37d1359e1d44bd921428038c733b77171cd2..384165d6747c61d0d306fa63773cbca560dfae9b 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -1305,6 +1305,25 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0797-Remove-CraftItemStack-setAmount-null-assignment.patch b/patches/server/0796-Remove-CraftItemStack-setAmount-null-assignment.patch similarity index 100% rename from patches/server/0797-Remove-CraftItemStack-setAmount-null-assignment.patch rename to patches/server/0796-Remove-CraftItemStack-setAmount-null-assignment.patch diff --git a/patches/server/0798-Fix-force-opening-enchantment-tables.patch b/patches/server/0797-Fix-force-opening-enchantment-tables.patch similarity index 100% rename from patches/server/0798-Fix-force-opening-enchantment-tables.patch rename to patches/server/0797-Fix-force-opening-enchantment-tables.patch diff --git a/patches/server/0799-Add-Entity-Body-Yaw-API.patch b/patches/server/0798-Add-Entity-Body-Yaw-API.patch similarity index 100% rename from patches/server/0799-Add-Entity-Body-Yaw-API.patch rename to patches/server/0798-Add-Entity-Body-Yaw-API.patch diff --git a/patches/server/0800-Fix-MC-157464-Prevent-sleeping-villagers-moving-towa.patch b/patches/server/0799-Fix-MC-157464-Prevent-sleeping-villagers-moving-towa.patch similarity index 100% rename from patches/server/0800-Fix-MC-157464-Prevent-sleeping-villagers-moving-towa.patch rename to patches/server/0799-Fix-MC-157464-Prevent-sleeping-villagers-moving-towa.patch diff --git a/patches/server/0801-Add-EntityFertilizeEggEvent.patch b/patches/server/0800-Add-EntityFertilizeEggEvent.patch similarity index 97% rename from patches/server/0801-Add-EntityFertilizeEggEvent.patch rename to patches/server/0800-Add-EntityFertilizeEggEvent.patch index 8c4e26f04a..241552c5fe 100644 --- a/patches/server/0801-Add-EntityFertilizeEggEvent.patch +++ b/patches/server/0800-Add-EntityFertilizeEggEvent.patch @@ -69,10 +69,10 @@ index d34d8fe70379dcad9540739ec0ae1c94f01fc46b..fadd341ff398886a4da102eefa1beb95 this.playSound(SoundEvents.SNIFFER_EGG_PLOP, 1.0F, (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 0.5F); } // Paper - Call EntityDropItemEvent diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 82b98a9b6418614283ac512f59586877f577b35b..b35c6393c3af2519be648e75c7d09038cf94ccbf 100644 +index 668becf24a16af6b834d05608787c8f9420e9ad3..8a1f52eeace48ed65bdc077923d0763d5e4369b6 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -2168,4 +2168,28 @@ public class CraftEventFactory { +@@ -2181,4 +2181,28 @@ public class CraftEventFactory { return event.callEvent(); } // Paper end diff --git a/patches/server/0802-Fix-HumanEntity-drop-not-updating-the-client-inv.patch b/patches/server/0801-Fix-HumanEntity-drop-not-updating-the-client-inv.patch similarity index 100% rename from patches/server/0802-Fix-HumanEntity-drop-not-updating-the-client-inv.patch rename to patches/server/0801-Fix-HumanEntity-drop-not-updating-the-client-inv.patch diff --git a/patches/server/0803-Add-CompostItemEvent-and-EntityCompostItemEvent.patch b/patches/server/0802-Add-CompostItemEvent-and-EntityCompostItemEvent.patch similarity index 100% rename from patches/server/0803-Add-CompostItemEvent-and-EntityCompostItemEvent.patch rename to patches/server/0802-Add-CompostItemEvent-and-EntityCompostItemEvent.patch diff --git a/patches/server/0804-Correctly-handle-ArmorStand-invisibility.patch b/patches/server/0803-Correctly-handle-ArmorStand-invisibility.patch similarity index 100% rename from patches/server/0804-Correctly-handle-ArmorStand-invisibility.patch rename to patches/server/0803-Correctly-handle-ArmorStand-invisibility.patch diff --git a/patches/server/0805-Fix-advancement-triggers-for-entity-damage.patch b/patches/server/0804-Fix-advancement-triggers-for-entity-damage.patch similarity index 100% rename from patches/server/0805-Fix-advancement-triggers-for-entity-damage.patch rename to patches/server/0804-Fix-advancement-triggers-for-entity-damage.patch diff --git a/patches/server/0806-Fix-text-display-error-on-spawn.patch b/patches/server/0805-Fix-text-display-error-on-spawn.patch similarity index 100% rename from patches/server/0806-Fix-text-display-error-on-spawn.patch rename to patches/server/0805-Fix-text-display-error-on-spawn.patch diff --git a/patches/server/0807-Fix-inventories-returning-null-Locations.patch b/patches/server/0806-Fix-inventories-returning-null-Locations.patch similarity index 97% rename from patches/server/0807-Fix-inventories-returning-null-Locations.patch rename to patches/server/0806-Fix-inventories-returning-null-Locations.patch index eabfae28c5..23413d6b03 100644 --- a/patches/server/0807-Fix-inventories-returning-null-Locations.patch +++ b/patches/server/0806-Fix-inventories-returning-null-Locations.patch @@ -30,7 +30,7 @@ index c26161784359ea167e11de8aa58eda3b4851059c..6632cf24ebe6d147950a1fdb87666093 } diff --git a/src/main/java/net/minecraft/world/inventory/BeaconMenu.java b/src/main/java/net/minecraft/world/inventory/BeaconMenu.java -index 6173c689013ab02c83ca6ff1fde2b1e47f3e7820..1b6fd16d8c6195c6f7b65c7621d5f9bd15c46a75 100644 +index 8b0ebf659f6b219ce2a5d10b0d79f9b89b47c911..a735aeeb59f79154ce797c6e2f5600305f46d217 100644 --- a/src/main/java/net/minecraft/world/inventory/BeaconMenu.java +++ b/src/main/java/net/minecraft/world/inventory/BeaconMenu.java @@ -52,6 +52,12 @@ public class BeaconMenu extends AbstractContainerMenu { diff --git a/patches/server/0808-Add-Shearable-API.patch b/patches/server/0807-Add-Shearable-API.patch similarity index 98% rename from patches/server/0808-Add-Shearable-API.patch rename to patches/server/0807-Add-Shearable-API.patch index 675a1bf358..069dcbaf2e 100644 --- a/patches/server/0808-Add-Shearable-API.patch +++ b/patches/server/0807-Add-Shearable-API.patch @@ -32,7 +32,7 @@ index 0000000000000000000000000000000000000000..bcf254e3c81cf1e401bddc850fb24ad2 + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftBogged.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftBogged.java -index b252236369315502278e9b7c93709a347ec16636..93481e2828f945b11ae9a20a8e5286232b449fa9 100644 +index 0139e85c0751564bb4d2847b7b2e48f75fee9e53..e8e4704304504e69c7964dcd4df8ce5db9e92bf6 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftBogged.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftBogged.java @@ -4,7 +4,7 @@ import org.bukkit.craftbukkit.CraftServer; diff --git a/patches/server/0809-Fix-SpawnEggMeta-get-setSpawnedType.patch b/patches/server/0808-Fix-SpawnEggMeta-get-setSpawnedType.patch similarity index 100% rename from patches/server/0809-Fix-SpawnEggMeta-get-setSpawnedType.patch rename to patches/server/0808-Fix-SpawnEggMeta-get-setSpawnedType.patch diff --git a/patches/server/0810-Fix-crash-relating-to-bad-recipes-in-furnace-like-ti.patch b/patches/server/0809-Fix-crash-relating-to-bad-recipes-in-furnace-like-ti.patch similarity index 100% rename from patches/server/0810-Fix-crash-relating-to-bad-recipes-in-furnace-like-ti.patch rename to patches/server/0809-Fix-crash-relating-to-bad-recipes-in-furnace-like-ti.patch diff --git a/patches/server/0811-Treat-sequence-violations-like-they-should-be.patch b/patches/server/0810-Treat-sequence-violations-like-they-should-be.patch similarity index 87% rename from patches/server/0811-Treat-sequence-violations-like-they-should-be.patch rename to patches/server/0810-Treat-sequence-violations-like-they-should-be.patch index 0a8d25783a..0ba419a953 100644 --- a/patches/server/0811-Treat-sequence-violations-like-they-should-be.patch +++ b/patches/server/0810-Treat-sequence-violations-like-they-should-be.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Treat sequence violations like they should be diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 62b022a72954eeecfa141f4ec93ccb44d955e54b..664d9cfacb87b1d9193376261f7102b64c906ddc 100644 +index e38c437a2e55d0e1cc7ed60f7994232880342c9e..207cc06d857ffca4c0aac98221a31014b42fac3f 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1977,6 +1977,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1972,6 +1972,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl public void ackBlockChangesUpTo(int sequence) { if (sequence < 0) { diff --git a/patches/server/0812-Prevent-causing-expired-keys-from-impacting-new-join.patch b/patches/server/0811-Prevent-causing-expired-keys-from-impacting-new-join.patch similarity index 96% rename from patches/server/0812-Prevent-causing-expired-keys-from-impacting-new-join.patch rename to patches/server/0811-Prevent-causing-expired-keys-from-impacting-new-join.patch index d08f848c6e..ca01894b5f 100644 --- a/patches/server/0812-Prevent-causing-expired-keys-from-impacting-new-join.patch +++ b/patches/server/0811-Prevent-causing-expired-keys-from-impacting-new-join.patch @@ -26,7 +26,7 @@ index 68c062cbaa030d62d97c9c003651f8fc17a00a6b..6247a21c9c391abf1f6db3482c659593 UPDATE_GAME_MODE((serialized, buf) -> serialized.gameMode = GameType.byId(buf.readVarInt()), (buf, entry) -> buf.writeVarInt(entry.gameMode().getId())), UPDATE_LISTED((serialized, buf) -> serialized.listed = buf.readBoolean(), (buf, entry) -> buf.writeBoolean(entry.listed())), diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 664d9cfacb87b1d9193376261f7102b64c906ddc..977af8887ac331576a1c4441fcfad681f69a9929 100644 +index 207cc06d857ffca4c0aac98221a31014b42fac3f..d3e0fb1292e1bae22ea70835b45fc36aa9cf254c 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -295,6 +295,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -51,7 +51,7 @@ index 664d9cfacb87b1d9193376261f7102b64c906ddc..977af8887ac331576a1c4441fcfad681 } private int getMaximumFlyingTicks(Entity vehicle) { -@@ -3436,6 +3444,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -3431,6 +3439,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl private void resetPlayerChatState(RemoteChatSession session) { this.chatSession = session; diff --git a/patches/server/0813-Prevent-GameEvents-being-fired-from-unloaded-chunks.patch b/patches/server/0812-Prevent-GameEvents-being-fired-from-unloaded-chunks.patch similarity index 100% rename from patches/server/0813-Prevent-GameEvents-being-fired-from-unloaded-chunks.patch rename to patches/server/0812-Prevent-GameEvents-being-fired-from-unloaded-chunks.patch diff --git a/patches/server/0814-Use-array-for-gamerule-storage.patch b/patches/server/0813-Use-array-for-gamerule-storage.patch similarity index 100% rename from patches/server/0814-Use-array-for-gamerule-storage.patch rename to patches/server/0813-Use-array-for-gamerule-storage.patch diff --git a/patches/server/0815-Fix-a-couple-of-upstream-bed-issues.patch b/patches/server/0814-Fix-a-couple-of-upstream-bed-issues.patch similarity index 100% rename from patches/server/0815-Fix-a-couple-of-upstream-bed-issues.patch rename to patches/server/0814-Fix-a-couple-of-upstream-bed-issues.patch diff --git a/patches/server/0816-Fix-demo-flag-not-enabling-demo-mode.patch b/patches/server/0815-Fix-demo-flag-not-enabling-demo-mode.patch similarity index 100% rename from patches/server/0816-Fix-demo-flag-not-enabling-demo-mode.patch rename to patches/server/0815-Fix-demo-flag-not-enabling-demo-mode.patch diff --git a/patches/server/0817-Add-Mob-Experience-reward-API.patch b/patches/server/0816-Add-Mob-Experience-reward-API.patch similarity index 100% rename from patches/server/0817-Add-Mob-Experience-reward-API.patch rename to patches/server/0816-Add-Mob-Experience-reward-API.patch diff --git a/patches/server/0818-Break-redstone-on-top-of-trap-doors-early.patch b/patches/server/0817-Break-redstone-on-top-of-trap-doors-early.patch similarity index 100% rename from patches/server/0818-Break-redstone-on-top-of-trap-doors-early.patch rename to patches/server/0817-Break-redstone-on-top-of-trap-doors-early.patch diff --git a/patches/server/0819-Avoid-Lazy-Initialization-for-Enum-Fields.patch b/patches/server/0818-Avoid-Lazy-Initialization-for-Enum-Fields.patch similarity index 100% rename from patches/server/0819-Avoid-Lazy-Initialization-for-Enum-Fields.patch rename to patches/server/0818-Avoid-Lazy-Initialization-for-Enum-Fields.patch diff --git a/patches/server/0820-More-accurate-isInOpenWater-impl.patch b/patches/server/0819-More-accurate-isInOpenWater-impl.patch similarity index 100% rename from patches/server/0820-More-accurate-isInOpenWater-impl.patch rename to patches/server/0819-More-accurate-isInOpenWater-impl.patch diff --git a/patches/server/0821-Expand-PlayerItemMendEvent.patch b/patches/server/0820-Expand-PlayerItemMendEvent.patch similarity index 97% rename from patches/server/0821-Expand-PlayerItemMendEvent.patch rename to patches/server/0820-Expand-PlayerItemMendEvent.patch index 6437d9ecb4..5ce5d5fde3 100644 --- a/patches/server/0821-Expand-PlayerItemMendEvent.patch +++ b/patches/server/0820-Expand-PlayerItemMendEvent.patch @@ -49,10 +49,10 @@ index 384165d6747c61d0d306fa63773cbca560dfae9b..e7235efba6b68917a646083c150655cb } } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index b35c6393c3af2519be648e75c7d09038cf94ccbf..23e24853e8540cecb2145471d548cad1b2539447 100644 +index 8a1f52eeace48ed65bdc077923d0763d5e4369b6..bbc5143940b5f028051cb5897a5b510e35a5d354 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1280,10 +1280,10 @@ public class CraftEventFactory { +@@ -1284,10 +1284,10 @@ public class CraftEventFactory { return event; } diff --git a/patches/server/0822-Refresh-ProjectileSource-for-projectiles.patch b/patches/server/0821-Refresh-ProjectileSource-for-projectiles.patch similarity index 100% rename from patches/server/0822-Refresh-ProjectileSource-for-projectiles.patch rename to patches/server/0821-Refresh-ProjectileSource-for-projectiles.patch diff --git a/patches/server/0823-Add-transient-modifier-API.patch b/patches/server/0822-Add-transient-modifier-API.patch similarity index 100% rename from patches/server/0823-Add-transient-modifier-API.patch rename to patches/server/0822-Add-transient-modifier-API.patch diff --git a/patches/server/0824-Fix-block-place-logic.patch b/patches/server/0823-Fix-block-place-logic.patch similarity index 97% rename from patches/server/0824-Fix-block-place-logic.patch rename to patches/server/0823-Fix-block-place-logic.patch index 3796cc773d..accea4ee7c 100644 --- a/patches/server/0824-Fix-block-place-logic.patch +++ b/patches/server/0823-Fix-block-place-logic.patch @@ -22,7 +22,7 @@ index 7d76cdc59984b156628273c8357485eb10046007..7180996027f70aef7afe32fb2adfce64 itemstack.consume(1, entityhuman); return InteractionResult.sidedSuccess(world.isClientSide); diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 210c3b6167dac93e550fe849e34b5aa404ab6dce..ed1c50d31fc077e4e009719fa622a44edefcdf2c 100644 +index cc92d2e8b77c75da1d8b850c3bc251e8ac221c24..0a3e56302470f239d4840e4e32d2a0ce4611ff65 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -552,17 +552,18 @@ public abstract class Level implements LevelAccessor, AutoCloseable { diff --git a/patches/server/0825-Fix-spigot-sound-playing-for-BlockItem-ItemStacks.patch b/patches/server/0824-Fix-spigot-sound-playing-for-BlockItem-ItemStacks.patch similarity index 94% rename from patches/server/0825-Fix-spigot-sound-playing-for-BlockItem-ItemStacks.patch rename to patches/server/0824-Fix-spigot-sound-playing-for-BlockItem-ItemStacks.patch index 89ec0d95ff..42a45f0c62 100644 --- a/patches/server/0825-Fix-spigot-sound-playing-for-BlockItem-ItemStacks.patch +++ b/patches/server/0824-Fix-spigot-sound-playing-for-BlockItem-ItemStacks.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix spigot sound playing for BlockItem ItemStacks diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 57510b85caf8914290ab0afb89cfb773158715b8..8777e634a69825302da7ed5031a344b80724783e 100644 +index 7c52ae813bfe47983ca94f4daf68f17e899949da..7cb7443aa60b9a552d8d9b67ddbf8b3e54af24e8 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -571,7 +571,11 @@ public final class ItemStack implements DataComponentHolder { diff --git a/patches/server/0826-Call-BlockGrowEvent-for-missing-blocks.patch b/patches/server/0825-Call-BlockGrowEvent-for-missing-blocks.patch similarity index 100% rename from patches/server/0826-Call-BlockGrowEvent-for-missing-blocks.patch rename to patches/server/0825-Call-BlockGrowEvent-for-missing-blocks.patch diff --git a/patches/server/0827-Don-t-enforce-icanhasbukkit-default-if-alias-block-e.patch b/patches/server/0826-Don-t-enforce-icanhasbukkit-default-if-alias-block-e.patch similarity index 94% rename from patches/server/0827-Don-t-enforce-icanhasbukkit-default-if-alias-block-e.patch rename to patches/server/0826-Don-t-enforce-icanhasbukkit-default-if-alias-block-e.patch index 5c55e8560a..90edb8680f 100644 --- a/patches/server/0827-Don-t-enforce-icanhasbukkit-default-if-alias-block-e.patch +++ b/patches/server/0826-Don-t-enforce-icanhasbukkit-default-if-alias-block-e.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Don't enforce icanhasbukkit default if alias block exists diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 32d2e6a4ce092fee061b65d3c839c2da83865908..7197cbf15ff9382cbc59c4a58e2f189c8cacbaaa 100644 +index f63d6b4d759fbbc5f5c5dd6b39179af93f49d10f..ed6210d2490f8584c21537eaa380d990fb73e03d 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -355,7 +355,11 @@ public final class CraftServer implements Server { diff --git a/patches/server/0828-fix-MapLike-spam-for-missing-key-selector.patch b/patches/server/0827-fix-MapLike-spam-for-missing-key-selector.patch similarity index 100% rename from patches/server/0828-fix-MapLike-spam-for-missing-key-selector.patch rename to patches/server/0827-fix-MapLike-spam-for-missing-key-selector.patch diff --git a/patches/server/0829-Fix-sniffer-removeExploredLocation.patch b/patches/server/0828-Fix-sniffer-removeExploredLocation.patch similarity index 100% rename from patches/server/0829-Fix-sniffer-removeExploredLocation.patch rename to patches/server/0828-Fix-sniffer-removeExploredLocation.patch diff --git a/patches/server/0830-Add-method-to-remove-all-active-potion-effects.patch b/patches/server/0829-Add-method-to-remove-all-active-potion-effects.patch similarity index 100% rename from patches/server/0830-Add-method-to-remove-all-active-potion-effects.patch rename to patches/server/0829-Add-method-to-remove-all-active-potion-effects.patch diff --git a/patches/server/0831-Fix-incorrect-crafting-result-amount-for-fireworks.patch b/patches/server/0830-Fix-incorrect-crafting-result-amount-for-fireworks.patch similarity index 100% rename from patches/server/0831-Fix-incorrect-crafting-result-amount-for-fireworks.patch rename to patches/server/0830-Fix-incorrect-crafting-result-amount-for-fireworks.patch diff --git a/patches/server/0832-Add-event-for-player-editing-sign.patch b/patches/server/0831-Add-event-for-player-editing-sign.patch similarity index 98% rename from patches/server/0832-Add-event-for-player-editing-sign.patch rename to patches/server/0831-Add-event-for-player-editing-sign.patch index 231c6c0fc3..8c26ae27ea 100644 --- a/patches/server/0832-Add-event-for-player-editing-sign.patch +++ b/patches/server/0831-Add-event-for-player-editing-sign.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add event for player editing sign diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 8777e634a69825302da7ed5031a344b80724783e..a6ca820adf6e86f8358967d8d3b2e45cd1135b2c 100644 +index 7cb7443aa60b9a552d8d9b67ddbf8b3e54af24e8..1016541b8f01cdb45ae96fbb777c6c38598fcc35 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -550,7 +550,7 @@ public final class ItemStack implements DataComponentHolder { diff --git a/patches/server/0833-Only-tick-item-frames-if-players-can-see-it.patch b/patches/server/0832-Only-tick-item-frames-if-players-can-see-it.patch similarity index 100% rename from patches/server/0833-Only-tick-item-frames-if-players-can-see-it.patch rename to patches/server/0832-Only-tick-item-frames-if-players-can-see-it.patch diff --git a/patches/server/0834-Fix-cmd-permission-levels-for-command-blocks.patch b/patches/server/0833-Fix-cmd-permission-levels-for-command-blocks.patch similarity index 100% rename from patches/server/0834-Fix-cmd-permission-levels-for-command-blocks.patch rename to patches/server/0833-Fix-cmd-permission-levels-for-command-blocks.patch diff --git a/patches/server/0835-Add-option-to-disable-block-updates.patch b/patches/server/0834-Add-option-to-disable-block-updates.patch similarity index 100% rename from patches/server/0835-Add-option-to-disable-block-updates.patch rename to patches/server/0834-Add-option-to-disable-block-updates.patch diff --git a/patches/server/0836-Call-missing-BlockDispenseEvent.patch b/patches/server/0835-Call-missing-BlockDispenseEvent.patch similarity index 97% rename from patches/server/0836-Call-missing-BlockDispenseEvent.patch rename to patches/server/0835-Call-missing-BlockDispenseEvent.patch index ae85dc5678..b1e8b7b6fb 100644 --- a/patches/server/0836-Call-missing-BlockDispenseEvent.patch +++ b/patches/server/0835-Call-missing-BlockDispenseEvent.patch @@ -50,10 +50,10 @@ index 96db0b1041a4c0f054d4f3f2bdced960b119664e..78951f50188528718cdb3dbbaabe3f9f for (int k = 0; k < 5; ++k) { worldserver.sendParticles(ParticleTypes.SPLASH, (double) blockposition.getX() + worldserver.random.nextDouble(), (double) (blockposition.getY() + 1), (double) blockposition.getZ() + worldserver.random.nextDouble(), 1, 0.0D, 0.0D, 0.0D, 1.0D); diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 23e24853e8540cecb2145471d548cad1b2539447..1f73ee4e284ca6b0bd6d387337a4c1084f3210e5 100644 +index bbc5143940b5f028051cb5897a5b510e35a5d354..fd648c176733dcaa03d2bbec4000381d58fc357e 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -2169,6 +2169,32 @@ public class CraftEventFactory { +@@ -2182,6 +2182,32 @@ public class CraftEventFactory { } // Paper end diff --git a/patches/server/0837-Don-t-load-chunks-for-supporting-block-checks.patch b/patches/server/0836-Don-t-load-chunks-for-supporting-block-checks.patch similarity index 100% rename from patches/server/0837-Don-t-load-chunks-for-supporting-block-checks.patch rename to patches/server/0836-Don-t-load-chunks-for-supporting-block-checks.patch diff --git a/patches/server/0838-Optimize-player-lookups-for-beacons.patch b/patches/server/0837-Optimize-player-lookups-for-beacons.patch similarity index 100% rename from patches/server/0838-Optimize-player-lookups-for-beacons.patch rename to patches/server/0837-Optimize-player-lookups-for-beacons.patch diff --git a/patches/server/0839-Add-Sign-getInteractableSideFor.patch b/patches/server/0838-Add-Sign-getInteractableSideFor.patch similarity index 100% rename from patches/server/0839-Add-Sign-getInteractableSideFor.patch rename to patches/server/0838-Add-Sign-getInteractableSideFor.patch diff --git a/patches/server/0840-fix-item-meta-for-tadpole-buckets.patch b/patches/server/0839-fix-item-meta-for-tadpole-buckets.patch similarity index 93% rename from patches/server/0840-fix-item-meta-for-tadpole-buckets.patch rename to patches/server/0839-fix-item-meta-for-tadpole-buckets.patch index 0fc39b3ea1..43d485644b 100644 --- a/patches/server/0840-fix-item-meta-for-tadpole-buckets.patch +++ b/patches/server/0839-fix-item-meta-for-tadpole-buckets.patch @@ -5,10 +5,10 @@ Subject: [PATCH] fix item meta for tadpole buckets diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemMetas.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemMetas.java -index 4ae9930c2d74e5b1e3ad0c2ecf6556dc59cbf23c..a6c78854c10362864c2297de903ab9594cdb1eb6 100644 +index c9fbc01be0b0e7fd1cafb091d06496f4ba1e7c2c..a4c4ba0d02f9a072236ce86c1e98e2c60b059cb8 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemMetas.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemMetas.java -@@ -286,7 +286,7 @@ public final class CraftItemMetas { +@@ -263,7 +263,7 @@ public final class CraftItemMetas { if (itemType == ItemType.SUSPICIOUS_STEW) { return CraftItemMetas.asType(CraftItemMetas.SUSPICIOUS_STEW_META_DATA); } @@ -30,7 +30,7 @@ index 27af7ca9d62bdb4a24be5af139c181d7bc271ba5..3ff0340c40e9dc9a6e690de15ccade7a Material.GLOW_ITEM_FRAME, Material.PAINTING diff --git a/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java b/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java -index a1d8da4e0de3f84194f28d7d18fa795d53714590..d6018439015583fa0344c7c01b2e60a13de29795 100644 +index 0715f43f3f8235d28a12b9d49d78c765a946c53f..b6da1c2902139d4c7b01ac7b3407d4f6ac3990e2 100644 --- a/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java +++ b/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java @@ -208,6 +208,27 @@ public class ItemMetaTest extends AbstractTestingBase { diff --git a/patches/server/0841-Fix-BanList-API.patch b/patches/server/0840-Fix-BanList-API.patch similarity index 99% rename from patches/server/0841-Fix-BanList-API.patch rename to patches/server/0840-Fix-BanList-API.patch index 780f2ca5be..b3274235b6 100644 --- a/patches/server/0841-Fix-BanList-API.patch +++ b/patches/server/0840-Fix-BanList-API.patch @@ -208,7 +208,7 @@ index 172202accf4448a933fcf1ff820316c7910dd7f7..50ee7656580d386db473c054f5c5ec57 return null; } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index b3faca24fa8bdb22d1bf3e581d0396bc444a9f5f..28536a8bfab2c8bdde03852efa0e41cf19a37a9c 100644 +index e7235efba6b68917a646083c150655cb42a738e5..32e1830464395cb1f462777f3fb14e766c5e3217 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -1747,23 +1747,23 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0842-Determine-lava-and-water-fluid-explosion-resistance-.patch b/patches/server/0841-Determine-lava-and-water-fluid-explosion-resistance-.patch similarity index 100% rename from patches/server/0842-Determine-lava-and-water-fluid-explosion-resistance-.patch rename to patches/server/0841-Determine-lava-and-water-fluid-explosion-resistance-.patch diff --git a/patches/server/0843-Fix-possible-NPE-on-painting-creation.patch b/patches/server/0842-Fix-possible-NPE-on-painting-creation.patch similarity index 100% rename from patches/server/0843-Fix-possible-NPE-on-painting-creation.patch rename to patches/server/0842-Fix-possible-NPE-on-painting-creation.patch diff --git a/patches/server/0844-Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch b/patches/server/0843-Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch similarity index 100% rename from patches/server/0844-Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch rename to patches/server/0843-Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch diff --git a/patches/server/0845-ExperienceOrb-should-call-EntitySpawnEvent.patch b/patches/server/0844-ExperienceOrb-should-call-EntitySpawnEvent.patch similarity index 89% rename from patches/server/0845-ExperienceOrb-should-call-EntitySpawnEvent.patch rename to patches/server/0844-ExperienceOrb-should-call-EntitySpawnEvent.patch index 83756a84b2..54f3923604 100644 --- a/patches/server/0845-ExperienceOrb-should-call-EntitySpawnEvent.patch +++ b/patches/server/0844-ExperienceOrb-should-call-EntitySpawnEvent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] ExperienceOrb should call EntitySpawnEvent diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 1f73ee4e284ca6b0bd6d387337a4c1084f3210e5..35afad4e995f7e94d7a4541157b237c73d1b9635 100644 +index fd648c176733dcaa03d2bbec4000381d58fc357e..3f9a309d4d0685aec0fabb16a1bd51931048525b 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -740,7 +740,8 @@ public class CraftEventFactory { +@@ -744,7 +744,8 @@ public class CraftEventFactory { // Spigot start - SPIGOT-7523: Merge after spawn event and only merge if the event was not cancelled (gets checked above) if (entity instanceof net.minecraft.world.entity.ExperienceOrb xp) { double radius = world.spigotConfig.expMerge; diff --git a/patches/server/0846-Make-Amethyst-throw-both-Spread-and-Grow-Events.patch b/patches/server/0845-Make-Amethyst-throw-both-Spread-and-Grow-Events.patch similarity index 100% rename from patches/server/0846-Make-Amethyst-throw-both-Spread-and-Grow-Events.patch rename to patches/server/0845-Make-Amethyst-throw-both-Spread-and-Grow-Events.patch diff --git a/patches/server/0847-Add-whitelist-events.patch b/patches/server/0846-Add-whitelist-events.patch similarity index 100% rename from patches/server/0847-Add-whitelist-events.patch rename to patches/server/0846-Add-whitelist-events.patch diff --git a/patches/server/0848-Implement-PlayerFailMoveEvent.patch b/patches/server/0847-Implement-PlayerFailMoveEvent.patch similarity index 95% rename from patches/server/0848-Implement-PlayerFailMoveEvent.patch rename to patches/server/0847-Implement-PlayerFailMoveEvent.patch index e222dfa6e2..0e5b8355f0 100644 --- a/patches/server/0848-Implement-PlayerFailMoveEvent.patch +++ b/patches/server/0847-Implement-PlayerFailMoveEvent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Implement PlayerFailMoveEvent diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 977af8887ac331576a1c4441fcfad681f69a9929..46bb2031141b88416f2df1fb8bca76638ef66dae 100644 +index d3e0fb1292e1bae22ea70835b45fc36aa9cf254c..be9c3a48fd1c44b5b5e2680c35c91c5058010e23 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1261,8 +1261,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1256,8 +1256,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl double d0 = ServerGamePacketListenerImpl.clampHorizontal(packet.getX(this.player.getX())); final double toX = d0; // Paper - OBFHELPER double d1 = ServerGamePacketListenerImpl.clampVertical(packet.getY(this.player.getY())); final double toY = d1; // Paper - OBFHELPER double d2 = ServerGamePacketListenerImpl.clampHorizontal(packet.getZ(this.player.getZ())); final double toZ = d2; // Paper - OBFHELPER @@ -19,7 +19,7 @@ index 977af8887ac331576a1c4441fcfad681f69a9929..46bb2031141b88416f2df1fb8bca7663 if (this.player.isPassenger()) { this.player.absMoveTo(this.player.getX(), this.player.getY(), this.player.getZ(), f, f1); -@@ -1329,8 +1329,14 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1324,8 +1324,14 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } // Paper start - Prevent moving into unloaded chunks if (this.player.level().paperConfig().chunks.preventMovingIntoUnloadedChunks && (this.player.getX() != toX || this.player.getZ() != toZ) && !worldserver.areChunksLoadedForMove(this.player.getBoundingBox().expandTowards(new Vec3(toX, toY, toZ).subtract(this.player.position())))) { @@ -36,7 +36,7 @@ index 977af8887ac331576a1c4441fcfad681f69a9929..46bb2031141b88416f2df1fb8bca7663 } // Paper end - Prevent moving into unloaded chunks -@@ -1339,9 +1345,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1334,9 +1340,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl if (d10 - d9 > Math.max(f2, Math.pow((double) (org.spigotmc.SpigotConfig.movedTooQuicklyMultiplier * (float) i * speed), 2)) && !this.isSingleplayerOwner()) { // CraftBukkit end @@ -56,7 +56,7 @@ index 977af8887ac331576a1c4441fcfad681f69a9929..46bb2031141b88416f2df1fb8bca7663 } } } -@@ -1403,14 +1416,31 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1398,14 +1411,31 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl d8 = d2 - this.player.getZ(); d10 = d6 * d6 + d7 * d7 + d8 * d8; @@ -91,7 +91,7 @@ index 977af8887ac331576a1c4441fcfad681f69a9929..46bb2031141b88416f2df1fb8bca7663 this.internalTeleport(d3, d4, d5, f, f1, Collections.emptySet()); // CraftBukkit - SPIGOT-1807: Don't call teleport event, when the client thinks the player is falling, because the chunks are not loaded on the client yet. this.player.doCheckFallDamage(this.player.getX() - d3, this.player.getY() - d4, this.player.getZ() - d5, packet.isOnGround()); } else { -@@ -3467,4 +3497,17 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -3462,4 +3492,17 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl InteractionResult run(ServerPlayer player, Entity entity, InteractionHand hand); } diff --git a/patches/server/0849-Folia-scheduler-and-owned-region-API.patch b/patches/server/0848-Folia-scheduler-and-owned-region-API.patch similarity index 100% rename from patches/server/0849-Folia-scheduler-and-owned-region-API.patch rename to patches/server/0848-Folia-scheduler-and-owned-region-API.patch diff --git a/patches/server/0850-Only-erase-allay-memory-on-non-item-targets.patch b/patches/server/0849-Only-erase-allay-memory-on-non-item-targets.patch similarity index 100% rename from patches/server/0850-Only-erase-allay-memory-on-non-item-targets.patch rename to patches/server/0849-Only-erase-allay-memory-on-non-item-targets.patch diff --git a/patches/server/0851-API-for-updating-recipes-on-clients.patch b/patches/server/0850-API-for-updating-recipes-on-clients.patch similarity index 100% rename from patches/server/0851-API-for-updating-recipes-on-clients.patch rename to patches/server/0850-API-for-updating-recipes-on-clients.patch diff --git a/patches/server/0852-Fix-rotation-when-spawning-display-entities.patch b/patches/server/0851-Fix-rotation-when-spawning-display-entities.patch similarity index 100% rename from patches/server/0852-Fix-rotation-when-spawning-display-entities.patch rename to patches/server/0851-Fix-rotation-when-spawning-display-entities.patch diff --git a/patches/server/0853-Only-capture-actual-tree-growth.patch b/patches/server/0852-Only-capture-actual-tree-growth.patch similarity index 96% rename from patches/server/0853-Only-capture-actual-tree-growth.patch rename to patches/server/0852-Only-capture-actual-tree-growth.patch index 74ca9ab6b6..c8bdd0bb61 100644 --- a/patches/server/0853-Only-capture-actual-tree-growth.patch +++ b/patches/server/0852-Only-capture-actual-tree-growth.patch @@ -17,7 +17,7 @@ index 78951f50188528718cdb3dbbaabe3f9f2760ffe3..7826e2a52da47914aca39fef958b8f39 } } diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index a6ca820adf6e86f8358967d8d3b2e45cd1135b2c..780b2fada591fb1b504fbf4828c31ec0dd1c25db 100644 +index 1016541b8f01cdb45ae96fbb777c6c38598fcc35..11c507b399f97c4c0bbe220e8a3c1cdb851c8a0a 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -466,6 +466,7 @@ public final class ItemStack implements DataComponentHolder { @@ -29,7 +29,7 @@ index a6ca820adf6e86f8358967d8d3b2e45cd1135b2c..780b2fada591fb1b504fbf4828c31ec0 entityhuman.awardStat(Stats.ITEM_USED.get(item)); // SPIGOT-7236 - award stat } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index ed1c50d31fc077e4e009719fa622a44edefcdf2c..8337f2f1d650fc7efb830a7034e3676dc0695ee4 100644 +index 0a3e56302470f239d4840e4e32d2a0ce4611ff65..3f87e60c0d43703a8450b5920dac59a970809397 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -1378,4 +1378,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { diff --git a/patches/server/0854-Use-correct-source-for-mushroom-block-spread-event.patch b/patches/server/0853-Use-correct-source-for-mushroom-block-spread-event.patch similarity index 100% rename from patches/server/0854-Use-correct-source-for-mushroom-block-spread-event.patch rename to patches/server/0853-Use-correct-source-for-mushroom-block-spread-event.patch diff --git a/patches/server/0855-Respect-randomizeData-on-more-entities-when-spawning.patch b/patches/server/0854-Respect-randomizeData-on-more-entities-when-spawning.patch similarity index 100% rename from patches/server/0855-Respect-randomizeData-on-more-entities-when-spawning.patch rename to patches/server/0854-Respect-randomizeData-on-more-entities-when-spawning.patch diff --git a/patches/server/0856-Use-correct-seed-on-api-world-load.patch b/patches/server/0855-Use-correct-seed-on-api-world-load.patch similarity index 100% rename from patches/server/0856-Use-correct-seed-on-api-world-load.patch rename to patches/server/0855-Use-correct-seed-on-api-world-load.patch diff --git a/patches/server/0857-Remove-UpgradeData-neighbour-ticks-outside-of-range.patch b/patches/server/0856-Remove-UpgradeData-neighbour-ticks-outside-of-range.patch similarity index 100% rename from patches/server/0857-Remove-UpgradeData-neighbour-ticks-outside-of-range.patch rename to patches/server/0856-Remove-UpgradeData-neighbour-ticks-outside-of-range.patch diff --git a/patches/server/0858-Cache-map-ids-on-item-frames.patch b/patches/server/0857-Cache-map-ids-on-item-frames.patch similarity index 100% rename from patches/server/0858-Cache-map-ids-on-item-frames.patch rename to patches/server/0857-Cache-map-ids-on-item-frames.patch diff --git a/patches/server/0859-Fix-custom-statistic-criteria-creation.patch b/patches/server/0858-Fix-custom-statistic-criteria-creation.patch similarity index 100% rename from patches/server/0859-Fix-custom-statistic-criteria-creation.patch rename to patches/server/0858-Fix-custom-statistic-criteria-creation.patch diff --git a/patches/server/0860-Bandaid-fix-for-Effect.patch b/patches/server/0859-Bandaid-fix-for-Effect.patch similarity index 98% rename from patches/server/0860-Bandaid-fix-for-Effect.patch rename to patches/server/0859-Bandaid-fix-for-Effect.patch index 37c8fc587f..9dd7805368 100644 --- a/patches/server/0860-Bandaid-fix-for-Effect.patch +++ b/patches/server/0859-Bandaid-fix-for-Effect.patch @@ -81,7 +81,7 @@ index 0c5a583f2ced1ae5e1e92a045ef2ef1cd5b35496..5c83ca573ccaa75a1d4e8129c96a24e3 // Special case: the axis is optional for ELECTRIC_SPARK Preconditions.checkArgument(effect.getData() == null || effect == Effect.ELECTRIC_SPARK, "Wrong kind of data for the %s effect", effect); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 28536a8bfab2c8bdde03852efa0e41cf19a37a9c..cb41fad4b94c4da64a699dc1b0848fc08ff2c456 100644 +index 32e1830464395cb1f462777f3fb14e766c5e3217..9cf67deacf9d01e3835705260a358513987fc3ba 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -917,7 +917,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0861-SculkCatalyst-bloom-API.patch b/patches/server/0860-SculkCatalyst-bloom-API.patch similarity index 100% rename from patches/server/0861-SculkCatalyst-bloom-API.patch rename to patches/server/0860-SculkCatalyst-bloom-API.patch diff --git a/patches/server/0862-API-for-an-entity-s-scoreboard-name.patch b/patches/server/0861-API-for-an-entity-s-scoreboard-name.patch similarity index 100% rename from patches/server/0862-API-for-an-entity-s-scoreboard-name.patch rename to patches/server/0861-API-for-an-entity-s-scoreboard-name.patch diff --git a/patches/server/0863-Deprecate-and-replace-methods-with-old-StructureType.patch b/patches/server/0862-Deprecate-and-replace-methods-with-old-StructureType.patch similarity index 100% rename from patches/server/0863-Deprecate-and-replace-methods-with-old-StructureType.patch rename to patches/server/0862-Deprecate-and-replace-methods-with-old-StructureType.patch diff --git a/patches/server/0864-Don-t-tab-complete-namespaced-commands-if-send-names.patch b/patches/server/0863-Don-t-tab-complete-namespaced-commands-if-send-names.patch similarity index 100% rename from patches/server/0864-Don-t-tab-complete-namespaced-commands-if-send-names.patch rename to patches/server/0863-Don-t-tab-complete-namespaced-commands-if-send-names.patch diff --git a/patches/server/0865-Properly-handle-BlockBreakEvent-isDropItems.patch b/patches/server/0864-Properly-handle-BlockBreakEvent-isDropItems.patch similarity index 100% rename from patches/server/0865-Properly-handle-BlockBreakEvent-isDropItems.patch rename to patches/server/0864-Properly-handle-BlockBreakEvent-isDropItems.patch diff --git a/patches/server/0866-Fire-entity-death-event-for-ender-dragon.patch b/patches/server/0865-Fire-entity-death-event-for-ender-dragon.patch similarity index 100% rename from patches/server/0866-Fire-entity-death-event-for-ender-dragon.patch rename to patches/server/0865-Fire-entity-death-event-for-ender-dragon.patch diff --git a/patches/server/0867-Configurable-entity-tracking-range-by-Y-coordinate.patch b/patches/server/0866-Configurable-entity-tracking-range-by-Y-coordinate.patch similarity index 100% rename from patches/server/0867-Configurable-entity-tracking-range-by-Y-coordinate.patch rename to patches/server/0866-Configurable-entity-tracking-range-by-Y-coordinate.patch diff --git a/patches/server/0868-Add-Listing-API-for-Player.patch b/patches/server/0867-Add-Listing-API-for-Player.patch similarity index 98% rename from patches/server/0868-Add-Listing-API-for-Player.patch rename to patches/server/0867-Add-Listing-API-for-Player.patch index bb270bf016..f33015a234 100644 --- a/patches/server/0868-Add-Listing-API-for-Player.patch +++ b/patches/server/0867-Add-Listing-API-for-Player.patch @@ -82,7 +82,7 @@ index 6247a21c9c391abf1f6db3482c659593e4f29355..9ccca41bf23efadba5329cc584bbcdca static class EntryBuilder { diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index be6bf7afa3cea4ed48f363e89ccd079062edc8d9..9b1a6d8351fb473eec75a2fd08fb892b770e3586 100644 +index 1b83d8f723410c405746faa59783e6ba7a66fd56..eec536d493575f593dd71c63944b047566f3822d 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -359,14 +359,22 @@ public abstract class PlayerList { @@ -119,7 +119,7 @@ index be6bf7afa3cea4ed48f363e89ccd079062edc8d9..9b1a6d8351fb473eec75a2fd08fb892b // Paper end - Use single player info update packet on join player.sentListPacket = true; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index cb41fad4b94c4da64a699dc1b0848fc08ff2c456..c80cbc9dece765091b2ad9281bdc061df8b491dc 100644 +index 9cf67deacf9d01e3835705260a358513987fc3ba..78dcc656807cafa52707ef4139fe6176f6f16021 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -201,6 +201,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0869-Configurable-Region-Compression-Format.patch b/patches/server/0868-Configurable-Region-Compression-Format.patch similarity index 100% rename from patches/server/0869-Configurable-Region-Compression-Format.patch rename to patches/server/0868-Configurable-Region-Compression-Format.patch diff --git a/patches/server/0870-Add-BlockFace-to-BlockDamageEvent.patch b/patches/server/0869-Add-BlockFace-to-BlockDamageEvent.patch similarity index 94% rename from patches/server/0870-Add-BlockFace-to-BlockDamageEvent.patch rename to patches/server/0869-Add-BlockFace-to-BlockDamageEvent.patch index f2de8e9aa8..3a44f17ce6 100644 --- a/patches/server/0870-Add-BlockFace-to-BlockDamageEvent.patch +++ b/patches/server/0869-Add-BlockFace-to-BlockDamageEvent.patch @@ -18,10 +18,10 @@ index c680f081ba548f84f07a968a46811090c53e57e3..d839f8df658c894f144ba4637d290ffb if (blockEvent.isCancelled()) { // Let the client know the block still exists diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 35afad4e995f7e94d7a4541157b237c73d1b9635..9d7bcd7a99cfda0776d267bada384304558fa6fe 100644 +index 3f9a309d4d0685aec0fabb16a1bd51931048525b..3dae4bc26ac6de7ee07eeca7763e2078cb2b7101 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -655,13 +655,13 @@ public class CraftEventFactory { +@@ -659,13 +659,13 @@ public class CraftEventFactory { /** * BlockDamageEvent */ diff --git a/patches/server/0871-Fix-NPE-on-Boat-getStatus.patch b/patches/server/0870-Fix-NPE-on-Boat-getStatus.patch similarity index 100% rename from patches/server/0871-Fix-NPE-on-Boat-getStatus.patch rename to patches/server/0870-Fix-NPE-on-Boat-getStatus.patch diff --git a/patches/server/0872-Expand-Pose-API.patch b/patches/server/0871-Expand-Pose-API.patch similarity index 100% rename from patches/server/0872-Expand-Pose-API.patch rename to patches/server/0871-Expand-Pose-API.patch diff --git a/patches/server/0873-More-DragonBattle-API.patch b/patches/server/0872-More-DragonBattle-API.patch similarity index 100% rename from patches/server/0873-More-DragonBattle-API.patch rename to patches/server/0872-More-DragonBattle-API.patch diff --git a/patches/server/0874-Add-PlayerPickItemEvent.patch b/patches/server/0873-Add-PlayerPickItemEvent.patch similarity index 100% rename from patches/server/0874-Add-PlayerPickItemEvent.patch rename to patches/server/0873-Add-PlayerPickItemEvent.patch diff --git a/patches/server/0875-Allow-trident-custom-damage.patch b/patches/server/0874-Allow-trident-custom-damage.patch similarity index 100% rename from patches/server/0875-Allow-trident-custom-damage.patch rename to patches/server/0874-Allow-trident-custom-damage.patch diff --git a/patches/server/0876-Expose-hand-in-BlockCanBuildEvent.patch b/patches/server/0875-Expose-hand-in-BlockCanBuildEvent.patch similarity index 100% rename from patches/server/0876-Expose-hand-in-BlockCanBuildEvent.patch rename to patches/server/0875-Expose-hand-in-BlockCanBuildEvent.patch diff --git a/patches/server/0877-Optimize-nearest-structure-border-iteration.patch b/patches/server/0876-Optimize-nearest-structure-border-iteration.patch similarity index 100% rename from patches/server/0877-Optimize-nearest-structure-border-iteration.patch rename to patches/server/0876-Optimize-nearest-structure-border-iteration.patch diff --git a/patches/server/0878-Implement-OfflinePlayer-isConnected.patch b/patches/server/0877-Implement-OfflinePlayer-isConnected.patch similarity index 94% rename from patches/server/0878-Implement-OfflinePlayer-isConnected.patch rename to patches/server/0877-Implement-OfflinePlayer-isConnected.patch index 2d00249134..96316a2a2a 100644 --- a/patches/server/0878-Implement-OfflinePlayer-isConnected.patch +++ b/patches/server/0877-Implement-OfflinePlayer-isConnected.patch @@ -23,7 +23,7 @@ index 4d654c4f0b6210a9841427789ba70ce5d1d308be..9d93130f23addb18b97d7f5ec013faef public String getName() { Player player = this.getPlayer(); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index c80cbc9dece765091b2ad9281bdc061df8b491dc..a996f721fa0794a4551ff1e99ea1b66a723bfaff 100644 +index 78dcc656807cafa52707ef4139fe6176f6f16021..a2dd33a9bb61427005e1edb1dcb1dfa23030d0ee 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -256,6 +256,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0879-Fix-inventory-desync.patch b/patches/server/0878-Fix-inventory-desync.patch similarity index 100% rename from patches/server/0879-Fix-inventory-desync.patch rename to patches/server/0878-Fix-inventory-desync.patch diff --git a/patches/server/0880-Add-titleOverride-to-InventoryOpenEvent.patch b/patches/server/0879-Add-titleOverride-to-InventoryOpenEvent.patch similarity index 95% rename from patches/server/0880-Add-titleOverride-to-InventoryOpenEvent.patch rename to patches/server/0879-Add-titleOverride-to-InventoryOpenEvent.patch index 629f589fc2..0d8a9544c7 100644 --- a/patches/server/0880-Add-titleOverride-to-InventoryOpenEvent.patch +++ b/patches/server/0879-Add-titleOverride-to-InventoryOpenEvent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add titleOverride to InventoryOpenEvent diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index dc4a01f433bab7e8ecf6a156b748a0db784130e5..f56fc6bc4da573cd73c72e3c61a96c4f1eebeb94 100644 +index 530728cd4b258444f6efe064903b521f4b23cd04..b65d816bb9feb18ecf74e10e9728c302e5657587 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1657,12 +1657,17 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { +@@ -1656,12 +1656,17 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { this.nextContainerCounter(); AbstractContainerMenu container = factory.createMenu(this.containerCounter, this.getInventory(), this); @@ -27,7 +27,7 @@ index dc4a01f433bab7e8ecf6a156b748a0db784130e5..f56fc6bc4da573cd73c72e3c61a96c4f if (container == null && !cancelled) { // Let pre-cancelled events fall through // SPIGOT-5263 - close chest if cancelled if (factory instanceof Container) { -@@ -1684,7 +1689,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { +@@ -1683,7 +1688,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { } else { // CraftBukkit start this.containerMenu = container; @@ -79,10 +79,10 @@ index 12ab8f7cde88cd6ce3ad474fe2843d5d30c3c0d7..c1bad887d1340ebc7c63fda3dceff929 if (!player.isImmobile()) player.connection.send(new ClientboundOpenScreenPacket(container.containerId, windowType, io.papermc.paper.adventure.PaperAdventure.asVanilla(adventure$title))); // Paper - Prevent opening inventories when frozen player.containerMenu = container; diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 9d7bcd7a99cfda0776d267bada384304558fa6fe..6ca59ba6a713e452d146182d143b99b07696af8b 100644 +index e5fa1ece90c38bb73bba5721e6f8d4ea240a1d6d..786b3c60086faee8d6ee23c862f3ad7ff4f3581e 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1397,10 +1397,21 @@ public class CraftEventFactory { +@@ -1401,10 +1401,21 @@ public class CraftEventFactory { } public static AbstractContainerMenu callInventoryOpenEvent(ServerPlayer player, AbstractContainerMenu container) { @@ -105,7 +105,7 @@ index 9d7bcd7a99cfda0776d267bada384304558fa6fe..6ca59ba6a713e452d146182d143b99b0 if (player.containerMenu != player.inventoryMenu) { // fire INVENTORY_CLOSE if one already open player.connection.handleContainerClose(new ServerboundContainerClosePacket(player.containerMenu.containerId), InventoryCloseEvent.Reason.OPEN_NEW); // Paper - Inventory close reason } -@@ -1415,10 +1426,10 @@ public class CraftEventFactory { +@@ -1419,10 +1430,10 @@ public class CraftEventFactory { if (event.isCancelled()) { container.transferTo(player.containerMenu, craftPlayer); diff --git a/patches/server/0881-Configure-sniffer-egg-hatch-time.patch b/patches/server/0880-Configure-sniffer-egg-hatch-time.patch similarity index 100% rename from patches/server/0881-Configure-sniffer-egg-hatch-time.patch rename to patches/server/0880-Configure-sniffer-egg-hatch-time.patch diff --git a/patches/server/0882-Do-crystal-portal-proximity-check-before-entity-look.patch b/patches/server/0881-Do-crystal-portal-proximity-check-before-entity-look.patch similarity index 100% rename from patches/server/0882-Do-crystal-portal-proximity-check-before-entity-look.patch rename to patches/server/0881-Do-crystal-portal-proximity-check-before-entity-look.patch diff --git a/patches/server/0883-Skip-POI-finding-if-stuck-in-vehicle.patch b/patches/server/0882-Skip-POI-finding-if-stuck-in-vehicle.patch similarity index 100% rename from patches/server/0883-Skip-POI-finding-if-stuck-in-vehicle.patch rename to patches/server/0882-Skip-POI-finding-if-stuck-in-vehicle.patch diff --git a/patches/server/0884-Add-slot-sanity-checks-in-container-clicks.patch b/patches/server/0883-Add-slot-sanity-checks-in-container-clicks.patch similarity index 94% rename from patches/server/0884-Add-slot-sanity-checks-in-container-clicks.patch rename to patches/server/0883-Add-slot-sanity-checks-in-container-clicks.patch index 00c27f3999..36fc080610 100644 --- a/patches/server/0884-Add-slot-sanity-checks-in-container-clicks.patch +++ b/patches/server/0883-Add-slot-sanity-checks-in-container-clicks.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add slot sanity checks in container clicks diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 0ed03a8ec85d8491d96c7b3ac3feff805a773539..5d7b443173c3f11fc402e96db109e4382466d182 100644 +index c17115368e36bce710a494334969676edb0f9a5c..599c620cfbf478cd3674bf4691d70000d1fd6987 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2987,6 +2987,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2982,6 +2982,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl break; case SWAP: if ((packet.getButtonNum() >= 0 && packet.getButtonNum() < 9) || packet.getButtonNum() == 40) { diff --git a/patches/server/0885-Call-BlockRedstoneEvents-for-lecterns.patch b/patches/server/0884-Call-BlockRedstoneEvents-for-lecterns.patch similarity index 100% rename from patches/server/0885-Call-BlockRedstoneEvents-for-lecterns.patch rename to patches/server/0884-Call-BlockRedstoneEvents-for-lecterns.patch diff --git a/patches/server/0886-Allow-proper-checking-of-empty-item-stacks.patch b/patches/server/0885-Allow-proper-checking-of-empty-item-stacks.patch similarity index 100% rename from patches/server/0886-Allow-proper-checking-of-empty-item-stacks.patch rename to patches/server/0885-Allow-proper-checking-of-empty-item-stacks.patch diff --git a/patches/server/0887-Fix-silent-equipment-change-for-mobs.patch b/patches/server/0886-Fix-silent-equipment-change-for-mobs.patch similarity index 100% rename from patches/server/0887-Fix-silent-equipment-change-for-mobs.patch rename to patches/server/0886-Fix-silent-equipment-change-for-mobs.patch diff --git a/patches/server/0888-Fix-spigot-s-Forced-Stats.patch b/patches/server/0887-Fix-spigot-s-Forced-Stats.patch similarity index 100% rename from patches/server/0888-Fix-spigot-s-Forced-Stats.patch rename to patches/server/0887-Fix-spigot-s-Forced-Stats.patch diff --git a/patches/server/0889-Add-missing-InventoryHolders-to-inventories.patch b/patches/server/0888-Add-missing-InventoryHolders-to-inventories.patch similarity index 97% rename from patches/server/0889-Add-missing-InventoryHolders-to-inventories.patch rename to patches/server/0888-Add-missing-InventoryHolders-to-inventories.patch index ae956d4693..abdf8c8bea 100644 --- a/patches/server/0889-Add-missing-InventoryHolders-to-inventories.patch +++ b/patches/server/0888-Add-missing-InventoryHolders-to-inventories.patch @@ -77,7 +77,7 @@ index 428e454116804c27496cfbf796edd44780890d33..4c7e91977fa590abfe7eb3704d8008ed + // Paper end - Add missing InventoryHolders } diff --git a/src/main/java/net/minecraft/world/inventory/BeaconMenu.java b/src/main/java/net/minecraft/world/inventory/BeaconMenu.java -index 1b6fd16d8c6195c6f7b65c7621d5f9bd15c46a75..7f513e8c4f81524aee9326ddbbc6bec0b3fa1b27 100644 +index a735aeeb59f79154ce797c6e2f5600305f46d217..b93c118d957f0a2f40e2f31fd6400bd69438cf72 100644 --- a/src/main/java/net/minecraft/world/inventory/BeaconMenu.java +++ b/src/main/java/net/minecraft/world/inventory/BeaconMenu.java @@ -42,7 +42,7 @@ public class BeaconMenu extends AbstractContainerMenu { @@ -148,10 +148,10 @@ index 85e336637db8643fc5aca1dba724c9b341cbf46f..12b466ccb7c36021cf807c4f3fd2bcb0 @Override public Optional evaluate(BiFunction getter) { diff --git a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java -index 6f88ce0076460215f5c1a965aa2bd7050071b611..c1b9c3ad2cccfa520e9d73b786142624ac5f3380 100644 +index 2fa009b33bccd6aeee30f23f9207ab039740d95d..fff1c39920e7d7051dfe3dd39c77865d3bdf113e 100644 --- a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java +++ b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java -@@ -66,7 +66,7 @@ public class EnchantmentMenu extends AbstractContainerMenu { +@@ -63,7 +63,7 @@ public class EnchantmentMenu extends AbstractContainerMenu { public EnchantmentMenu(int syncId, Inventory playerInventory, ContainerLevelAccess context) { super(MenuType.ENCHANTMENT, syncId); @@ -206,7 +206,7 @@ index be840717e180b6b5abd14db6cc9263349737f9a3..7de5e47f9a54263734eeef855a2dc07e public void setChanged() { super.setChanged(); diff --git a/src/main/java/net/minecraft/world/inventory/LoomMenu.java b/src/main/java/net/minecraft/world/inventory/LoomMenu.java -index 72ad78659a373213ed1f37498754adaf18f1f68b..4f3f6ea43030853bd9df067358a1f4d16c40e6d4 100644 +index f76ef029132c6a08d4e70585bc440eccdc626b16..7d7b4e53682107a1a75a7aa205be1e6bfdc8c551 100644 --- a/src/main/java/net/minecraft/world/inventory/LoomMenu.java +++ b/src/main/java/net/minecraft/world/inventory/LoomMenu.java @@ -73,7 +73,7 @@ public class LoomMenu extends AbstractContainerMenu { @@ -261,7 +261,7 @@ index d4592218d761eb38402e3d95c642e80a708cb333..4c4266a85c38e41e6c7e6144a68624f4 public ResultContainer() { this.itemStacks = NonNullList.withSize(1, ItemStack.EMPTY); diff --git a/src/main/java/net/minecraft/world/inventory/StonecutterMenu.java b/src/main/java/net/minecraft/world/inventory/StonecutterMenu.java -index 977ccef3c9fa7685209f3eca894a3b69501ebcc1..5ddae1afab0a68465ea60395c84b0997ee994f88 100644 +index 37e75c02c374314372630f4bda0b92519809f2a4..5a0015f761f6a25d7bb7b9cfe7a9b4771a6a37ec 100644 --- a/src/main/java/net/minecraft/world/inventory/StonecutterMenu.java +++ b/src/main/java/net/minecraft/world/inventory/StonecutterMenu.java @@ -69,7 +69,7 @@ public class StonecutterMenu extends AbstractContainerMenu { diff --git a/patches/server/0890-Do-not-read-tile-entities-in-chunks-that-are-positio.patch b/patches/server/0889-Do-not-read-tile-entities-in-chunks-that-are-positio.patch similarity index 100% rename from patches/server/0890-Do-not-read-tile-entities-in-chunks-that-are-positio.patch rename to patches/server/0889-Do-not-read-tile-entities-in-chunks-that-are-positio.patch diff --git a/patches/server/0891-Add-missing-logs-for-log-ips-config-option.patch b/patches/server/0890-Add-missing-logs-for-log-ips-config-option.patch similarity index 100% rename from patches/server/0891-Add-missing-logs-for-log-ips-config-option.patch rename to patches/server/0890-Add-missing-logs-for-log-ips-config-option.patch diff --git a/patches/server/0892-Fix-race-condition-on-UpgradeData.BlockFixers-class-.patch b/patches/server/0891-Fix-race-condition-on-UpgradeData.BlockFixers-class-.patch similarity index 100% rename from patches/server/0892-Fix-race-condition-on-UpgradeData.BlockFixers-class-.patch rename to patches/server/0891-Fix-race-condition-on-UpgradeData.BlockFixers-class-.patch diff --git a/patches/server/0893-Fix-NPE-in-AdvancementProgress-getDateAwarded.patch b/patches/server/0892-Fix-NPE-in-AdvancementProgress-getDateAwarded.patch similarity index 100% rename from patches/server/0893-Fix-NPE-in-AdvancementProgress-getDateAwarded.patch rename to patches/server/0892-Fix-NPE-in-AdvancementProgress-getDateAwarded.patch diff --git a/patches/server/0894-Fix-team-sidebar-objectives-not-being-cleared.patch b/patches/server/0893-Fix-team-sidebar-objectives-not-being-cleared.patch similarity index 100% rename from patches/server/0894-Fix-team-sidebar-objectives-not-being-cleared.patch rename to patches/server/0893-Fix-team-sidebar-objectives-not-being-cleared.patch diff --git a/patches/server/0895-Fix-missing-map-initialize-event-call.patch b/patches/server/0894-Fix-missing-map-initialize-event-call.patch similarity index 100% rename from patches/server/0895-Fix-missing-map-initialize-event-call.patch rename to patches/server/0894-Fix-missing-map-initialize-event-call.patch diff --git a/patches/server/0896-Update-entity-data-when-attaching-firework-to-entity.patch b/patches/server/0895-Update-entity-data-when-attaching-firework-to-entity.patch similarity index 100% rename from patches/server/0896-Update-entity-data-when-attaching-firework-to-entity.patch rename to patches/server/0895-Update-entity-data-when-attaching-firework-to-entity.patch diff --git a/patches/server/0897-Fix-UnsafeValues-loadAdvancement.patch b/patches/server/0896-Fix-UnsafeValues-loadAdvancement.patch similarity index 96% rename from patches/server/0897-Fix-UnsafeValues-loadAdvancement.patch rename to patches/server/0896-Fix-UnsafeValues-loadAdvancement.patch index d8143eab89..bee9e36bfe 100644 --- a/patches/server/0897-Fix-UnsafeValues-loadAdvancement.patch +++ b/patches/server/0896-Fix-UnsafeValues-loadAdvancement.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix UnsafeValues#loadAdvancement diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 48eeac0795c479ebb2ff64005b1405421131fcd7..1d98c0e9f138f122aa73e2f1dd6d485d7865720d 100644 +index 398068e8ffa77ac7199baf7aaab5b60c9dc639f5..9449fe944c7a06a8fdeaf0a0dfc7280950fdb6db 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java @@ -302,9 +302,30 @@ public final class CraftMagicNumbers implements UnsafeValues { diff --git a/patches/server/0898-Add-player-idle-duration-API.patch b/patches/server/0897-Add-player-idle-duration-API.patch similarity index 91% rename from patches/server/0898-Add-player-idle-duration-API.patch rename to patches/server/0897-Add-player-idle-duration-API.patch index 9e5130fc3a..0c646e1e0a 100644 --- a/patches/server/0898-Add-player-idle-duration-API.patch +++ b/patches/server/0897-Add-player-idle-duration-API.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Add player idle duration API Implements API for getting and resetting a player's idle duration. diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index a996f721fa0794a4551ff1e99ea1b66a723bfaff..e443e260afbda55cc9888efd60d9b5f56dcbf55b 100644 +index a2dd33a9bb61427005e1edb1dcb1dfa23030d0ee..f474b6f880b8d03d6b6a29203509ac0fdd9faaf1 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -3419,6 +3419,18 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0899-Don-t-check-if-we-can-see-non-visible-entities.patch b/patches/server/0898-Don-t-check-if-we-can-see-non-visible-entities.patch similarity index 100% rename from patches/server/0899-Don-t-check-if-we-can-see-non-visible-entities.patch rename to patches/server/0898-Don-t-check-if-we-can-see-non-visible-entities.patch diff --git a/patches/server/0900-Fix-NPE-in-SculkBloomEvent-world-access.patch b/patches/server/0899-Fix-NPE-in-SculkBloomEvent-world-access.patch similarity index 100% rename from patches/server/0900-Fix-NPE-in-SculkBloomEvent-world-access.patch rename to patches/server/0899-Fix-NPE-in-SculkBloomEvent-world-access.patch diff --git a/patches/server/0901-Allow-null-itemstack-for-Player-sendEquipmentChange.patch b/patches/server/0900-Allow-null-itemstack-for-Player-sendEquipmentChange.patch similarity index 90% rename from patches/server/0901-Allow-null-itemstack-for-Player-sendEquipmentChange.patch rename to patches/server/0900-Allow-null-itemstack-for-Player-sendEquipmentChange.patch index ec4d42387a..fdde374c47 100644 --- a/patches/server/0901-Allow-null-itemstack-for-Player-sendEquipmentChange.patch +++ b/patches/server/0900-Allow-null-itemstack-for-Player-sendEquipmentChange.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow null itemstack for Player#sendEquipmentChange diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index e443e260afbda55cc9888efd60d9b5f56dcbf55b..f337c32fa4521d6ddd1c4d6102404db389f23b71 100644 +index f474b6f880b8d03d6b6a29203509ac0fdd9faaf1..51b524d3c7cd5e0f59056c1fd8f71171732945b8 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -1127,7 +1127,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0902-Optimize-VarInts.patch b/patches/server/0901-Optimize-VarInts.patch similarity index 100% rename from patches/server/0902-Optimize-VarInts.patch rename to patches/server/0901-Optimize-VarInts.patch diff --git a/patches/server/0903-Add-API-to-get-the-collision-shape-of-a-block-before.patch b/patches/server/0902-Add-API-to-get-the-collision-shape-of-a-block-before.patch similarity index 100% rename from patches/server/0903-Add-API-to-get-the-collision-shape-of-a-block-before.patch rename to patches/server/0902-Add-API-to-get-the-collision-shape-of-a-block-before.patch diff --git a/patches/server/0904-Add-predicate-for-blocks-when-raytracing.patch b/patches/server/0903-Add-predicate-for-blocks-when-raytracing.patch similarity index 100% rename from patches/server/0904-Add-predicate-for-blocks-when-raytracing.patch rename to patches/server/0903-Add-predicate-for-blocks-when-raytracing.patch diff --git a/patches/server/0905-Broadcast-take-item-packets-with-collector-as-source.patch b/patches/server/0904-Broadcast-take-item-packets-with-collector-as-source.patch similarity index 100% rename from patches/server/0905-Broadcast-take-item-packets-with-collector-as-source.patch rename to patches/server/0904-Broadcast-take-item-packets-with-collector-as-source.patch diff --git a/patches/server/0906-Expand-LingeringPotion-API.patch b/patches/server/0905-Expand-LingeringPotion-API.patch similarity index 100% rename from patches/server/0906-Expand-LingeringPotion-API.patch rename to patches/server/0905-Expand-LingeringPotion-API.patch diff --git a/patches/server/0907-Fix-strikeLightningEffect-powers-lightning-rods-and-.patch b/patches/server/0906-Fix-strikeLightningEffect-powers-lightning-rods-and-.patch similarity index 100% rename from patches/server/0907-Fix-strikeLightningEffect-powers-lightning-rods-and-.patch rename to patches/server/0906-Fix-strikeLightningEffect-powers-lightning-rods-and-.patch diff --git a/patches/server/0908-Add-hand-to-fish-event-for-all-player-interactions.patch b/patches/server/0907-Add-hand-to-fish-event-for-all-player-interactions.patch similarity index 100% rename from patches/server/0908-Add-hand-to-fish-event-for-all-player-interactions.patch rename to patches/server/0907-Add-hand-to-fish-event-for-all-player-interactions.patch diff --git a/patches/server/0909-Fix-several-issues-with-EntityBreedEvent.patch b/patches/server/0908-Fix-several-issues-with-EntityBreedEvent.patch similarity index 100% rename from patches/server/0909-Fix-several-issues-with-EntityBreedEvent.patch rename to patches/server/0908-Fix-several-issues-with-EntityBreedEvent.patch diff --git a/patches/server/0910-Add-UUID-attribute-modifier-API.patch b/patches/server/0909-Add-UUID-attribute-modifier-API.patch similarity index 100% rename from patches/server/0910-Add-UUID-attribute-modifier-API.patch rename to patches/server/0909-Add-UUID-attribute-modifier-API.patch diff --git a/patches/server/0911-Fix-missing-event-call-for-entity-teleport-API.patch b/patches/server/0910-Fix-missing-event-call-for-entity-teleport-API.patch similarity index 93% rename from patches/server/0911-Fix-missing-event-call-for-entity-teleport-API.patch rename to patches/server/0910-Fix-missing-event-call-for-entity-teleport-API.patch index 79cebb8989..d567759368 100644 --- a/patches/server/0911-Fix-missing-event-call-for-entity-teleport-API.patch +++ b/patches/server/0910-Fix-missing-event-call-for-entity-teleport-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix missing event call for entity teleport API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index a8b9b50991361160880b9fc0a94cad30c319e62e..b8eb9166e44da8745a056bf68f2f9316ce25d7a7 100644 +index 580427bf1521ac9fef37f7464e12a7bfe4fbfb10..9ca1fee03bfa557f1df7388c6043c9ec6d02a79a 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -258,6 +258,17 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { diff --git a/patches/server/0912-Lazily-create-LootContext-for-criterions.patch b/patches/server/0911-Lazily-create-LootContext-for-criterions.patch similarity index 100% rename from patches/server/0912-Lazily-create-LootContext-for-criterions.patch rename to patches/server/0911-Lazily-create-LootContext-for-criterions.patch diff --git a/patches/server/0913-Don-t-fire-sync-events-during-worldgen.patch b/patches/server/0912-Don-t-fire-sync-events-during-worldgen.patch similarity index 100% rename from patches/server/0913-Don-t-fire-sync-events-during-worldgen.patch rename to patches/server/0912-Don-t-fire-sync-events-during-worldgen.patch diff --git a/patches/server/0914-Add-Structure-check-API.patch b/patches/server/0913-Add-Structure-check-API.patch similarity index 100% rename from patches/server/0914-Add-Structure-check-API.patch rename to patches/server/0913-Add-Structure-check-API.patch diff --git a/patches/server/0915-Fix-CraftMetaItem-getAttributeModifier-duplication-c.patch b/patches/server/0914-Fix-CraftMetaItem-getAttributeModifier-duplication-c.patch similarity index 89% rename from patches/server/0915-Fix-CraftMetaItem-getAttributeModifier-duplication-c.patch rename to patches/server/0914-Fix-CraftMetaItem-getAttributeModifier-duplication-c.patch index ad38c13cd7..32e393d2a8 100644 --- a/patches/server/0915-Fix-CraftMetaItem-getAttributeModifier-duplication-c.patch +++ b/patches/server/0914-Fix-CraftMetaItem-getAttributeModifier-duplication-c.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix CraftMetaItem#getAttributeModifier duplication check diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -index 0b87cfbdf039ee5bc017d2b1783c7c4853047952..5a455354561389194b0e61c03f4b2e9285b17a3b 100644 +index 5c76ba7f9ceb285d27e18369172612205be96224..11f55ef2645d50bbc24bd245ffe3ac98180315d8 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -@@ -1405,7 +1405,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1412,7 +1412,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { Preconditions.checkNotNull(modifier, "AttributeModifier cannot be null"); this.checkAttributeList(); for (Map.Entry entry : this.attributeModifiers.entries()) { diff --git a/patches/server/0916-Restore-vanilla-entity-drops-behavior.patch b/patches/server/0915-Restore-vanilla-entity-drops-behavior.patch similarity index 98% rename from patches/server/0916-Restore-vanilla-entity-drops-behavior.patch rename to patches/server/0915-Restore-vanilla-entity-drops-behavior.patch index 41f35bee2a..6e06cd8067 100644 --- a/patches/server/0916-Restore-vanilla-entity-drops-behavior.patch +++ b/patches/server/0915-Restore-vanilla-entity-drops-behavior.patch @@ -152,10 +152,10 @@ index 5bcb9a53ebebeef4bd6ec2458df4b63002ebd804..2f398750bfee5758ad8b1367b6fc1436 } } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 6ca59ba6a713e452d146182d143b99b07696af8b..be1fa84dfdec0e31f9e2ca47ad3719dd6678b49c 100644 +index a8365c67e28d530734b8527ce67d83decee41beb..5ba2fb40e4db033a069b7368b481ac81be109e94 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -969,18 +969,24 @@ public class CraftEventFactory { +@@ -973,18 +973,24 @@ public class CraftEventFactory { } public static EntityDeathEvent callEntityDeathEvent(net.minecraft.world.entity.LivingEntity victim, DamageSource damageSource) { @@ -184,7 +184,7 @@ index 6ca59ba6a713e452d146182d143b99b07696af8b..be1fa84dfdec0e31f9e2ca47ad3719dd populateFields(victim, event); // Paper - make cancellable CraftWorld world = (CraftWorld) entity.getWorld(); Bukkit.getServer().getPluginManager().callEvent(event); -@@ -994,20 +1000,24 @@ public class CraftEventFactory { +@@ -998,20 +1004,24 @@ public class CraftEventFactory { victim.expToDrop = event.getDroppedExp(); lootCheck.run(); // Paper - advancement triggers before destroying items @@ -213,7 +213,7 @@ index 6ca59ba6a713e452d146182d143b99b07696af8b..be1fa84dfdec0e31f9e2ca47ad3719dd event.setKeepInventory(keepInventory); event.setKeepLevel(victim.keepLevel); // SPIGOT-2222: pre-set keepLevel populateFields(victim, event); // Paper - make cancellable -@@ -1025,16 +1035,14 @@ public class CraftEventFactory { +@@ -1029,16 +1039,14 @@ public class CraftEventFactory { victim.expToDrop = event.getDroppedExp(); victim.newExp = event.getNewExp(); diff --git a/patches/server/0917-Dont-resend-blocks-on-interactions.patch b/patches/server/0916-Dont-resend-blocks-on-interactions.patch similarity index 99% rename from patches/server/0917-Dont-resend-blocks-on-interactions.patch rename to patches/server/0916-Dont-resend-blocks-on-interactions.patch index 3e498be31c..822d354138 100644 --- a/patches/server/0917-Dont-resend-blocks-on-interactions.patch +++ b/patches/server/0916-Dont-resend-blocks-on-interactions.patch @@ -149,7 +149,7 @@ index 6caed156ed0cfe0017d578f58cb963ee68272d78..321188173918d0d60858a258400dfd68 return false; } diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 780b2fada591fb1b504fbf4828c31ec0dd1c25db..fa4bdf8bdbd6eaeb854e62a2acb45d7998e4aa2b 100644 +index 11c507b399f97c4c0bbe220e8a3c1cdb851c8a0a..ebe470ca361ec5747a843b60d82f567d41d7c9fa 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -500,10 +500,12 @@ public final class ItemStack implements DataComponentHolder { diff --git a/patches/server/0918-add-more-scoreboard-API.patch b/patches/server/0917-add-more-scoreboard-API.patch similarity index 100% rename from patches/server/0918-add-more-scoreboard-API.patch rename to patches/server/0917-add-more-scoreboard-API.patch diff --git a/patches/server/0919-Improve-Registry.patch b/patches/server/0918-Improve-Registry.patch similarity index 94% rename from patches/server/0919-Improve-Registry.patch rename to patches/server/0918-Improve-Registry.patch index d912757a1f..bebb963725 100644 --- a/patches/server/0919-Improve-Registry.patch +++ b/patches/server/0918-Improve-Registry.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Improve Registry diff --git a/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java b/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java -index 002449e66f83a419afa8357d2e7192670eaf869e..b6c7522ff8522cdadf3b291a9c2ac87c60b85d2a 100644 +index 154733684a53ff84ca8c2a994b96b68733e9fba5..1da61e0392ec1e15c0ab9d7d71b2b2b682d10130 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java -@@ -151,6 +151,7 @@ public class CraftRegistry implements Registry { +@@ -153,6 +153,7 @@ public class CraftRegistry implements Registry { private final Class bukkitClass; // Paper - relax preload class private final Map cache = new HashMap<>(); @@ -16,7 +16,7 @@ index 002449e66f83a419afa8357d2e7192670eaf869e..b6c7522ff8522cdadf3b291a9c2ac87c private final net.minecraft.core.Registry minecraftRegistry; private final BiFunction minecraftToBukkit; private final BiFunction serializationUpdater; // Paper - rename to make it *clear* what it is *only* for -@@ -199,6 +200,7 @@ public class CraftRegistry implements Registry { +@@ -201,6 +202,7 @@ public class CraftRegistry implements Registry { } this.cache.put(namespacedKey, bukkit); @@ -24,7 +24,7 @@ index 002449e66f83a419afa8357d2e7192670eaf869e..b6c7522ff8522cdadf3b291a9c2ac87c return bukkit; } -@@ -221,4 +223,11 @@ public class CraftRegistry implements Registry { +@@ -223,4 +225,11 @@ public class CraftRegistry implements Registry { return this.minecraftToBukkit.apply(namespacedKey, minecraft); } diff --git a/patches/server/0920-Fix-NPE-on-null-loc-for-EntityTeleportEvent.patch b/patches/server/0919-Fix-NPE-on-null-loc-for-EntityTeleportEvent.patch similarity index 100% rename from patches/server/0920-Fix-NPE-on-null-loc-for-EntityTeleportEvent.patch rename to patches/server/0919-Fix-NPE-on-null-loc-for-EntityTeleportEvent.patch diff --git a/patches/server/0921-Add-experience-points-API.patch b/patches/server/0920-Add-experience-points-API.patch similarity index 97% rename from patches/server/0921-Add-experience-points-API.patch rename to patches/server/0920-Add-experience-points-API.patch index f29e610a9b..92be0f2b48 100644 --- a/patches/server/0921-Add-experience-points-API.patch +++ b/patches/server/0920-Add-experience-points-API.patch @@ -18,7 +18,7 @@ index 950ce40d268d89ff3c503116081db6c9ccd65329..454b29d8c9e42e328933aa578f49d28f // Paper start - send while respecting visibility private static void sendSoundEffect(Player fromEntity, double x, double y, double z, SoundEvent soundEffect, SoundSource soundCategory, float volume, float pitch) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index f337c32fa4521d6ddd1c4d6102404db389f23b71..4d3838c5184296451089697fd3f7438a7f1be762 100644 +index 51b524d3c7cd5e0f59056c1fd8f71171732945b8..1490d15f1ffa83653b20a4bb47584c4c554a3384 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -1921,6 +1921,49 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0922-Add-drops-to-shear-events.patch b/patches/server/0921-Add-drops-to-shear-events.patch similarity index 99% rename from patches/server/0922-Add-drops-to-shear-events.patch rename to patches/server/0921-Add-drops-to-shear-events.patch index 6741c44832..d434c31a11 100644 --- a/patches/server/0922-Add-drops-to-shear-events.patch +++ b/patches/server/0921-Add-drops-to-shear-events.patch @@ -317,10 +317,10 @@ index dc6230458e09f7555eee7f6a567ff60ad454666b..9d50b9ac8084f3db1844cc7ad1ce9153 public boolean readyForShearing() { return !this.isSheared() && this.isAlive(); diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index be1fa84dfdec0e31f9e2ca47ad3719dd6678b49c..d7bf00745a9016d0fe0c1d39ffaaac44276251d4 100644 +index 5ba2fb40e4db033a069b7368b481ac81be109e94..5af27ba31f293ba6bcac37047b760db1c3bd8c5f 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1676,20 +1676,20 @@ public class CraftEventFactory { +@@ -1689,20 +1689,20 @@ public class CraftEventFactory { player.level().getCraftServer().getPluginManager().callEvent(event); } diff --git a/patches/server/0923-Add-PlayerShieldDisableEvent.patch b/patches/server/0922-Add-PlayerShieldDisableEvent.patch similarity index 100% rename from patches/server/0923-Add-PlayerShieldDisableEvent.patch rename to patches/server/0922-Add-PlayerShieldDisableEvent.patch diff --git a/patches/server/0924-Validate-ResourceLocation-in-NBT-reading.patch b/patches/server/0923-Validate-ResourceLocation-in-NBT-reading.patch similarity index 100% rename from patches/server/0924-Validate-ResourceLocation-in-NBT-reading.patch rename to patches/server/0923-Validate-ResourceLocation-in-NBT-reading.patch diff --git a/patches/server/0925-Properly-handle-experience-dropping-on-block-break.patch b/patches/server/0924-Properly-handle-experience-dropping-on-block-break.patch similarity index 97% rename from patches/server/0925-Properly-handle-experience-dropping-on-block-break.patch rename to patches/server/0924-Properly-handle-experience-dropping-on-block-break.patch index 21b63430dd..c5ffca5d89 100644 --- a/patches/server/0925-Properly-handle-experience-dropping-on-block-break.patch +++ b/patches/server/0924-Properly-handle-experience-dropping-on-block-break.patch @@ -68,10 +68,10 @@ index c083dc8b2a69c3747b250d13f1a28ad22b5e6119..bf52c36f31992a01a7403d8c85151327 } diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -index 9d6cc0b8dbc451dfff1ddd8e7be32d11434cdb69..87289d8ab94705999c67457a28538e7a5576acc3 100644 +index a8bec3c405732e5863cf717b1fe948d00837bed2..240c250a93289776686d09d7eae17c07d7278da5 100644 --- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java +++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -@@ -1118,6 +1118,7 @@ public abstract class BlockBehaviour implements FeatureElement { +@@ -1119,6 +1119,7 @@ public abstract class BlockBehaviour implements FeatureElement { public void spawnAfterBreak(ServerLevel world, BlockPos pos, ItemStack tool, boolean dropExperience) { this.getBlock().spawnAfterBreak(this.asState(), world, pos, tool, dropExperience); diff --git a/patches/server/0926-Fixup-NamespacedKey-handling.patch b/patches/server/0925-Fixup-NamespacedKey-handling.patch similarity index 87% rename from patches/server/0926-Fixup-NamespacedKey-handling.patch rename to patches/server/0925-Fixup-NamespacedKey-handling.patch index fb00b008ce..92a61d5a1e 100644 --- a/patches/server/0926-Fixup-NamespacedKey-handling.patch +++ b/patches/server/0925-Fixup-NamespacedKey-handling.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fixup NamespacedKey handling diff --git a/src/main/java/net/minecraft/world/inventory/LoomMenu.java b/src/main/java/net/minecraft/world/inventory/LoomMenu.java -index 4f3f6ea43030853bd9df067358a1f4d16c40e6d4..531336c44c46555fef8c001fe8ca00c93624ad42 100644 +index 7d7b4e53682107a1a75a7aa205be1e6bfdc8c551..0e954dfe82ed263cbe63dbf49ff49e83f38228b8 100644 --- a/src/main/java/net/minecraft/world/inventory/LoomMenu.java +++ b/src/main/java/net/minecraft/world/inventory/LoomMenu.java @@ -171,12 +171,28 @@ public class LoomMenu extends AbstractContainerMenu { @@ -52,10 +52,10 @@ index e34deaf398dc6722c3128bdd6b9bc16da2d33bf7..f028daa4f23a1f1868c9922991259739 public static NamespacedKey minecraftToBukkitKey(ResourceKey minecraft) { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java b/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java -index b6c7522ff8522cdadf3b291a9c2ac87c60b85d2a..fc9aec589414bf8d3f672183928235b5b51d1a02 100644 +index 1da61e0392ec1e15c0ab9d7d71b2b2b682d10130..c2824cc07b761958a0df4b110bdfc53bd853b9e7 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java -@@ -118,6 +118,16 @@ public class CraftRegistry implements Registry { +@@ -120,6 +120,16 @@ public class CraftRegistry implements Registry { + ", this can happen if a plugin creates its own registry entry with out properly registering it."); } @@ -143,6 +143,27 @@ index 478059eb3ad76b41e6a20e9b489a2a4fb19e7c7c..3599ef1675b6091e9b67fb5241886460 }); } +diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaShield.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaShield.java +index c8eec04685456d89cb41466cddcc3975d0ceeb29..bcd6cc29e4e621805cbd923d747f652ced240c6d 100644 +--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaShield.java ++++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaShield.java +@@ -17,6 +17,7 @@ import org.bukkit.block.BlockState; + import org.bukkit.block.banner.Pattern; + import org.bukkit.block.banner.PatternType; + import org.bukkit.configuration.serialization.DelegateDeserialization; ++import org.bukkit.craftbukkit.CraftRegistry; + import org.bukkit.craftbukkit.block.CraftBlockStates; + import org.bukkit.craftbukkit.block.banner.CraftPatternType; + import org.bukkit.inventory.meta.BlockStateMeta; +@@ -53,7 +54,7 @@ public class CraftMetaShield extends CraftMetaItem implements ShieldMeta, BlockS + for (int i = 0; i < Math.min(patterns.size(), 20); i++) { + BannerPatternLayers.Layer p = patterns.get(i); + DyeColor color = DyeColor.getByWoolData((byte) p.color().getId()); +- PatternType pattern = CraftPatternType.minecraftHolderToBukkit(p.pattern()); ++ PatternType pattern = CraftRegistry.unwrapAndConvertHolder(io.papermc.paper.registry.RegistryKey.BANNER_PATTERN, p.pattern()).orElse(null); // Paper - fix upstream not being correct + + if (color != null && pattern != null) { + this.addPattern(new Pattern(color, pattern)); diff --git a/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionType.java b/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionType.java index 82a50b06c08b632f77d73745e1fa9bd22dfd950a..f1d8ed4a2b8959873b02d57f6a40323a841f3d7f 100644 --- a/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionType.java diff --git a/patches/server/0927-Expose-LootTable-of-DecoratedPot.patch b/patches/server/0926-Expose-LootTable-of-DecoratedPot.patch similarity index 100% rename from patches/server/0927-Expose-LootTable-of-DecoratedPot.patch rename to patches/server/0926-Expose-LootTable-of-DecoratedPot.patch diff --git a/patches/server/0928-Reduce-allocation-of-Vec3D-by-entity-tracker.patch b/patches/server/0927-Reduce-allocation-of-Vec3D-by-entity-tracker.patch similarity index 100% rename from patches/server/0928-Reduce-allocation-of-Vec3D-by-entity-tracker.patch rename to patches/server/0927-Reduce-allocation-of-Vec3D-by-entity-tracker.patch diff --git a/patches/server/0929-Add-PlayerTradeEvent-and-PlayerPurchaseEvent.patch b/patches/server/0928-Add-PlayerTradeEvent-and-PlayerPurchaseEvent.patch similarity index 99% rename from patches/server/0929-Add-PlayerTradeEvent-and-PlayerPurchaseEvent.patch rename to patches/server/0928-Add-PlayerTradeEvent-and-PlayerPurchaseEvent.patch index a58beffec5..42c7c99313 100644 --- a/patches/server/0929-Add-PlayerTradeEvent-and-PlayerPurchaseEvent.patch +++ b/patches/server/0928-Add-PlayerTradeEvent-and-PlayerPurchaseEvent.patch @@ -107,7 +107,7 @@ index 4c7e91977fa590abfe7eb3704d8008ed6d4e3ab3..32910f677b0522ac8ec513fa0d00b714 break; } diff --git a/src/main/java/net/minecraft/world/inventory/MerchantMenu.java b/src/main/java/net/minecraft/world/inventory/MerchantMenu.java -index ecefd4075c097e2118ec23e87baf36465c40f85f..2992e86f5f83431e230162380b33721df785ba91 100644 +index e45ab844afdf1a65f23eeff4c4d6cd9e3a8a28e2..5de2030452b96a4df7ce0be82f07e002db595dee 100644 --- a/src/main/java/net/minecraft/world/inventory/MerchantMenu.java +++ b/src/main/java/net/minecraft/world/inventory/MerchantMenu.java @@ -135,12 +135,12 @@ public class MerchantMenu extends AbstractContainerMenu { diff --git a/patches/server/0930-Add-ShulkerDuplicateEvent.patch b/patches/server/0929-Add-ShulkerDuplicateEvent.patch similarity index 100% rename from patches/server/0930-Add-ShulkerDuplicateEvent.patch rename to patches/server/0929-Add-ShulkerDuplicateEvent.patch diff --git a/patches/server/0931-Add-api-for-spawn-egg-texture-colors.patch b/patches/server/0930-Add-api-for-spawn-egg-texture-colors.patch similarity index 100% rename from patches/server/0931-Add-api-for-spawn-egg-texture-colors.patch rename to patches/server/0930-Add-api-for-spawn-egg-texture-colors.patch diff --git a/patches/server/0932-Add-Lifecycle-Event-system.patch b/patches/server/0931-Add-Lifecycle-Event-system.patch similarity index 100% rename from patches/server/0932-Add-Lifecycle-Event-system.patch rename to patches/server/0931-Add-Lifecycle-Event-system.patch diff --git a/patches/server/0933-ItemStack-Tooltip-API.patch b/patches/server/0932-ItemStack-Tooltip-API.patch similarity index 100% rename from patches/server/0933-ItemStack-Tooltip-API.patch rename to patches/server/0932-ItemStack-Tooltip-API.patch diff --git a/patches/server/0934-Add-getChunkSnapshot-includeLightData-parameter.patch b/patches/server/0933-Add-getChunkSnapshot-includeLightData-parameter.patch similarity index 100% rename from patches/server/0934-Add-getChunkSnapshot-includeLightData-parameter.patch rename to patches/server/0933-Add-getChunkSnapshot-includeLightData-parameter.patch diff --git a/patches/server/0935-Add-FluidState-API.patch b/patches/server/0934-Add-FluidState-API.patch similarity index 100% rename from patches/server/0935-Add-FluidState-API.patch rename to patches/server/0934-Add-FluidState-API.patch diff --git a/patches/server/0936-add-number-format-api.patch b/patches/server/0935-add-number-format-api.patch similarity index 100% rename from patches/server/0936-add-number-format-api.patch rename to patches/server/0935-add-number-format-api.patch diff --git a/patches/server/0937-improve-BanList-types.patch b/patches/server/0936-improve-BanList-types.patch similarity index 100% rename from patches/server/0937-improve-BanList-types.patch rename to patches/server/0936-improve-BanList-types.patch diff --git a/patches/server/0938-Expanded-Hopper-API.patch b/patches/server/0937-Expanded-Hopper-API.patch similarity index 100% rename from patches/server/0938-Expanded-Hopper-API.patch rename to patches/server/0937-Expanded-Hopper-API.patch diff --git a/patches/server/0939-Add-BlockBreakProgressUpdateEvent.patch b/patches/server/0938-Add-BlockBreakProgressUpdateEvent.patch similarity index 100% rename from patches/server/0939-Add-BlockBreakProgressUpdateEvent.patch rename to patches/server/0938-Add-BlockBreakProgressUpdateEvent.patch diff --git a/patches/server/0940-Deprecate-ItemStack-setType.patch b/patches/server/0939-Deprecate-ItemStack-setType.patch similarity index 100% rename from patches/server/0940-Deprecate-ItemStack-setType.patch rename to patches/server/0939-Deprecate-ItemStack-setType.patch diff --git a/patches/server/0941-Add-CartographyItemEvent.patch b/patches/server/0940-Add-CartographyItemEvent.patch similarity index 94% rename from patches/server/0941-Add-CartographyItemEvent.patch rename to patches/server/0940-Add-CartographyItemEvent.patch index 2d775d4172..cabd85961e 100644 --- a/patches/server/0941-Add-CartographyItemEvent.patch +++ b/patches/server/0940-Add-CartographyItemEvent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add CartographyItemEvent diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 5d7b443173c3f11fc402e96db109e4382466d182..449fd298293f4fb996b7ddae6b174d6a28e95eb6 100644 +index 599c620cfbf478cd3674bf4691d70000d1fd6987..137754d5fe819956f29f2dd2a97bb4427e0d5339 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -3109,6 +3109,19 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -3104,6 +3104,19 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } } diff --git a/patches/server/0942-More-Raid-API.patch b/patches/server/0941-More-Raid-API.patch similarity index 100% rename from patches/server/0942-More-Raid-API.patch rename to patches/server/0941-More-Raid-API.patch diff --git a/patches/server/0943-Add-onboarding-message-for-initial-server-start.patch b/patches/server/0942-Add-onboarding-message-for-initial-server-start.patch similarity index 100% rename from patches/server/0943-Add-onboarding-message-for-initial-server-start.patch rename to patches/server/0942-Add-onboarding-message-for-initial-server-start.patch diff --git a/patches/server/0944-Configurable-max-block-fluid-ticks.patch b/patches/server/0943-Configurable-max-block-fluid-ticks.patch similarity index 100% rename from patches/server/0944-Configurable-max-block-fluid-ticks.patch rename to patches/server/0943-Configurable-max-block-fluid-ticks.patch diff --git a/patches/server/0945-Fix-bees-aging-inside-hives.patch b/patches/server/0944-Fix-bees-aging-inside-hives.patch similarity index 100% rename from patches/server/0945-Fix-bees-aging-inside-hives.patch rename to patches/server/0944-Fix-bees-aging-inside-hives.patch diff --git a/patches/server/0946-Disable-memory-reserve-allocating.patch b/patches/server/0945-Disable-memory-reserve-allocating.patch similarity index 100% rename from patches/server/0946-Disable-memory-reserve-allocating.patch rename to patches/server/0945-Disable-memory-reserve-allocating.patch diff --git a/patches/server/0947-Fire-EntityDamageByEntityEvent-for-unowned-wither-sk.patch b/patches/server/0946-Fire-EntityDamageByEntityEvent-for-unowned-wither-sk.patch similarity index 100% rename from patches/server/0947-Fire-EntityDamageByEntityEvent-for-unowned-wither-sk.patch rename to patches/server/0946-Fire-EntityDamageByEntityEvent-for-unowned-wither-sk.patch diff --git a/patches/server/0948-Fix-DamageSource-API.patch b/patches/server/0947-Fix-DamageSource-API.patch similarity index 99% rename from patches/server/0948-Fix-DamageSource-API.patch rename to patches/server/0947-Fix-DamageSource-API.patch index d9d164622a..13022d2d45 100644 --- a/patches/server/0948-Fix-DamageSource-API.patch +++ b/patches/server/0947-Fix-DamageSource-API.patch @@ -220,10 +220,10 @@ index 4c6e15535fa40aad8cf1920f392589404f9ba79c..35eb95ef6fb6a0f7ea63351e90741c48 } } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index d7bf00745a9016d0fe0c1d39ffaaac44276251d4..67aa8ebd1c4915fc7f18e3cf263eedf9b671a632 100644 +index 5af27ba31f293ba6bcac37047b760db1c3bd8c5f..c21acdf5b445a7f24e0d7a6dfd07a097cb6a95b4 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1088,7 +1088,7 @@ public class CraftEventFactory { +@@ -1092,7 +1092,7 @@ public class CraftEventFactory { private static EntityDamageEvent handleEntityDamageEvent(Entity entity, DamageSource source, Map modifiers, Map> modifierFunctions, boolean cancelled) { CraftDamageSource bukkitDamageSource = new CraftDamageSource(source); diff --git a/patches/server/0949-Fix-creation-of-invalid-block-entity-during-world-ge.patch b/patches/server/0948-Fix-creation-of-invalid-block-entity-during-world-ge.patch similarity index 96% rename from patches/server/0949-Fix-creation-of-invalid-block-entity-during-world-ge.patch rename to patches/server/0948-Fix-creation-of-invalid-block-entity-during-world-ge.patch index d810be487e..8e09c4fb05 100644 --- a/patches/server/0949-Fix-creation-of-invalid-block-entity-during-world-ge.patch +++ b/patches/server/0948-Fix-creation-of-invalid-block-entity-during-world-ge.patch @@ -36,10 +36,10 @@ index 682c8cfbd917c086072f1756861a340800ea40da..b26a4a38144ec1b171db911bbf949b53 nbttagcompound.putInt("x", pos.getX()); diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index c7be1f8fdca34bcc12ecbe40ee5f426e0cd068d7..7f8983a2102787b13e5d28d6981055da6acd1012 100644 +index 59f9ff720e92c69e11afe7f6ccecd81b0e54a74d..86eb9029969f4de3ada7be9e135e9764172b85f5 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -956,9 +956,14 @@ public class LevelChunk extends ChunkAccess { +@@ -961,9 +961,14 @@ public class LevelChunk extends ChunkAccess { if (this.blockEntity.getType().isValid(iblockdata)) { this.ticker.tick(LevelChunk.this.level, this.blockEntity.getBlockPos(), iblockdata, this.blockEntity); this.loggedInvalidBlockState = false; diff --git a/patches/server/0950-Fix-possible-StackOverflowError-for-some-dispenses.patch b/patches/server/0949-Fix-possible-StackOverflowError-for-some-dispenses.patch similarity index 100% rename from patches/server/0950-Fix-possible-StackOverflowError-for-some-dispenses.patch rename to patches/server/0949-Fix-possible-StackOverflowError-for-some-dispenses.patch diff --git a/patches/server/0951-Improve-tag-parser-handling.patch b/patches/server/0950-Improve-tag-parser-handling.patch similarity index 91% rename from patches/server/0951-Improve-tag-parser-handling.patch rename to patches/server/0950-Improve-tag-parser-handling.patch index e800ee95bf..60b1c1c44a 100644 --- a/patches/server/0951-Improve-tag-parser-handling.patch +++ b/patches/server/0950-Improve-tag-parser-handling.patch @@ -109,6 +109,19 @@ index da101bca71f4710812621b98f0a0d8cab180346a..3cd112584accb8e8f050ac99738eed11 + } + } } +diff --git a/src/main/java/net/minecraft/network/chat/contents/SelectorContents.java b/src/main/java/net/minecraft/network/chat/contents/SelectorContents.java +index 1337853badf8e124aa8439ce33a255bc4164125b..a1869eee2da9b1993b1348ed40ef8fdac092b72a 100644 +--- a/src/main/java/net/minecraft/network/chat/contents/SelectorContents.java ++++ b/src/main/java/net/minecraft/network/chat/contents/SelectorContents.java +@@ -50,7 +50,7 @@ public class SelectorContents implements ComponentContents { + EntitySelectorParser entitySelectorParser = new EntitySelectorParser(new StringReader(pattern), true); + entitySelector = entitySelectorParser.parse(); + } catch (CommandSyntaxException var3) { +- LOGGER.warn("Invalid selector component: {}: {}", pattern, var3.getMessage()); ++ return null; // Paper + } + + return entitySelector; diff --git a/src/main/java/net/minecraft/network/chat/contents/TranslatableContents.java b/src/main/java/net/minecraft/network/chat/contents/TranslatableContents.java index 56e641bc5f6edc657647993ea2efbb7bb9c2f732..4aa6232bf0f72fcde32d257100bd15b1c5192aaa 100644 --- a/src/main/java/net/minecraft/network/chat/contents/TranslatableContents.java @@ -169,7 +182,7 @@ index 898b19887ed34c87003fc63cb5905df2ba6234a5..b47eeb23055b135d5567552ba983bfbc private void write(FriendlyByteBuf buf) { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 449fd298293f4fb996b7ddae6b174d6a28e95eb6..134f31cce8d8eca669948a784e2766216fb91ab5 100644 +index d4803b966301ac732c9ca9e53fba1d28ff9878bf..c32487782a02cfa1f9d594a28c45121f4eeaa29c 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -766,6 +766,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl diff --git a/patches/server/0952-Item-Mutation-Fixes.patch b/patches/server/0951-Item-Mutation-Fixes.patch similarity index 90% rename from patches/server/0952-Item-Mutation-Fixes.patch rename to patches/server/0951-Item-Mutation-Fixes.patch index 0e20a90a87..bad3be61f9 100644 --- a/patches/server/0952-Item-Mutation-Fixes.patch +++ b/patches/server/0951-Item-Mutation-Fixes.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Item Mutation Fixes diff --git a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java -index c1b9c3ad2cccfa520e9d73b786142624ac5f3380..07223046761cb2186d75de8edc03a91d2e8e8b2f 100644 +index fff1c39920e7d7051dfe3dd39c77865d3bdf113e..1ef014b29645ed09ccffb898f1819428c3dc6259 100644 --- a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java +++ b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java -@@ -235,7 +235,7 @@ public class EnchantmentMenu extends AbstractContainerMenu { +@@ -232,7 +232,7 @@ public class EnchantmentMenu extends AbstractContainerMenu { return false; } else if (this.costs[id] > 0 && !itemstack.isEmpty() && (player.experienceLevel >= j && player.experienceLevel >= this.costs[id] || player.getAbilities().instabuild)) { this.access.execute((world, blockposition) -> { @@ -17,7 +17,7 @@ index c1b9c3ad2cccfa520e9d73b786142624ac5f3380..07223046761cb2186d75de8edc03a91d List list = this.getEnchantmentList(world.registryAccess(), itemstack, id, this.costs[id]); // CraftBukkit start -@@ -258,10 +258,16 @@ public class EnchantmentMenu extends AbstractContainerMenu { +@@ -255,10 +255,16 @@ public class EnchantmentMenu extends AbstractContainerMenu { return; } // CraftBukkit end diff --git a/patches/server/0953-Per-world-ticks-per-spawn-settings.patch b/patches/server/0952-Per-world-ticks-per-spawn-settings.patch similarity index 94% rename from patches/server/0953-Per-world-ticks-per-spawn-settings.patch rename to patches/server/0952-Per-world-ticks-per-spawn-settings.patch index ea163724cf..0d7c9ea5b4 100644 --- a/patches/server/0953-Per-world-ticks-per-spawn-settings.patch +++ b/patches/server/0952-Per-world-ticks-per-spawn-settings.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Per world ticks per spawn settings diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 2f1acea765d1b6726863cdc89707ca6148548493..81bdb6e64e04641f741c2c3350236685b097ec7a 100644 +index 471fd54edf6aa962d997878ee638974f7f594fa8..b7bf7b3b91046c81467aeb483087e12b6d9191bf 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -186,6 +186,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable { diff --git a/patches/server/0954-Properly-track-the-changed-item-from-dispense-events.patch b/patches/server/0953-Properly-track-the-changed-item-from-dispense-events.patch similarity index 100% rename from patches/server/0954-Properly-track-the-changed-item-from-dispense-events.patch rename to patches/server/0953-Properly-track-the-changed-item-from-dispense-events.patch diff --git a/patches/server/0955-Protect-Bedrock-and-End-Portal-Frames-from-being-des.patch b/patches/server/0954-Protect-Bedrock-and-End-Portal-Frames-from-being-des.patch similarity index 97% rename from patches/server/0955-Protect-Bedrock-and-End-Portal-Frames-from-being-des.patch rename to patches/server/0954-Protect-Bedrock-and-End-Portal-Frames-from-being-des.patch index 3fdb9f8fe4..419e036508 100644 --- a/patches/server/0955-Protect-Bedrock-and-End-Portal-Frames-from-being-des.patch +++ b/patches/server/0954-Protect-Bedrock-and-End-Portal-Frames-from-being-des.patch @@ -107,10 +107,10 @@ index e6bfbe2588e0c2a1be14e38d654e889d392ad4db..e0c62227b279a5fe0f3868fbf9ce8c78 world.playSound((Player) null, pos, SoundEvents.PISTON_CONTRACT, SoundSource.BLOCKS, 0.5F, world.random.nextFloat() * 0.15F + 0.6F); diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -index 87289d8ab94705999c67457a28538e7a5576acc3..fe7dc02ea55c2bcd39d12bfd4d315f0b8c7014c3 100644 +index 240c250a93289776686d09d7eae17c07d7278da5..f2036917c5ba9f536087d7ee559704055469730e 100644 --- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java +++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -@@ -173,7 +173,7 @@ public abstract class BlockBehaviour implements FeatureElement { +@@ -174,7 +174,7 @@ public abstract class BlockBehaviour implements FeatureElement { } protected void onExplosionHit(BlockState state, Level world, BlockPos pos, Explosion explosion, BiConsumer stackMerger) { @@ -119,7 +119,7 @@ index 87289d8ab94705999c67457a28538e7a5576acc3..fe7dc02ea55c2bcd39d12bfd4d315f0b Block block = state.getBlock(); boolean flag = explosion.getIndirectSourceEntity() instanceof Player; -@@ -253,7 +253,7 @@ public abstract class BlockBehaviour implements FeatureElement { +@@ -254,7 +254,7 @@ public abstract class BlockBehaviour implements FeatureElement { } protected boolean canBeReplaced(BlockState state, BlockPlaceContext context) { @@ -128,7 +128,7 @@ index 87289d8ab94705999c67457a28538e7a5576acc3..fe7dc02ea55c2bcd39d12bfd4d315f0b } protected boolean canBeReplaced(BlockState state, Fluid fluid) { -@@ -882,6 +882,12 @@ public abstract class BlockBehaviour implements FeatureElement { +@@ -883,6 +883,12 @@ public abstract class BlockBehaviour implements FeatureElement { return this.legacySolid; } @@ -141,7 +141,7 @@ index 87289d8ab94705999c67457a28538e7a5576acc3..fe7dc02ea55c2bcd39d12bfd4d315f0b public boolean isValidSpawn(BlockGetter world, BlockPos pos, EntityType type) { return this.getBlock().properties.isValidSpawn.test(this.asState(), world, pos, type); } -@@ -985,7 +991,7 @@ public abstract class BlockBehaviour implements FeatureElement { +@@ -986,7 +992,7 @@ public abstract class BlockBehaviour implements FeatureElement { } public PushReaction getPistonPushReaction() { diff --git a/patches/server/0956-Fix-tripwire-disarming-not-working-as-intended.patch b/patches/server/0955-Fix-tripwire-disarming-not-working-as-intended.patch similarity index 100% rename from patches/server/0956-Fix-tripwire-disarming-not-working-as-intended.patch rename to patches/server/0955-Fix-tripwire-disarming-not-working-as-intended.patch diff --git a/patches/server/0957-Add-config-for-mobs-immune-to-default-effects.patch b/patches/server/0956-Add-config-for-mobs-immune-to-default-effects.patch similarity index 100% rename from patches/server/0957-Add-config-for-mobs-immune-to-default-effects.patch rename to patches/server/0956-Add-config-for-mobs-immune-to-default-effects.patch diff --git a/patches/server/0958-Deep-clone-nbt-tags-in-PDC.patch b/patches/server/0957-Deep-clone-nbt-tags-in-PDC.patch similarity index 94% rename from patches/server/0958-Deep-clone-nbt-tags-in-PDC.patch rename to patches/server/0957-Deep-clone-nbt-tags-in-PDC.patch index f833a51efa..f559f0cd9d 100644 --- a/patches/server/0958-Deep-clone-nbt-tags-in-PDC.patch +++ b/patches/server/0957-Deep-clone-nbt-tags-in-PDC.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Deep clone nbt tags in PDC diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -index 5a455354561389194b0e61c03f4b2e9285b17a3b..2cf89147025066f34c12b9956d18451487fb2799 100644 +index 11f55ef2645d50bbc24bd245ffe3ac98180315d8..ba49ac74a19ee1f14706c7f769aac35fa821ef7d 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java @@ -322,7 +322,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { @@ -17,7 +17,7 @@ index 5a455354561389194b0e61c03f4b2e9285b17a3b..2cf89147025066f34c12b9956d184514 this.customTag = meta.customTag; -@@ -1690,7 +1690,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1697,7 +1697,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { clone.customTag = this.customTag.copy(); } clone.removedTags = Sets.newHashSet(this.removedTags); diff --git a/patches/server/0959-Support-old-UUID-format-for-NBT.patch b/patches/server/0958-Support-old-UUID-format-for-NBT.patch similarity index 97% rename from patches/server/0959-Support-old-UUID-format-for-NBT.patch rename to patches/server/0958-Support-old-UUID-format-for-NBT.patch index a38c2a7f7b..68ff8a5255 100644 --- a/patches/server/0959-Support-old-UUID-format-for-NBT.patch +++ b/patches/server/0958-Support-old-UUID-format-for-NBT.patch @@ -8,7 +8,7 @@ We have stored UUID in plenty of places that did not get DFU'd So just look for old format and load it if it exists. diff --git a/src/main/java/net/minecraft/nbt/CompoundTag.java b/src/main/java/net/minecraft/nbt/CompoundTag.java -index df246d69591e1a5822a0109c99b0f67996da71fa..4e005b7b062e3231f564d284887ea1c2783a4e7d 100644 +index e88161e662d5605b50aead673c9b3794874e5f7f..d7bb00a946346dff0b0269cbd65276e146a63fb0 100644 --- a/src/main/java/net/minecraft/nbt/CompoundTag.java +++ b/src/main/java/net/minecraft/nbt/CompoundTag.java @@ -232,6 +232,12 @@ public class CompoundTag implements Tag { diff --git a/patches/server/0960-Fix-shield-disable-inconsistency.patch b/patches/server/0959-Fix-shield-disable-inconsistency.patch similarity index 100% rename from patches/server/0960-Fix-shield-disable-inconsistency.patch rename to patches/server/0959-Fix-shield-disable-inconsistency.patch diff --git a/patches/server/0961-Handle-Large-Packets-disconnecting-client.patch b/patches/server/0960-Handle-Large-Packets-disconnecting-client.patch similarity index 100% rename from patches/server/0961-Handle-Large-Packets-disconnecting-client.patch rename to patches/server/0960-Handle-Large-Packets-disconnecting-client.patch diff --git a/patches/server/0962-Fix-ItemFlags.patch b/patches/server/0961-Fix-ItemFlags.patch similarity index 94% rename from patches/server/0962-Fix-ItemFlags.patch rename to patches/server/0961-Fix-ItemFlags.patch index d750443ba5..46e55a9780 100644 --- a/patches/server/0962-Fix-ItemFlags.patch +++ b/patches/server/0961-Fix-ItemFlags.patch @@ -33,7 +33,7 @@ index 73fe41322e0349ad1d46a760f621b6c91112e90e..19af55ec2bf62b70bd3be44f499b32f5 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -index 2cf89147025066f34c12b9956d18451487fb2799..078b75f027b99a8a2a6a3ee19d087acc03eefe12 100644 +index ba49ac74a19ee1f14706c7f769aac35fa821ef7d..6f3ab40a9d0bccd9a2c439bf0e200ba5cf0f5f6e 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java @@ -245,6 +245,12 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { @@ -81,7 +81,7 @@ index 2cf89147025066f34c12b9956d18451487fb2799..078b75f027b99a8a2a6a3ee19d087acc Set, Optional>> keys = tag.entrySet(); for (Map.Entry, Optional> key : keys) { -@@ -620,7 +644,15 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -627,7 +651,15 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { try { CompoundTag unhandledTag = NbtIo.readCompressed(buf, NbtAccounter.unlimitedHeap()); DataComponentPatch unhandledPatch = DataComponentPatch.CODEC.parse(MinecraftServer.getDefaultRegistryAccess().createSerializationContext(NbtOps.INSTANCE), unhandledTag).result().get(); @@ -98,7 +98,7 @@ index 2cf89147025066f34c12b9956d18451487fb2799..078b75f027b99a8a2a6a3ee19d087acc for (Entry, Optional> entry : unhandledPatch.entrySet()) { // Move removed unhandled tags to dedicated removedTags -@@ -863,6 +895,15 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -870,6 +902,15 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { itemTag.put(CraftMetaItem.MAX_DAMAGE, this.maxDamage); } @@ -114,7 +114,7 @@ index 2cf89147025066f34c12b9956d18451487fb2799..078b75f027b99a8a2a6a3ee19d087acc for (Map.Entry, Optional> e : this.unhandledTags.build().entrySet()) { e.getValue().ifPresent((value) -> { itemTag.builder.set((DataComponentType) e.getKey(), value); -@@ -951,7 +992,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -958,7 +999,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { @Overridden boolean isEmpty() { @@ -123,7 +123,7 @@ index 2cf89147025066f34c12b9956d18451487fb2799..078b75f027b99a8a2a6a3ee19d087acc } // Paper start -@@ -1621,6 +1662,8 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1628,6 +1669,8 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { && (this.hasJukeboxPlayable() ? that.hasJukeboxPlayable() && this.jukebox.equals(that.jukebox) : !that.hasJukeboxPlayable()) && (this.hasDamage() ? that.hasDamage() && this.damage == that.damage : !that.hasDamage()) && (this.hasMaxDamage() ? that.hasMaxDamage() && this.maxDamage.equals(that.maxDamage) : !that.hasMaxDamage()) @@ -132,7 +132,7 @@ index 2cf89147025066f34c12b9956d18451487fb2799..078b75f027b99a8a2a6a3ee19d087acc && (this.version == that.version); } -@@ -1666,6 +1709,8 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1673,6 +1716,8 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { hash = 61 * hash + (this.hasDamage() ? this.damage : 0); hash = 61 * hash + (this.hasMaxDamage() ? 1231 : 1237); hash = 61 * hash + (this.hasAttributeModifiers() ? this.attributeModifiers.hashCode() : 0); @@ -141,7 +141,7 @@ index 2cf89147025066f34c12b9956d18451487fb2799..078b75f027b99a8a2a6a3ee19d087acc hash = 61 * hash + this.version; return hash; } -@@ -1710,6 +1755,14 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1717,6 +1762,14 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { clone.damage = this.damage; clone.maxDamage = this.maxDamage; clone.version = this.version; @@ -156,7 +156,7 @@ index 2cf89147025066f34c12b9956d18451487fb2799..078b75f027b99a8a2a6a3ee19d087acc return clone; } catch (CloneNotSupportedException e) { throw new Error(e); -@@ -1827,6 +1880,16 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1834,6 +1887,16 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { } } @@ -173,7 +173,7 @@ index 2cf89147025066f34c12b9956d18451487fb2799..078b75f027b99a8a2a6a3ee19d087acc if (!this.unhandledTags.isEmpty()) { Tag unhandled = DataComponentPatch.CODEC.encodeStart(MinecraftServer.getDefaultRegistryAccess().createSerializationContext(NbtOps.INSTANCE), this.unhandledTags.build()).getOrThrow(IllegalStateException::new); try { -@@ -1837,6 +1900,14 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1844,6 +1907,14 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { Logger.getLogger(CraftMetaItem.class.getName()).log(Level.SEVERE, null, ex); } } @@ -188,7 +188,7 @@ index 2cf89147025066f34c12b9956d18451487fb2799..078b75f027b99a8a2a6a3ee19d087acc if (!this.removedTags.isEmpty()) { RegistryAccess registryAccess = CraftRegistry.getMinecraftRegistry(); -@@ -1990,6 +2061,8 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1997,6 +2068,8 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { CraftMetaItem.MAX_DAMAGE.TYPE, CraftMetaItem.CUSTOM_DATA.TYPE, CraftMetaItem.ATTRIBUTES.TYPE, diff --git a/patches/server/0963-Fix-Player-setBlockUpdate.patch b/patches/server/0962-Fix-Player-setBlockUpdate.patch similarity index 95% rename from patches/server/0963-Fix-Player-setBlockUpdate.patch rename to patches/server/0962-Fix-Player-setBlockUpdate.patch index 81049f5c54..af479baa93 100644 --- a/patches/server/0963-Fix-Player-setBlockUpdate.patch +++ b/patches/server/0962-Fix-Player-setBlockUpdate.patch @@ -18,7 +18,7 @@ index 397eb1a101bd60f49dbb2fa8eddf28f6f233167f..e28bc898786542f695017ff0a0366768 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 4d3838c5184296451089697fd3f7438a7f1be762..94524dee7e3ff78d378bd7812c49d041d07e138d 100644 +index 1490d15f1ffa83653b20a4bb47584c4c554a3384..29c5855b9d31e803eb856584b92dfd35f6fad39a 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -1118,6 +1118,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0964-Fix-helmet-damage-reduction-inconsistencies.patch b/patches/server/0963-Fix-helmet-damage-reduction-inconsistencies.patch similarity index 87% rename from patches/server/0964-Fix-helmet-damage-reduction-inconsistencies.patch rename to patches/server/0963-Fix-helmet-damage-reduction-inconsistencies.patch index 065e1dca21..d394f07802 100644 --- a/patches/server/0964-Fix-helmet-damage-reduction-inconsistencies.patch +++ b/patches/server/0963-Fix-helmet-damage-reduction-inconsistencies.patch @@ -7,10 +7,10 @@ Affect the falling stalactite damage type where the reduction is not applied like in Vanilla diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 67aa8ebd1c4915fc7f18e3cf263eedf9b671a632..0ab53d46f0b8f3f3791dd01766738522c86932e8 100644 +index c21acdf5b445a7f24e0d7a6dfd07a097cb6a95b4..10598b112b66d660f1b1362d9af1ac85201cd0af 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1222,7 +1222,7 @@ public class CraftEventFactory { +@@ -1226,7 +1226,7 @@ public class CraftEventFactory { modifiers.put(DamageModifier.FREEZING, freezingModifier); modifierFunctions.put(DamageModifier.FREEZING, freezing); } diff --git a/patches/server/0965-Revert-to-vanilla-handling-of-LivingEntity-actuallyH.patch b/patches/server/0964-Revert-to-vanilla-handling-of-LivingEntity-actuallyH.patch similarity index 100% rename from patches/server/0965-Revert-to-vanilla-handling-of-LivingEntity-actuallyH.patch rename to patches/server/0964-Revert-to-vanilla-handling-of-LivingEntity-actuallyH.patch diff --git a/patches/server/0966-improve-checking-handled-tags-in-itemmeta.patch b/patches/server/0965-improve-checking-handled-tags-in-itemmeta.patch similarity index 95% rename from patches/server/0966-improve-checking-handled-tags-in-itemmeta.patch rename to patches/server/0965-improve-checking-handled-tags-in-itemmeta.patch index 6e7216cfea..9284b050d0 100644 --- a/patches/server/0966-improve-checking-handled-tags-in-itemmeta.patch +++ b/patches/server/0965-improve-checking-handled-tags-in-itemmeta.patch @@ -5,10 +5,10 @@ Subject: [PATCH] improve checking handled tags in itemmeta diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemMetas.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemMetas.java -index a6c78854c10362864c2297de903ab9594cdb1eb6..251aac8690f15be2ad0e3f6399676205b7d7860c 100644 +index a4c4ba0d02f9a072236ce86c1e98e2c60b059cb8..0930d827e96e0b41296d7723238e6735106fd3d5 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemMetas.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemMetas.java -@@ -32,116 +32,116 @@ import org.bukkit.inventory.meta.TropicalFishBucketMeta; +@@ -39,120 +39,120 @@ import org.bukkit.inventory.meta.TropicalFishBucketMeta; public final class CraftItemMetas { @@ -107,6 +107,11 @@ index a6c78854c10362864c2297de903ab9594cdb1eb6..251aac8690f15be2ad0e3f6399676205 + (item, extras) -> new CraftMetaBlockState(item.getComponentsPatch(), CraftItemType.minecraftToBukkit(item.getItem()), extras), (type, meta) -> new CraftMetaBlockState(meta, type.asMaterial())); + private static final ItemMetaData SHIELD_META_DATA = new ItemMetaData<>(ShieldMeta.class, +- item -> new CraftMetaShield(item.getComponentsPatch()), ++ (item, extras) -> new CraftMetaShield(item.getComponentsPatch(), extras), + (type, meta) -> new CraftMetaShield(meta)); + private static final ItemMetaData TROPICAL_FISH_BUCKET_META_DATA = new ItemMetaData<>(TropicalFishBucketMeta.class, - item -> new CraftMetaTropicalFishBucket(item.getComponentsPatch()), + (item, extras) -> new CraftMetaTropicalFishBucket(item.getComponentsPatch(), extras), @@ -286,10 +291,10 @@ index c56fb1eeea79176c4dbb1e9c0a8023f86220fe6a..1c17fb294d83d99ae657eff6a8a986bf getOrEmpty(tag, CraftMetaBanner.PATTERNS).ifPresent((entityTag) -> { List patterns = entityTag.layers(); diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java -index 4faada5f974214f3054dc1bec9c79e2600c8df48..d7e5491cc0296563fb9fdf28d64b21a10c08ea4a 100644 +index 23dbc56edf0d16cf07ced2899942abae28397694..ed6e9d1f2d42392d92f4e3ae6f67c8d4ed700fb5 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java -@@ -69,8 +69,8 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta +@@ -70,8 +70,8 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta this.blockEntityTag = te.blockEntityTag; } @@ -301,7 +306,7 @@ index 4faada5f974214f3054dc1bec9c79e2600c8df48..d7e5491cc0296563fb9fdf28d64b21a1 getOrEmpty(tag, CraftMetaBlockState.BLOCK_ENTITY_TAG).ifPresent((nbt) -> { diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java -index 552ebe67f87b48734adf0da8ef78dcac9dd670a2..e064af399dcae40b4f35aa993d356b1462f91d6c 100644 +index 32e5188442551b3e72e1d4826d836d622d0e438a..257c835bc280eee9ee73ae75b5249bb568a687d0 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java @@ -64,8 +64,8 @@ public class CraftMetaBook extends CraftMetaItem implements BookMeta, WritableBo @@ -316,7 +321,7 @@ index 552ebe67f87b48734adf0da8ef78dcac9dd670a2..e064af399dcae40b4f35aa993d356b14 getOrEmpty(tag, CraftMetaBook.BOOK_CONTENT).ifPresent((writable) -> { List> pages = writable.pages(); diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBookSigned.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBookSigned.java -index 162997fc80dfe2df1f13c802c1b610f04cb9d05a..806c1cbee7c4e23eee38c8f400ec2d924c9a360c 100644 +index fd3b12477c30d1eabdbe57ea779027931e9dd957..cbb3d80cc7cd81b2505dff999a0baede737165f7 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBookSigned.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBookSigned.java @@ -78,8 +78,8 @@ public class CraftMetaBookSigned extends CraftMetaItem implements BookMeta { @@ -451,7 +456,7 @@ index 8c1d2d0521da52f9a1262f5433da21700b9b0454..9600b23666668d7d581e2920a4e03e59 getOrEmpty(tag, CraftMetaFirework.FIREWORKS).ifPresent((fireworks) -> { this.power = fireworks.flightDuration(); diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -index 078b75f027b99a8a2a6a3ee19d087acc03eefe12..1903a6948242e2dc40302a0acb9171fc3cc3000e 100644 +index 6f3ab40a9d0bccd9a2c439bf0e200ba5cf0f5f6e..bee2f2f5675b8aaeb2a04ada1f6dba9aa9a14ed3 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java @@ -339,7 +339,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { @@ -481,7 +486,7 @@ index 078b75f027b99a8a2a6a3ee19d087acc03eefe12..1903a6948242e2dc40302a0acb9171fc key.getValue().ifPresent((value) -> { this.unhandledTags.set((DataComponentType) key.getKey(), value); }); -@@ -2036,67 +2043,75 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -2043,68 +2050,76 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { this.version = version; } @@ -521,6 +526,7 @@ index 078b75f027b99a8a2a6a3ee19d087acc03eefe12..1903a6948242e2dc40302a0acb9171fc - CraftMetaMap.MAP_COLOR.TYPE, - CraftMetaMap.MAP_ID.TYPE, - CraftMetaPotion.POTION_CONTENTS.TYPE, +- CraftMetaShield.BASE_COLOR.TYPE, - CraftMetaSkull.SKULL_PROFILE.TYPE, - CraftMetaSkull.NOTE_BLOCK_SOUND.TYPE, - CraftMetaSpawnEgg.ENTITY_TAG.TYPE, @@ -579,7 +585,8 @@ index 078b75f027b99a8a2a6a3ee19d087acc03eefe12..1903a6948242e2dc40302a0acb9171fc + map.put(CraftMetaArmor.class, Set.of(CraftMetaArmor.TRIM.TYPE)); + map.put(CraftMetaArmorStand.class, Set.of(CraftMetaArmorStand.ENTITY_TAG.TYPE)); + map.put(CraftMetaAxolotlBucket.class, Set.of(CraftMetaAxolotlBucket.ENTITY_TAG.TYPE, CraftMetaAxolotlBucket.BUCKET_ENTITY_TAG.TYPE)); -+ map.put(CraftMetaBanner.class, Set.of(/*CraftMetaBlockState.BLOCK_ENTITY_TAG.NBT, */CraftMetaBanner.PATTERNS.TYPE)); // banner uses same tag as block state ++ map.put(CraftMetaBanner.class, Set.of(CraftMetaBanner.PATTERNS.TYPE)); // banner uses same tag as block state ++ map.put(CraftMetaShield.class, Set.of(CraftMetaShield.BASE_COLOR.TYPE, CraftMetaBanner.PATTERNS.TYPE)); + map.put(CraftMetaBlockState.class, Set.of(CraftMetaBlockState.BLOCK_ENTITY_TAG.TYPE)); + map.put(CraftMetaBook.class, Set.of(CraftMetaBook.BOOK_CONTENT.TYPE)); + map.put(CraftMetaBookSigned.class, Set.of(CraftMetaBookSigned.BOOK_CONTENT.TYPE)); @@ -706,6 +713,21 @@ index d1cb8d520b6d7b0981d70412def71e7aab04560a..7f9182809f6e67ff571db0f365bc7e05 getOrEmpty(tag, CraftMetaPotion.POTION_CONTENTS).ifPresent((potionContents) -> { potionContents.potion().ifPresent((potion) -> { this.type = CraftPotionType.minecraftHolderToBukkit(potion); +diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaShield.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaShield.java +index c10609472c1b86c3abb19a62bef4c9ce436307ea..d2b74daa5788c1e6d9eaddb47bc3a062287ba036 100644 +--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaShield.java ++++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaShield.java +@@ -42,8 +42,8 @@ public class CraftMetaShield extends CraftMetaItem implements ShieldMeta, BlockS + } + } + +- CraftMetaShield(DataComponentPatch tag) { +- super(tag); ++ CraftMetaShield(DataComponentPatch tag, java.util.Set> extraHandledDcts) { // Paper - improve checking handled tags in item meta ++ super(tag, extraHandledDcts); // Paper - improve checking handled tags in item meta + + getOrEmpty(tag, CraftMetaShield.BASE_COLOR).ifPresent((color) -> { + this.banner = CraftMetaShield.getBlockState(DyeColor.getByWoolData((byte) color.getId())); diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSkull.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSkull.java index d6e161374e0235031128a6ee86d1ffa875ea48aa..ab860f1179fa2618c8fbc30ac5f48ff78b8abb60 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSkull.java @@ -722,7 +744,7 @@ index d6e161374e0235031128a6ee86d1ffa875ea48aa..ab860f1179fa2618c8fbc30ac5f48ff7 getOrEmpty(tag, CraftMetaSkull.SKULL_PROFILE).ifPresent((resolvableProfile) -> { this.setProfile(resolvableProfile.gameProfile()); diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSpawnEgg.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSpawnEgg.java -index 2c6ee95edea9dc959d8d31d689dc27fea4080467..e4b8637e6d82e2ce7cfee2130e6422f0ef4e1fbc 100644 +index 6c2c3b514be0dab47f3e44f65bdc6a3574e59b7c..8ddf091b3ff1262b6c97e8fe72e0a80db5e1037d 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSpawnEgg.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSpawnEgg.java @@ -33,8 +33,8 @@ public class CraftMetaSpawnEgg extends CraftMetaItem implements SpawnEggMeta { diff --git a/patches/server/0967-General-ItemMeta-fixes.patch b/patches/server/0966-General-ItemMeta-fixes.patch similarity index 82% rename from patches/server/0967-General-ItemMeta-fixes.patch rename to patches/server/0966-General-ItemMeta-fixes.patch index 321e5f3b03..81edf89f6d 100644 --- a/patches/server/0967-General-ItemMeta-fixes.patch +++ b/patches/server/0966-General-ItemMeta-fixes.patch @@ -12,7 +12,7 @@ public net/minecraft/world/level/block/entity/BlockEntity saveId(Lnet/minecraft/ Co-authored-by: GhastCraftHD diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index fa4bdf8bdbd6eaeb854e62a2acb45d7998e4aa2b..8309d2f7872ccdbc9d76f0fbf481411f74080148 100644 +index ebe470ca361ec5747a843b60d82f567d41d7c9fa..f9a4bebb321207abb00b1af1c17ebda623cc950e 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -1275,6 +1275,11 @@ public final class ItemStack implements DataComponentHolder { @@ -28,10 +28,10 @@ index fa4bdf8bdbd6eaeb854e62a2acb45d7998e4aa2b..8309d2f7872ccdbc9d76f0fbf481411f // CraftBukkit end diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -index 6207c6063cd11ccb1177fe7016c49c02a3416990..cd3b952a228c09077c2e74183a34ddb32811280b 100644 +index 41f43d7d12a47563360f48a793e63db8cf92ac69..a1d7ae987327382d9566860b991dc361225c7938 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -@@ -139,6 +139,11 @@ public abstract class BlockEntity { +@@ -152,6 +152,11 @@ public abstract class BlockEntity { CompoundTag nbttagcompound = new CompoundTag(); this.saveAdditional(nbttagcompound, registryLookup); @@ -158,10 +158,10 @@ index 1c17fb294d83d99ae657eff6a8a986bf72c6ec47..b9d6a4a8f78a0e26d888b6bfdff25c3a for (Pattern p : this.patterns) { diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java -index d7e5491cc0296563fb9fdf28d64b21a10c08ea4a..224ea52574b80bb087c5c62eaf1d46261c1252af 100644 +index ed6e9d1f2d42392d92f4e3ae6f67c8d4ed700fb5..d8ec01c65c6a57accf1b510499f9446e73c2f7e4 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java -@@ -50,9 +50,24 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta +@@ -51,9 +51,24 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta @ItemMetaKey.Specific(ItemMetaKey.Specific.To.NBT) static final ItemMetaKeyType BLOCK_ENTITY_TAG = new ItemMetaKeyType<>(DataComponents.BLOCK_ENTITY_DATA, "BlockEntityTag"); @@ -181,13 +181,13 @@ index d7e5491cc0296563fb9fdf28d64b21a10c08ea4a..224ea52574b80bb087c5c62eaf1d4626 + this.blockEntityTag = this.blockEntityTag != null ? this.blockEntityTag : CustomData.EMPTY; + } + private Material materialForBlockEntityType() { -+ return (this.material != Material.SHIELD) ? this.material : CraftMetaBlockState.shieldToBannerHack(); ++ return this.material; + } + // Paper end private CompoundTag internalTag; CraftMetaBlockState(CraftMetaItem meta, Material material) { -@@ -61,41 +76,61 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta +@@ -62,41 +77,61 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta if (!(meta instanceof CraftMetaBlockState) || ((CraftMetaBlockState) meta).material != material) { @@ -262,19 +262,16 @@ index d7e5491cc0296563fb9fdf28d64b21a10c08ea4a..224ea52574b80bb087c5c62eaf1d4626 } } -@@ -108,7 +143,10 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta - } else { +@@ -110,7 +145,7 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta this.material = Material.AIR; } -- this.blockEntityTag = CraftMetaBlockState.getBlockState(this.material, this.internalTag); -+ // Paper start -+ if (this.internalTag != null) { // legacy -+ this.setBlockState(CraftMetaBlockState.getBlockState(this.material, this.internalTag)); -+ } - this.internalTag = null; + if (this.internalTag != null) { +- this.blockEntityTag = CraftMetaBlockState.getBlockState(this.material, this.internalTag); ++ this.setBlockState(CraftMetaBlockState.getBlockState(this.material, this.internalTag)); // Paper - general item meta fixes - pass through setter + this.internalTag = null; + } } - -@@ -116,13 +154,21 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta +@@ -119,13 +154,21 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta void applyToItem(CraftMetaItem.Applicator tag) { super.applyToItem(tag); @@ -301,7 +298,7 @@ index d7e5491cc0296563fb9fdf28d64b21a10c08ea4a..224ea52574b80bb087c5c62eaf1d4626 } @Override -@@ -131,14 +177,29 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta +@@ -134,14 +177,29 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta if (tag.contains(CraftMetaBlockState.BLOCK_ENTITY_TAG.NBT, CraftMagicNumbers.NBT.TAG_COMPOUND)) { this.internalTag = tag.getCompound(CraftMetaBlockState.BLOCK_ENTITY_TAG.NBT); @@ -333,7 +330,7 @@ index d7e5491cc0296563fb9fdf28d64b21a10c08ea4a..224ea52574b80bb087c5c62eaf1d4626 } @Override -@@ -152,9 +213,10 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta +@@ -155,9 +213,10 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta int applyHash() { final int original; int hash = original = super.applyHash(); @@ -347,7 +344,7 @@ index d7e5491cc0296563fb9fdf28d64b21a10c08ea4a..224ea52574b80bb087c5c62eaf1d4626 return original != hash ? CraftMetaBlockState.class.hashCode() ^ hash : hash; } -@@ -166,45 +228,71 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta +@@ -169,45 +228,71 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta if (meta instanceof CraftMetaBlockState) { CraftMetaBlockState that = (CraftMetaBlockState) meta; @@ -429,9 +426,9 @@ index d7e5491cc0296563fb9fdf28d64b21a10c08ea4a..224ea52574b80bb087c5c62eaf1d4626 } private static CraftBlockEntityState getBlockState(Material material, CompoundTag blockEntityTag) { -@@ -234,7 +322,23 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta +@@ -237,7 +322,23 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta Class blockStateType = CraftBlockStates.getBlockStateType(stateMaterial); - Preconditions.checkArgument(blockStateType == blockState.getClass() && blockState instanceof CraftBlockEntityState, "Invalid blockState for " + this.material); + Preconditions.checkArgument(blockStateType == blockState.getClass() && blockState instanceof CraftBlockEntityState, "Invalid blockState for %s", this.material); - this.blockEntityTag = (CraftBlockEntityState) blockState; + // Paper start - when a new BlockState is set, the components from that block entity @@ -453,7 +450,7 @@ index d7e5491cc0296563fb9fdf28d64b21a10c08ea4a..224ea52574b80bb087c5c62eaf1d4626 + // Paper end } - private static Material shieldToBannerHack() { + private static Material shieldToBannerHack(CompoundTag tag) { diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java index 257c835bc280eee9ee73ae75b5249bb568a687d0..70f20de37c1f8d57a8d9fe00dcd864fdd9948ec2 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java @@ -805,7 +802,7 @@ index 9600b23666668d7d581e2920a4e03e59cc2339fb..0eceacbb096481d3bd31f5f99e964c88 } } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -index 1903a6948242e2dc40302a0acb9171fc3cc3000e..a9acbb181dd72238b63fb08fda1b3bc0d246e36e 100644 +index bee2f2f5675b8aaeb2a04ada1f6dba9aa9a14ed3..67181b215312f1f572d6ac5afd289c6540b12829 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java @@ -182,9 +182,10 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { @@ -851,7 +848,7 @@ index 1903a6948242e2dc40302a0acb9171fc3cc3000e..a9acbb181dd72238b63fb08fda1b3bc0 CraftMetaItem.getOrEmpty(tag, CraftMetaItem.NAME).ifPresent((component) -> { this.displayName = component; }); -@@ -791,7 +797,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -798,7 +804,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { Map mods = SerializableMeta.getObject(Map.class, map, key.BUKKIT, true); Multimap result = LinkedHashMultimap.create(); if (mods == null) { @@ -860,7 +857,7 @@ index 1903a6948242e2dc40302a0acb9171fc3cc3000e..a9acbb181dd72238b63fb08fda1b3bc0 } for (Object obj : mods.keySet()) { -@@ -894,7 +900,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -901,7 +907,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { itemTag.put(CraftMetaItem.JUKEBOX_PLAYABLE, this.jukebox.getHandle()); } @@ -869,7 +866,7 @@ index 1903a6948242e2dc40302a0acb9171fc3cc3000e..a9acbb181dd72238b63fb08fda1b3bc0 itemTag.put(CraftMetaItem.DAMAGE, this.damage); } -@@ -959,10 +965,8 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -966,10 +972,8 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { } void applyModifiers(Multimap modifiers, CraftMetaItem.Applicator tag) { @@ -882,7 +879,7 @@ index 1903a6948242e2dc40302a0acb9171fc3cc3000e..a9acbb181dd72238b63fb08fda1b3bc0 return; } -@@ -999,7 +1003,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1006,7 +1010,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { @Overridden boolean isEmpty() { @@ -891,7 +888,7 @@ index 1903a6948242e2dc40302a0acb9171fc3cc3000e..a9acbb181dd72238b63fb08fda1b3bc0 } // Paper start -@@ -1095,6 +1099,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1102,6 +1106,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { @Override public void lore(final List lore) { @@ -899,7 +896,7 @@ index 1903a6948242e2dc40302a0acb9171fc3cc3000e..a9acbb181dd72238b63fb08fda1b3bc0 this.lore = lore != null ? io.papermc.paper.adventure.PaperAdventure.asVanilla(lore) : null; } // Paper end -@@ -1153,7 +1158,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1160,7 +1165,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { @Override public void removeEnchantments() { if (this.hasEnchants()) { @@ -908,7 +905,7 @@ index 1903a6948242e2dc40302a0acb9171fc3cc3000e..a9acbb181dd72238b63fb08fda1b3bc0 } } -@@ -1219,6 +1224,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1226,6 +1231,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { // Paper end @Override public void setLore(List lore) { @@ -916,7 +913,7 @@ index 1903a6948242e2dc40302a0acb9171fc3cc3000e..a9acbb181dd72238b63fb08fda1b3bc0 if (lore == null || lore.isEmpty()) { this.lore = null; } else { -@@ -1234,6 +1240,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1241,6 +1247,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { // Paper start @Override public void setLoreComponents(List lore) { @@ -924,7 +921,7 @@ index 1903a6948242e2dc40302a0acb9171fc3cc3000e..a9acbb181dd72238b63fb08fda1b3bc0 if (lore == null) { this.lore = null; } else { -@@ -1375,7 +1382,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1382,7 +1389,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { @Override public FoodComponent getFood() { @@ -933,7 +930,7 @@ index 1903a6948242e2dc40302a0acb9171fc3cc3000e..a9acbb181dd72238b63fb08fda1b3bc0 } @Override -@@ -1431,7 +1438,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1438,7 +1445,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { @Override public Multimap getAttributeModifiers(@Nullable EquipmentSlot slot) { @@ -942,7 +939,7 @@ index 1903a6948242e2dc40302a0acb9171fc3cc3000e..a9acbb181dd72238b63fb08fda1b3bc0 SetMultimap result = LinkedHashMultimap.create(); for (Map.Entry entry : this.attributeModifiers.entries()) { if (entry.getValue().getSlot() == null || entry.getValue().getSlot() == slot) { -@@ -1444,6 +1451,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1451,6 +1458,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { @Override public Collection getAttributeModifiers(@Nonnull Attribute attribute) { Preconditions.checkNotNull(attribute, "Attribute cannot be null"); @@ -950,7 +947,7 @@ index 1903a6948242e2dc40302a0acb9171fc3cc3000e..a9acbb181dd72238b63fb08fda1b3bc0 return this.attributeModifiers.containsKey(attribute) ? ImmutableList.copyOf(this.attributeModifiers.get(attribute)) : null; } -@@ -1451,22 +1459,33 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1458,22 +1466,33 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { public boolean addAttributeModifier(@Nonnull Attribute attribute, @Nonnull AttributeModifier modifier) { Preconditions.checkNotNull(attribute, "Attribute cannot be null"); Preconditions.checkNotNull(modifier, "AttributeModifier cannot be null"); @@ -988,7 +985,7 @@ index 1903a6948242e2dc40302a0acb9171fc3cc3000e..a9acbb181dd72238b63fb08fda1b3bc0 Iterator> iterator = attributeModifiers.entries().iterator(); while (iterator.hasNext()) { -@@ -1476,6 +1495,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1483,6 +1502,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { iterator.remove(); continue; } @@ -996,7 +993,7 @@ index 1903a6948242e2dc40302a0acb9171fc3cc3000e..a9acbb181dd72238b63fb08fda1b3bc0 this.attributeModifiers.put(next.getKey(), next.getValue()); } } -@@ -1483,13 +1503,13 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1490,13 +1510,13 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { @Override public boolean removeAttributeModifier(@Nonnull Attribute attribute) { Preconditions.checkNotNull(attribute, "Attribute cannot be null"); @@ -1012,7 +1009,7 @@ index 1903a6948242e2dc40302a0acb9171fc3cc3000e..a9acbb181dd72238b63fb08fda1b3bc0 int removed = 0; Iterator> iter = this.attributeModifiers.entries().iterator(); -@@ -1509,7 +1529,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1516,7 +1536,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { public boolean removeAttributeModifier(@Nonnull Attribute attribute, @Nonnull AttributeModifier modifier) { Preconditions.checkNotNull(attribute, "Attribute cannot be null"); Preconditions.checkNotNull(modifier, "AttributeModifier cannot be null"); @@ -1021,7 +1018,7 @@ index 1903a6948242e2dc40302a0acb9171fc3cc3000e..a9acbb181dd72238b63fb08fda1b3bc0 int removed = 0; Iterator> iter = this.attributeModifiers.entries().iterator(); -@@ -1531,7 +1551,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1538,7 +1558,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { @Override public String getAsString() { @@ -1030,7 +1027,7 @@ index 1903a6948242e2dc40302a0acb9171fc3cc3000e..a9acbb181dd72238b63fb08fda1b3bc0 this.applyToItem(tag); DataComponentPatch patch = tag.build(); Tag nbt = DataComponentPatch.CODEC.encodeStart(MinecraftServer.getDefaultRegistryAccess().createSerializationContext(NbtOps.INSTANCE), patch).getOrThrow(); -@@ -1540,7 +1560,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1547,7 +1567,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { @Override public String getAsComponentString() { @@ -1039,7 +1036,7 @@ index 1903a6948242e2dc40302a0acb9171fc3cc3000e..a9acbb181dd72238b63fb08fda1b3bc0 this.applyToItem(tag); DataComponentPatch patch = tag.build(); -@@ -1580,6 +1600,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1587,6 +1607,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { if (first == null || second == null) { return false; } @@ -1047,7 +1044,7 @@ index 1903a6948242e2dc40302a0acb9171fc3cc3000e..a9acbb181dd72238b63fb08fda1b3bc0 for (Map.Entry entry : first.entries()) { if (!second.containsEntry(entry.getKey(), entry.getValue())) { return false; -@@ -1595,19 +1616,33 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1602,19 +1623,33 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { @Override public boolean hasDamage() { @@ -1083,7 +1080,7 @@ index 1903a6948242e2dc40302a0acb9171fc3cc3000e..a9acbb181dd72238b63fb08fda1b3bc0 @Override public boolean hasMaxDamage() { return this.maxDamage != null; -@@ -1621,6 +1656,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1628,6 +1663,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { @Override public void setMaxDamage(Integer maxDamage) { @@ -1091,7 +1088,7 @@ index 1903a6948242e2dc40302a0acb9171fc3cc3000e..a9acbb181dd72238b63fb08fda1b3bc0 this.maxDamage = maxDamage; } -@@ -1652,7 +1688,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1659,7 +1695,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { && (this.hasCustomModelData() ? that.hasCustomModelData() && this.customModelData.equals(that.customModelData) : !that.hasCustomModelData()) && (this.hasBlockData() ? that.hasBlockData() && this.blockData.equals(that.blockData) : !that.hasBlockData()) && (this.hasRepairCost() ? that.hasRepairCost() && this.repairCost == that.repairCost : !that.hasRepairCost()) @@ -1100,7 +1097,7 @@ index 1903a6948242e2dc40302a0acb9171fc3cc3000e..a9acbb181dd72238b63fb08fda1b3bc0 && (this.unhandledTags.equals(that.unhandledTags)) && (this.removedTags.equals(that.removedTags)) && (Objects.equals(this.customTag, that.customTag)) -@@ -1667,7 +1703,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1674,7 +1710,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { && (this.hasFood() ? that.hasFood() && this.food.equals(that.food) : !that.hasFood()) && (this.hasTool() ? that.hasTool() && this.tool.equals(that.tool) : !that.hasTool()) && (this.hasJukeboxPlayable() ? that.hasJukeboxPlayable() && this.jukebox.equals(that.jukebox) : !that.hasJukeboxPlayable()) @@ -1109,7 +1106,7 @@ index 1903a6948242e2dc40302a0acb9171fc3cc3000e..a9acbb181dd72238b63fb08fda1b3bc0 && (this.hasMaxDamage() ? that.hasMaxDamage() && this.maxDamage.equals(that.maxDamage) : !that.hasMaxDamage()) && (this.canPlaceOnPredicates != null ? that.canPlaceOnPredicates != null && this.canPlaceOnPredicates.equals(that.canPlaceOnPredicates) : that.canPlaceOnPredicates == null) // Paper && (this.canBreakPredicates != null ? that.canBreakPredicates != null && this.canBreakPredicates.equals(that.canBreakPredicates) : that.canBreakPredicates == null) // Paper -@@ -1713,9 +1749,9 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1720,9 +1756,9 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { hash = 61 * hash + (this.hasFood() ? this.food.hashCode() : 0); hash = 61 * hash + (this.hasTool() ? this.tool.hashCode() : 0); hash = 61 * hash + (this.hasJukeboxPlayable() ? this.jukebox.hashCode() : 0); @@ -1122,7 +1119,7 @@ index 1903a6948242e2dc40302a0acb9171fc3cc3000e..a9acbb181dd72238b63fb08fda1b3bc0 hash = 61 * hash + (this.canPlaceOnPredicates != null ? this.canPlaceOnPredicates.hashCode() : 0); // Paper hash = 61 * hash + (this.canBreakPredicates != null ? this.canBreakPredicates.hashCode() : 0); // Paper hash = 61 * hash + this.version; -@@ -1735,7 +1771,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1742,7 +1778,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { if (this.enchantments != null) { clone.enchantments = new EnchantmentMap(this.enchantments); // Paper } @@ -1131,7 +1128,7 @@ index 1903a6948242e2dc40302a0acb9171fc3cc3000e..a9acbb181dd72238b63fb08fda1b3bc0 clone.attributeModifiers = LinkedHashMultimap.create(this.attributeModifiers); } if (this.customTag != null) { -@@ -1863,7 +1899,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1870,7 +1906,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { builder.put(CraftMetaItem.JUKEBOX_PLAYABLE.BUKKIT, this.jukebox); } @@ -1140,7 +1137,7 @@ index 1903a6948242e2dc40302a0acb9171fc3cc3000e..a9acbb181dd72238b63fb08fda1b3bc0 builder.put(CraftMetaItem.DAMAGE.BUKKIT, this.damage); } -@@ -1964,7 +2000,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1971,7 +2007,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { } static void serializeModifiers(Multimap modifiers, ImmutableMap.Builder builder, ItemMetaKey key) { @@ -1149,7 +1146,7 @@ index 1903a6948242e2dc40302a0acb9171fc3cc3000e..a9acbb181dd72238b63fb08fda1b3bc0 return; } -@@ -2046,7 +2082,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -2053,7 +2089,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { // Paper start - improve checking handled tags @org.jetbrains.annotations.VisibleForTesting public static final Map, Set>> HANDLED_DCTS_PER_TYPE = new HashMap<>(); @@ -1158,7 +1155,7 @@ index 1903a6948242e2dc40302a0acb9171fc3cc3000e..a9acbb181dd72238b63fb08fda1b3bc0 CraftMetaItem.NAME.TYPE, CraftMetaItem.ITEM_NAME.TYPE, CraftMetaItem.LORE.TYPE, -@@ -2114,7 +2150,12 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -2122,7 +2158,12 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { // Paper end - improve checking handled data component types protected static Optional getOrEmpty(DataComponentPatch tag, ItemMetaKeyType type) { @@ -1390,6 +1387,306 @@ index 7f9182809f6e67ff571db0f365bc7e05f600775a..01c49df291f721bab3acb788ff2f2787 } @Override +diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaShield.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaShield.java +index 967d8940aec0065bce496d5d7a8c73de5733bd2c..e229ca6acb6dbc3185f326f6653b3d66d835a9e5 100644 +--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaShield.java ++++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaShield.java +@@ -28,17 +28,29 @@ public class CraftMetaShield extends CraftMetaItem implements ShieldMeta, BlockS + + static final ItemMetaKeyType BASE_COLOR = new ItemMetaKeyType<>(DataComponents.BASE_COLOR, "Base", "base-color"); + +- private Banner banner; ++ // Paper start - general item meta fixes - decoupled base colour and patterns ++ private @org.jetbrains.annotations.Nullable List patterns; ++ private @org.jetbrains.annotations.Nullable DyeColor baseColor; ++ ++ // An empty pattern list is the same as the default on the Shield item, and will hence not be present in the data components of the stack. ++ private boolean hasPatterns() { ++ return this.patterns != null && !this.patterns.isEmpty(); ++ } ++ // Paper end - general item meta fixes - decoupled base colour and patterns + + CraftMetaShield(CraftMetaItem meta) { + super(meta); + + if (meta instanceof CraftMetaShield craftMetaShield) { +- if (craftMetaShield.banner != null) { +- this.banner = (Banner) craftMetaShield.banner.copy(); +- } ++ // Paper start - general item meta fixes - decoupled base colour and patterns ++ if (craftMetaShield.patterns != null) this.patterns = new ArrayList<>(craftMetaShield.getPatterns()); ++ if (craftMetaShield.baseColor != null) this.baseColor = craftMetaShield.baseColor; ++ // Paper end - general item meta fixes - decoupled base colour and patterns + } else if (meta instanceof CraftMetaBlockState state && state.hasBlockState() && state.getBlockState() instanceof Banner banner) { +- this.banner = (Banner) banner.copy(); ++ // Paper start - general item meta fixes - decoupled base colour and patterns ++ this.patterns = banner.getPatterns(); ++ this.baseColor = banner.getBaseColor(); ++ // Paper end - general item meta fixes - decoupled base colour and patterns + } + } + +@@ -46,7 +58,7 @@ public class CraftMetaShield extends CraftMetaItem implements ShieldMeta, BlockS + super(tag, extraHandledDcts); // Paper - improve checking handled tags in item meta + + getOrEmpty(tag, CraftMetaShield.BASE_COLOR).ifPresent((color) -> { +- this.banner = CraftMetaShield.getBlockState(DyeColor.getByWoolData((byte) color.getId())); ++ this.baseColor = DyeColor.getByWoolData((byte) color.getId()); // Paper - general item meta fixes - decoupled base colour and patterns + }); + + getOrEmpty(tag, CraftMetaBanner.PATTERNS).ifPresent((entityTag) -> { +@@ -68,7 +80,7 @@ public class CraftMetaShield extends CraftMetaItem implements ShieldMeta, BlockS + + String baseColor = SerializableMeta.getString(map, CraftMetaShield.BASE_COLOR.BUKKIT, true); + if (baseColor != null) { +- this.banner = CraftMetaShield.getBlockState(DyeColor.valueOf(baseColor)); ++ this.baseColor = DyeColor.valueOf(baseColor); // Paper - general item meta fixes - decoupled base colour and patterns + } + + Iterable rawPatternList = SerializableMeta.getObject(Iterable.class, map, CraftMetaBanner.PATTERNS.BUKKIT, true); +@@ -86,13 +98,14 @@ public class CraftMetaShield extends CraftMetaItem implements ShieldMeta, BlockS + void applyToItem(CraftMetaItem.Applicator tag) { + super.applyToItem(tag); + +- if (this.banner != null) { +- tag.put(CraftMetaShield.BASE_COLOR, net.minecraft.world.item.DyeColor.byId(this.banner.getBaseColor().getWoolData())); +- +- if (this.banner.numberOfPatterns() > 0) { ++ // Paper start - general item meta fixes - decoupled base colour and patterns ++ if (this.baseColor != null) tag.put(CraftMetaShield.BASE_COLOR, net.minecraft.world.item.DyeColor.byId(this.baseColor.getWoolData())); ++ if (this.patterns != null && !this.patterns.isEmpty()) { ++ { ++ // Paper end - general item meta fixes - decoupled base colour and patterns + List newPatterns = new ArrayList<>(); + +- for (Pattern p : this.banner.getPatterns()) { ++ for (Pattern p : this.patterns) { // Paper - general item meta fixes - decoupled base colour and patterns + newPatterns.add(new BannerPatternLayers.Layer(CraftPatternType.bukkitToMinecraftHolder(p.getPattern()), net.minecraft.world.item.DyeColor.byId(p.getColor().getWoolData()))); + } + +@@ -103,108 +116,84 @@ public class CraftMetaShield extends CraftMetaItem implements ShieldMeta, BlockS + + @Override + public List getPatterns() { +- if (this.banner == null) { ++ if (this.patterns == null) { // Paper - general item meta fixes - decoupled base colour and patterns + return new ArrayList<>(); + } + +- return this.banner.getPatterns(); ++ return new ArrayList<>(this.patterns); // Paper - general item meta fixes - decoupled base colour and patterns + } + + @Override + public void setPatterns(List patterns) { +- if (this.banner == null) { +- if (patterns.isEmpty()) { +- return; +- } +- +- this.banner = CraftMetaShield.getBlockState(null); +- } +- +- this.banner.setPatterns(patterns); ++ this.patterns = new ArrayList<>(patterns); // Paper - general item meta fixes - decoupled base colour and patterns + } + + @Override + public void addPattern(Pattern pattern) { +- if (this.banner == null) { +- this.banner = CraftMetaShield.getBlockState(null); +- } +- +- this.banner.addPattern(pattern); ++ // Paper start - general item meta fixes - decoupled base colour and patterns ++ if (this.patterns == null) this.patterns = new ArrayList<>(); ++ this.patterns.add(pattern); ++ // Paper end - general item meta fixes - decoupled base colour and patterns + } + + @Override + public Pattern getPattern(int i) { +- if (this.banner == null) { ++ if (this.patterns == null) { // Paper - general item meta fixes - decoupled base colour and patterns + throw new IndexOutOfBoundsException(i); + } + +- return this.banner.getPattern(i); ++ return this.patterns.get(i); // Paper - general item meta fixes - decoupled base colour and patterns + } + + @Override + public Pattern removePattern(int i) { +- if (this.banner == null) { ++ if (this.patterns == null) { // Paper - general item meta fixes - decoupled base colour and patterns + throw new IndexOutOfBoundsException(i); + } + +- return this.banner.removePattern(i); ++ return this.patterns.remove(i); // Paper - general item meta fixes - decoupled base colour and patterns + } + + @Override + public void setPattern(int i, Pattern pattern) { +- if (this.banner == null) { ++ if (this.patterns == null) { // Paper - general item meta fixes - decoupled base colour and patterns + throw new IndexOutOfBoundsException(i); + } + +- this.banner.setPattern(i, pattern); ++ this.patterns.set(i, pattern); // Paper - general item meta fixes - decoupled base colour and patterns + } + + @Override + public int numberOfPatterns() { +- if (this.banner == null) { ++ if (this.patterns == null) { // Paper - general item meta fixes - decoupled base colour and patterns + return 0; + } + +- return this.banner.numberOfPatterns(); ++ return this.patterns.size(); // Paper - general item meta fixes - decoupled base colour and patterns + } + + @Override + public DyeColor getBaseColor() { +- if (this.banner == null) { +- return null; +- } +- +- return this.banner.getBaseColor(); ++ return this.baseColor; // Paper - general item meta fixes - decoupled base colour and patterns + } + + @Override + public void setBaseColor(DyeColor baseColor) { +- if (baseColor == null) { +- if (this.banner.numberOfPatterns() > 0) { +- this.banner.setBaseColor(DyeColor.WHITE); +- } else { +- this.banner = null; +- } +- } else { +- if (this.banner == null) { +- this.banner = CraftMetaShield.getBlockState(baseColor); +- } +- +- this.banner.setBaseColor(baseColor); +- } ++ this.baseColor = baseColor; // Paper - general item meta fixes - decoupled base colour and patterns + } + + @Override + ImmutableMap.Builder serialize(ImmutableMap.Builder builder) { + super.serialize(builder); + +- if (this.banner != null) { +- builder.put(CraftMetaShield.BASE_COLOR.BUKKIT, this.banner.getBaseColor().toString()); +- +- if (this.banner.numberOfPatterns() > 0) { +- builder.put(CraftMetaBanner.PATTERNS.BUKKIT, this.banner.getPatterns()); +- } ++ // Paper start - general item meta fixes - decoupled base colour and patterns ++ if (this.baseColor != null) { ++ builder.put(CraftMetaShield.BASE_COLOR.BUKKIT, this.baseColor.toString()); ++ } ++ if (hasPatterns()) { ++ builder.put(CraftMetaBanner.PATTERNS.BUKKIT, this.patterns); + } ++ // Paper end - general item meta fixes - decoupled base colour and patterns + + return builder; + } +@@ -213,8 +202,13 @@ public class CraftMetaShield extends CraftMetaItem implements ShieldMeta, BlockS + int applyHash() { + final int original; + int hash = original = super.applyHash(); +- if (this.banner != null) { +- hash = 61 * hash + this.banner.hashCode(); ++ // Paper start - general item meta fixes - decoupled base colour and patterns ++ if (this.baseColor != null) { ++ hash = 61 * hash + this.baseColor.hashCode(); ++ } ++ if (hasPatterns()) { ++ hash = 61 * hash + this.patterns.hashCode(); ++ // Paper end - general item meta fixes - decoupled base colour and patterns + } + return original != hash ? CraftMetaShield.class.hashCode() ^ hash : hash; + } +@@ -225,29 +219,33 @@ public class CraftMetaShield extends CraftMetaItem implements ShieldMeta, BlockS + return false; + } + if (meta instanceof CraftMetaShield that) { +- return Objects.equal(this.banner, that.banner); ++ return Objects.equal(this.baseColor, that.baseColor) && Objects.equal(this.patterns, that.patterns); // Paper - general item meta fixes - decoupled base colour and patterns + } + return true; + } + + @Override + boolean notUncommon(CraftMetaItem meta) { +- return super.notUncommon(meta) && (meta instanceof CraftMetaShield || this.banner == null); ++ return super.notUncommon(meta) && (meta instanceof CraftMetaShield || (this.baseColor == null && !hasPatterns())); // Paper - general item meta fixes - decoupled base colour and patterns + } + + @Override + boolean isEmpty() { +- return super.isEmpty() && this.banner == null; ++ return super.isEmpty() && this.baseColor == null && !hasPatterns(); // Paper - general item meta fixes - decoupled base colour and patterns + } + + @Override + public boolean hasBlockState() { +- return this.banner != null; ++ return this.baseColor != null || hasPatterns(); // Paper - general item meta fixes - decoupled base colour and patterns + } + + @Override + public BlockState getBlockState() { +- return (this.banner != null) ? this.banner.copy() : CraftMetaShield.getBlockState(null); ++ // Paper start - general item meta fixes - decoupled base colour and patterns ++ final Banner banner = CraftMetaShield.getBlockState(this.baseColor); ++ if (this.patterns != null) banner.setPatterns(this.patterns); ++ return banner; ++ // Paper end - general item meta fixes - decoupled base colour and patterns + } + + @Override +@@ -255,13 +253,18 @@ public class CraftMetaShield extends CraftMetaItem implements ShieldMeta, BlockS + Preconditions.checkArgument(blockState != null, "blockState must not be null"); + Preconditions.checkArgument(blockState instanceof Banner, "Invalid blockState"); + +- this.banner = (Banner) blockState; ++ // Paper start - general item meta fixes - decoupled base colour and patterns ++ final Banner banner = (Banner) blockState; ++ this.baseColor = banner.getBaseColor(); ++ this.patterns = banner.getPatterns(); ++ // Paper end - general item meta fixes - decoupled base colour and patterns + } + + // Paper start - add method to clear block state + @Override + public void clearBlockState() { +- this.banner = null; ++ this.baseColor = null; ++ this.patterns = null; + } + // Paper end - add method to clear block state + +@@ -275,9 +278,10 @@ public class CraftMetaShield extends CraftMetaItem implements ShieldMeta, BlockS + @Override + public CraftMetaShield clone() { + CraftMetaShield meta = (CraftMetaShield) super.clone(); +- if (this.banner != null) { +- meta.banner = (Banner) this.banner.copy(); +- } ++ // Paper start - general item meta fixes - decoupled base colour and patterns ++ meta.baseColor = this.baseColor; ++ meta.patterns = this.patterns == null ? null : new ArrayList<>(this.patterns); ++ // Paper start - general item meta fixes - decoupled base colour and patterns + return meta; + } + diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSkull.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSkull.java index ab860f1179fa2618c8fbc30ac5f48ff78b8abb60..7de2ed297d0b2bf8adf2058e75a9b594ec2197bd 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSkull.java @@ -1458,10 +1755,10 @@ index 17705059b81942e4df43a4a5180092e09c985ade..80e6b85a107d5236edba99540cb5074e } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/SerializableMeta.java b/src/main/java/org/bukkit/craftbukkit/inventory/SerializableMeta.java -index b7e93a6ec72ec3e3390fefa52fda0c2cd8e17c0c..758778650bebf7b96eefab42543e812849124b2f 100644 +index e00b757d6059715e8697428008fcb3e6e7abbe2e..dcf02bd0f7f4c67f5ab98003cc932b960704eef1 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/SerializableMeta.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/SerializableMeta.java -@@ -128,4 +128,21 @@ public final class SerializableMeta implements ConfigurationSerializable { +@@ -136,4 +136,21 @@ public final class SerializableMeta implements ConfigurationSerializable { } throw new IllegalArgumentException(field + "(" + object + ") is not a valid " + clazz); } @@ -1484,10 +1781,10 @@ index b7e93a6ec72ec3e3390fefa52fda0c2cd8e17c0c..758778650bebf7b96eefab42543e8128 + // Paper end - General ItemMeta Fixes } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/components/CraftFoodComponent.java b/src/main/java/org/bukkit/craftbukkit/inventory/components/CraftFoodComponent.java -index 63fc9138dc3388ceb9acf672b3f75ba0976e8e54..5986aa3588487c2caef4c895f8883e38a674b61c 100644 +index 92cad73219e11dc5922630769f9dd3a329ea6da1..bde61de7eda72b2e24ddef56ff93a0b46c08670c 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/components/CraftFoodComponent.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/components/CraftFoodComponent.java -@@ -109,6 +109,7 @@ public final class CraftFoodComponent implements FoodComponent { +@@ -114,6 +114,7 @@ public final class CraftFoodComponent implements FoodComponent { @Override public void setEatSeconds(float eatSeconds) { @@ -1495,7 +1792,7 @@ index 63fc9138dc3388ceb9acf672b3f75ba0976e8e54..5986aa3588487c2caef4c895f8883e38 this.handle = new FoodProperties(this.handle.nutrition(), this.handle.saturation(), this.handle.canAlwaysEat(), eatSeconds, this.handle.usingConvertsTo(), this.handle.effects()); } -@@ -119,6 +120,7 @@ public final class CraftFoodComponent implements FoodComponent { +@@ -124,6 +125,7 @@ public final class CraftFoodComponent implements FoodComponent { @Override public void setUsingConvertsTo(ItemStack item) { @@ -1503,7 +1800,7 @@ index 63fc9138dc3388ceb9acf672b3f75ba0976e8e54..5986aa3588487c2caef4c895f8883e38 this.handle = new FoodProperties(this.handle.nutrition(), this.handle.saturation(), this.handle.canAlwaysEat(), this.handle.eatSeconds(), Optional.ofNullable(item).map(CraftItemStack::asNMSCopy), this.handle.effects()); } -@@ -134,6 +136,7 @@ public final class CraftFoodComponent implements FoodComponent { +@@ -139,6 +141,7 @@ public final class CraftFoodComponent implements FoodComponent { @Override public FoodEffect addEffect(PotionEffect effect, float probability) { @@ -1561,7 +1858,7 @@ index 6bed0a5c8d9f1ca72678cdf4699128e441a24541..8e03e14d0e65bfdf2196a08220d1408b assertEquals(itemMeta, new CraftMetaItem(compound.build(), null)); // Paper diff --git a/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java b/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java -index d6018439015583fa0344c7c01b2e60a13de29795..aabe3730fa582f442ee0544dd1a9f3123f719c68 100644 +index b6da1c2902139d4c7b01ac7b3407d4f6ac3990e2..1a582ee78334835df79f93cc9fd3669c347d8b3a 100644 --- a/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java +++ b/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java @@ -66,7 +66,7 @@ import org.junit.jupiter.api.Test; diff --git a/patches/server/0968-Expose-hasColor-to-leather-armor.patch b/patches/server/0967-Expose-hasColor-to-leather-armor.patch similarity index 100% rename from patches/server/0968-Expose-hasColor-to-leather-armor.patch rename to patches/server/0967-Expose-hasColor-to-leather-armor.patch diff --git a/patches/server/0969-Added-API-to-get-player-ha-proxy-address.patch b/patches/server/0968-Added-API-to-get-player-ha-proxy-address.patch similarity index 97% rename from patches/server/0969-Added-API-to-get-player-ha-proxy-address.patch rename to patches/server/0968-Added-API-to-get-player-ha-proxy-address.patch index 305f6bd981..3b19743dfc 100644 --- a/patches/server/0969-Added-API-to-get-player-ha-proxy-address.patch +++ b/patches/server/0968-Added-API-to-get-player-ha-proxy-address.patch @@ -35,7 +35,7 @@ index 96355e1da8feb6687ea0069dda4a82fcd7e25e8a..1f696644b958538e9f5d568a2e4bba69 } else { super.channelRead(ctx, msg); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 94524dee7e3ff78d378bd7812c49d041d07e138d..65a6952d48f40f3fd73d6693b61be9d29741f2f6 100644 +index 29c5855b9d31e803eb856584b92dfd35f6fad39a..12010a078542b7e89f0f4c0e7983eb15e75c4f1f 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -265,7 +265,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0970-More-Chest-Block-API.patch b/patches/server/0969-More-Chest-Block-API.patch similarity index 100% rename from patches/server/0970-More-Chest-Block-API.patch rename to patches/server/0969-More-Chest-Block-API.patch diff --git a/patches/server/0971-Print-data-component-type-on-encoding-error.patch b/patches/server/0970-Print-data-component-type-on-encoding-error.patch similarity index 100% rename from patches/server/0971-Print-data-component-type-on-encoding-error.patch rename to patches/server/0970-Print-data-component-type-on-encoding-error.patch diff --git a/patches/server/0972-Brigadier-based-command-API.patch b/patches/server/0971-Brigadier-based-command-API.patch similarity index 99% rename from patches/server/0972-Brigadier-based-command-API.patch rename to patches/server/0971-Brigadier-based-command-API.patch index ed16e97611..ad3eff5ecd 100644 --- a/patches/server/0972-Brigadier-based-command-API.patch +++ b/patches/server/0971-Brigadier-based-command-API.patch @@ -686,10 +686,10 @@ index 0000000000000000000000000000000000000000..1b1642f306771f029e6214a2e2ebebb6 +} diff --git a/src/main/java/io/papermc/paper/command/brigadier/PaperCommands.java b/src/main/java/io/papermc/paper/command/brigadier/PaperCommands.java new file mode 100644 -index 0000000000000000000000000000000000000000..da50ca4c6524e4f99ea4de2157d7ef900178d0f1 +index 0000000000000000000000000000000000000000..95d3b42cbe2184b0a04d941f27f7a6e643ef59be --- /dev/null +++ b/src/main/java/io/papermc/paper/command/brigadier/PaperCommands.java -@@ -0,0 +1,198 @@ +@@ -0,0 +1,204 @@ +package io.papermc.paper.command.brigadier; + +import com.google.common.base.Preconditions; @@ -711,6 +711,7 @@ index 0000000000000000000000000000000000000000..da50ca4c6524e4f99ea4de2157d7ef90 +import java.util.Locale; +import java.util.Set; +import net.minecraft.commands.CommandBuildContext; ++import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.StringUtils; +import org.checkerframework.checker.nullness.qual.MonotonicNonNull; +import org.checkerframework.checker.nullness.qual.NonNull; @@ -868,7 +869,12 @@ index 0000000000000000000000000000000000000000..da50ca4c6524e4f99ea4de2157d7ef90 + .then( + Commands.argument("args", StringArgumentType.greedyString()) + .suggests((context, suggestionsBuilder) -> { -+ final String[] args = StringUtils.split(suggestionsBuilder.getRemaining()); ++ String[] args = StringUtils.split(suggestionsBuilder.getRemaining()); ++ if (suggestionsBuilder.getRemaining().endsWith(" ")) { ++ // if there is trailing whitespace, we should add an empty argument to signify ++ // that there may be more, but no characters have been typed yet ++ args = ArrayUtils.add(args, ""); ++ } + final SuggestionsBuilder offsetSuggestionsBuilder = suggestionsBuilder.createOffset(suggestionsBuilder.getInput().lastIndexOf(' ') + 1); + + final Collection suggestions = basicCommand.suggest(context.getSource(), args); @@ -2220,10 +2226,10 @@ index 7b86e064564d3a285e3971fd08ea6168bac0720e..e8dcbe7c6d6ed20ad19d2ba1893ad16d argumentbuilder.requires((icompletionprovider) -> { return true; diff --git a/src/main/java/net/minecraft/commands/arguments/MessageArgument.java b/src/main/java/net/minecraft/commands/arguments/MessageArgument.java -index 982b2bab27e3d55d0ba07060862c0c3183ad91b0..5fa8a3343ffc11e82c20b78a73205fd8a42d3c5d 100644 +index 55484826fc5ddd04ae024e25a0251796d7fa9c28..237e4f7b24908e9ade9a483eb7ae05fa3b7931d8 100644 --- a/src/main/java/net/minecraft/commands/arguments/MessageArgument.java +++ b/src/main/java/net/minecraft/commands/arguments/MessageArgument.java -@@ -39,6 +39,11 @@ public class MessageArgument implements SignedArgument +@@ -40,6 +40,11 @@ public class MessageArgument implements SignedArgument public static void resolveChatMessage(CommandContext context, String name, Consumer callback) throws CommandSyntaxException { MessageArgument.Message message = context.getArgument(name, MessageArgument.Message.class); @@ -2350,10 +2356,10 @@ index b4af03c4bdd1ce0861f36c3b75fc7e89d701c46a..0761d5bc5f2813bb4a9f664ac7a05b97 this.setPvpAllowed(dedicatedserverproperties.pvp); this.setFlightAllowed(dedicatedserverproperties.allowFlight); diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 134f31cce8d8eca669948a784e2766216fb91ab5..60c65af218d533d53b765ba2175fed163c32c126 100644 +index ef646b717323933f4b84e963ab8139dd241843bc..4f9a17e7cd5aca2e8bd55b4892a20dce181289cd 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2408,33 +2408,20 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2403,33 +2403,20 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } } @@ -2400,7 +2406,7 @@ index 134f31cce8d8eca669948a784e2766216fb91ab5..60c65af218d533d53b765ba2175fed16 // CraftBukkit end diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index b72a71d6a37956b0f4ca74c2ed8eaf044cac4b81..6321ae23f07bc3e07577914e6cf035e0c2cd4992 100644 +index 36997d8d15c23587317b4c115726892980a9086e..43a94a67b337f40522c25cc2252a6a5e1294ca0b 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -272,11 +272,11 @@ public final class CraftServer implements Server { diff --git a/patches/server/0973-Fix-issues-with-Recipe-API.patch b/patches/server/0972-Fix-issues-with-Recipe-API.patch similarity index 100% rename from patches/server/0973-Fix-issues-with-Recipe-API.patch rename to patches/server/0972-Fix-issues-with-Recipe-API.patch diff --git a/patches/server/0974-Fix-equipment-slot-and-group-API.patch b/patches/server/0973-Fix-equipment-slot-and-group-API.patch similarity index 96% rename from patches/server/0974-Fix-equipment-slot-and-group-API.patch rename to patches/server/0973-Fix-equipment-slot-and-group-API.patch index 05b6eafa06..a843a57c9f 100644 --- a/patches/server/0974-Fix-equipment-slot-and-group-API.patch +++ b/patches/server/0973-Fix-equipment-slot-and-group-API.patch @@ -52,10 +52,10 @@ index 9d74577af071954e1e37201a96368c1360076209..eafa54c870c3e2aef30c3f9f96f51660 throw new IllegalArgumentException("Not implemented. This is a bug"); } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -index a9acbb181dd72238b63fb08fda1b3bc0d246e36e..d87bfdda1f06a94e97465c105d28989e1d64e1e0 100644 +index 18d2531bade0bdd3da7116679b38a687c2f664ca..5a3162740b572f55431fbe3d9d41c5cb38ad338d 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -@@ -1441,7 +1441,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1448,7 +1448,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { if (this.attributeModifiers == null) return LinkedHashMultimap.create(); // Paper - don't change the components SetMultimap result = LinkedHashMultimap.create(); for (Map.Entry entry : this.attributeModifiers.entries()) { @@ -64,7 +64,7 @@ index a9acbb181dd72238b63fb08fda1b3bc0d246e36e..d87bfdda1f06a94e97465c105d28989e result.put(entry.getKey(), entry.getValue()); } } -@@ -1515,9 +1515,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { +@@ -1522,9 +1522,7 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { while (iter.hasNext()) { Map.Entry entry = iter.next(); diff --git a/patches/server/0975-Allow-Bukkit-plugin-to-use-Paper-PluginLoader-API.patch b/patches/server/0974-Allow-Bukkit-plugin-to-use-Paper-PluginLoader-API.patch similarity index 97% rename from patches/server/0975-Allow-Bukkit-plugin-to-use-Paper-PluginLoader-API.patch rename to patches/server/0974-Allow-Bukkit-plugin-to-use-Paper-PluginLoader-API.patch index 980c3dc8a0..8b39d13b43 100644 --- a/patches/server/0975-Allow-Bukkit-plugin-to-use-Paper-PluginLoader-API.patch +++ b/patches/server/0974-Allow-Bukkit-plugin-to-use-Paper-PluginLoader-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow Bukkit plugin to use Paper PluginLoader API diff --git a/src/main/java/io/papermc/paper/plugin/loader/PaperClasspathBuilder.java b/src/main/java/io/papermc/paper/plugin/loader/PaperClasspathBuilder.java -index f9d4b33050a6fe8c2dabe8e5eec075d95dc513e0..dc106685ecb483c33c06e4f83eda27be58251aad 100644 +index f871a329eb52da077f58d0ceaaabd3349f84cad0..21a0a4e29c0eb1b4f7dc89ad3df481ca89dbf1a4 100644 --- a/src/main/java/io/papermc/paper/plugin/loader/PaperClasspathBuilder.java +++ b/src/main/java/io/papermc/paper/plugin/loader/PaperClasspathBuilder.java @@ -41,15 +41,7 @@ public class PaperClasspathBuilder implements PluginClasspathBuilder { @@ -76,7 +76,7 @@ index 75a2b687d58d76b94f8bec111df8613f120ff74b..0fd1040ed376f19c6d5326767baaf304 throw ex; } catch (Throwable ex) { diff --git a/src/main/java/io/papermc/paper/plugin/provider/type/spigot/SpigotPluginProviderFactory.java b/src/main/java/io/papermc/paper/plugin/provider/type/spigot/SpigotPluginProviderFactory.java -index fdb52ad85cfaa1d53aadcad72cec3d3c8c12c058..38075b7348ad7ca3cfece2bfae63e0cce827c694 100644 +index 1bf0fa1530b8e5f94d726d0313b7a00f675b500c..9edf79dffd2836b40d41da4437c18d6145853f89 100644 --- a/src/main/java/io/papermc/paper/plugin/provider/type/spigot/SpigotPluginProviderFactory.java +++ b/src/main/java/io/papermc/paper/plugin/provider/type/spigot/SpigotPluginProviderFactory.java @@ -1,9 +1,18 @@ diff --git a/patches/server/0976-Prevent-sending-oversized-item-data-in-equipment-and.patch b/patches/server/0975-Prevent-sending-oversized-item-data-in-equipment-and.patch similarity index 94% rename from patches/server/0976-Prevent-sending-oversized-item-data-in-equipment-and.patch rename to patches/server/0975-Prevent-sending-oversized-item-data-in-equipment-and.patch index 077dab00a8..c9d47f41f8 100644 --- a/patches/server/0976-Prevent-sending-oversized-item-data-in-equipment-and.patch +++ b/patches/server/0975-Prevent-sending-oversized-item-data-in-equipment-and.patch @@ -154,21 +154,21 @@ index 59c1c103545f04fd35e6932df64a9910a1d74cd7..56bde49e6b7790155b032d0be40961d5 buf.writeByte(255); } diff --git a/src/main/java/net/minecraft/network/protocol/game/ClientboundSetEquipmentPacket.java b/src/main/java/net/minecraft/network/protocol/game/ClientboundSetEquipmentPacket.java -index e092a486c4041ab1cfe9e29c88d0d94528a6e9a6..3945ca04ede578121b370592482ac917f2d4cf96 100644 +index 2ea7e90d582866b4e29db80836e250163d811763..d152871142d3def2ac04f50037db53b0527f7894 100644 --- a/src/main/java/net/minecraft/network/protocol/game/ClientboundSetEquipmentPacket.java +++ b/src/main/java/net/minecraft/network/protocol/game/ClientboundSetEquipmentPacket.java @@ -19,6 +19,13 @@ public class ClientboundSetEquipmentPacket implements Packet> slots; - public ClientboundSetEquipmentPacket(int id, List> equipmentList) { + public ClientboundSetEquipmentPacket(int entityId, List> equipmentList) { + // Paper start - data sanitization -+ this(id, equipmentList, false); ++ this(entityId, equipmentList, false); + } -+ private boolean sanitize = false; -+ public ClientboundSetEquipmentPacket(int id, List> equipmentList, boolean sanitize) { ++ private boolean sanitize; ++ public ClientboundSetEquipmentPacket(int entityId, List> equipmentList, boolean sanitize) { + this.sanitize = sanitize; + // Paper end - data sanitization - this.entity = id; + this.entity = entityId; this.slots = equipmentList; } @@ -41,6 +48,7 @@ public class ClientboundSetEquipmentPacket implements Packet { -+ return param.setTickViewDistance(distance); ++ return param.setSendViewDistance(distance); + }); + } + @@ -26236,7 +26236,7 @@ index c97292f22a3402dbd59cef4af554954dc1d4f91a..b2c5ead035f583585b79f7eba51d66da return crashreportsystemdetails; } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index e45567e8112483d947e2ff12c01219b85b09b205..e05bd64abb644fa38dbfe1fe97737eaf8f535970 100644 +index 5b68fa9758d410ebe7b9bf7fd4221835fbce3d0b..45839cca7dd2e0ec3b6f146df4938da3e4b2c275 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -200,7 +200,7 @@ import org.bukkit.event.player.PlayerToggleSneakEvent; @@ -27715,7 +27715,7 @@ index bd20bea7f76a7307f1698fb2dfef37125032d166..141b748abe80402731cdaf14a3d36aa7 // Paper start - Affects Spawning API diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index 32651ed15e5961a8b27fc0dc8fb54ef05b6064fe..6c66ee69beb55e5c5755bbf4d13c256541ce4468 100644 +index b70ac21d8dc70fb1513ea7ce5270fb381552c29a..ad57bf49476192dea6a7367cbd0ad3f11e142e1b 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java @@ -75,6 +75,247 @@ public class Explosion { @@ -28981,10 +28981,10 @@ index d775ab8b0d37797f29e650842191d40691fb7afc..a7108b2be0746aa1f0e574d8c6f5ffad public void animateTick(BlockState state, Level world, BlockPos pos, RandomSource random) {} diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -index fe7dc02ea55c2bcd39d12bfd4d315f0b8c7014c3..ded6d148110fe3fbb6272ce44582a28472dd49a6 100644 +index f2036917c5ba9f536087d7ee559704055469730e..d0109633e8bdf109cfc9178963d7b6cf92f8b189 100644 --- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java +++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -@@ -762,7 +762,7 @@ public abstract class BlockBehaviour implements FeatureElement { +@@ -763,7 +763,7 @@ public abstract class BlockBehaviour implements FeatureElement { boolean test(BlockState state, BlockGetter world, BlockPos pos); } @@ -28993,7 +28993,7 @@ index fe7dc02ea55c2bcd39d12bfd4d315f0b8c7014c3..ded6d148110fe3fbb6272ce44582a284 private final int lightEmission; private final boolean useShapeForLightOcclusion; -@@ -794,6 +794,76 @@ public abstract class BlockBehaviour implements FeatureElement { +@@ -795,6 +795,76 @@ public abstract class BlockBehaviour implements FeatureElement { private FluidState fluidState; private boolean isRandomlyTicking; @@ -29070,7 +29070,7 @@ index fe7dc02ea55c2bcd39d12bfd4d315f0b8c7014c3..ded6d148110fe3fbb6272ce44582a284 protected BlockStateBase(Block block, Reference2ObjectArrayMap, Comparable> propertyMap, MapCodec codec) { super(block, propertyMap, codec); this.fluidState = Fluids.EMPTY.defaultFluidState(); -@@ -858,6 +928,43 @@ public abstract class BlockBehaviour implements FeatureElement { +@@ -859,6 +929,43 @@ public abstract class BlockBehaviour implements FeatureElement { this.shapeExceedsCube = this.cache == null || this.cache.largeCollisionShape; // Paper - moved from actual method to here this.legacySolid = this.calculateSolid(); @@ -29412,7 +29412,7 @@ index 365074be989aa4a178114fd5e9810f1a68640196..4af698930712389881601069a921f054 @Override public BlockEntity getBlockEntity(BlockPos pos) { diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 602ad80c2b93d320bf2a25832d25a58cb8c72e4b..3fa7bfa09b9d529b5cb9cad923f21343159cfa35 100644 +index 21946a93b6a2a3c79d15af1d6e7eabc537ba0125..d94e24cfc56c195a47665c212f8fcc901648a4a1 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java @@ -53,7 +53,7 @@ import net.minecraft.world.ticks.LevelChunkTicks; @@ -29509,7 +29509,7 @@ index 602ad80c2b93d320bf2a25832d25a58cb8c72e4b..3fa7bfa09b9d529b5cb9cad923f21343 gameprofilerfiller.popPush("queueCheckLight"); this.level.getChunkSource().getLightEngine().checkBlock(blockposition); gameprofilerfiller.pop(); -@@ -597,11 +644,12 @@ public class LevelChunk extends ChunkAccess { +@@ -602,11 +649,12 @@ public class LevelChunk extends ChunkAccess { // CraftBukkit start public void loadCallback() { @@ -29523,7 +29523,7 @@ index 602ad80c2b93d320bf2a25832d25a58cb8c72e4b..3fa7bfa09b9d529b5cb9cad923f21343 if (server != null) { /* * If it's a new world, the first few chunks are generated inside -@@ -610,6 +658,7 @@ public class LevelChunk extends ChunkAccess { +@@ -615,6 +663,7 @@ public class LevelChunk extends ChunkAccess { */ org.bukkit.Chunk bukkitChunk = new org.bukkit.craftbukkit.CraftChunk(this); server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkLoadEvent(bukkitChunk, this.needsDecoration)); @@ -29531,7 +29531,7 @@ index 602ad80c2b93d320bf2a25832d25a58cb8c72e4b..3fa7bfa09b9d529b5cb9cad923f21343 if (this.needsDecoration) { try (co.aikar.timings.Timing ignored = this.level.timings.chunkLoadPopulate.startTiming()) { // Paper -@@ -638,13 +687,15 @@ public class LevelChunk extends ChunkAccess { +@@ -643,13 +692,15 @@ public class LevelChunk extends ChunkAccess { } public void unloadCallback() { @@ -29549,7 +29549,7 @@ index 602ad80c2b93d320bf2a25832d25a58cb8c72e4b..3fa7bfa09b9d529b5cb9cad923f21343 // Paper start this.loadedTicketLevel = false; // Paper end -@@ -652,8 +703,27 @@ public class LevelChunk extends ChunkAccess { +@@ -657,8 +708,27 @@ public class LevelChunk extends ChunkAccess { @Override public boolean isUnsaved() { @@ -29578,7 +29578,7 @@ index 602ad80c2b93d320bf2a25832d25a58cb8c72e4b..3fa7bfa09b9d529b5cb9cad923f21343 // CraftBukkit end public boolean isEmpty() { -@@ -759,6 +829,7 @@ public class LevelChunk extends ChunkAccess { +@@ -764,6 +834,7 @@ public class LevelChunk extends ChunkAccess { this.pendingBlockEntities.clear(); this.upgradeData.upgrade(this); @@ -32731,7 +32731,7 @@ index 69c7fe5bf5b914276a9f7a0e57ce668e569d91f9..33322b57b4c6922f4daad0f584733f0f @Override diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 6321ae23f07bc3e07577914e6cf035e0c2cd4992..cc1f3c7fec4fa794da0b19f44ced9fd482dfdfc7 100644 +index 43a94a67b337f40522c25cc2252a6a5e1294ca0b..40c6ce263c025d26190f21adceaf899723da5a19 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -1428,7 +1428,7 @@ public final class CraftServer implements Server { diff --git a/patches/server/0989-Rewrite-dataconverter-system.patch b/patches/server/0988-Rewrite-dataconverter-system.patch similarity index 100% rename from patches/server/0989-Rewrite-dataconverter-system.patch rename to patches/server/0988-Rewrite-dataconverter-system.patch diff --git a/patches/server/0990-disable-forced-empty-world-ticks.patch b/patches/server/0989-disable-forced-empty-world-ticks.patch similarity index 100% rename from patches/server/0990-disable-forced-empty-world-ticks.patch rename to patches/server/0989-disable-forced-empty-world-ticks.patch diff --git a/patches/server/0991-Optimize-isInWorldBounds-and-getBlockState-for-inlin.patch b/patches/server/0990-Optimize-isInWorldBounds-and-getBlockState-for-inlin.patch similarity index 98% rename from patches/server/0991-Optimize-isInWorldBounds-and-getBlockState-for-inlin.patch rename to patches/server/0990-Optimize-isInWorldBounds-and-getBlockState-for-inlin.patch index ed5debe49c..3046e40be7 100644 --- a/patches/server/0991-Optimize-isInWorldBounds-and-getBlockState-for-inlin.patch +++ b/patches/server/0990-Optimize-isInWorldBounds-and-getBlockState-for-inlin.patch @@ -29,7 +29,7 @@ index 02367ef1371dde94ff6c4cd40bd32e800d6ccaaf..7b0fc7135bc107103dcaed6dc0707b18 this.x = x; this.y = y; diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index a016fb2140d6a43172c3fbc623b23f6d57798d9e..5b893b93a3495b13ae266fb8054d0a454cf02660 100644 +index 347334130e99dbf938d570bd36440a96f92d475a..c69ed3e899fc8d48afeb731bb3b2d97b5969e6e3 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -824,7 +824,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl diff --git a/patches/server/0992-Improve-Maps-in-item-frames-performance-and-bug-fixe.patch b/patches/server/0991-Improve-Maps-in-item-frames-performance-and-bug-fixe.patch similarity index 100% rename from patches/server/0992-Improve-Maps-in-item-frames-performance-and-bug-fixe.patch rename to patches/server/0991-Improve-Maps-in-item-frames-performance-and-bug-fixe.patch diff --git a/patches/server/0993-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch b/patches/server/0992-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch similarity index 98% rename from patches/server/0993-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch rename to patches/server/0992-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch index 23a10511a6..38ce2a6066 100644 --- a/patches/server/0993-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch +++ b/patches/server/0992-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch @@ -62,7 +62,7 @@ index bb8e962e63c7a2d931f9bd7f7c002aa35cfa5fd3..0fa131a6c98adb498fc8d534e0e39647 default BlockHitResult clip(ClipContext raytrace1, BlockPos blockposition) { // Paper start - Add predicate for blocks when raytracing diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 5b893b93a3495b13ae266fb8054d0a454cf02660..77b7c252d27f527d9b51e8419abe7af1d4b51d29 100644 +index c69ed3e899fc8d48afeb731bb3b2d97b5969e6e3..574175449af5b767f28e95ff8708ed37fedf4c7d 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -816,10 +816,87 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl diff --git a/patches/server/0994-Optimize-Network-Manager-and-add-advanced-packet-sup.patch b/patches/server/0993-Optimize-Network-Manager-and-add-advanced-packet-sup.patch similarity index 100% rename from patches/server/0994-Optimize-Network-Manager-and-add-advanced-packet-sup.patch rename to patches/server/0993-Optimize-Network-Manager-and-add-advanced-packet-sup.patch diff --git a/patches/server/0995-Allow-Saving-of-Oversized-Chunks.patch b/patches/server/0994-Allow-Saving-of-Oversized-Chunks.patch similarity index 100% rename from patches/server/0995-Allow-Saving-of-Oversized-Chunks.patch rename to patches/server/0994-Allow-Saving-of-Oversized-Chunks.patch diff --git a/patches/server/0996-Flat-bedrock-generator-settings.patch b/patches/server/0995-Flat-bedrock-generator-settings.patch similarity index 100% rename from patches/server/0996-Flat-bedrock-generator-settings.patch rename to patches/server/0995-Flat-bedrock-generator-settings.patch diff --git a/patches/server/0997-Entity-Activation-Range-2.0.patch b/patches/server/0996-Entity-Activation-Range-2.0.patch similarity index 100% rename from patches/server/0997-Entity-Activation-Range-2.0.patch rename to patches/server/0996-Entity-Activation-Range-2.0.patch diff --git a/patches/server/0998-Optional-per-player-mob-spawns.patch b/patches/server/0997-Optional-per-player-mob-spawns.patch similarity index 100% rename from patches/server/0998-Optional-per-player-mob-spawns.patch rename to patches/server/0997-Optional-per-player-mob-spawns.patch diff --git a/patches/server/0999-Anti-Xray.patch b/patches/server/0998-Anti-Xray.patch similarity index 100% rename from patches/server/0999-Anti-Xray.patch rename to patches/server/0998-Anti-Xray.patch diff --git a/patches/server/1000-Eigencraft-redstone-implementation.patch b/patches/server/0999-Eigencraft-redstone-implementation.patch similarity index 100% rename from patches/server/1000-Eigencraft-redstone-implementation.patch rename to patches/server/0999-Eigencraft-redstone-implementation.patch diff --git a/patches/server/1001-Add-Alternate-Current-redstone-implementation.patch b/patches/server/1000-Add-Alternate-Current-redstone-implementation.patch similarity index 100% rename from patches/server/1001-Add-Alternate-Current-redstone-implementation.patch rename to patches/server/1000-Add-Alternate-Current-redstone-implementation.patch diff --git a/patches/server/1002-Improve-cancelling-PreCreatureSpawnEvent-with-per-pl.patch b/patches/server/1001-Improve-cancelling-PreCreatureSpawnEvent-with-per-pl.patch similarity index 100% rename from patches/server/1002-Improve-cancelling-PreCreatureSpawnEvent-with-per-pl.patch rename to patches/server/1001-Improve-cancelling-PreCreatureSpawnEvent-with-per-pl.patch diff --git a/patches/server/1003-Use-Velocity-compression-and-cipher-natives.patch b/patches/server/1002-Use-Velocity-compression-and-cipher-natives.patch similarity index 100% rename from patches/server/1003-Use-Velocity-compression-and-cipher-natives.patch rename to patches/server/1002-Use-Velocity-compression-and-cipher-natives.patch diff --git a/patches/server/1004-Optimize-Collision-to-not-load-chunks.patch b/patches/server/1003-Optimize-Collision-to-not-load-chunks.patch similarity index 100% rename from patches/server/1004-Optimize-Collision-to-not-load-chunks.patch rename to patches/server/1003-Optimize-Collision-to-not-load-chunks.patch diff --git a/patches/server/1005-Optimize-GoalSelector-Goal.Flag-Set-operations.patch b/patches/server/1004-Optimize-GoalSelector-Goal.Flag-Set-operations.patch similarity index 100% rename from patches/server/1005-Optimize-GoalSelector-Goal.Flag-Set-operations.patch rename to patches/server/1004-Optimize-GoalSelector-Goal.Flag-Set-operations.patch diff --git a/patches/server/1006-Optimize-Hoppers.patch b/patches/server/1005-Optimize-Hoppers.patch similarity index 94% rename from patches/server/1006-Optimize-Hoppers.patch rename to patches/server/1005-Optimize-Hoppers.patch index dc55a79c71..9aaa15530d 100644 --- a/patches/server/1006-Optimize-Hoppers.patch +++ b/patches/server/1005-Optimize-Hoppers.patch @@ -62,7 +62,7 @@ index 4a4ce372dd105d07f58d7d93d856cb3969969806..fb3dcce4e1888f96fdd260740d9d9559 this.profiler.push(() -> { String s = String.valueOf(worldserver); diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index de32bf4947af8d2ec64e8799580a129b038dd35e..0f2b3c5ca88478a541bf9e61ae61cc99a7d08836 100644 +index bb28e35c0d53fcc0145518123795d54ff59514a8..3254124180df02d787202f4b00a4c52d40c6e7cf 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -809,10 +809,16 @@ public final class ItemStack implements DataComponentHolder { @@ -85,7 +85,7 @@ index de32bf4947af8d2ec64e8799580a129b038dd35e..0f2b3c5ca88478a541bf9e61ae61cc99 itemstack.setPopTime(this.getPopTime()); return itemstack; diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -index cd3b952a228c09077c2e74183a34ddb32811280b..c0563260277f9f4bd9ff08993b2efb4bca9a0c60 100644 +index a1d7ae987327382d9566860b991dc361225c7938..7dfabb11d3c8112f6daef35d204a2e324f4ddb5e 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java @@ -38,6 +38,7 @@ import co.aikar.timings.MinecraftTimings; // Paper @@ -96,7 +96,7 @@ index cd3b952a228c09077c2e74183a34ddb32811280b..c0563260277f9f4bd9ff08993b2efb4b public Timing tickTimer = MinecraftTimings.getTileEntityTimings(this); // Paper // CraftBukkit start - data containers -@@ -216,6 +217,7 @@ public abstract class BlockEntity { +@@ -229,6 +230,7 @@ public abstract class BlockEntity { public void setChanged() { if (this.level != null) { @@ -105,7 +105,7 @@ index cd3b952a228c09077c2e74183a34ddb32811280b..c0563260277f9f4bd9ff08993b2efb4b } diff --git a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java -index 0d6132abd49d66fbf84c046e09144cb33651be15..53f9d28bf3c6aafd4fdd6c12e0285500fe7350ce 100644 +index 542a5501ac94f57810d34e0f769a9a7855604f91..cab403efd471bb61835224eea4e99570d34dcaaa 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java @@ -156,6 +156,43 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen @@ -370,7 +370,7 @@ index 0d6132abd49d66fbf84c046e09144cb33651be15..53f9d28bf3c6aafd4fdd6c12e0285500 private static boolean ejectItems(Level world, BlockPos pos, HopperBlockEntity blockEntity) { Container iinventory = HopperBlockEntity.getAttachedContainer(world, pos, blockEntity); -@@ -209,48 +443,51 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen +@@ -209,52 +443,55 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen if (HopperBlockEntity.isFullContainer(iinventory, enumdirection)) { return false; } else { @@ -400,6 +400,7 @@ index 0d6132abd49d66fbf84c046e09144cb33651be15..53f9d28bf3c6aafd4fdd6c12e0285500 - blockEntity.setCooldown(world.spigotConfig.hopperTransfer); // Delay hopper checks // Spigot - return false; - } +- int origCount = event.getItem().getAmount(); // Spigot - ItemStack itemstack1 = HopperBlockEntity.addItem(blockEntity, iinventory, CraftItemStack.asNMSCopy(event.getItem()), enumdirection); - // CraftBukkit end - @@ -409,7 +410,10 @@ index 0d6132abd49d66fbf84c046e09144cb33651be15..53f9d28bf3c6aafd4fdd6c12e0285500 - } - - itemstack.setCount(j); -- if (j == 1) { +- // Spigot start +- itemstack.shrink(origCount - itemstack1.getCount()); +- if (j <= world.spigotConfig.hopperAmount) { +- // Spigot end - blockEntity.setItem(i, itemstack); - } - } @@ -444,6 +448,7 @@ index 0d6132abd49d66fbf84c046e09144cb33651be15..53f9d28bf3c6aafd4fdd6c12e0285500 + // blockEntity.setCooldown(world.spigotConfig.hopperTransfer); // Delay hopper checks // Spigot + // return false; + // } ++ // int origCount = event.getItem().getAmount(); // Spigot + // ItemStack itemstack1 = HopperBlockEntity.addItem(blockEntity, iinventory, CraftItemStack.asNMSCopy(event.getItem()), enumdirection); + // // CraftBukkit end + @@ -453,7 +458,10 @@ index 0d6132abd49d66fbf84c046e09144cb33651be15..53f9d28bf3c6aafd4fdd6c12e0285500 + // } + + // itemstack.setCount(j); -+ // if (j == 1) { ++ // // Spigot start ++ // itemstack.shrink(origCount - itemstack1.getCount()); ++ // if (j <= world.spigotConfig.hopperAmount) { ++ // // Spigot end + // blockEntity.setItem(i, itemstack); + // } + // } @@ -464,7 +472,7 @@ index 0d6132abd49d66fbf84c046e09144cb33651be15..53f9d28bf3c6aafd4fdd6c12e0285500 } } } -@@ -301,7 +538,6 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen +@@ -305,7 +542,6 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen return false; } } @@ -472,7 +480,7 @@ index 0d6132abd49d66fbf84c046e09144cb33651be15..53f9d28bf3c6aafd4fdd6c12e0285500 return true; } -@@ -312,6 +548,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen +@@ -316,6 +552,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen if (iinventory != null) { Direction enumdirection = Direction.DOWN; @@ -480,7 +488,7 @@ index 0d6132abd49d66fbf84c046e09144cb33651be15..53f9d28bf3c6aafd4fdd6c12e0285500 int[] aint = HopperBlockEntity.getSlots(iinventory, enumdirection); int i = aint.length; -@@ -347,45 +584,48 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen +@@ -351,49 +588,52 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen ItemStack itemstack = iinventory.getItem(i); if (!itemstack.isEmpty() && HopperBlockEntity.canTakeItemFromContainer(ihopper, iinventory, itemstack, i, enumdirection)) { @@ -511,6 +519,7 @@ index 0d6132abd49d66fbf84c046e09144cb33651be15..53f9d28bf3c6aafd4fdd6c12e0285500 - - return false; - } +- int origCount = event.getItem().getAmount(); // Spigot - ItemStack itemstack1 = HopperBlockEntity.addItem(iinventory, ihopper, CraftItemStack.asNMSCopy(event.getItem()), null); - // CraftBukkit end - @@ -520,7 +529,10 @@ index 0d6132abd49d66fbf84c046e09144cb33651be15..53f9d28bf3c6aafd4fdd6c12e0285500 - } - - itemstack.setCount(j); -- if (j == 1) { +- // Spigot start +- itemstack.shrink(origCount - itemstack1.getCount()); +- if (j <= world.spigotConfig.hopperAmount) { +- // Spigot end - iinventory.setItem(i, itemstack); - } + // Paper start - Perf: Optimize Hoppers @@ -552,6 +564,7 @@ index 0d6132abd49d66fbf84c046e09144cb33651be15..53f9d28bf3c6aafd4fdd6c12e0285500 + + // return false; + // } ++ // int origCount = event.getItem().getAmount(); // Spigot + // ItemStack itemstack1 = HopperBlockEntity.addItem(iinventory, ihopper, CraftItemStack.asNMSCopy(event.getItem()), null); + // // CraftBukkit end + @@ -561,14 +574,17 @@ index 0d6132abd49d66fbf84c046e09144cb33651be15..53f9d28bf3c6aafd4fdd6c12e0285500 + // } + + // itemstack.setCount(j); -+ // if (j == 1) { ++ // // Spigot start ++ // itemstack.shrink(origCount - itemstack1.getCount()); ++ // if (j <= world.spigotConfig.hopperAmount) { ++ // // Spigot end + // iinventory.setItem(i, itemstack); + // } + // Paper end - Perf: Optimize Hoppers } return false; -@@ -394,12 +634,14 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen +@@ -402,12 +642,14 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen public static boolean addItem(Container inventory, ItemEntity itemEntity) { boolean flag = false; // CraftBukkit start @@ -584,7 +600,7 @@ index 0d6132abd49d66fbf84c046e09144cb33651be15..53f9d28bf3c6aafd4fdd6c12e0285500 ItemStack itemstack = itemEntity.getItem().copy(); ItemStack itemstack1 = HopperBlockEntity.addItem((Container) null, inventory, itemstack, (Direction) null); -@@ -493,7 +735,9 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen +@@ -501,7 +743,9 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen stack = stack.split(to.getMaxStackSize()); } // Spigot end @@ -594,7 +610,7 @@ index 0d6132abd49d66fbf84c046e09144cb33651be15..53f9d28bf3c6aafd4fdd6c12e0285500 stack = leftover; // Paper - Make hoppers respect inventory max stack size flag = true; } else if (HopperBlockEntity.canMergeItems(itemstack1, stack)) { -@@ -573,14 +817,20 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen +@@ -581,14 +825,20 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen @Nullable public static Container getContainerAt(Level world, BlockPos pos) { @@ -617,7 +633,7 @@ index 0d6132abd49d66fbf84c046e09144cb33651be15..53f9d28bf3c6aafd4fdd6c12e0285500 iinventory = HopperBlockEntity.getEntityContainer(world, x, y, z); } -@@ -615,13 +865,13 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen +@@ -623,13 +873,13 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen @Nullable private static Container getEntityContainer(Level world, double x, double y, double z) { diff --git a/patches/server/1007-Entity-load-save-limit-per-chunk.patch b/patches/server/1006-Entity-load-save-limit-per-chunk.patch similarity index 100% rename from patches/server/1007-Entity-load-save-limit-per-chunk.patch rename to patches/server/1006-Entity-load-save-limit-per-chunk.patch diff --git a/patches/server/1008-Optimize-Voxel-Shape-Merging.patch b/patches/server/1007-Optimize-Voxel-Shape-Merging.patch similarity index 100% rename from patches/server/1008-Optimize-Voxel-Shape-Merging.patch rename to patches/server/1007-Optimize-Voxel-Shape-Merging.patch diff --git a/patches/server/1009-Optimize-Bit-Operations-by-inlining.patch b/patches/server/1008-Optimize-Bit-Operations-by-inlining.patch similarity index 100% rename from patches/server/1009-Optimize-Bit-Operations-by-inlining.patch rename to patches/server/1008-Optimize-Bit-Operations-by-inlining.patch diff --git a/patches/server/1010-Remove-streams-from-hot-code.patch b/patches/server/1009-Remove-streams-from-hot-code.patch similarity index 100% rename from patches/server/1010-Remove-streams-from-hot-code.patch rename to patches/server/1009-Remove-streams-from-hot-code.patch diff --git a/patches/server/1011-Optimize-Pathfinder-Remove-Streams-Optimized-collect.patch b/patches/server/1010-Optimize-Pathfinder-Remove-Streams-Optimized-collect.patch similarity index 100% rename from patches/server/1011-Optimize-Pathfinder-Remove-Streams-Optimized-collect.patch rename to patches/server/1010-Optimize-Pathfinder-Remove-Streams-Optimized-collect.patch diff --git a/patches/server/1012-Custom-table-implementation-for-blockstate-state-loo.patch b/patches/server/1011-Custom-table-implementation-for-blockstate-state-loo.patch similarity index 100% rename from patches/server/1012-Custom-table-implementation-for-blockstate-state-loo.patch rename to patches/server/1011-Custom-table-implementation-for-blockstate-state-loo.patch diff --git a/patches/server/1013-Fix-entity-type-tags-suggestions-in-selectors.patch b/patches/server/1012-Fix-entity-type-tags-suggestions-in-selectors.patch similarity index 95% rename from patches/server/1013-Fix-entity-type-tags-suggestions-in-selectors.patch rename to patches/server/1012-Fix-entity-type-tags-suggestions-in-selectors.patch index a8e41e99e4..7153240a70 100644 --- a/patches/server/1013-Fix-entity-type-tags-suggestions-in-selectors.patch +++ b/patches/server/1012-Fix-entity-type-tags-suggestions-in-selectors.patch @@ -60,10 +60,10 @@ index e8dcbe7c6d6ed20ad19d2ba1893ad16d917b9993..3e454515360c22a26c9329e4032d5255 } diff --git a/src/main/java/net/minecraft/commands/arguments/EntityArgument.java b/src/main/java/net/minecraft/commands/arguments/EntityArgument.java -index 2043001c16b3530c2d3f52efda10bcad424881c0..7976885b902a6ce7d80f31e49448c99452eb9765 100644 +index a8487c18d7ef28143a7750bf096d00bcf1e67113..208b56fff4925cad8d4e0bc843c07372fad034c8 100644 --- a/src/main/java/net/minecraft/commands/arguments/EntityArgument.java +++ b/src/main/java/net/minecraft/commands/arguments/EntityArgument.java -@@ -131,7 +131,7 @@ public class EntityArgument implements ArgumentType { +@@ -139,7 +139,7 @@ public class EntityArgument implements ArgumentType { final boolean permission = object instanceof CommandSourceStack stack ? stack.bypassSelectorPermissions || stack.hasPermission(2, "minecraft.command.selector") : icompletionprovider.hasPermission(2); @@ -72,7 +72,7 @@ index 2043001c16b3530c2d3f52efda10bcad424881c0..7976885b902a6ce7d80f31e49448c994 // Paper end - Fix EntityArgument suggestion permissions try { -@@ -141,7 +141,19 @@ public class EntityArgument implements ArgumentType { +@@ -149,7 +149,19 @@ public class EntityArgument implements ArgumentType { } return argumentparserselector.fillSuggestions(suggestionsbuilder, (suggestionsbuilder1) -> { @@ -94,19 +94,15 @@ index 2043001c16b3530c2d3f52efda10bcad424881c0..7976885b902a6ce7d80f31e49448c994 SharedSuggestionProvider.suggest((Iterable) iterable, suggestionsbuilder1); diff --git a/src/main/java/net/minecraft/commands/arguments/selector/EntitySelectorParser.java b/src/main/java/net/minecraft/commands/arguments/selector/EntitySelectorParser.java -index 6b6756625f3fb1f36f940c6e31e97b84f32a9990..32b39803380456f40bafdb790eaa27efab5f06a6 100644 +index dd50a530439576f56f245ff0b7eb090f9f0c9180..1f05594d5f00b6d57ec189273edbd25f2d679d61 100644 --- a/src/main/java/net/minecraft/commands/arguments/selector/EntitySelectorParser.java +++ b/src/main/java/net/minecraft/commands/arguments/selector/EntitySelectorParser.java -@@ -115,12 +115,19 @@ public class EntitySelectorParser { +@@ -116,8 +116,15 @@ public class EntitySelectorParser { private boolean hasScores; private boolean hasAdvancements; private boolean usesSelectors; + public boolean parsingEntityArgumentSuggestions; // Paper - tell clients to ask server for suggestions for EntityArguments - public EntitySelectorParser(StringReader reader) { - this(reader, true); - } - public EntitySelectorParser(StringReader reader, boolean atAllowed) { + // Paper start - tell clients to ask server for suggestions for EntityArguments + this(reader, atAllowed, false); diff --git a/patches/server/1014-Handle-Oversized-block-entities-in-chunks.patch b/patches/server/1013-Handle-Oversized-block-entities-in-chunks.patch similarity index 100% rename from patches/server/1014-Handle-Oversized-block-entities-in-chunks.patch rename to patches/server/1013-Handle-Oversized-block-entities-in-chunks.patch diff --git a/patches/server/1015-API-for-checking-sent-chunks.patch b/patches/server/1014-API-for-checking-sent-chunks.patch similarity index 100% rename from patches/server/1015-API-for-checking-sent-chunks.patch rename to patches/server/1014-API-for-checking-sent-chunks.patch diff --git a/patches/server/1016-Check-distance-in-entity-interactions.patch b/patches/server/1015-Check-distance-in-entity-interactions.patch similarity index 100% rename from patches/server/1016-Check-distance-in-entity-interactions.patch rename to patches/server/1015-Check-distance-in-entity-interactions.patch diff --git a/patches/server/1017-Configurable-Sand-Duping.patch b/patches/server/1016-Configurable-Sand-Duping.patch similarity index 100% rename from patches/server/1017-Configurable-Sand-Duping.patch rename to patches/server/1016-Configurable-Sand-Duping.patch diff --git a/patches/server/1018-Optimise-general-POI-access.patch b/patches/server/1017-Optimise-general-POI-access.patch similarity index 100% rename from patches/server/1018-Optimise-general-POI-access.patch rename to patches/server/1017-Optimise-general-POI-access.patch diff --git a/patches/server/1019-Improve-performance-of-mass-crafts.patch b/patches/server/1018-Improve-performance-of-mass-crafts.patch similarity index 100% rename from patches/server/1019-Improve-performance-of-mass-crafts.patch rename to patches/server/1018-Improve-performance-of-mass-crafts.patch diff --git a/patches/server/1020-Properly-resend-entities.patch b/patches/server/1019-Properly-resend-entities.patch similarity index 98% rename from patches/server/1020-Properly-resend-entities.patch rename to patches/server/1019-Properly-resend-entities.patch index de1c348724..ffba1508ba 100644 --- a/patches/server/1020-Properly-resend-entities.patch +++ b/patches/server/1019-Properly-resend-entities.patch @@ -81,10 +81,10 @@ index e9dcdb1e09e84a9b451034ff4bdfa6eae2dd1c04..24b1715397ba8e6f5e9841a030d0e3d9 } } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index a8debfad8c8e66099f8a9aedc6f1971a8576dade..7796e191747be545e744564a2b0b65790f69114d 100644 +index 566bbc8f2976bc492049fcddca5976a0ae48d14d..f1ca57b98fe04df2722114743c2d746c0a679c1f 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1949,6 +1949,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1944,6 +1944,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } if (cancelled) { @@ -92,7 +92,7 @@ index a8debfad8c8e66099f8a9aedc6f1971a8576dade..7796e191747be545e744564a2b0b6579 this.player.getBukkitEntity().updateInventory(); // SPIGOT-2524 return; } -@@ -2718,7 +2719,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2713,7 +2714,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl // Entity in bucket - SPIGOT-4048 and SPIGOT-6859a if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { diff --git a/patches/server/1021-Registry-Modification-API.patch b/patches/server/1020-Registry-Modification-API.patch similarity index 99% rename from patches/server/1021-Registry-Modification-API.patch rename to patches/server/1020-Registry-Modification-API.patch index 8c55ac4526..f478968684 100644 --- a/patches/server/1021-Registry-Modification-API.patch +++ b/patches/server/1020-Registry-Modification-API.patch @@ -9,7 +9,7 @@ public net.minecraft.resources.RegistryOps lookupProvider public net.minecraft.resources.RegistryOps$HolderLookupAdapter diff --git a/src/main/java/io/papermc/paper/registry/PaperRegistries.java b/src/main/java/io/papermc/paper/registry/PaperRegistries.java -index ead718efde812846fefec3e86d896fef7deb3d97..722e3786f5b36f9b9ccff4028a58c3893c7960d6 100644 +index 675f5d03478907e3d8284cbea191f01c1eb15769..32ade3ed8533b127e8f5c1cc8b3466249e5444a3 100644 --- a/src/main/java/io/papermc/paper/registry/PaperRegistries.java +++ b/src/main/java/io/papermc/paper/registry/PaperRegistries.java @@ -2,6 +2,7 @@ package io.papermc.paper.registry; @@ -20,7 +20,7 @@ index ead718efde812846fefec3e86d896fef7deb3d97..722e3786f5b36f9b9ccff4028a58c389 import java.util.Collections; import java.util.IdentityHashMap; import java.util.List; -@@ -54,6 +55,7 @@ import org.checkerframework.framework.qual.DefaultQualifier; +@@ -56,6 +57,7 @@ import org.checkerframework.framework.qual.DefaultQualifier; import static io.papermc.paper.registry.entry.RegistryEntry.apiOnly; import static io.papermc.paper.registry.entry.RegistryEntry.entry; @@ -28,7 +28,7 @@ index ead718efde812846fefec3e86d896fef7deb3d97..722e3786f5b36f9b9ccff4028a58c389 @DefaultQualifier(NonNull.class) public final class PaperRegistries { -@@ -136,6 +138,15 @@ public final class PaperRegistries { +@@ -138,6 +140,15 @@ public final class PaperRegistries { return ResourceKey.create((ResourceKey>) PaperRegistries.registryToNms(typedKey.registryKey()), PaperAdventure.asVanilla(typedKey.key())); } @@ -1311,10 +1311,10 @@ index 397bdacab9517354875ebc0bc68d35059b3c318b..908431652a0fea79b5a0cee1efd0c7a7 return writableRegistry; }, diff --git a/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java b/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java -index fc9aec589414bf8d3f672183928235b5b51d1a02..0f3c46b8bb93fc42160300c9988d04bed68f493b 100644 +index c2824cc07b761958a0df4b110bdfc53bd853b9e7..cacbb35d365c66881f2a42d099bb88c494b584ee 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java -@@ -163,11 +163,11 @@ public class CraftRegistry implements Registry { +@@ -165,11 +165,11 @@ public class CraftRegistry implements Registry { private final Map cache = new HashMap<>(); private final Map byValue = new java.util.IdentityHashMap<>(); // Paper - improve Registry private final net.minecraft.core.Registry minecraftRegistry; @@ -1328,7 +1328,7 @@ index fc9aec589414bf8d3f672183928235b5b51d1a02..0f3c46b8bb93fc42160300c9988d04be this.bukkitClass = bukkitClass; this.minecraftRegistry = minecraftRegistry; this.minecraftToBukkit = minecraftToBukkit; -@@ -240,4 +240,17 @@ public class CraftRegistry implements Registry { +@@ -242,4 +242,17 @@ public class CraftRegistry implements Registry { return this.byValue.get(value); } // Paper end - improve Registry diff --git a/patches/server/1022-Add-registry-entry-and-builders.patch b/patches/server/1021-Add-registry-entry-and-builders.patch similarity index 97% rename from patches/server/1022-Add-registry-entry-and-builders.patch rename to patches/server/1021-Add-registry-entry-and-builders.patch index cbb53a94e4..7978bd6ce2 100644 --- a/patches/server/1022-Add-registry-entry-and-builders.patch +++ b/patches/server/1021-Add-registry-entry-and-builders.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add registry entry and builders diff --git a/src/main/java/io/papermc/paper/registry/PaperRegistries.java b/src/main/java/io/papermc/paper/registry/PaperRegistries.java -index 722e3786f5b36f9b9ccff4028a58c3893c7960d6..745536f79b376c385247682042ae455d4a0f4ee5 100644 +index 32ade3ed8533b127e8f5c1cc8b3466249e5444a3..6ec9d9b9acf557aa2ebf39d38a14225b0205fae1 100644 --- a/src/main/java/io/papermc/paper/registry/PaperRegistries.java +++ b/src/main/java/io/papermc/paper/registry/PaperRegistries.java @@ -1,6 +1,8 @@ @@ -17,7 +17,7 @@ index 722e3786f5b36f9b9ccff4028a58c3893c7960d6..745536f79b376c385247682042ae455d import io.papermc.paper.registry.entry.RegistryEntry; import io.papermc.paper.registry.tag.TagKey; import java.util.Collections; -@@ -66,7 +68,7 @@ public final class PaperRegistries { +@@ -68,7 +70,7 @@ public final class PaperRegistries { static { REGISTRY_ENTRIES = List.of( // built-ins @@ -26,15 +26,15 @@ index 722e3786f5b36f9b9ccff4028a58c3893c7960d6..745536f79b376c385247682042ae455d entry(Registries.INSTRUMENT, RegistryKey.INSTRUMENT, MusicInstrument.class, CraftMusicInstrument::new), entry(Registries.MOB_EFFECT, RegistryKey.MOB_EFFECT, PotionEffectType.class, CraftPotionEffectType::new), entry(Registries.STRUCTURE_TYPE, RegistryKey.STRUCTURE_TYPE, StructureType.class, CraftStructureType::new), -@@ -84,7 +86,7 @@ public final class PaperRegistries { +@@ -86,7 +88,7 @@ public final class PaperRegistries { entry(Registries.TRIM_PATTERN, RegistryKey.TRIM_PATTERN, TrimPattern.class, CraftTrimPattern::new).delayed(), entry(Registries.DAMAGE_TYPE, RegistryKey.DAMAGE_TYPE, DamageType.class, CraftDamageType::new).delayed(), entry(Registries.WOLF_VARIANT, RegistryKey.WOLF_VARIANT, Wolf.Variant.class, CraftWolf.CraftVariant::new).delayed(), - entry(Registries.ENCHANTMENT, RegistryKey.ENCHANTMENT, Enchantment.class, CraftEnchantment::new).withSerializationUpdater(FieldRename.ENCHANTMENT_RENAME).delayed(), + writable(Registries.ENCHANTMENT, RegistryKey.ENCHANTMENT, Enchantment.class, CraftEnchantment::new, PaperEnchantmentRegistryEntry.PaperBuilder::new).withSerializationUpdater(FieldRename.ENCHANTMENT_RENAME).delayed(), entry(Registries.JUKEBOX_SONG, RegistryKey.JUKEBOX_SONG, JukeboxSong.class, CraftJukeboxSong::new).delayed(), + entry(Registries.BANNER_PATTERN, RegistryKey.BANNER_PATTERN, PatternType.class, CraftPatternType::new).delayed(), - // api-only diff --git a/src/main/java/io/papermc/paper/registry/data/PaperEnchantmentRegistryEntry.java b/src/main/java/io/papermc/paper/registry/data/PaperEnchantmentRegistryEntry.java new file mode 100644 index 0000000000000000000000000000000000000000..b9501554a0738776c265852184c7dbae3fe98c8c @@ -340,7 +340,7 @@ index 0000000000000000000000000000000000000000..18f9463ae23ba2d9c65ffb7531a87c92 +} diff --git a/src/main/java/io/papermc/paper/registry/data/util/Checks.java b/src/main/java/io/papermc/paper/registry/data/util/Checks.java new file mode 100644 -index 0000000000000000000000000000000000000000..a66cebe2b918a22b84e346127ffb671621050e5f +index 0000000000000000000000000000000000000000..3241a94731fe8163876614efdcf30f8b551535af --- /dev/null +++ b/src/main/java/io/papermc/paper/registry/data/util/Checks.java @@ -0,0 +1,48 @@ @@ -370,7 +370,7 @@ index 0000000000000000000000000000000000000000..a66cebe2b918a22b84e346127ffb6716 + + public static T asArgument(final @Nullable T value, final String field) { + if (value == null) { -+ throw new IllegalArgumentException("argument " + value + " cannot be null"); ++ throw new IllegalArgumentException("argument " + field + " cannot be null"); + } + return value; + } diff --git a/patches/server/1023-Improved-Watchdog-Support.patch b/patches/server/1022-Improved-Watchdog-Support.patch similarity index 99% rename from patches/server/1023-Improved-Watchdog-Support.patch rename to patches/server/1022-Improved-Watchdog-Support.patch index be44d14993..3c17cbaba2 100644 --- a/patches/server/1023-Improved-Watchdog-Support.patch +++ b/patches/server/1022-Improved-Watchdog-Support.patch @@ -341,10 +341,10 @@ index 5c4eaa6bcf20b0fcec14bd5ef76ea6f29a8613a2..e2a0487089eb5a7bdc1433e4c75f69d8 final String msg = String.format("Entity threw exception at %s:%s,%s,%s", entity.level().getWorld().getName(), entity.getX(), entity.getY(), entity.getZ()); MinecraftServer.LOGGER.error(msg, throwable); diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 8c865cd4e50ad55679a8bd89835caa40cc101f35..5453b7051337908ac1c8201827c1b5eec9e1608b 100644 +index b1a6dc25b04ab6a43e8d62378e14d88d1c60bbbe..7c11853c5090fbc4fa5b3e73a69acf166158fdec 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -1039,6 +1039,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -1044,6 +1044,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p gameprofilerfiller.pop(); } catch (Throwable throwable) { diff --git a/patches/server/1024-Proxy-ItemStack-to-CraftItemStack.patch b/patches/server/1023-Proxy-ItemStack-to-CraftItemStack.patch similarity index 100% rename from patches/server/1024-Proxy-ItemStack-to-CraftItemStack.patch rename to patches/server/1023-Proxy-ItemStack-to-CraftItemStack.patch diff --git a/patches/server/1025-Make-a-PDC-view-accessible-directly-from-ItemStack.patch b/patches/server/1024-Make-a-PDC-view-accessible-directly-from-ItemStack.patch similarity index 100% rename from patches/server/1025-Make-a-PDC-view-accessible-directly-from-ItemStack.patch rename to patches/server/1024-Make-a-PDC-view-accessible-directly-from-ItemStack.patch diff --git a/patches/server/1026-Prioritize-Minecraft-commands-in-function-parsing-an.patch b/patches/server/1025-Prioritize-Minecraft-commands-in-function-parsing-an.patch similarity index 100% rename from patches/server/1026-Prioritize-Minecraft-commands-in-function-parsing-an.patch rename to patches/server/1025-Prioritize-Minecraft-commands-in-function-parsing-an.patch diff --git a/patches/server/1027-optimize-dirt-and-snow-spreading.patch b/patches/server/1026-optimize-dirt-and-snow-spreading.patch similarity index 100% rename from patches/server/1027-optimize-dirt-and-snow-spreading.patch rename to patches/server/1026-optimize-dirt-and-snow-spreading.patch diff --git a/patches/server/1028-Fix-NPE-for-Jukebox-setRecord.patch b/patches/server/1027-Fix-NPE-for-Jukebox-setRecord.patch similarity index 100% rename from patches/server/1028-Fix-NPE-for-Jukebox-setRecord.patch rename to patches/server/1027-Fix-NPE-for-Jukebox-setRecord.patch diff --git a/patches/server/1029-Fix-CraftWorld-isChunkGenerated.patch b/patches/server/1028-Fix-CraftWorld-isChunkGenerated.patch similarity index 100% rename from patches/server/1029-Fix-CraftWorld-isChunkGenerated.patch rename to patches/server/1028-Fix-CraftWorld-isChunkGenerated.patch diff --git a/patches/server/1031-fix-horse-inventories.patch b/patches/server/1029-fix-horse-inventories.patch similarity index 100% rename from patches/server/1031-fix-horse-inventories.patch rename to patches/server/1029-fix-horse-inventories.patch diff --git a/patches/server/1030-Add-debug-for-chunk-system-unload-crash.patch b/patches/server/1030-Add-debug-for-chunk-system-unload-crash.patch deleted file mode 100644 index 206968f773..0000000000 --- a/patches/server/1030-Add-debug-for-chunk-system-unload-crash.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Spottedleaf -Date: Wed, 19 Jun 2024 10:52:07 -0700 -Subject: [PATCH] Add debug for chunk system unload crash - -Somehow, a chunkholder is present in the unload queue after -it has been unloaded. It is likely that this is a result of -adding the chunk holder to the unload queue while it is -unloading. However, that should not be possible. - -To find out where it is being added to the unload queue, track -the last stacktrace which adds to the unload queue and check -on chunk holder remove if the holder is present in the unload queue -and log the stacktrace. - -diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/NewChunkHolder.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/NewChunkHolder.java -index 1dfddea4fd7e89fb6fd9fa49f7ab5e6f48e6ef3c..4068138e4ec0ccb02f5925f8b5a31381882f08e0 100644 ---- a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/NewChunkHolder.java -+++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/NewChunkHolder.java -@@ -749,9 +749,22 @@ public final class NewChunkHolder { - - /** Unloaded from chunk map */ - private boolean unloaded; -+ private Throwable lastUnloadAdd; - - void markUnloaded() { - this.unloaded = true; -+ if (this.inUnloadQueue) { -+ if (this.lastUnloadAdd != null) { -+ LOGGER.error("Unloaded chunkholder " + this.toString() + " while in the unload queue", this.lastUnloadAdd); -+ } else { -+ // should never happen -+ LOGGER.error("Unloaded chunkholder " + this.toString() + " while in the unload queue without a throwable"); -+ } -+ -+ // prevent crash by removing (note: we hold scheduling lock here) -+ this.inUnloadQueue = false; -+ this.scheduler.chunkHolderManager.unloadQueue.removeChunk(this.chunkX, this.chunkZ); -+ } - } - - private boolean inUnloadQueue = false; -@@ -769,12 +782,14 @@ public final class NewChunkHolder { - // ensure in unload queue - if (!this.inUnloadQueue) { - this.inUnloadQueue = true; -+ this.lastUnloadAdd = new Throwable(); - this.scheduler.chunkHolderManager.unloadQueue.addChunk(this.chunkX, this.chunkZ); - } - } else { - // ensure not in unload queue - if (this.inUnloadQueue) { - this.inUnloadQueue = false; -+ this.lastUnloadAdd = null; - this.scheduler.chunkHolderManager.unloadQueue.removeChunk(this.chunkX, this.chunkZ); - } - } diff --git a/patches/server/1032-Only-call-EntityDamageEvents-before-actuallyHurt.patch b/patches/server/1030-Only-call-EntityDamageEvents-before-actuallyHurt.patch similarity index 100% rename from patches/server/1032-Only-call-EntityDamageEvents-before-actuallyHurt.patch rename to patches/server/1030-Only-call-EntityDamageEvents-before-actuallyHurt.patch diff --git a/patches/server/1033-Fix-entity-tracker-desync-when-new-players-are-added.patch b/patches/server/1031-Fix-entity-tracker-desync-when-new-players-are-added.patch similarity index 100% rename from patches/server/1033-Fix-entity-tracker-desync-when-new-players-are-added.patch rename to patches/server/1031-Fix-entity-tracker-desync-when-new-players-are-added.patch diff --git a/patches/server/1034-Lag-compensation-ticks.patch b/patches/server/1032-Lag-compensation-ticks.patch similarity index 100% rename from patches/server/1034-Lag-compensation-ticks.patch rename to patches/server/1032-Lag-compensation-ticks.patch diff --git a/patches/server/1035-Detail-more-information-in-watchdog-dumps.patch b/patches/server/1033-Detail-more-information-in-watchdog-dumps.patch similarity index 100% rename from patches/server/1035-Detail-more-information-in-watchdog-dumps.patch rename to patches/server/1033-Detail-more-information-in-watchdog-dumps.patch diff --git a/patches/server/1036-Write-SavedData-IO-async.patch b/patches/server/1034-Write-SavedData-IO-async.patch similarity index 100% rename from patches/server/1036-Write-SavedData-IO-async.patch rename to patches/server/1034-Write-SavedData-IO-async.patch diff --git a/patches/server/1037-Correctly-call-PlayerItemBreakEvent.patch b/patches/server/1035-Correctly-call-PlayerItemBreakEvent.patch similarity index 95% rename from patches/server/1037-Correctly-call-PlayerItemBreakEvent.patch rename to patches/server/1035-Correctly-call-PlayerItemBreakEvent.patch index 6637cd6cd0..5dd198b395 100644 --- a/patches/server/1037-Correctly-call-PlayerItemBreakEvent.patch +++ b/patches/server/1035-Correctly-call-PlayerItemBreakEvent.patch @@ -17,7 +17,7 @@ stack to not disrupt potential new vanilla changes that might depend on this behaviour. diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 0f2b3c5ca88478a541bf9e61ae61cc99a7d08836..2c312c0b741fb96a008881e9e01fa660a1fb63ab 100644 +index 3254124180df02d787202f4b00a4c52d40c6e7cf..d1340691d508c21c15237ec4a4626e9219d7c4f7 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -731,8 +731,10 @@ public final class ItemStack implements DataComponentHolder { diff --git a/patches/server/1038-Add-ItemType-getItemRarity.patch b/patches/server/1036-Add-ItemType-getItemRarity.patch similarity index 100% rename from patches/server/1038-Add-ItemType-getItemRarity.patch rename to patches/server/1036-Add-ItemType-getItemRarity.patch diff --git a/patches/server/1039-Incremental-chunk-and-player-saving.patch b/patches/server/1037-Incremental-chunk-and-player-saving.patch similarity index 100% rename from patches/server/1039-Incremental-chunk-and-player-saving.patch rename to patches/server/1037-Incremental-chunk-and-player-saving.patch diff --git a/patches/server/1040-Attempt-to-recalculate-regionfile-header-if-it-is-co.patch b/patches/server/1038-Attempt-to-recalculate-regionfile-header-if-it-is-co.patch similarity index 100% rename from patches/server/1040-Attempt-to-recalculate-regionfile-header-if-it-is-co.patch rename to patches/server/1038-Attempt-to-recalculate-regionfile-header-if-it-is-co.patch diff --git a/patches/server/1043-Bundle-spark.patch b/patches/server/1039-Bundle-spark.patch similarity index 100% rename from patches/server/1043-Bundle-spark.patch rename to patches/server/1039-Bundle-spark.patch diff --git a/patches/server/1044-Add-plugin-info-at-startup.patch b/patches/server/1040-Add-plugin-info-at-startup.patch similarity index 100% rename from patches/server/1044-Add-plugin-info-at-startup.patch rename to patches/server/1040-Add-plugin-info-at-startup.patch diff --git a/patches/server/1045-Make-interaction-leniency-distance-configurable.patch b/patches/server/1041-Make-interaction-leniency-distance-configurable.patch similarity index 91% rename from patches/server/1045-Make-interaction-leniency-distance-configurable.patch rename to patches/server/1041-Make-interaction-leniency-distance-configurable.patch index 341e13affd..c5462f81e2 100644 --- a/patches/server/1045-Make-interaction-leniency-distance-configurable.patch +++ b/patches/server/1041-Make-interaction-leniency-distance-configurable.patch @@ -12,10 +12,10 @@ This value however may be too low in high latency environments. The patch exposes a new configuration option to configure said value. diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 7796e191747be545e744564a2b0b65790f69114d..624b80c796e9c95040d71d1595d11f98e2899cf3 100644 +index f1ca57b98fe04df2722114743c2d746c0a679c1f..4d697cd7aa5a74c2016644385f59e461f660c8bd 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2703,7 +2703,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2698,7 +2698,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl AABB axisalignedbb = entity.getBoundingBox(); diff --git a/patches/server/1041-Move-CraftComplexRecipe-to-extend-CraftingRecipe.patch b/patches/server/1041-Move-CraftComplexRecipe-to-extend-CraftingRecipe.patch deleted file mode 100644 index 3e85c7f987..0000000000 --- a/patches/server/1041-Move-CraftComplexRecipe-to-extend-CraftingRecipe.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Bjarne Koll -Date: Fri, 19 Jul 2024 17:27:38 +0200 -Subject: [PATCH] Move CraftComplexRecipe to extend CraftingRecipe - -A craft complex recipe wraps a CustomRecipe, which itself is a -CraftingRecipe. -As such, this complex recipe should also be a crafting recipe. - -diff --git a/src/main/java/net/minecraft/world/item/crafting/CustomRecipe.java b/src/main/java/net/minecraft/world/item/crafting/CustomRecipe.java -index b57a2ba09f160409b5df9a2ae7ec159af3e4bf93..69a7e500c725e9da950df30f2cc4ff5f72e527d0 100644 ---- a/src/main/java/net/minecraft/world/item/crafting/CustomRecipe.java -+++ b/src/main/java/net/minecraft/world/item/crafting/CustomRecipe.java -@@ -34,7 +34,12 @@ public abstract class CustomRecipe implements CraftingRecipe { - // CraftBukkit start - @Override - public Recipe toBukkitRecipe(NamespacedKey id) { -- return new org.bukkit.craftbukkit.inventory.CraftComplexRecipe(id, this); -+ // Paper - make CraftComplexRecipe extend CraftingRecipe - start -+ final org.bukkit.craftbukkit.inventory.CraftComplexRecipe recipe = new org.bukkit.craftbukkit.inventory.CraftComplexRecipe(id, this); -+ recipe.setGroup(this.getGroup()); -+ recipe.setCategory(org.bukkit.craftbukkit.inventory.CraftRecipe.getCategory(this.category())); -+ return recipe; -+ // Paper - make CraftComplexRecipe extend CraftingRecipe - end - } - // CraftBukkit end - } -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftComplexRecipe.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftComplexRecipe.java -index dcaeaa3367351eb54e2cf8e62be19ecc125a4bb4..05f42ec6177218960b22dc2c224f63cbf37d696f 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftComplexRecipe.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftComplexRecipe.java -@@ -9,12 +9,17 @@ import org.bukkit.craftbukkit.util.CraftNamespacedKey; - import org.bukkit.inventory.ComplexRecipe; - import org.bukkit.inventory.ItemStack; - --public class CraftComplexRecipe implements CraftRecipe, ComplexRecipe { -+public class CraftComplexRecipe extends org.bukkit.inventory.CraftingRecipe implements CraftRecipe, ComplexRecipe { // Paper - make CraftComplexRecipe extend CraftingRecipe - - private final NamespacedKey key; - private final CustomRecipe recipe; - - public CraftComplexRecipe(NamespacedKey key, CustomRecipe recipe) { -+ // Paper - make CraftComplexRecipe extend CraftingRecipe - start -+ super(); -+ super.key = key; -+ super.output = ItemStack.empty(); -+ // Paper - make CraftComplexRecipe extend CraftingRecipe - end - this.key = key; - this.recipe = recipe; - } diff --git a/patches/server/1042-Add-CrafterCraftEvent.patch b/patches/server/1042-Add-CrafterCraftEvent.patch deleted file mode 100644 index 28eb5f5746..0000000000 --- a/patches/server/1042-Add-CrafterCraftEvent.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: ploppyperson -Date: Thu, 18 Jul 2024 16:38:48 +0200 -Subject: [PATCH] Add CrafterCraftEvent - -While not a one-to-one copy from the proposed commit upstream, -the patch calls the preemtively pulled CrafterCraftEvent. - -See: https://hub.spigotmc.org/stash/projects/SPIGOT/repos/craftbukkit/pull-requests/1450/overview - -diff --git a/src/main/java/net/minecraft/world/level/block/CrafterBlock.java b/src/main/java/net/minecraft/world/level/block/CrafterBlock.java -index 6c24b25a7c8ce6e34aceb5702f1a0a6732ebca44..391a6af36d4c27a04000b31583297a25b89125d3 100644 ---- a/src/main/java/net/minecraft/world/level/block/CrafterBlock.java -+++ b/src/main/java/net/minecraft/world/level/block/CrafterBlock.java -@@ -163,6 +163,16 @@ public class CrafterBlock extends BaseEntityBlock { - } else { - RecipeHolder recipeHolder = optional.get(); - ItemStack itemStack = recipeHolder.value().assemble(var11, world.registryAccess()); -+ // Paper start - call CrafterCraftEvent -+ final org.bukkit.event.block.CrafterCraftEvent event = new org.bukkit.event.block.CrafterCraftEvent( -+ org.bukkit.craftbukkit.block.CraftBlock.at(world, pos), -+ (org.bukkit.inventory.CraftingRecipe) recipeHolder.toBukkitRecipe(), -+ org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemStack) -+ ); -+ if (!event.callEvent()) return; -+ -+ itemStack = org.bukkit.craftbukkit.inventory.CraftItemStack.unwrap(event.getResult()); -+ // Paper end - call CrafterCraftEvent - if (itemStack.isEmpty()) { - world.levelEvent(1050, pos, 0); - } else { diff --git a/patches/server/1046-Fix-PickupStatus-getting-reset.patch b/patches/server/1042-Fix-PickupStatus-getting-reset.patch similarity index 95% rename from patches/server/1046-Fix-PickupStatus-getting-reset.patch rename to patches/server/1042-Fix-PickupStatus-getting-reset.patch index 795972058b..2a772419ce 100644 --- a/patches/server/1046-Fix-PickupStatus-getting-reset.patch +++ b/patches/server/1042-Fix-PickupStatus-getting-reset.patch @@ -24,10 +24,10 @@ index ddf47dab1ab92c45e3eea09239d418a9798ed59e..9ca29b3d4bf8bca5f51f3644e12fcbec byte b0 = 0; diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -index 5f7d152f41eb85f17bcded4bc8099b998e5a338b..a01c0d9ae53d1b748c5da914069bd672cb1215c7 100644 +index 4b71538d5e921af89c4b13200484d4767e4dd6f9..de64de5d1328d3e0826c9990eb7c7eca5088cb9c 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -@@ -237,7 +237,13 @@ public abstract class Projectile extends Entity implements TraceableEntity { +@@ -243,7 +243,13 @@ public abstract class Projectile extends Entity implements TraceableEntity { public boolean deflect(ProjectileDeflection deflection, @Nullable Entity deflector, @Nullable Entity owner, boolean fromAttack) { if (!this.level().isClientSide) { deflection.deflect(this, deflector, this.random); diff --git a/patches/server/1043-Check-for-block-type-in-SculkSensorBlock-canActivate.patch b/patches/server/1043-Check-for-block-type-in-SculkSensorBlock-canActivate.patch new file mode 100644 index 0000000000..f060e79368 --- /dev/null +++ b/patches/server/1043-Check-for-block-type-in-SculkSensorBlock-canActivate.patch @@ -0,0 +1,19 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Nassim Jahnke +Date: Wed, 7 Aug 2024 14:33:25 +0200 +Subject: [PATCH] Check for block type in SculkSensorBlock#canActivate + + +diff --git a/src/main/java/net/minecraft/world/level/block/SculkSensorBlock.java b/src/main/java/net/minecraft/world/level/block/SculkSensorBlock.java +index 9e928302817ee8e1cc8c7f3f1b351a0d5f3a7c2c..1db261f63aaf083b4d38f519f77abecbd942e999 100644 +--- a/src/main/java/net/minecraft/world/level/block/SculkSensorBlock.java ++++ b/src/main/java/net/minecraft/world/level/block/SculkSensorBlock.java +@@ -218,7 +218,7 @@ public class SculkSensorBlock extends BaseEntityBlock implements SimpleWaterlogg + } + + public static boolean canActivate(BlockState state) { +- return SculkSensorBlock.getPhase(state) == SculkSensorPhase.INACTIVE; ++ return state.getBlock() instanceof SculkSensorBlock && SculkSensorBlock.getPhase(state) == SculkSensorPhase.INACTIVE; // Paper - Check for a valid type + } + + public static void deactivate(Level world, BlockPos pos, BlockState state) { diff --git a/patches/server/1044-Add-API-for-CanPlaceOn-and-CanDestroy-NBT-values.patch b/patches/server/1044-Add-API-for-CanPlaceOn-and-CanDestroy-NBT-values.patch new file mode 100644 index 0000000000..3ff8343ca9 --- /dev/null +++ b/patches/server/1044-Add-API-for-CanPlaceOn-and-CanDestroy-NBT-values.patch @@ -0,0 +1,155 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jake Potrebic +Date: Wed, 12 Sep 2018 18:53:55 +0300 +Subject: [PATCH] Add API for CanPlaceOn and CanDestroy NBT values + + +diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +index d5c45cc09b9d60c1650507ad6fedb27246291063..5c45946f54e4b16440c15a9165ef85be43e53c84 100644 +--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java ++++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +@@ -2183,4 +2183,117 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { + } + // Paper end + ++ // Paper start - Add an API for can-place-on/can-break adventure mode predicates ++ @Override ++ public Set getCanDestroy() { ++ return !this.hasDestroyableKeys() ? Collections.emptySet() : convertToLegacyMaterial(this.canBreakPredicates); ++ } ++ ++ @Override ++ public void setCanDestroy(final Set canDestroy) { ++ Preconditions.checkArgument(canDestroy != null, "Cannot replace with null set!"); ++ this.canBreakPredicates = convertFromLegacyMaterial(canDestroy); ++ } ++ ++ @Override ++ public Set getCanPlaceOn() { ++ return !this.hasPlaceableKeys() ? Collections.emptySet() : convertToLegacyMaterial(this.canPlaceOnPredicates); ++ } ++ ++ @Override ++ public void setCanPlaceOn(final Set canPlaceOn) { ++ Preconditions.checkArgument(canPlaceOn != null, "Cannot replace with null set!"); ++ this.canPlaceOnPredicates = convertFromLegacyMaterial(canPlaceOn); ++ } ++ ++ private static List convertFromLegacyMaterial(final Collection materials) { ++ return materials.stream().map(m -> { ++ return net.minecraft.advancements.critereon.BlockPredicate.Builder.block().of(CraftBlockType.bukkitToMinecraft(m)).build(); ++ }).toList(); ++ } ++ ++ private static Set convertToLegacyMaterial(final List predicates) { ++ return predicates.stream() ++ .flatMap(p -> p.blocks().map(net.minecraft.core.HolderSet::stream).orElse(java.util.stream.Stream.empty())) ++ .map(holder -> CraftBlockType.minecraftToBukkit(holder.value())) ++ .collect(java.util.stream.Collectors.toSet()); ++ } ++ ++ @Override ++ public Set getDestroyableKeys() { ++ return !this.hasDestroyableKeys() ? Collections.emptySet() : convertToLegacyNamespaced(this.canBreakPredicates); ++ } ++ ++ @Override ++ public void setDestroyableKeys(final Collection canDestroy) { ++ Preconditions.checkArgument(canDestroy != null, "Cannot replace with null collection!"); ++ Preconditions.checkArgument(ofAcceptableType(canDestroy), "Can only use NamespacedKey or NamespacedTag objects!"); ++ this.canBreakPredicates = convertFromLegacyNamespaced(canDestroy); ++ } ++ ++ @Override ++ public Set getPlaceableKeys() { ++ return !this.hasPlaceableKeys() ? Collections.emptySet() : convertToLegacyNamespaced(this.canPlaceOnPredicates); ++ } ++ ++ @Override ++ public void setPlaceableKeys(final Collection canPlaceOn) { ++ Preconditions.checkArgument(canPlaceOn != null, "Cannot replace with null collection!"); ++ Preconditions.checkArgument(ofAcceptableType(canPlaceOn), "Can only use NamespacedKey or NamespacedTag objects!"); ++ this.canPlaceOnPredicates = convertFromLegacyNamespaced(canPlaceOn); ++ } ++ ++ private static List convertFromLegacyNamespaced(final Collection namespaceds) { ++ final List predicates = new ArrayList<>(); ++ for (final com.destroystokyo.paper.Namespaced namespaced : namespaceds) { ++ if (namespaced instanceof final org.bukkit.NamespacedKey key) { ++ predicates.add(net.minecraft.advancements.critereon.BlockPredicate.Builder.block().of(CraftBlockType.bukkitToMinecraft(Objects.requireNonNull(org.bukkit.Registry.MATERIAL.get(key)))).build()); ++ } else if (namespaced instanceof final com.destroystokyo.paper.NamespacedTag tag) { ++ predicates.add(net.minecraft.advancements.critereon.BlockPredicate.Builder.block().of(net.minecraft.tags.TagKey.create(Registries.BLOCK, ResourceLocation.fromNamespaceAndPath(tag.getNamespace(), tag.getKey()))).build()); ++ } ++ } ++ return predicates; ++ } ++ ++ private static Set convertToLegacyNamespaced(final Collection predicates) { ++ final Set namespaceds = Sets.newHashSet(); ++ for (final net.minecraft.advancements.critereon.BlockPredicate predicate : predicates) { ++ if (predicate.blocks().isEmpty()) { ++ continue; ++ } ++ final net.minecraft.core.HolderSet holders = predicate.blocks().get(); ++ if (holders instanceof final net.minecraft.core.HolderSet.Named named) { ++ namespaceds.add(new com.destroystokyo.paper.NamespacedTag(named.key().location().getNamespace(), named.key().location().getPath())); ++ } else { ++ holders.forEach(h -> { ++ h.unwrapKey().ifPresent(key -> { ++ namespaceds.add(new org.bukkit.NamespacedKey(key.location().getNamespace(), key.location().getPath())); ++ }); ++ }); ++ } ++ } ++ return namespaceds; ++ } ++ ++ @Override ++ public boolean hasPlaceableKeys() { ++ return this.canPlaceOnPredicates != null; ++ } ++ ++ @Override ++ public boolean hasDestroyableKeys() { ++ return this.canBreakPredicates != null; ++ } ++ ++ // not a fan of this ++ private static boolean ofAcceptableType(final Collection namespacedResources) { ++ for (com.destroystokyo.paper.Namespaced resource : namespacedResources) { ++ if (!(resource instanceof org.bukkit.NamespacedKey || resource instanceof com.destroystokyo.paper.NamespacedTag)) { ++ return false; ++ } ++ } ++ ++ return true; ++ } ++ // Paper end - Add an API for can-place-on/can-break adventure mode predicates + } +diff --git a/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java b/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java +index 6930d0afb230a88aa813b02e4d55c95d3a049688..db8d8e2a07296d62c3097f02b03319e2e1ba9394 100644 +--- a/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java ++++ b/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java +@@ -690,4 +690,22 @@ public class MaterialRerouting { + return ItemStack.of(material, amount); + } + // Paper end ++ ++ // Paper start - methods added post 1.13, no-op (https://github.com/PaperMC/Paper/pull/1015) ++ public static Set getCanDestroy(final ItemMeta meta) { ++ return meta.getCanDestroy(); ++ } ++ ++ public static void setCanDestroy(final ItemMeta meta, final Set materials) { ++ meta.setCanDestroy(materials); ++ } ++ ++ public static Set getCanPlaceOn(final ItemMeta meta) { ++ return meta.getCanPlaceOn(); ++ } ++ ++ public static void setCanPlaceOn(final ItemMeta meta, final Set materials) { ++ meta.setCanPlaceOn(materials); ++ } ++ // Paper end + } diff --git a/patches/server/1045-Configuration-for-horizontal-only-item-merging.patch b/patches/server/1045-Configuration-for-horizontal-only-item-merging.patch new file mode 100644 index 0000000000..1c45d3f2f0 --- /dev/null +++ b/patches/server/1045-Configuration-for-horizontal-only-item-merging.patch @@ -0,0 +1,28 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Newwind +Date: Wed, 7 Aug 2024 13:25:55 +0200 +Subject: [PATCH] Configuration for horizontal-only item merging + +Most of the visual artifacts that result from having item merge radius above vanilla levels is from items merging vertically, +which realistically, only happens when a player is dropping items, or items are dropping from breaking a block. + +Most of the scenarios where item merging makes sense involves the two item entities being on the same Y level. i.e on the ground next to each other. +This is even more apparent since paper fixed items being able to merge through blocks. + +This patch allows us to configure items to only merge horizontally, which is what vanilla does. +This allows us to have both the reduced number of item entities a high item-merge radius provides, +without most of the visual artifacts caused by items merging vertically. + +diff --git a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java +index ea0d9335446b20073b9aafb9de453097355db79c..607f1a9802eb0ff4865af4c53f302128a6e6fe02 100644 +--- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java ++++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java +@@ -284,7 +284,7 @@ public class ItemEntity extends Entity implements TraceableEntity { + if (this.isMergable()) { + // Spigot start + double radius = this.level().spigotConfig.itemMerge; +- List list = this.level().getEntitiesOfClass(ItemEntity.class, this.getBoundingBox().inflate(radius, radius - 0.5D, radius), (entityitem) -> { ++ List list = this.level().getEntitiesOfClass(ItemEntity.class, this.getBoundingBox().inflate(radius, this.level().paperConfig().entities.behavior.onlyMergeItemsHorizontally ? 0 : radius - 0.5D, radius), (entityitem) -> { // Paper - configuration to only merge items horizontally + // Spigot end + return entityitem != this && entityitem.isMergable(); + }); diff --git a/patches/server/1047-SW-WallBlock-Cache-Improvements.patch b/patches/server/1046-SW-WallBlock-Cache-Improvements.patch similarity index 100% rename from patches/server/1047-SW-WallBlock-Cache-Improvements.patch rename to patches/server/1046-SW-WallBlock-Cache-Improvements.patch diff --git a/patches/server/1048-SW-Remove-Debug-Messages.patch b/patches/server/1047-SW-Remove-Debug-Messages.patch similarity index 98% rename from patches/server/1048-SW-Remove-Debug-Messages.patch rename to patches/server/1047-SW-Remove-Debug-Messages.patch index 1e0c6f9c94..dac96c5ac9 100644 --- a/patches/server/1048-SW-Remove-Debug-Messages.patch +++ b/patches/server/1047-SW-Remove-Debug-Messages.patch @@ -76,7 +76,7 @@ index c038da20b76c0b7b1c18471b20be01e849d29f3a..f5611bf250aaa2851ca8873291c7f4b6 try { StoredUserList.GSON.toJson(jsonarray, StoredUserList.GSON.newJsonWriter(bufferedwriter)); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index c8b82bc41f2042bb4b067f06265a3a22e51f7629..e7f63e2f9271b05748db152be43ce9dfad6ff3a5 100644 +index f6de1c6e8fd9086b7bd725f75ee2606583591d6a..18e552458b29e79e01e4372cd8ccd2d0556de99e 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -502,7 +502,7 @@ public final class CraftServer implements Server { diff --git a/patches/server/1049-SW-Use-optimized-NeighbourTable.patch b/patches/server/1048-SW-Use-optimized-NeighbourTable.patch similarity index 100% rename from patches/server/1049-SW-Use-optimized-NeighbourTable.patch rename to patches/server/1048-SW-Use-optimized-NeighbourTable.patch diff --git a/patches/server/1050-SW-optimized-Blocks-cache.patch b/patches/server/1049-SW-optimized-Blocks-cache.patch similarity index 92% rename from patches/server/1050-SW-optimized-Blocks-cache.patch rename to patches/server/1049-SW-optimized-Blocks-cache.patch index 71bc89f6da..db2cffdb6a 100644 --- a/patches/server/1050-SW-optimized-Blocks-cache.patch +++ b/patches/server/1049-SW-optimized-Blocks-cache.patch @@ -41,10 +41,10 @@ index 223259e7a09ada681b6181c898f6857888594f85..3f31a3115c69fd976ccb1e396018d94b } } diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -index ded6d148110fe3fbb6272ce44582a28472dd49a6..16fe0554f38665cd652eef8fe693371c5de4542a 100644 +index d0109633e8bdf109cfc9178963d7b6cf92f8b189..ea142873eaeb6cd0ebf4eb65a7ed582cfe80c709 100644 --- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java +++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -@@ -77,6 +77,7 @@ import net.minecraft.world.level.storage.loot.parameters.LootContextParams; +@@ -78,6 +78,7 @@ import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.Vec3; @@ -52,7 +52,7 @@ index ded6d148110fe3fbb6272ce44582a28472dd49a6..16fe0554f38665cd652eef8fe693371c import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; -@@ -1435,7 +1436,7 @@ public abstract class BlockBehaviour implements FeatureElement { +@@ -1436,7 +1437,7 @@ public abstract class BlockBehaviour implements FeatureElement { } } diff --git a/patches/server/1051-SW-Remove-or-Optimize-Caches.patch b/patches/server/1050-SW-Remove-or-Optimize-Caches.patch similarity index 100% rename from patches/server/1051-SW-Remove-or-Optimize-Caches.patch rename to patches/server/1050-SW-Remove-or-Optimize-Caches.patch diff --git a/patches/server/1052-SW-Disable-Commands.patch b/patches/server/1051-SW-Disable-Commands.patch similarity index 100% rename from patches/server/1052-SW-Disable-Commands.patch rename to patches/server/1051-SW-Disable-Commands.patch diff --git a/patches/server/1053-SW-Remove-World-Lock.patch b/patches/server/1052-SW-Remove-World-Lock.patch similarity index 100% rename from patches/server/1053-SW-Remove-World-Lock.patch rename to patches/server/1052-SW-Remove-World-Lock.patch diff --git a/steamwarci.yml b/steamwarci.yml index 2655ee71b2..7c22bacfc7 100644 --- a/steamwarci.yml +++ b/steamwarci.yml @@ -4,8 +4,8 @@ build: - "JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64 ./gradlew --stop" artifacts: - "/binarys/paper-1.21.jar": "build/libs/paper-bundler-1.21-R0.1-SNAPSHOT-reobf.jar" - "/binarys/spigot-1.21-inner.jar": "Paper-Server/build/libs/paper-server-1.21-R0.1-SNAPSHOT-reobf.jar" + "/binarys/paper-1.21.jar": "build/libs/paper-bundler-1.21.1-R0.1-SNAPSHOT-reobf.jar" + "/binarys/spigot-1.21-inner.jar": "Paper-Server/build/libs/paper-server-1.21.1-R0.1-SNAPSHOT-reobf.jar" release: - - "mvn deploy:deploy-file -DgroupId=de.steamwar -DartifactId=spigot -Dversion=1.21 -Dpackaging=jar -Dfile=Paper-Server/build/libs/paper-server-1.21-R0.1-SNAPSHOT-reobf.jar -Durl=file:///var/www/html/maven/" + - "mvn deploy:deploy-file -DgroupId=de.steamwar -DartifactId=spigot -Dversion=1.21 -Dpackaging=jar -Dfile=Paper-Server/build/libs/paper-server-1.21.1-R0.1-SNAPSHOT-reobf.jar -Durl=file:///var/www/html/maven/" diff --git a/work/BuildData b/work/BuildData index ae1e7b1e31..533b02cd6b 160000 --- a/work/BuildData +++ b/work/BuildData @@ -1 +1 @@ -Subproject commit ae1e7b1e31cd3a3892bb05a6ccdcecc48c73c455 +Subproject commit 533b02cd6ba8dbf8c8607250b02bf2d8c36421e8 diff --git a/work/Bukkit b/work/Bukkit index 3a3bea5205..facd52d216 160000 --- a/work/Bukkit +++ b/work/Bukkit @@ -1 +1 @@ -Subproject commit 3a3bea52057e094e4060239ad8a5ce16cf4c8dcb +Subproject commit facd52d216243e2b7f90a9f4d5cc54a8f4bbcbf7 diff --git a/work/CraftBukkit b/work/CraftBukkit index 403accd563..b95736b13f 160000 --- a/work/CraftBukkit +++ b/work/CraftBukkit @@ -1 +1 @@ -Subproject commit 403accd56333f091f4ef8b5f870591785e26cdfe +Subproject commit b95736b13f776ba47322313f482c0520630c3533 diff --git a/work/Spigot b/work/Spigot index 5bbef5ad33..5a6439b9ec 160000 --- a/work/Spigot +++ b/work/Spigot @@ -1 +1 @@ -Subproject commit 5bbef5ad33ea0f6a5f743ce123b385d3d22ff3f9 +Subproject commit 5a6439b9eca2e28522873a0488e142cfc089c0fe