From 308e992c47f70ec3181ab43ba59c5ab08c60a6ac Mon Sep 17 00:00:00 2001 From: Owen1212055 <23108066+Owen1212055@users.noreply.github.com> Date: Wed, 24 Apr 2024 18:36:49 -0400 Subject: [PATCH] Patches!!!!!!! --- .../API-for-an-entity-s-scoreboard-name.patch | 0 .../API-for-updating-recipes-on-clients.patch | 2 +- ...he-collision-shape-of-a-block-before.patch | 0 .../Add-BlockFace-to-BlockDamageEvent.patch | 0 .../server/Add-BlockLockCheckEvent.patch | 2 +- ...ItemEvent-and-EntityCompostItemEvent.patch | 0 .../server/Add-Entity-Body-Yaw-API.patch | 0 .../server/Add-EntityFertilizeEggEvent.patch | 2 +- .../server/Add-Listing-API-for-Player.patch | 3 +- .../server/Add-MaterialTagsTest.patch | 0 .../Add-Mob-Experience-reward-API.patch | 0 .../server/Add-PlayerPickItemEvent.patch | 0 .../server/Add-Shearable-API.patch | 0 .../Add-Sign-getInteractableSideFor.patch | 3 +- .../Add-Sneaking-API-for-Entities.patch | 0 ...tion-for-spider-worldborder-climbing.patch | 0 .../Add-event-for-player-editing-sign.patch | 18 +- ...ck-state-to-BlockExplodeEvent-and-En.patch | 4 +- ...-to-remove-all-active-potion-effects.patch | 0 ...sing-InventoryHolders-to-inventories.patch | 4 +- ...ssing-SpigotConfig-logCommands-check.patch | 2 +- ...ssing-logs-for-log-ips-config-option.patch | 0 .../Add-option-to-disable-block-updates.patch | 30 ++-- .../server/Add-player-idle-duration-API.patch | 0 ...predicate-for-blocks-when-raytracing.patch | 0 ...ot-sanity-checks-in-container-clicks.patch | 0 ...-titleOverride-to-InventoryOpenEvent.patch | 0 .../server/Add-transient-modifier-API.patch | 0 .../server/Add-whitelist-events.patch | 0 ...stack-for-Player-sendEquipmentChange.patch | 0 ...proper-checking-of-empty-item-stacks.patch | 0 .../server/Allow-trident-custom-damage.patch | 6 +- ...-Lazy-Initialization-for-Enum-Fields.patch | 0 .../server/Bandaid-fix-for-Effect.patch | 8 - ...-redstone-on-top-of-trap-doors-early.patch | 0 ...tem-packets-with-collector-as-source.patch | 0 .../server/Cache-map-ids-on-item-frames.patch | 4 +- ...ll-BlockGrowEvent-for-missing-blocks.patch | 0 ...all-BlockRedstoneEvents-for-lecterns.patch | 0 .../Call-missing-BlockDispenseEvent.patch | 0 ...nfigurable-Region-Compression-Format.patch | 20 +-- ...ntity-tracking-range-by-Y-coordinate.patch | 0 .../Configure-sniffer-egg-hatch-time.patch | 0 ...ectly-handle-ArmorStand-invisibility.patch | 0 ...nk-items-during-EntityResurrectEvent.patch | 0 ...place-methods-with-old-StructureType.patch | 0 ...nd-water-fluid-explosion-resistance-.patch | 0 ...l-proximity-check-before-entity-look.patch | 0 ...-entities-in-chunks-that-are-positio.patch | 2 +- ...k-if-we-can-see-non-visible-entities.patch | 0 ...anhasbukkit-default-if-alias-block-e.patch | 0 ...d-chunks-for-supporting-block-checks.patch | 2 +- ...te-namespaced-commands-if-send-names.patch | 0 .../server/Expand-LingeringPotion-API.patch | 6 +- .../server/Expand-PlayerItemMendEvent.patch | 0 .../server/Expand-Pose-API.patch | 4 +- ...enceOrb-should-call-EntitySpawnEvent.patch | 0 .../Expose-hand-in-BlockCanBuildEvent.patch | 0 ...sion-moving-velocity-to-VehicleBlock.patch | 4 +- ...-entity-death-event-for-ender-dragon.patch | 0 .../server/Fix-BanList-API.patch | 0 ...ity-drop-not-updating-the-client-inv.patch | 0 ...event-sleeping-villagers-moving-towa.patch | 0 ...n-AdvancementProgress-getDateAwarded.patch | 0 ...-NPE-in-SculkBloomEvent-world-access.patch | 0 ...-Allay-stopDancing-while-not-dancing.patch | 0 .../server/Fix-NPE-on-Boat-getStatus.patch | 0 .../Fix-SpawnEggMeta-get-setSpawnedType.patch | 0 .../Fix-UnsafeValues-loadAdvancement.patch | 2 +- .../Fix-a-couple-of-upstream-bed-issues.patch | 0 ...vancement-triggers-for-entity-damage.patch | 6 +- .../server/Fix-block-place-logic.patch | 8 +- ...permission-levels-for-command-blocks.patch | 0 ...ng-to-bad-recipes-in-furnace-like-ti.patch | 0 ...x-custom-statistic-criteria-creation.patch | 0 ...Fix-demo-flag-not-enabling-demo-mode.patch | 8 +- ...Fix-force-opening-enchantment-tables.patch | 4 +- ...ies-in-dispense-events-regarding-sta.patch | 160 +++++------------- ...crafting-result-amount-for-fireworks.patch | 2 +- ...inventories-returning-null-Locations.patch | 0 .../server/Fix-inventory-desync.patch | 2 +- ...ix-missing-map-initialize-event-call.patch | 7 +- ...ix-possible-NPE-on-painting-creation.patch | 0 ...on-on-UpgradeData.BlockFixers-class-.patch | 0 ...ation-when-spawning-display-entities.patch | 4 +- ...Fix-silent-equipment-change-for-mobs.patch | 9 +- .../Fix-sniffer-removeExploredLocation.patch | 0 .../server/Fix-spigot-s-Forced-Stats.patch | 0 ...und-playing-for-BlockItem-ItemStacks.patch | 2 +- ...ingEffect-powers-lightning-rods-and-.patch | 0 ...sidebar-objectives-not-being-cleared.patch | 0 .../Fix-text-display-error-on-spawn.patch | 0 .../server/Flying-Fall-Damage.patch | 4 +- ...Folia-scheduler-and-owned-region-API.patch | 6 +- .../Implement-OfflinePlayer-isConnected.patch | 2 +- .../Implement-PlayerFailMoveEvent.patch | 12 +- .../server/Improve-PortalEvents.patch | 2 +- .../server/Improve-logging-and-errors.patch | 8 +- ...st-throw-both-Spread-and-Grow-Events.patch | 0 .../server/More-DragonBattle-API.patch | 0 .../More-accurate-isInOpenWater-impl.patch | 0 .../Only-capture-actual-tree-growth.patch | 2 +- ...ase-allay-memory-on-non-item-targets.patch | 0 ...Timer-for-Wandering-Traders-spawned-.patch | 0 ...ck-item-frames-if-players-can-see-it.patch | 6 +- .../server/Optimize-VarInts.patch | 0 ...e-nearest-structure-border-iteration.patch | 0 .../Optimize-player-lookups-for-beacons.patch | 0 ...nts-being-fired-from-unloaded-chunks.patch | 2 +- ...expired-keys-from-impacting-new-join.patch | 2 +- ...y-handle-BlockBreakEvent-isDropItems.patch | 6 +- ...esh-ProjectileSource-for-projectiles.patch | 2 +- ...tItemStack-setAmount-null-assignment.patch | 0 ...ata-neighbour-ticks-outside-of-range.patch | 0 ...eData-on-more-entities-when-spawning.patch | 12 +- .../server/SculkCatalyst-bloom-API.patch | 4 +- ...Skip-POI-finding-if-stuck-in-vehicle.patch | 0 ...uence-violations-like-they-should-be.patch | 0 ...ta-when-attaching-firework-to-entity.patch | 0 .../Use-array-for-gamerule-storage.patch | 4 +- .../Use-correct-seed-on-api-world-load.patch | 2 +- ...urce-for-mushroom-block-spread-event.patch | 0 ...le-player-info-update-packet-on-join.patch | 0 .../server/Win-Screen-API.patch | 0 ...config-for-disabling-entity-tag-tags.patch | 21 ++- ...apLike-spam-for-missing-key-selector.patch | 2 +- .../fix-item-meta-for-tadpole-buckets.patch | 0 ...duplicate-animate-packet-for-records.patch | 0 ...access-to-lookups-field-in-RegistryO.patch | 0 ...896-Array-backed-synched-entity-data.patch | 0 .../0931-Deep-clone-unhandled-nbt-tags.patch | 0 ...able-for-initializing-CraftLootTable.patch | 0 132 files changed, 185 insertions(+), 254 deletions(-) rename patches/{unapplied => }/server/API-for-an-entity-s-scoreboard-name.patch (100%) rename patches/{unapplied => }/server/API-for-updating-recipes-on-clients.patch (99%) rename patches/{unapplied => }/server/Add-API-to-get-the-collision-shape-of-a-block-before.patch (100%) rename patches/{unapplied => }/server/Add-BlockFace-to-BlockDamageEvent.patch (100%) rename patches/{unapplied => }/server/Add-BlockLockCheckEvent.patch (98%) rename patches/{unapplied => }/server/Add-CompostItemEvent-and-EntityCompostItemEvent.patch (100%) rename patches/{unapplied => }/server/Add-Entity-Body-Yaw-API.patch (100%) rename patches/{unapplied => }/server/Add-EntityFertilizeEggEvent.patch (99%) rename patches/{unapplied => }/server/Add-Listing-API-for-Player.patch (99%) rename patches/{unapplied => }/server/Add-MaterialTagsTest.patch (100%) rename patches/{unapplied => }/server/Add-Mob-Experience-reward-API.patch (100%) rename patches/{unapplied => }/server/Add-PlayerPickItemEvent.patch (100%) rename patches/{unapplied => }/server/Add-Shearable-API.patch (100%) rename patches/{unapplied => }/server/Add-Sign-getInteractableSideFor.patch (96%) rename patches/{unapplied => }/server/Add-Sneaking-API-for-Entities.patch (100%) rename patches/{unapplied => }/server/Add-config-option-for-spider-worldborder-climbing.patch (100%) rename patches/{unapplied => }/server/Add-event-for-player-editing-sign.patch (88%) rename patches/{unapplied => }/server/Add-exploded-block-state-to-BlockExplodeEvent-and-En.patch (98%) rename patches/{unapplied => }/server/Add-method-to-remove-all-active-potion-effects.patch (100%) rename patches/{unapplied => }/server/Add-missing-InventoryHolders-to-inventories.patch (99%) rename patches/{unapplied => }/server/Add-missing-SpigotConfig-logCommands-check.patch (91%) rename patches/{unapplied => }/server/Add-missing-logs-for-log-ips-config-option.patch (100%) rename patches/{unapplied => }/server/Add-option-to-disable-block-updates.patch (86%) rename patches/{unapplied => }/server/Add-player-idle-duration-API.patch (100%) rename patches/{unapplied => }/server/Add-predicate-for-blocks-when-raytracing.patch (100%) rename patches/{unapplied => }/server/Add-slot-sanity-checks-in-container-clicks.patch (100%) rename patches/{unapplied => }/server/Add-titleOverride-to-InventoryOpenEvent.patch (100%) rename patches/{unapplied => }/server/Add-transient-modifier-API.patch (100%) rename patches/{unapplied => }/server/Add-whitelist-events.patch (100%) rename patches/{unapplied => }/server/Allow-null-itemstack-for-Player-sendEquipmentChange.patch (100%) rename patches/{unapplied => }/server/Allow-proper-checking-of-empty-item-stacks.patch (100%) rename patches/{unapplied => }/server/Allow-trident-custom-damage.patch (89%) rename patches/{unapplied => }/server/Avoid-Lazy-Initialization-for-Enum-Fields.patch (100%) rename patches/{unapplied => }/server/Bandaid-fix-for-Effect.patch (95%) rename patches/{unapplied => }/server/Break-redstone-on-top-of-trap-doors-early.patch (100%) rename patches/{unapplied => }/server/Broadcast-take-item-packets-with-collector-as-source.patch (100%) rename patches/{unapplied => }/server/Cache-map-ids-on-item-frames.patch (95%) rename patches/{unapplied => }/server/Call-BlockGrowEvent-for-missing-blocks.patch (100%) rename patches/{unapplied => }/server/Call-BlockRedstoneEvents-for-lecterns.patch (100%) rename patches/{unapplied => }/server/Call-missing-BlockDispenseEvent.patch (100%) rename patches/{unapplied => }/server/Configurable-Region-Compression-Format.patch (80%) rename patches/{unapplied => }/server/Configurable-entity-tracking-range-by-Y-coordinate.patch (100%) rename patches/{unapplied => }/server/Configure-sniffer-egg-hatch-time.patch (100%) rename patches/{unapplied => }/server/Correctly-handle-ArmorStand-invisibility.patch (100%) rename patches/{unapplied => }/server/Correctly-shrink-items-during-EntityResurrectEvent.patch (100%) rename patches/{unapplied => }/server/Deprecate-and-replace-methods-with-old-StructureType.patch (100%) rename patches/{unapplied => }/server/Determine-lava-and-water-fluid-explosion-resistance-.patch (100%) rename patches/{unapplied => }/server/Do-crystal-portal-proximity-check-before-entity-look.patch (100%) rename patches/{unapplied => }/server/Do-not-read-tile-entities-in-chunks-that-are-positio.patch (98%) rename patches/{unapplied => }/server/Don-t-check-if-we-can-see-non-visible-entities.patch (100%) rename patches/{unapplied => }/server/Don-t-enforce-icanhasbukkit-default-if-alias-block-e.patch (100%) rename patches/{unapplied => }/server/Don-t-load-chunks-for-supporting-block-checks.patch (90%) rename patches/{unapplied => }/server/Don-t-tab-complete-namespaced-commands-if-send-names.patch (100%) rename patches/{unapplied => }/server/Expand-LingeringPotion-API.patch (70%) rename patches/{unapplied => }/server/Expand-PlayerItemMendEvent.patch (100%) rename patches/{unapplied => }/server/Expand-Pose-API.patch (91%) rename patches/{unapplied => }/server/ExperienceOrb-should-call-EntitySpawnEvent.patch (100%) rename patches/{unapplied => }/server/Expose-hand-in-BlockCanBuildEvent.patch (100%) rename patches/{unapplied => }/server/Expose-pre-collision-moving-velocity-to-VehicleBlock.patch (87%) rename patches/{unapplied => }/server/Fire-entity-death-event-for-ender-dragon.patch (100%) rename patches/{unapplied => }/server/Fix-BanList-API.patch (100%) rename patches/{unapplied => }/server/Fix-HumanEntity-drop-not-updating-the-client-inv.patch (100%) rename patches/{unapplied => }/server/Fix-MC-157464-Prevent-sleeping-villagers-moving-towa.patch (100%) rename patches/{unapplied => }/server/Fix-NPE-in-AdvancementProgress-getDateAwarded.patch (100%) rename patches/{unapplied => }/server/Fix-NPE-in-SculkBloomEvent-world-access.patch (100%) rename patches/{unapplied => }/server/Fix-NPE-on-Allay-stopDancing-while-not-dancing.patch (100%) rename patches/{unapplied => }/server/Fix-NPE-on-Boat-getStatus.patch (100%) rename patches/{unapplied => }/server/Fix-SpawnEggMeta-get-setSpawnedType.patch (100%) rename patches/{unapplied => }/server/Fix-UnsafeValues-loadAdvancement.patch (93%) rename patches/{unapplied => }/server/Fix-a-couple-of-upstream-bed-issues.patch (100%) rename patches/{unapplied => }/server/Fix-advancement-triggers-for-entity-damage.patch (93%) rename patches/{unapplied => }/server/Fix-block-place-logic.patch (92%) rename patches/{unapplied => }/server/Fix-cmd-permission-levels-for-command-blocks.patch (100%) rename patches/{unapplied => }/server/Fix-crash-relating-to-bad-recipes-in-furnace-like-ti.patch (100%) rename patches/{unapplied => }/server/Fix-custom-statistic-criteria-creation.patch (100%) rename patches/{unapplied => }/server/Fix-demo-flag-not-enabling-demo-mode.patch (87%) rename patches/{unapplied => }/server/Fix-force-opening-enchantment-tables.patch (84%) rename patches/{unapplied => }/server/Fix-inconsistencies-in-dispense-events-regarding-sta.patch (83%) rename patches/{unapplied => }/server/Fix-incorrect-crafting-result-amount-for-fireworks.patch (93%) rename patches/{unapplied => }/server/Fix-inventories-returning-null-Locations.patch (100%) rename patches/{unapplied => }/server/Fix-inventory-desync.patch (98%) rename patches/{unapplied => }/server/Fix-missing-map-initialize-event-call.patch (87%) rename patches/{unapplied => }/server/Fix-possible-NPE-on-painting-creation.patch (100%) rename patches/{unapplied => }/server/Fix-race-condition-on-UpgradeData.BlockFixers-class-.patch (100%) rename patches/{unapplied => }/server/Fix-rotation-when-spawning-display-entities.patch (93%) rename patches/{unapplied => }/server/Fix-silent-equipment-change-for-mobs.patch (93%) rename patches/{unapplied => }/server/Fix-sniffer-removeExploredLocation.patch (100%) rename patches/{unapplied => }/server/Fix-spigot-s-Forced-Stats.patch (100%) rename patches/{unapplied => }/server/Fix-spigot-sound-playing-for-BlockItem-ItemStacks.patch (95%) rename patches/{unapplied => }/server/Fix-strikeLightningEffect-powers-lightning-rods-and-.patch (100%) rename patches/{unapplied => }/server/Fix-team-sidebar-objectives-not-being-cleared.patch (100%) rename patches/{unapplied => }/server/Fix-text-display-error-on-spawn.patch (100%) rename patches/{unapplied => }/server/Flying-Fall-Damage.patch (96%) rename patches/{unapplied => }/server/Folia-scheduler-and-owned-region-API.patch (99%) rename patches/{unapplied => }/server/Implement-OfflinePlayer-isConnected.patch (95%) rename patches/{unapplied => }/server/Implement-PlayerFailMoveEvent.patch (95%) rename patches/{unapplied => }/server/Improve-PortalEvents.patch (93%) rename patches/{unapplied => }/server/Improve-logging-and-errors.patch (96%) rename patches/{unapplied => }/server/Make-Amethyst-throw-both-Spread-and-Grow-Events.patch (100%) rename patches/{unapplied => }/server/More-DragonBattle-API.patch (100%) rename patches/{unapplied => }/server/More-accurate-isInOpenWater-impl.patch (100%) rename patches/{unapplied => }/server/Only-capture-actual-tree-growth.patch (98%) rename patches/{unapplied => }/server/Only-erase-allay-memory-on-non-item-targets.patch (100%) rename patches/{unapplied => }/server/Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch (100%) rename patches/{unapplied => }/server/Only-tick-item-frames-if-players-can-see-it.patch (90%) rename patches/{unapplied => }/server/Optimize-VarInts.patch (100%) rename patches/{unapplied => }/server/Optimize-nearest-structure-border-iteration.patch (100%) rename patches/{unapplied => }/server/Optimize-player-lookups-for-beacons.patch (100%) rename patches/{unapplied => }/server/Prevent-GameEvents-being-fired-from-unloaded-chunks.patch (91%) rename patches/{unapplied => }/server/Prevent-causing-expired-keys-from-impacting-new-join.patch (98%) rename patches/{unapplied => }/server/Properly-handle-BlockBreakEvent-isDropItems.patch (97%) rename patches/{unapplied => }/server/Refresh-ProjectileSource-for-projectiles.patch (97%) rename patches/{unapplied => }/server/Remove-CraftItemStack-setAmount-null-assignment.patch (100%) rename patches/{unapplied => }/server/Remove-UpgradeData-neighbour-ticks-outside-of-range.patch (100%) rename patches/{unapplied => }/server/Respect-randomizeData-on-more-entities-when-spawning.patch (80%) rename patches/{unapplied => }/server/SculkCatalyst-bloom-API.patch (93%) rename patches/{unapplied => }/server/Skip-POI-finding-if-stuck-in-vehicle.patch (100%) rename patches/{unapplied => }/server/Treat-sequence-violations-like-they-should-be.patch (100%) rename patches/{unapplied => }/server/Update-entity-data-when-attaching-firework-to-entity.patch (100%) rename patches/{unapplied => }/server/Use-array-for-gamerule-storage.patch (88%) rename patches/{unapplied => }/server/Use-correct-seed-on-api-world-load.patch (92%) rename patches/{unapplied => }/server/Use-correct-source-for-mushroom-block-spread-event.patch (100%) rename patches/{unapplied => }/server/Use-single-player-info-update-packet-on-join.patch (100%) rename patches/{unapplied => }/server/Win-Screen-API.patch (100%) rename patches/{unapplied => }/server/config-for-disabling-entity-tag-tags.patch (57%) rename patches/{unapplied => }/server/fix-MapLike-spam-for-missing-key-selector.patch (93%) rename patches/{unapplied => }/server/fix-item-meta-for-tadpole-buckets.patch (100%) rename patches/{unapplied => }/server/remove-duplicate-animate-packet-for-records.patch (100%) rename patches/unapplied/server/Fix-concurrenct-access-to-lookups-field-in-RegistryO.patch => removed-patches-1-20-5/0876-Fix-concurrenct-access-to-lookups-field-in-RegistryO.patch (100%) rename patches/unapplied/server/Array-backed-synched-entity-data.patch => removed-patches-1-20-5/0896-Array-backed-synched-entity-data.patch (100%) rename patches/unapplied/server/Deep-clone-unhandled-nbt-tags.patch => removed-patches-1-20-5/0931-Deep-clone-unhandled-nbt-tags.patch (100%) rename patches/unapplied/server/Use-correct-variable-for-initializing-CraftLootTable.patch => removed-patches-1-20-5/0955-Use-correct-variable-for-initializing-CraftLootTable.patch (100%) diff --git a/patches/unapplied/server/API-for-an-entity-s-scoreboard-name.patch b/patches/server/API-for-an-entity-s-scoreboard-name.patch similarity index 100% rename from patches/unapplied/server/API-for-an-entity-s-scoreboard-name.patch rename to patches/server/API-for-an-entity-s-scoreboard-name.patch diff --git a/patches/unapplied/server/API-for-updating-recipes-on-clients.patch b/patches/server/API-for-updating-recipes-on-clients.patch similarity index 99% rename from patches/unapplied/server/API-for-updating-recipes-on-clients.patch rename to patches/server/API-for-updating-recipes-on-clients.patch index 0a7b99632e..6556a6fdf3 100644 --- a/patches/unapplied/server/API-for-updating-recipes-on-clients.patch +++ b/patches/server/API-for-updating-recipes-on-clients.patch @@ -35,7 +35,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + } + public void reloadRecipeData() { + // Paper end - API for updating recipes on clients - ClientboundUpdateRecipesPacket packetplayoutrecipeupdate = new ClientboundUpdateRecipesPacket(this.server.getRecipeManager().getRecipes()); + ClientboundUpdateRecipesPacket packetplayoutrecipeupdate = new ClientboundUpdateRecipesPacket(this.server.getRecipeManager().getOrderedRecipes()); Iterator iterator1 = this.players.iterator(); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java diff --git a/patches/unapplied/server/Add-API-to-get-the-collision-shape-of-a-block-before.patch b/patches/server/Add-API-to-get-the-collision-shape-of-a-block-before.patch similarity index 100% rename from patches/unapplied/server/Add-API-to-get-the-collision-shape-of-a-block-before.patch rename to patches/server/Add-API-to-get-the-collision-shape-of-a-block-before.patch diff --git a/patches/unapplied/server/Add-BlockFace-to-BlockDamageEvent.patch b/patches/server/Add-BlockFace-to-BlockDamageEvent.patch similarity index 100% rename from patches/unapplied/server/Add-BlockFace-to-BlockDamageEvent.patch rename to patches/server/Add-BlockFace-to-BlockDamageEvent.patch diff --git a/patches/unapplied/server/Add-BlockLockCheckEvent.patch b/patches/server/Add-BlockLockCheckEvent.patch similarity index 98% rename from patches/unapplied/server/Add-BlockLockCheckEvent.patch rename to patches/server/Add-BlockLockCheckEvent.patch index 3f6570434a..5bf9837d9c 100644 --- a/patches/unapplied/server/Add-BlockLockCheckEvent.patch +++ b/patches/server/Add-BlockLockCheckEvent.patch @@ -54,7 +54,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + } // Paper - Add BlockLockCheckEvent } - @Nullable + protected abstract NonNullList<ItemStack> getItems(); diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java diff --git a/patches/unapplied/server/Add-CompostItemEvent-and-EntityCompostItemEvent.patch b/patches/server/Add-CompostItemEvent-and-EntityCompostItemEvent.patch similarity index 100% rename from patches/unapplied/server/Add-CompostItemEvent-and-EntityCompostItemEvent.patch rename to patches/server/Add-CompostItemEvent-and-EntityCompostItemEvent.patch diff --git a/patches/unapplied/server/Add-Entity-Body-Yaw-API.patch b/patches/server/Add-Entity-Body-Yaw-API.patch similarity index 100% rename from patches/unapplied/server/Add-Entity-Body-Yaw-API.patch rename to patches/server/Add-Entity-Body-Yaw-API.patch diff --git a/patches/unapplied/server/Add-EntityFertilizeEggEvent.patch b/patches/server/Add-EntityFertilizeEggEvent.patch similarity index 99% rename from patches/unapplied/server/Add-EntityFertilizeEggEvent.patch rename to patches/server/Add-EntityFertilizeEggEvent.patch index 37919b8754..4a981b15dd 100644 --- a/patches/unapplied/server/Add-EntityFertilizeEggEvent.patch +++ b/patches/server/Add-EntityFertilizeEggEvent.patch @@ -32,7 +32,7 @@ diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java b/sr index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java -@@ -0,0 +0,0 @@ public class Frog extends Animal implements VariantHolder<FrogVariant> { +@@ -0,0 +0,0 @@ public class Frog extends Animal implements VariantHolder<Holder<FrogVariant>> { @Override public void spawnChildFromBreeding(ServerLevel world, Animal other) { diff --git a/patches/unapplied/server/Add-Listing-API-for-Player.patch b/patches/server/Add-Listing-API-for-Player.patch similarity index 99% rename from patches/unapplied/server/Add-Listing-API-for-Player.patch rename to patches/server/Add-Listing-API-for-Player.patch index 112790ba01..59ef0cade3 100644 --- a/patches/unapplied/server/Add-Listing-API-for-Player.patch +++ b/patches/server/Add-Listing-API-for-Player.patch @@ -52,8 +52,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + return new ClientboundPlayerInfoUpdatePacket(enumSet, new ClientboundPlayerInfoUpdatePacket.Entry(playerInfoId, listed)); + } + // Paper end - Add Listing API for Player -+ - public ClientboundPlayerInfoUpdatePacket(FriendlyByteBuf buf) { + private ClientboundPlayerInfoUpdatePacket(RegistryFriendlyByteBuf buf) { this.actions = buf.readEnumSet(ClientboundPlayerInfoUpdatePacket.Action.class); this.entries = buf.readList(buf2 -> { @@ -0,0 +0,0 @@ public class ClientboundPlayerInfoUpdatePacket implements Packet<ClientGamePacke diff --git a/patches/unapplied/server/Add-MaterialTagsTest.patch b/patches/server/Add-MaterialTagsTest.patch similarity index 100% rename from patches/unapplied/server/Add-MaterialTagsTest.patch rename to patches/server/Add-MaterialTagsTest.patch diff --git a/patches/unapplied/server/Add-Mob-Experience-reward-API.patch b/patches/server/Add-Mob-Experience-reward-API.patch similarity index 100% rename from patches/unapplied/server/Add-Mob-Experience-reward-API.patch rename to patches/server/Add-Mob-Experience-reward-API.patch diff --git a/patches/unapplied/server/Add-PlayerPickItemEvent.patch b/patches/server/Add-PlayerPickItemEvent.patch similarity index 100% rename from patches/unapplied/server/Add-PlayerPickItemEvent.patch rename to patches/server/Add-PlayerPickItemEvent.patch diff --git a/patches/unapplied/server/Add-Shearable-API.patch b/patches/server/Add-Shearable-API.patch similarity index 100% rename from patches/unapplied/server/Add-Shearable-API.patch rename to patches/server/Add-Shearable-API.patch diff --git a/patches/unapplied/server/Add-Sign-getInteractableSideFor.patch b/patches/server/Add-Sign-getInteractableSideFor.patch similarity index 96% rename from patches/unapplied/server/Add-Sign-getInteractableSideFor.patch rename to patches/server/Add-Sign-getInteractableSideFor.patch index 03903e0992..6491480c48 100644 --- a/patches/unapplied/server/Add-Sign-getInteractableSideFor.patch +++ b/patches/server/Add-Sign-getInteractableSideFor.patch @@ -19,8 +19,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + // Paper end - Add Sign#getInteractableSideFor Block block = this.getBlockState().getBlock(); - if (block instanceof SignBlock) { - SignBlock blocksign = (SignBlock) block; + if (block instanceof SignBlock blocksign) { Vec3 vec3d = blocksign.getSignHitboxCenterPosition(this.getBlockState()); - double d0 = player.getX() - ((double) this.getBlockPos().getX() + vec3d.x); - double d1 = player.getZ() - ((double) this.getBlockPos().getZ() + vec3d.z); diff --git a/patches/unapplied/server/Add-Sneaking-API-for-Entities.patch b/patches/server/Add-Sneaking-API-for-Entities.patch similarity index 100% rename from patches/unapplied/server/Add-Sneaking-API-for-Entities.patch rename to patches/server/Add-Sneaking-API-for-Entities.patch diff --git a/patches/unapplied/server/Add-config-option-for-spider-worldborder-climbing.patch b/patches/server/Add-config-option-for-spider-worldborder-climbing.patch similarity index 100% rename from patches/unapplied/server/Add-config-option-for-spider-worldborder-climbing.patch rename to patches/server/Add-config-option-for-spider-worldborder-climbing.patch diff --git a/patches/unapplied/server/Add-event-for-player-editing-sign.patch b/patches/server/Add-event-for-player-editing-sign.patch similarity index 88% rename from patches/unapplied/server/Add-event-for-player-editing-sign.patch rename to patches/server/Add-event-for-player-editing-sign.patch index 0183110dce..8959a8ecf1 100644 --- a/patches/unapplied/server/Add-event-for-player-editing-sign.patch +++ b/patches/server/Add-event-for-player-editing-sign.patch @@ -8,7 +8,7 @@ diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/ja index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -0,0 +0,0 @@ public final class ItemStack { +@@ -0,0 +0,0 @@ public final class ItemStack implements DataComponentHolder { try { if (world.getBlockEntity(SignItem.openSign) instanceof SignBlockEntity tileentitysign) { if (world.getBlockState(SignItem.openSign).getBlock() instanceof SignBlock blocksign) { @@ -22,14 +22,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/net/minecraft/world/level/block/SignBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SignBlock.java @@ -0,0 +0,0 @@ public abstract class SignBlock extends BaseEntityBlock implements SimpleWaterlo - } else if (flag2) { - return InteractionResult.SUCCESS; - } else if (!this.otherPlayerIsEditingSign(player, tileentitysign) && player.mayBuild() && this.hasEditableText(player, tileentitysign, flag1)) { -- this.openTextEdit(player, tileentitysign, flag1, org.bukkit.event.player.PlayerSignOpenEvent.Cause.INTERACT); // CraftBukkit -+ this.openTextEdit(player, tileentitysign, flag1, io.papermc.paper.event.player.PlayerOpenSignEvent.Cause.INTERACT); // Paper - Add PlayerOpenSignEvent - return this.getInteractionResult(flag); - } else { - return InteractionResult.PASS; + } else if (flag1) { + return InteractionResult.SUCCESS; + } else if (!this.otherPlayerIsEditingSign(player, tileentitysign) && player.mayBuild() && this.hasEditableText(player, tileentitysign, flag)) { +- this.openTextEdit(player, tileentitysign, flag, org.bukkit.event.player.PlayerSignOpenEvent.Cause.INTERACT); // CraftBukkit ++ this.openTextEdit(player, tileentitysign, flag, io.papermc.paper.event.player.PlayerOpenSignEvent.Cause.INTERACT); // Paper - Add PlayerOpenSignEvent + return InteractionResult.SUCCESS; + } else { + return InteractionResult.PASS; @@ -0,0 +0,0 @@ public abstract class SignBlock extends BaseEntityBlock implements SimpleWaterlo return blockpropertywood; } diff --git a/patches/unapplied/server/Add-exploded-block-state-to-BlockExplodeEvent-and-En.patch b/patches/server/Add-exploded-block-state-to-BlockExplodeEvent-and-En.patch similarity index 98% rename from patches/unapplied/server/Add-exploded-block-state-to-BlockExplodeEvent-and-En.patch rename to patches/server/Add-exploded-block-state-to-BlockExplodeEvent-and-En.patch index 478c81e18b..96eff03c2d 100644 --- a/patches/unapplied/server/Add-exploded-block-state-to-BlockExplodeEvent-and-En.patch +++ b/patches/server/Add-exploded-block-state-to-BlockExplodeEvent-and-En.patch @@ -125,7 +125,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java @@ -0,0 +0,0 @@ public final class CraftBlockStates { - BlockEntity tileEntity = (blockEntityTag == null) ? null : BlockEntity.loadStatic(blockPosition, blockData, blockEntityTag); + BlockEntity tileEntity = (blockEntityTag == null) ? null : BlockEntity.loadStatic(blockPosition, blockData, blockEntityTag, registry); return CraftBlockStates.getBlockState(null, blockPosition, blockData, tileEntity); } + // Paper start - add exploded state @@ -142,7 +142,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -0,0 +0,0 @@ public class CraftEventFactory { - Entity damager = source.getCausingEntity(); + Entity damager = (bukkitDamageSource.isIndirect() && source.getDirectEntity() != null) ? source.getDirectEntity() : source.getCausingEntity(); if (source.is(DamageTypeTags.IS_EXPLOSION)) { if (damager == null) { - return CraftEventFactory.callEntityDamageEvent(source.getDirectBlock(), entity, DamageCause.BLOCK_EXPLOSION, bukkitDamageSource, modifiers, modifierFunctions, cancelled); diff --git a/patches/unapplied/server/Add-method-to-remove-all-active-potion-effects.patch b/patches/server/Add-method-to-remove-all-active-potion-effects.patch similarity index 100% rename from patches/unapplied/server/Add-method-to-remove-all-active-potion-effects.patch rename to patches/server/Add-method-to-remove-all-active-potion-effects.patch diff --git a/patches/unapplied/server/Add-missing-InventoryHolders-to-inventories.patch b/patches/server/Add-missing-InventoryHolders-to-inventories.patch similarity index 99% rename from patches/unapplied/server/Add-missing-InventoryHolders-to-inventories.patch rename to patches/server/Add-missing-InventoryHolders-to-inventories.patch index 0c182bf84b..71e6275c06 100644 --- a/patches/unapplied/server/Add-missing-InventoryHolders-to-inventories.patch +++ b/patches/server/Add-missing-InventoryHolders-to-inventories.patch @@ -84,8 +84,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public BeaconMenu(int syncId, Container inventory, ContainerData propertyDelegate, ContainerLevelAccess context) { super(MenuType.BEACON, syncId); this.player = (Inventory) inventory; // CraftBukkit - TODO: check this -- this.beacon = new SimpleContainer(1) { -+ this.beacon = new SimpleContainer(this.createBlockHolder(context), 1) { // Paper - Add missing InventoryHolders +- this.beacon = new SimpleContainer(1) { // CraftBukkit - decompile error ++ this.beacon = new SimpleContainer(this.createBlockHolder(context), 1) { // CraftBukkit - decompile error // Paper - Add missing InventoryHolders @Override public boolean canPlaceItem(int slot, ItemStack stack) { return stack.is(ItemTags.BEACON_PAYMENT_ITEMS); diff --git a/patches/unapplied/server/Add-missing-SpigotConfig-logCommands-check.patch b/patches/server/Add-missing-SpigotConfig-logCommands-check.patch similarity index 91% rename from patches/unapplied/server/Add-missing-SpigotConfig-logCommands-check.patch rename to patches/server/Add-missing-SpigotConfig-logCommands-check.patch index 74e720da9c..e92337bd43 100644 --- a/patches/unapplied/server/Add-missing-SpigotConfig-logCommands-check.patch +++ b/patches/server/Add-missing-SpigotConfig-logCommands-check.patch @@ -9,7 +9,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl - private void performChatCommand(ServerboundChatCommandPacket packet, LastSeenMessages lastSeenMessages) { + private void performSignedChatCommand(ServerboundChatCommandSignedPacket packet, LastSeenMessages lastSeenMessages) { // CraftBukkit start String command = "/" + packet.command(); + if (org.spigotmc.SpigotConfig.logCommands) { // Paper - Add missing SpigotConfig logCommands check diff --git a/patches/unapplied/server/Add-missing-logs-for-log-ips-config-option.patch b/patches/server/Add-missing-logs-for-log-ips-config-option.patch similarity index 100% rename from patches/unapplied/server/Add-missing-logs-for-log-ips-config-option.patch rename to patches/server/Add-missing-logs-for-log-ips-config-option.patch diff --git a/patches/unapplied/server/Add-option-to-disable-block-updates.patch b/patches/server/Add-option-to-disable-block-updates.patch similarity index 86% rename from patches/unapplied/server/Add-option-to-disable-block-updates.patch rename to patches/server/Add-option-to-disable-block-updates.patch index e6fed11761..c2f2e36ba2 100644 --- a/patches/unapplied/server/Add-option-to-disable-block-updates.patch +++ b/patches/server/Add-option-to-disable-block-updates.patch @@ -19,7 +19,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public class ChorusPlantBlock extends PipeBlock { @Override - public BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { + protected BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { + if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableChorusPlantUpdates) return state; // Paper - add option to disable block updates if (!state.canSurvive(world, pos)) { world.scheduleTick(pos, this, 1); @@ -27,7 +27,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public class ChorusPlantBlock extends PipeBlock { @Override - public void tick(BlockState state, ServerLevel world, BlockPos pos, RandomSource random) { + protected void tick(BlockState state, ServerLevel world, BlockPos pos, RandomSource random) { + if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableChorusPlantUpdates) return; // Paper - add option to disable block updates if (!state.canSurvive(world, pos)) { world.destroyBlock(pos, true); @@ -35,7 +35,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public class ChorusPlantBlock extends PipeBlock { @Override - public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { + protected boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { + if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableChorusPlantUpdates) return true; // Paper - add option to disable block updates BlockState blockState = world.getBlockState(pos.below()); boolean bl = !world.getBlockState(pos.above()).isAir() && !blockState.isAir(); @@ -55,7 +55,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public class HugeMushroomBlock extends Block { @Override - public BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { + protected BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { + if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableMushroomBlockUpdates) return state; // Paper - add option to disable block updates return neighborState.is(this) ? state.setValue(PROPERTY_BY_DIRECTION.get(direction), Boolean.valueOf(false)) @@ -63,7 +63,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public class HugeMushroomBlock extends Block { @Override - public BlockState rotate(BlockState state, Rotation rotation) { + protected BlockState rotate(BlockState state, Rotation rotation) { + if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableMushroomBlockUpdates) return state; // Paper - add option to disable block updates return state.setValue(PROPERTY_BY_DIRECTION.get(rotation.rotate(Direction.NORTH)), state.getValue(NORTH)) .setValue(PROPERTY_BY_DIRECTION.get(rotation.rotate(Direction.SOUTH)), state.getValue(SOUTH)) @@ -71,7 +71,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public class HugeMushroomBlock extends Block { @Override - public BlockState mirror(BlockState state, Mirror mirror) { + protected BlockState mirror(BlockState state, Mirror mirror) { + if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableMushroomBlockUpdates) return state; // Paper - add option to disable block updates return state.setValue(PROPERTY_BY_DIRECTION.get(mirror.mirror(Direction.NORTH)), state.getValue(NORTH)) .setValue(PROPERTY_BY_DIRECTION.get(mirror.mirror(Direction.SOUTH)), state.getValue(SOUTH)) @@ -89,7 +89,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } @Override - public BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { + protected BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { + if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableNoteblockUpdates) return state; // Paper - prevent noteblock instrument from updating boolean flag = direction.getAxis() == Direction.Axis.Y; @@ -97,13 +97,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public class NoteBlock extends Block { @Override - public void neighborChanged(BlockState state, Level world, BlockPos pos, Block sourceBlock, BlockPos sourcePos, boolean notify) { + protected void neighborChanged(BlockState state, Level world, BlockPos pos, Block sourceBlock, BlockPos sourcePos, boolean notify) { + if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableNoteblockUpdates) return; // Paper - prevent noteblock powered-state from updating boolean flag1 = world.hasNeighborSignal(pos); if (flag1 != (Boolean) state.getValue(NoteBlock.POWERED)) { @@ -0,0 +0,0 @@ public class NoteBlock extends Block { - } else if (world.isClientSide) { + if (world.isClientSide) { return InteractionResult.SUCCESS; } else { - state = (BlockState) state.cycle(NoteBlock.NOTE); @@ -126,13 +126,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public class TripWireBlock extends Block { @Override - public BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { + protected BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { + if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableTripwireUpdates) return state; // Paper - prevent tripwire from updating return direction.getAxis().isHorizontal() ? (BlockState) state.setValue((Property) TripWireBlock.PROPERTY_BY_DIRECTION.get(direction), this.shouldConnectTo(neighborState, direction)) : super.updateShape(state, direction, neighborState, world, pos, neighborPos); } @Override - public void onPlace(BlockState state, Level world, BlockPos pos, BlockState oldState, boolean notify) { + protected void onPlace(BlockState state, Level world, BlockPos pos, BlockState oldState, boolean notify) { + if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableTripwireUpdates) return; // Paper - prevent adjacent tripwires from updating if (!oldState.is(state.getBlock())) { this.updateSource(world, pos, state); @@ -140,7 +140,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public class TripWireBlock extends Block { @Override - public void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean moved) { + protected void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean moved) { + if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableTripwireUpdates) return; // Paper - prevent adjacent tripwires from updating if (!moved && !state.is(newState.getBlock())) { this.updateSource(world, pos, (BlockState) state.setValue(TripWireBlock.POWERED, true)); @@ -152,7 +152,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableTripwireUpdates) return state; // Paper - prevent disarming tripwires if (!world.isClientSide && !player.getMainHandItem().isEmpty() && player.getMainHandItem().is(Items.SHEARS)) { world.setBlock(pos, (BlockState) state.setValue(TripWireBlock.DISARMED, true), 4); - world.gameEvent((Entity) player, GameEvent.SHEAR, pos); + world.gameEvent((Entity) player, (Holder) GameEvent.SHEAR, pos); @@ -0,0 +0,0 @@ public class TripWireBlock extends Block { } @@ -164,7 +164,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public class TripWireBlock extends Block { @Override - public void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) { + protected void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) { + if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableTripwireUpdates) return; // Paper - prevent tripwires from detecting collision if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent if (!world.isClientSide) { @@ -172,7 +172,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public class TripWireBlock extends Block { @Override - public void tick(BlockState state, ServerLevel world, BlockPos pos, RandomSource random) { + protected void tick(BlockState state, ServerLevel world, BlockPos pos, RandomSource random) { + if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableTripwireUpdates) return; // Paper - prevent tripwire pressed check if ((Boolean) world.getBlockState(pos).getValue(TripWireBlock.POWERED)) { this.checkPressed(world, pos); diff --git a/patches/unapplied/server/Add-player-idle-duration-API.patch b/patches/server/Add-player-idle-duration-API.patch similarity index 100% rename from patches/unapplied/server/Add-player-idle-duration-API.patch rename to patches/server/Add-player-idle-duration-API.patch diff --git a/patches/unapplied/server/Add-predicate-for-blocks-when-raytracing.patch b/patches/server/Add-predicate-for-blocks-when-raytracing.patch similarity index 100% rename from patches/unapplied/server/Add-predicate-for-blocks-when-raytracing.patch rename to patches/server/Add-predicate-for-blocks-when-raytracing.patch diff --git a/patches/unapplied/server/Add-slot-sanity-checks-in-container-clicks.patch b/patches/server/Add-slot-sanity-checks-in-container-clicks.patch similarity index 100% rename from patches/unapplied/server/Add-slot-sanity-checks-in-container-clicks.patch rename to patches/server/Add-slot-sanity-checks-in-container-clicks.patch diff --git a/patches/unapplied/server/Add-titleOverride-to-InventoryOpenEvent.patch b/patches/server/Add-titleOverride-to-InventoryOpenEvent.patch similarity index 100% rename from patches/unapplied/server/Add-titleOverride-to-InventoryOpenEvent.patch rename to patches/server/Add-titleOverride-to-InventoryOpenEvent.patch diff --git a/patches/unapplied/server/Add-transient-modifier-API.patch b/patches/server/Add-transient-modifier-API.patch similarity index 100% rename from patches/unapplied/server/Add-transient-modifier-API.patch rename to patches/server/Add-transient-modifier-API.patch diff --git a/patches/unapplied/server/Add-whitelist-events.patch b/patches/server/Add-whitelist-events.patch similarity index 100% rename from patches/unapplied/server/Add-whitelist-events.patch rename to patches/server/Add-whitelist-events.patch diff --git a/patches/unapplied/server/Allow-null-itemstack-for-Player-sendEquipmentChange.patch b/patches/server/Allow-null-itemstack-for-Player-sendEquipmentChange.patch similarity index 100% rename from patches/unapplied/server/Allow-null-itemstack-for-Player-sendEquipmentChange.patch rename to patches/server/Allow-null-itemstack-for-Player-sendEquipmentChange.patch diff --git a/patches/unapplied/server/Allow-proper-checking-of-empty-item-stacks.patch b/patches/server/Allow-proper-checking-of-empty-item-stacks.patch similarity index 100% rename from patches/unapplied/server/Allow-proper-checking-of-empty-item-stacks.patch rename to patches/server/Allow-proper-checking-of-empty-item-stacks.patch diff --git a/patches/unapplied/server/Allow-trident-custom-damage.patch b/patches/server/Allow-trident-custom-damage.patch similarity index 89% rename from patches/unapplied/server/Allow-trident-custom-damage.patch rename to patches/server/Allow-trident-custom-damage.patch index 0cb4968bf9..c05ddfe707 100644 --- a/patches/unapplied/server/Allow-trident-custom-damage.patch +++ b/patches/server/Allow-trident-custom-damage.patch @@ -11,7 +11,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public class ThrownTrident extends AbstractArrow { public ThrownTrident(EntityType<? extends ThrownTrident> type, Level world) { - super(type, world, ThrownTrident.DEFAULT_ARROW_STACK); + super(type, world); + this.setBaseDamage(net.minecraft.world.item.TridentItem.BASE_DAMAGE); // Paper - Allow trident custom damage } @@ -28,5 +28,5 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 - float f = 8.0F; + float f = (float) this.getBaseDamage(); // Paper - Allow trident custom damage - if (entity instanceof LivingEntity) { - LivingEntity entityliving = (LivingEntity) entity; + if (entity instanceof LivingEntity entityliving) { + f += EnchantmentHelper.getDamageBonus(this.getPickupItemStackOrigin(), entityliving.getType()); diff --git a/patches/unapplied/server/Avoid-Lazy-Initialization-for-Enum-Fields.patch b/patches/server/Avoid-Lazy-Initialization-for-Enum-Fields.patch similarity index 100% rename from patches/unapplied/server/Avoid-Lazy-Initialization-for-Enum-Fields.patch rename to patches/server/Avoid-Lazy-Initialization-for-Enum-Fields.patch diff --git a/patches/unapplied/server/Bandaid-fix-for-Effect.patch b/patches/server/Bandaid-fix-for-Effect.patch similarity index 95% rename from patches/unapplied/server/Bandaid-fix-for-Effect.patch rename to patches/server/Bandaid-fix-for-Effect.patch index 848008729a..644376ea2d 100644 --- a/patches/unapplied/server/Bandaid-fix-for-Effect.patch +++ b/patches/server/Bandaid-fix-for-Effect.patch @@ -21,14 +21,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 case VILLAGER_PLANT_GROW: datavalue = (Integer) data; break; - case POTION_BREAK: -+ if (data instanceof Potion) { // Paper - use Color for POTION_BREAK - datavalue = ((Potion) data).toDamageValue() & 0x3F; - break; -+ } // Paper - Color will fall through to cast below - case INSTANT_POTION_BREAK: - datavalue = ((Color) data).asRGB(); - break; @@ -0,0 +0,0 @@ public class CraftEffect { Preconditions.checkArgument(data == Material.AIR || ((Material) data).isRecord(), "Invalid record type for Material %s!", data); datavalue = Item.getId(CraftItemType.bukkitToMinecraft((Material) data)); diff --git a/patches/unapplied/server/Break-redstone-on-top-of-trap-doors-early.patch b/patches/server/Break-redstone-on-top-of-trap-doors-early.patch similarity index 100% rename from patches/unapplied/server/Break-redstone-on-top-of-trap-doors-early.patch rename to patches/server/Break-redstone-on-top-of-trap-doors-early.patch diff --git a/patches/unapplied/server/Broadcast-take-item-packets-with-collector-as-source.patch b/patches/server/Broadcast-take-item-packets-with-collector-as-source.patch similarity index 100% rename from patches/unapplied/server/Broadcast-take-item-packets-with-collector-as-source.patch rename to patches/server/Broadcast-take-item-packets-with-collector-as-source.patch diff --git a/patches/unapplied/server/Cache-map-ids-on-item-frames.patch b/patches/server/Cache-map-ids-on-item-frames.patch similarity index 95% rename from patches/unapplied/server/Cache-map-ids-on-item-frames.patch rename to patches/server/Cache-map-ids-on-item-frames.patch index 1e510b2fce..1abe765e44 100644 --- a/patches/unapplied/server/Cache-map-ids-on-item-frames.patch +++ b/patches/server/Cache-map-ids-on-item-frames.patch @@ -12,9 +12,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 ItemStack itemstack = entityitemframe.getItem(); if (this.level.paperConfig().maps.itemFrameCursorUpdateInterval > 0 && this.tickCount % this.level.paperConfig().maps.itemFrameCursorUpdateInterval == 0 && itemstack.getItem() instanceof MapItem) { // CraftBukkit - Moved this.tickCounter % 10 logic here so item frames do not enter the other blocks // Paper - Make item frame map cursor update interval configurable -- Integer integer = MapItem.getMapId(itemstack); +- MapId mapid = (MapId) itemstack.get(DataComponents.MAP_ID); + Integer integer = entityitemframe.cachedMapId; // Paper - Perf: Cache map ids on item frames - MapItemSavedData worldmap = MapItem.getSavedData(integer, this.level); + MapItemSavedData worldmap = MapItem.getSavedData(mapid, this.level); if (worldmap != null) { diff --git a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java diff --git a/patches/unapplied/server/Call-BlockGrowEvent-for-missing-blocks.patch b/patches/server/Call-BlockGrowEvent-for-missing-blocks.patch similarity index 100% rename from patches/unapplied/server/Call-BlockGrowEvent-for-missing-blocks.patch rename to patches/server/Call-BlockGrowEvent-for-missing-blocks.patch diff --git a/patches/unapplied/server/Call-BlockRedstoneEvents-for-lecterns.patch b/patches/server/Call-BlockRedstoneEvents-for-lecterns.patch similarity index 100% rename from patches/unapplied/server/Call-BlockRedstoneEvents-for-lecterns.patch rename to patches/server/Call-BlockRedstoneEvents-for-lecterns.patch diff --git a/patches/unapplied/server/Call-missing-BlockDispenseEvent.patch b/patches/server/Call-missing-BlockDispenseEvent.patch similarity index 100% rename from patches/unapplied/server/Call-missing-BlockDispenseEvent.patch rename to patches/server/Call-missing-BlockDispenseEvent.patch diff --git a/patches/unapplied/server/Configurable-Region-Compression-Format.patch b/patches/server/Configurable-Region-Compression-Format.patch similarity index 80% rename from patches/unapplied/server/Configurable-Region-Compression-Format.patch rename to patches/server/Configurable-Region-Compression-Format.patch index 6af3bd6bfb..97d8d01900 100644 --- a/patches/unapplied/server/Configurable-Region-Compression-Format.patch +++ b/patches/server/Configurable-Region-Compression-Format.patch @@ -11,21 +11,20 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public class RegionFile implements AutoCloseable { protected final RegionBitmap usedSectors; - public RegionFile(Path file, Path directory, boolean dsync) throws IOException { -- this(file, directory, RegionFileVersion.VERSION_DEFLATE, dsync); + public RegionFile(RegionStorageInfo storageKey, Path directory, Path path, boolean dsync) throws IOException { +- this(storageKey, directory, path, RegionFileVersion.getSelected(), dsync); + this(file, directory, RegionFileVersion.getCompressionFormat(), dsync); // Paper - Configurable region compression format } - public RegionFile(Path file, Path directory, RegionFileVersion outputChunkStreamVersion, boolean dsync) throws IOException { + public RegionFile(RegionStorageInfo storageKey, Path path, Path directory, RegionFileVersion compressionFormat, boolean dsync) throws IOException { diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileVersion.java b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileVersion.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileVersion.java +++ b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileVersion.java @@ -0,0 +0,0 @@ public class RegionFileVersion { - ) - ); - public static final RegionFileVersion VERSION_NONE = register(new RegionFileVersion(3, stream -> stream, stream -> stream)); -+ + private final RegionFileVersion.StreamWrapper<InputStream> inputWrapper; + private final RegionFileVersion.StreamWrapper<OutputStream> outputWrapper; + + // Paper start - Configurable region compression format + public static RegionFileVersion getCompressionFormat() { + return switch (io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.compressionFormat) { @@ -35,7 +34,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + }; + } + // Paper end - Configurable region compression format -+ - private final int id; - private final RegionFileVersion.StreamWrapper<InputStream> inputWrapper; - private final RegionFileVersion.StreamWrapper<OutputStream> outputWrapper; + private RegionFileVersion( + int id, + @Nullable String name, diff --git a/patches/unapplied/server/Configurable-entity-tracking-range-by-Y-coordinate.patch b/patches/server/Configurable-entity-tracking-range-by-Y-coordinate.patch similarity index 100% rename from patches/unapplied/server/Configurable-entity-tracking-range-by-Y-coordinate.patch rename to patches/server/Configurable-entity-tracking-range-by-Y-coordinate.patch diff --git a/patches/unapplied/server/Configure-sniffer-egg-hatch-time.patch b/patches/server/Configure-sniffer-egg-hatch-time.patch similarity index 100% rename from patches/unapplied/server/Configure-sniffer-egg-hatch-time.patch rename to patches/server/Configure-sniffer-egg-hatch-time.patch diff --git a/patches/unapplied/server/Correctly-handle-ArmorStand-invisibility.patch b/patches/server/Correctly-handle-ArmorStand-invisibility.patch similarity index 100% rename from patches/unapplied/server/Correctly-handle-ArmorStand-invisibility.patch rename to patches/server/Correctly-handle-ArmorStand-invisibility.patch diff --git a/patches/unapplied/server/Correctly-shrink-items-during-EntityResurrectEvent.patch b/patches/server/Correctly-shrink-items-during-EntityResurrectEvent.patch similarity index 100% rename from patches/unapplied/server/Correctly-shrink-items-during-EntityResurrectEvent.patch rename to patches/server/Correctly-shrink-items-during-EntityResurrectEvent.patch diff --git a/patches/unapplied/server/Deprecate-and-replace-methods-with-old-StructureType.patch b/patches/server/Deprecate-and-replace-methods-with-old-StructureType.patch similarity index 100% rename from patches/unapplied/server/Deprecate-and-replace-methods-with-old-StructureType.patch rename to patches/server/Deprecate-and-replace-methods-with-old-StructureType.patch diff --git a/patches/unapplied/server/Determine-lava-and-water-fluid-explosion-resistance-.patch b/patches/server/Determine-lava-and-water-fluid-explosion-resistance-.patch similarity index 100% rename from patches/unapplied/server/Determine-lava-and-water-fluid-explosion-resistance-.patch rename to patches/server/Determine-lava-and-water-fluid-explosion-resistance-.patch diff --git a/patches/unapplied/server/Do-crystal-portal-proximity-check-before-entity-look.patch b/patches/server/Do-crystal-portal-proximity-check-before-entity-look.patch similarity index 100% rename from patches/unapplied/server/Do-crystal-portal-proximity-check-before-entity-look.patch rename to patches/server/Do-crystal-portal-proximity-check-before-entity-look.patch diff --git a/patches/unapplied/server/Do-not-read-tile-entities-in-chunks-that-are-positio.patch b/patches/server/Do-not-read-tile-entities-in-chunks-that-are-positio.patch similarity index 98% rename from patches/unapplied/server/Do-not-read-tile-entities-in-chunks-that-are-positio.patch rename to patches/server/Do-not-read-tile-entities-in-chunks-that-are-positio.patch index d9a86209b0..8b1a5b998c 100644 --- a/patches/unapplied/server/Do-not-read-tile-entities-in-chunks-that-are-positio.patch +++ b/patches/server/Do-not-read-tile-entities-in-chunks-that-are-positio.patch @@ -45,6 +45,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } else { - BlockPos blockposition = BlockEntity.getPosFromTag(nbttagcompound1); + // Paper - do not read tile entities positioned outside the chunk; move up - BlockEntity tileentity = BlockEntity.loadStatic(blockposition, chunk.getBlockState(blockposition), nbttagcompound1); + BlockEntity tileentity = BlockEntity.loadStatic(blockposition, chunk.getBlockState(blockposition), nbttagcompound1, world.registryAccess()); if (tileentity != null) { diff --git a/patches/unapplied/server/Don-t-check-if-we-can-see-non-visible-entities.patch b/patches/server/Don-t-check-if-we-can-see-non-visible-entities.patch similarity index 100% rename from patches/unapplied/server/Don-t-check-if-we-can-see-non-visible-entities.patch rename to patches/server/Don-t-check-if-we-can-see-non-visible-entities.patch diff --git a/patches/unapplied/server/Don-t-enforce-icanhasbukkit-default-if-alias-block-e.patch b/patches/server/Don-t-enforce-icanhasbukkit-default-if-alias-block-e.patch similarity index 100% rename from patches/unapplied/server/Don-t-enforce-icanhasbukkit-default-if-alias-block-e.patch rename to patches/server/Don-t-enforce-icanhasbukkit-default-if-alias-block-e.patch diff --git a/patches/unapplied/server/Don-t-load-chunks-for-supporting-block-checks.patch b/patches/server/Don-t-load-chunks-for-supporting-block-checks.patch similarity index 90% rename from patches/unapplied/server/Don-t-load-chunks-for-supporting-block-checks.patch rename to patches/server/Don-t-load-chunks-for-supporting-block-checks.patch index 27da5ec9fb..936bbbd8dc 100644 --- a/patches/unapplied/server/Don-t-load-chunks-for-supporting-block-checks.patch +++ b/patches/server/Don-t-load-chunks-for-supporting-block-checks.patch @@ -8,7 +8,7 @@ diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/jav index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -0,0 +0,0 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -0,0 +0,0 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } protected BlockPos getOnPos(float offset) { diff --git a/patches/unapplied/server/Don-t-tab-complete-namespaced-commands-if-send-names.patch b/patches/server/Don-t-tab-complete-namespaced-commands-if-send-names.patch similarity index 100% rename from patches/unapplied/server/Don-t-tab-complete-namespaced-commands-if-send-names.patch rename to patches/server/Don-t-tab-complete-namespaced-commands-if-send-names.patch diff --git a/patches/unapplied/server/Expand-LingeringPotion-API.patch b/patches/server/Expand-LingeringPotion-API.patch similarity index 70% rename from patches/unapplied/server/Expand-LingeringPotion-API.patch rename to patches/server/Expand-LingeringPotion-API.patch index 60895d9965..f0b81414fd 100644 --- a/patches/unapplied/server/Expand-LingeringPotion-API.patch +++ b/patches/server/Expand-LingeringPotion-API.patch @@ -9,11 +9,11 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/net/minecraft/world/entity/projectile/ThrownPotion.java +++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownPotion.java @@ -0,0 +0,0 @@ public class ThrownPotion extends ThrowableItemProjectile implements ItemSupplie - + boolean noEffects = potioncontents.hasEffects(); // Paper - Fix potions splash events // CraftBukkit start org.bukkit.event.entity.LingeringPotionSplashEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callLingeringPotionSplashEvent(this, position, entityareaeffectcloud); -- if (!(event.isCancelled() || entityareaeffectcloud.isRemoved() || (noEffects && entityareaeffectcloud.effects.isEmpty() && entityareaeffectcloud.getPotion().getEffects().isEmpty()))) { // Paper - don't spawn area effect cloud if the effects were empty and not changed during the event handling -+ if (!(event.isCancelled() || entityareaeffectcloud.isRemoved() || (!event.allowsEmptyCreation() && (noEffects && entityareaeffectcloud.effects.isEmpty() && entityareaeffectcloud.getPotion().getEffects().isEmpty())))) { // Paper - don't spawn area effect cloud if the effects were empty and not changed during the event handling +- if (!(event.isCancelled() || entityareaeffectcloud.isRemoved() || (noEffects && !entityareaeffectcloud.potionContents.hasEffects()))) { // Paper - don't spawn area effect cloud if the effects were empty and not changed during the event handling ++ if (!(event.isCancelled() || entityareaeffectcloud.isRemoved() || (!event.allowsEmptyCreation() && (noEffects && !entityareaeffectcloud.potionContents.hasEffects())))) { // Paper - don't spawn area effect cloud if the effects were empty and not changed during the event handling this.level().addFreshEntity(entityareaeffectcloud); } else { entityareaeffectcloud.discard(null); // CraftBukkit - add Bukkit remove cause diff --git a/patches/unapplied/server/Expand-PlayerItemMendEvent.patch b/patches/server/Expand-PlayerItemMendEvent.patch similarity index 100% rename from patches/unapplied/server/Expand-PlayerItemMendEvent.patch rename to patches/server/Expand-PlayerItemMendEvent.patch diff --git a/patches/unapplied/server/Expand-Pose-API.patch b/patches/server/Expand-Pose-API.patch similarity index 91% rename from patches/unapplied/server/Expand-Pose-API.patch rename to patches/server/Expand-Pose-API.patch index 813da891b5..c6854463e5 100644 --- a/patches/unapplied/server/Expand-Pose-API.patch +++ b/patches/server/Expand-Pose-API.patch @@ -8,7 +8,7 @@ diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/jav index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -0,0 +0,0 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -0,0 +0,0 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @javax.annotation.Nullable private UUID originWorld; public boolean freezeLocked = false; // Paper - Freeze Tick Lock API @@ -16,7 +16,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public void setOrigin(@javax.annotation.Nonnull Location location) { this.origin = location.toVector(); -@@ -0,0 +0,0 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -0,0 +0,0 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public void onClientRemoval() {} public void setPose(net.minecraft.world.entity.Pose pose) { diff --git a/patches/unapplied/server/ExperienceOrb-should-call-EntitySpawnEvent.patch b/patches/server/ExperienceOrb-should-call-EntitySpawnEvent.patch similarity index 100% rename from patches/unapplied/server/ExperienceOrb-should-call-EntitySpawnEvent.patch rename to patches/server/ExperienceOrb-should-call-EntitySpawnEvent.patch diff --git a/patches/unapplied/server/Expose-hand-in-BlockCanBuildEvent.patch b/patches/server/Expose-hand-in-BlockCanBuildEvent.patch similarity index 100% rename from patches/unapplied/server/Expose-hand-in-BlockCanBuildEvent.patch rename to patches/server/Expose-hand-in-BlockCanBuildEvent.patch diff --git a/patches/unapplied/server/Expose-pre-collision-moving-velocity-to-VehicleBlock.patch b/patches/server/Expose-pre-collision-moving-velocity-to-VehicleBlock.patch similarity index 87% rename from patches/unapplied/server/Expose-pre-collision-moving-velocity-to-VehicleBlock.patch rename to patches/server/Expose-pre-collision-moving-velocity-to-VehicleBlock.patch index bf7d3353ca..905cf965aa 100644 --- a/patches/unapplied/server/Expose-pre-collision-moving-velocity-to-VehicleBlock.patch +++ b/patches/server/Expose-pre-collision-moving-velocity-to-VehicleBlock.patch @@ -9,7 +9,7 @@ diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/jav index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -0,0 +0,0 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -0,0 +0,0 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public void move(MoverType movementType, Vec3 movement) { @@ -17,7 +17,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 if (this.noPhysics) { this.setPos(this.getX() + movement.x, this.getY() + movement.y, this.getZ() + movement.z); } else { -@@ -0,0 +0,0 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -0,0 +0,0 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } if (!bl.getType().isAir()) { diff --git a/patches/unapplied/server/Fire-entity-death-event-for-ender-dragon.patch b/patches/server/Fire-entity-death-event-for-ender-dragon.patch similarity index 100% rename from patches/unapplied/server/Fire-entity-death-event-for-ender-dragon.patch rename to patches/server/Fire-entity-death-event-for-ender-dragon.patch diff --git a/patches/unapplied/server/Fix-BanList-API.patch b/patches/server/Fix-BanList-API.patch similarity index 100% rename from patches/unapplied/server/Fix-BanList-API.patch rename to patches/server/Fix-BanList-API.patch diff --git a/patches/unapplied/server/Fix-HumanEntity-drop-not-updating-the-client-inv.patch b/patches/server/Fix-HumanEntity-drop-not-updating-the-client-inv.patch similarity index 100% rename from patches/unapplied/server/Fix-HumanEntity-drop-not-updating-the-client-inv.patch rename to patches/server/Fix-HumanEntity-drop-not-updating-the-client-inv.patch diff --git a/patches/unapplied/server/Fix-MC-157464-Prevent-sleeping-villagers-moving-towa.patch b/patches/server/Fix-MC-157464-Prevent-sleeping-villagers-moving-towa.patch similarity index 100% rename from patches/unapplied/server/Fix-MC-157464-Prevent-sleeping-villagers-moving-towa.patch rename to patches/server/Fix-MC-157464-Prevent-sleeping-villagers-moving-towa.patch diff --git a/patches/unapplied/server/Fix-NPE-in-AdvancementProgress-getDateAwarded.patch b/patches/server/Fix-NPE-in-AdvancementProgress-getDateAwarded.patch similarity index 100% rename from patches/unapplied/server/Fix-NPE-in-AdvancementProgress-getDateAwarded.patch rename to patches/server/Fix-NPE-in-AdvancementProgress-getDateAwarded.patch diff --git a/patches/unapplied/server/Fix-NPE-in-SculkBloomEvent-world-access.patch b/patches/server/Fix-NPE-in-SculkBloomEvent-world-access.patch similarity index 100% rename from patches/unapplied/server/Fix-NPE-in-SculkBloomEvent-world-access.patch rename to patches/server/Fix-NPE-in-SculkBloomEvent-world-access.patch diff --git a/patches/unapplied/server/Fix-NPE-on-Allay-stopDancing-while-not-dancing.patch b/patches/server/Fix-NPE-on-Allay-stopDancing-while-not-dancing.patch similarity index 100% rename from patches/unapplied/server/Fix-NPE-on-Allay-stopDancing-while-not-dancing.patch rename to patches/server/Fix-NPE-on-Allay-stopDancing-while-not-dancing.patch diff --git a/patches/unapplied/server/Fix-NPE-on-Boat-getStatus.patch b/patches/server/Fix-NPE-on-Boat-getStatus.patch similarity index 100% rename from patches/unapplied/server/Fix-NPE-on-Boat-getStatus.patch rename to patches/server/Fix-NPE-on-Boat-getStatus.patch diff --git a/patches/unapplied/server/Fix-SpawnEggMeta-get-setSpawnedType.patch b/patches/server/Fix-SpawnEggMeta-get-setSpawnedType.patch similarity index 100% rename from patches/unapplied/server/Fix-SpawnEggMeta-get-setSpawnedType.patch rename to patches/server/Fix-SpawnEggMeta-get-setSpawnedType.patch diff --git a/patches/unapplied/server/Fix-UnsafeValues-loadAdvancement.patch b/patches/server/Fix-UnsafeValues-loadAdvancement.patch similarity index 93% rename from patches/unapplied/server/Fix-UnsafeValues-loadAdvancement.patch rename to patches/server/Fix-UnsafeValues-loadAdvancement.patch index 08c7ad7767..33f1c9429d 100644 --- a/patches/unapplied/server/Fix-UnsafeValues-loadAdvancement.patch +++ b/patches/server/Fix-UnsafeValues-loadAdvancement.patch @@ -10,7 +10,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java @@ -0,0 +0,0 @@ public final class CraftMagicNumbers implements UnsafeValues { JsonElement jsonelement = ServerAdvancementManager.GSON.fromJson(advancement, JsonElement.class); - net.minecraft.advancements.Advancement nms = Util.getOrThrow(net.minecraft.advancements.Advancement.CODEC.parse(JsonOps.INSTANCE, jsonelement), JsonParseException::new); + net.minecraft.advancements.Advancement nms = net.minecraft.advancements.Advancement.CODEC.parse(JsonOps.INSTANCE, jsonelement).getOrThrow(JsonParseException::new); if (nms != null) { - MinecraftServer.getServer().getAdvancements().advancements.put(minecraftkey, new AdvancementHolder(minecraftkey, nms)); + // Paper start - Fix throw UnsupportedOperationException diff --git a/patches/unapplied/server/Fix-a-couple-of-upstream-bed-issues.patch b/patches/server/Fix-a-couple-of-upstream-bed-issues.patch similarity index 100% rename from patches/unapplied/server/Fix-a-couple-of-upstream-bed-issues.patch rename to patches/server/Fix-a-couple-of-upstream-bed-issues.patch diff --git a/patches/unapplied/server/Fix-advancement-triggers-for-entity-damage.patch b/patches/server/Fix-advancement-triggers-for-entity-damage.patch similarity index 93% rename from patches/unapplied/server/Fix-advancement-triggers-for-entity-damage.patch rename to patches/server/Fix-advancement-triggers-for-entity-damage.patch index 53a8bba9e9..95d8f38f6d 100644 --- a/patches/unapplied/server/Fix-advancement-triggers-for-entity-damage.patch +++ b/patches/server/Fix-advancement-triggers-for-entity-damage.patch @@ -14,9 +14,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/net/minecraft/world/entity/Interaction.java +++ b/src/main/java/net/minecraft/world/entity/Interaction.java @@ -0,0 +0,0 @@ public class Interaction extends Entity implements Attackable, Targeting { - if (entityhuman instanceof ServerPlayer) { - ServerPlayer entityplayer = (ServerPlayer) entityhuman; - + // CraftBukkit end + this.attack = new Interaction.PlayerAction(entityhuman.getUUID(), this.level().getGameTime()); + if (entityhuman instanceof ServerPlayer entityplayer) { - CriteriaTriggers.PLAYER_HURT_ENTITY.trigger(entityplayer, this, source, (float) event.getFinalDamage(), 1.0F, false); // CraftBukkit + CriteriaTriggers.PLAYER_HURT_ENTITY.trigger(entityplayer, this, entityhuman.damageSources().generic(), 1.0F, (float) event.getFinalDamage(), false); // CraftBukkit // Paper - use correct source and fix taken/dealt param order } diff --git a/patches/unapplied/server/Fix-block-place-logic.patch b/patches/server/Fix-block-place-logic.patch similarity index 92% rename from patches/unapplied/server/Fix-block-place-logic.patch rename to patches/server/Fix-block-place-logic.patch index 2438b0ad79..bf0fa06728 100644 --- a/patches/unapplied/server/Fix-block-place-logic.patch +++ b/patches/server/Fix-block-place-logic.patch @@ -18,14 +18,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 - // world.playSound(entityhuman, blockposition, this.getPlaceSound(iblockdata1), SoundCategory.BLOCKS, (soundeffecttype.getVolume() + 1.0F) / 2.0F, soundeffecttype.getPitch() * 0.8F); + if (entityhuman == null) world.playSound(entityhuman, blockposition, this.getPlaceSound(iblockdata1), net.minecraft.sounds.SoundSource.BLOCKS, (soundeffecttype.getVolume() + 1.0F) / 2.0F, soundeffecttype.getPitch() * 0.8F); // Paper - Fix block place logic; reintroduce this for the dispenser (i.e the shulker) - world.gameEvent(GameEvent.BLOCK_PLACE, blockposition, GameEvent.Context.of(entityhuman, iblockdata1)); - if ((entityhuman == null || !entityhuman.getAbilities().instabuild) && itemstack != ItemStack.EMPTY) { // CraftBukkit - itemstack.shrink(1); + world.gameEvent((Holder) GameEvent.BLOCK_PLACE, blockposition, GameEvent.Context.of(entityhuman, iblockdata1)); + itemstack.consume(1, entityhuman); + return InteractionResult.sidedSuccess(world.isClientSide); diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -0,0 +0,0 @@ public final class ItemStack { +@@ -0,0 +0,0 @@ public final class ItemStack implements DataComponentHolder { if (tileentity instanceof JukeboxBlockEntity) { JukeboxBlockEntity tileentityjukebox = (JukeboxBlockEntity) tileentity; diff --git a/patches/unapplied/server/Fix-cmd-permission-levels-for-command-blocks.patch b/patches/server/Fix-cmd-permission-levels-for-command-blocks.patch similarity index 100% rename from patches/unapplied/server/Fix-cmd-permission-levels-for-command-blocks.patch rename to patches/server/Fix-cmd-permission-levels-for-command-blocks.patch diff --git a/patches/unapplied/server/Fix-crash-relating-to-bad-recipes-in-furnace-like-ti.patch b/patches/server/Fix-crash-relating-to-bad-recipes-in-furnace-like-ti.patch similarity index 100% rename from patches/unapplied/server/Fix-crash-relating-to-bad-recipes-in-furnace-like-ti.patch rename to patches/server/Fix-crash-relating-to-bad-recipes-in-furnace-like-ti.patch diff --git a/patches/unapplied/server/Fix-custom-statistic-criteria-creation.patch b/patches/server/Fix-custom-statistic-criteria-creation.patch similarity index 100% rename from patches/unapplied/server/Fix-custom-statistic-criteria-creation.patch rename to patches/server/Fix-custom-statistic-criteria-creation.patch diff --git a/patches/unapplied/server/Fix-demo-flag-not-enabling-demo-mode.patch b/patches/server/Fix-demo-flag-not-enabling-demo-mode.patch similarity index 87% rename from patches/unapplied/server/Fix-demo-flag-not-enabling-demo-mode.patch rename to patches/server/Fix-demo-flag-not-enabling-demo-mode.patch index 91ae016ea7..42304321a9 100644 --- a/patches/unapplied/server/Fix-demo-flag-not-enabling-demo-mode.patch +++ b/patches/server/Fix-demo-flag-not-enabling-demo-mode.patch @@ -12,11 +12,11 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public class Main { /* - dedicatedserver1.setPort((Integer) optionset.valueOf(optionspec10)); + dedicatedserver1.setPort((Integer) optionset.valueOf(optionspec11)); - dedicatedserver1.setDemo(optionset.has(optionspec2)); + */ -+ dedicatedserver1.setDemo(optionset.has("demo")); // Paper - Restore setting the demo mode ++ dedicatedserver1.setDemo(optionset.has("demo")); // Paper + /* - dedicatedserver1.setId((String) optionset.valueOf(optionspec11)); + dedicatedserver1.setId((String) optionset.valueOf(optionspec12)); */ - boolean flag1 = !optionset.has("nogui") && !optionset.nonOptionArguments().contains("nogui"); + boolean flag2 = !optionset.has("nogui") && !optionset.nonOptionArguments().contains("nogui"); diff --git a/patches/unapplied/server/Fix-force-opening-enchantment-tables.patch b/patches/server/Fix-force-opening-enchantment-tables.patch similarity index 84% rename from patches/unapplied/server/Fix-force-opening-enchantment-tables.patch rename to patches/server/Fix-force-opening-enchantment-tables.patch index 2b9c898fc2..5b2a0099f7 100644 --- a/patches/unapplied/server/Fix-force-opening-enchantment-tables.patch +++ b/patches/server/Fix-force-opening-enchantment-tables.patch @@ -12,9 +12,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 // If there isn't an enchant table we can force create one, won't be very useful though. BlockPos pos = CraftLocation.toBlockPosition(location); -- this.getHandle().openMenu(((EnchantmentTableBlock) Blocks.ENCHANTING_TABLE).getMenuProvider(null, this.getHandle().level(), pos)); +- this.getHandle().openMenu(Blocks.ENCHANTING_TABLE.defaultBlockState().getMenuProvider(this.getHandle().level(), pos)); + // Paper start -+ MenuProvider menuProvider = ((EnchantmentTableBlock) Blocks.ENCHANTING_TABLE).getMenuProvider(null, this.getHandle().level(), pos); ++ MenuProvider menuProvider = Blocks.ENCHANTING_TABLE.defaultBlockState().getMenuProvider(this.getHandle().level(), pos); + if (menuProvider == null) { + if (!force) { + return null; diff --git a/patches/unapplied/server/Fix-inconsistencies-in-dispense-events-regarding-sta.patch b/patches/server/Fix-inconsistencies-in-dispense-events-regarding-sta.patch similarity index 83% rename from patches/unapplied/server/Fix-inconsistencies-in-dispense-events-regarding-sta.patch rename to patches/server/Fix-inconsistencies-in-dispense-events-regarding-sta.patch index be658bd9f9..fdf8cfe6c0 100644 --- a/patches/unapplied/server/Fix-inconsistencies-in-dispense-events-regarding-sta.patch +++ b/patches/server/Fix-inconsistencies-in-dispense-events-regarding-sta.patch @@ -8,44 +8,6 @@ item which is being dispensed. Before this fix, sometimes it was the whole stack before a single item had been taken. This fixes that so the stack size is always 1. -diff --git a/src/main/java/net/minecraft/core/dispenser/AbstractProjectileDispenseBehavior.java b/src/main/java/net/minecraft/core/dispenser/AbstractProjectileDispenseBehavior.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 ---- a/src/main/java/net/minecraft/core/dispenser/AbstractProjectileDispenseBehavior.java -+++ b/src/main/java/net/minecraft/core/dispenser/AbstractProjectileDispenseBehavior.java -@@ -0,0 +0,0 @@ public abstract class AbstractProjectileDispenseBehavior extends DefaultDispense - - // CraftBukkit start - // iprojectile.shoot((double) enumdirection.getStepX(), (double) ((float) enumdirection.getStepY() + 0.1F), (double) enumdirection.getStepZ(), this.getPower(), this.getUncertainty()); -- ItemStack itemstack1 = stack.split(1); -+ ItemStack itemstack1 = stack.copyWithCount(1); // Paper - shrink below and single item in event - org.bukkit.block.Block block = CraftBlock.at(worldserver, pointer.pos()); - CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack1); - -@@ -0,0 +0,0 @@ public abstract class AbstractProjectileDispenseBehavior extends DefaultDispense - } - - if (event.isCancelled()) { -- stack.grow(1); -+ // stack.grow(1); // Paper - shrink below - return stack; - } - -+ boolean shrink = true; // Paper - if (!event.getItem().equals(craftItem)) { -- stack.grow(1); -+ shrink = false; // Paper - shrink below - // Chain to handler for new item - ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem()); - DispenseItemBehavior idispensebehavior = (DispenseItemBehavior) DispenserBlock.DISPENSER_REGISTRY.get(eventStack.getItem()); -@@ -0,0 +0,0 @@ public abstract class AbstractProjectileDispenseBehavior extends DefaultDispense - ((Entity) iprojectile).projectileSource = new org.bukkit.craftbukkit.projectiles.CraftBlockProjectileSource(pointer.blockEntity()); - // CraftBukkit end - worldserver.addFreshEntity(iprojectile); -- // itemstack.shrink(1); // CraftBukkit - Handled during event processing -+ if (shrink) stack.shrink(1); // Paper - actually handle here - return stack; - } - diff --git a/src/main/java/net/minecraft/core/dispenser/BoatDispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/BoatDispenseItemBehavior.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/core/dispenser/BoatDispenseItemBehavior.java @@ -121,7 +83,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 - // itemstack.shrink(1); // Handled during event processing + if (shrink) stack.shrink(1); // Paper - actually handle here // CraftBukkit end - pointer.level().gameEvent((Entity) null, GameEvent.ENTITY_PLACE, pointer.pos()); + pointer.level().gameEvent((Entity) null, (Holder) GameEvent.ENTITY_PLACE, pointer.pos()); return stack; @@ -0,0 +0,0 @@ public interface DispenseItemBehavior { ServerLevel worldserver = pointer.level(); @@ -149,7 +111,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem()); DispenseItemBehavior idispensebehavior = (DispenseItemBehavior) DispenserBlock.DISPENSER_REGISTRY.get(eventStack.getItem()); @@ -0,0 +0,0 @@ public interface DispenseItemBehavior { - ArmorStand entityarmorstand = (ArmorStand) EntityType.ARMOR_STAND.spawn(worldserver, stack.getTag(), consumer, blockposition, MobSpawnType.DISPENSER, false, false); + ArmorStand entityarmorstand = (ArmorStand) EntityType.ARMOR_STAND.spawn(worldserver, consumer, blockposition, MobSpawnType.DISPENSER, false, false); if (entityarmorstand != null) { - // itemstack.shrink(1); // CraftBukkit - Handled during event processing @@ -163,7 +125,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 // CraftBukkit start - ItemStack itemstack1 = stack.split(1); + ItemStack itemstack1 = stack.copyWithCount(1); // Paper - shrink below and single item in event - Level world = pointer.level(); + ServerLevel world = pointer.level(); org.bukkit.block.Block block = CraftBlock.at(world, pointer.pos()); CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack1); @@ -0,0 +0,0 @@ public interface DispenseItemBehavior { @@ -192,12 +154,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 return stack; } else { @@ -0,0 +0,0 @@ public interface DispenseItemBehavior { - } while (!entityhorseabstract.isArmor(stack) || entityhorseabstract.isWearingArmor() || !entityhorseabstract.isTamed()); + } while (!entityhorseabstract.isBodyArmorItem(stack) || entityhorseabstract.isWearingBodyArmor() || !entityhorseabstract.isTamed()); // CraftBukkit start - ItemStack itemstack1 = stack.split(1); + ItemStack itemstack1 = stack.copyWithCount(1); // Paper - shrink below and single item in event - Level world = pointer.level(); + ServerLevel world = pointer.level(); org.bukkit.block.Block block = CraftBlock.at(world, pointer.pos()); CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack1); @@ -0,0 +0,0 @@ public interface DispenseItemBehavior { @@ -221,7 +183,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } + if (shrink) stack.shrink(1); // Paper - shrink here - entityhorseabstract.getSlot(401).set(CraftItemStack.asNMSCopy(event.getItem())); + entityhorseabstract.setBodyArmorItem(CraftItemStack.asNMSCopy(event.getItem())); // CraftBukkit end this.setSuccess(true); @@ -0,0 +0,0 @@ public interface DispenseItemBehavior { @@ -230,7 +192,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } while (!entityhorsechestedabstract.isTamed()); - ItemStack itemstack1 = stack.split(1); + ItemStack itemstack1 = stack.copyWithCount(1); // Paper - shrink below - Level world = pointer.level(); + ServerLevel world = pointer.level(); org.bukkit.block.Block block = CraftBlock.at(world, pointer.pos()); CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack1); @@ -0,0 +0,0 @@ public interface DispenseItemBehavior { @@ -256,74 +218,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.setSuccess(true); return stack; } -@@ -0,0 +0,0 @@ public interface DispenseItemBehavior { - Direction enumdirection = (Direction) pointer.state().getValue(DispenserBlock.FACING); - // CraftBukkit start - ServerLevel worldserver = pointer.level(); -- ItemStack itemstack1 = stack.split(1); -+ ItemStack itemstack1 = stack.copyWithCount(1); // Paper - shrink below and single item in event - org.bukkit.block.Block block = CraftBlock.at(worldserver, pointer.pos()); - CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack1); - -@@ -0,0 +0,0 @@ public interface DispenseItemBehavior { - } - - if (event.isCancelled()) { -- stack.grow(1); -+ // stack.grow(1); // Paper - shrink below - return stack; - } - -+ boolean shrink = true; // Paper - if (!event.getItem().equals(craftItem)) { -- stack.grow(1); -+ shrink = false; // Paper - shrink below - // Chain to handler for new item - ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem()); - DispenseItemBehavior idispensebehavior = (DispenseItemBehavior) DispenserBlock.DISPENSER_REGISTRY.get(eventStack.getItem()); -@@ -0,0 +0,0 @@ public interface DispenseItemBehavior { - - entityfireworks.shoot((double) enumdirection.getStepX(), (double) enumdirection.getStepY(), (double) enumdirection.getStepZ(), 0.5F, 1.0F); - pointer.level().addFreshEntity(entityfireworks); -- // itemstack.shrink(1); // Handled during event processing -+ if (shrink) stack.shrink(1); // Paper - actually handle here - // CraftBukkit end - return stack; - } -@@ -0,0 +0,0 @@ public interface DispenseItemBehavior { - double d5 = randomsource.triangle((double) enumdirection.getStepZ(), 0.11485000000000001D); - - // CraftBukkit start -- ItemStack itemstack1 = stack.split(1); -+ ItemStack itemstack1 = stack.copyWithCount(1); // Paper - shrink below and single item in event - org.bukkit.block.Block block = CraftBlock.at(worldserver, pointer.pos()); - CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack1); - -@@ -0,0 +0,0 @@ public interface DispenseItemBehavior { - } - - if (event.isCancelled()) { -- stack.grow(1); -+ // stack.grow(1); // Paper - shrink at end - return stack; - } - -+ boolean shrink = true; // Paper - if (!event.getItem().equals(craftItem)) { -- stack.grow(1); -+ shrink = false; // Paper - shrink at end - // Chain to handler for new item - ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem()); - DispenseItemBehavior idispensebehavior = (DispenseItemBehavior) DispenserBlock.DISPENSER_REGISTRY.get(eventStack.getItem()); -@@ -0,0 +0,0 @@ public interface DispenseItemBehavior { - entitysmallfireball.projectileSource = new org.bukkit.craftbukkit.projectiles.CraftBlockProjectileSource(pointer.blockEntity()); - - worldserver.addFreshEntity(entitysmallfireball); -- // itemstack.shrink(1); // Handled during event processing -+ if (shrink) stack.shrink(1); // Paper - actually handle here - // CraftBukkit end - return stack; - } @@ -0,0 +0,0 @@ public interface DispenseItemBehavior { if (willEmptyContentsSolidBucketItem || willEmptyBucketItem) { // Paper end - correctly check if the bucket place will succeed @@ -388,7 +282,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public interface DispenseItemBehavior { worldserver.addFreshEntity(entitytntprimed); worldserver.playSound((Player) null, entitytntprimed.getX(), entitytntprimed.getY(), entitytntprimed.getZ(), SoundEvents.TNT_PRIMED, SoundSource.BLOCKS, 1.0F, 1.0F); - worldserver.gameEvent((Entity) null, GameEvent.ENTITY_PLACE, blockposition); + worldserver.gameEvent((Entity) null, (Holder) GameEvent.ENTITY_PLACE, blockposition); - // itemstack.shrink(1); // CraftBukkit - handled above + if (shrink) stack.shrink(1); // Paper - actually handle here return stack; @@ -421,6 +315,44 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 BlockDispenseEvent event = new BlockDispenseEvent(bukkitBlock, craftItem.clone(), new org.bukkit.util.Vector(blockposition.getX(), blockposition.getY(), blockposition.getZ())); if (!DispenserBlock.eventFired) { +diff --git a/src/main/java/net/minecraft/core/dispenser/ProjectileDispenseBehavior.java b/src/main/java/net/minecraft/core/dispenser/ProjectileDispenseBehavior.java +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/net/minecraft/core/dispenser/ProjectileDispenseBehavior.java ++++ b/src/main/java/net/minecraft/core/dispenser/ProjectileDispenseBehavior.java +@@ -0,0 +0,0 @@ public class ProjectileDispenseBehavior extends DefaultDispenseItemBehavior { + + // CraftBukkit start + // this.projectileItem.shoot(iprojectile, (double) enumdirection.getStepX(), (double) enumdirection.getStepY(), (double) enumdirection.getStepZ(), this.dispenseConfig.power(), this.dispenseConfig.uncertainty()); +- ItemStack itemstack1 = stack.split(1); ++ ItemStack itemstack1 = stack.copyWithCount(1); // Paper + org.bukkit.block.Block block = CraftBlock.at(worldserver, pointer.pos()); + CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack1); + +@@ -0,0 +0,0 @@ public class ProjectileDispenseBehavior extends DefaultDispenseItemBehavior { + } + + if (event.isCancelled()) { +- stack.grow(1); ++ // stack.grow(1); // Paper - shrink below + return stack; + } + ++ boolean shrink = true; // Paper + if (!event.getItem().equals(craftItem)) { +- stack.grow(1); ++ shrink = false; // Paper - shrink below + // Chain to handler for new item + ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem()); + DispenseItemBehavior idispensebehavior = (DispenseItemBehavior) DispenserBlock.DISPENSER_REGISTRY.get(eventStack.getItem()); +@@ -0,0 +0,0 @@ public class ProjectileDispenseBehavior extends DefaultDispenseItemBehavior { + ((Entity) iprojectile).projectileSource = new org.bukkit.craftbukkit.projectiles.CraftBlockProjectileSource(pointer.blockEntity()); + // CraftBukkit end + worldserver.addFreshEntity(iprojectile); +- // itemstack.shrink(1); // CraftBukkit - Handled during event processing ++ if (shrink) stack.shrink(1); // Paper - actually handle here + return stack; + } + diff --git a/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java diff --git a/patches/unapplied/server/Fix-incorrect-crafting-result-amount-for-fireworks.patch b/patches/server/Fix-incorrect-crafting-result-amount-for-fireworks.patch similarity index 93% rename from patches/unapplied/server/Fix-incorrect-crafting-result-amount-for-fireworks.patch rename to patches/server/Fix-incorrect-crafting-result-amount-for-fireworks.patch index 12d47a0483..fe680dee83 100644 --- a/patches/unapplied/server/Fix-incorrect-crafting-result-amount-for-fireworks.patch +++ b/patches/server/Fix-incorrect-crafting-result-amount-for-fireworks.patch @@ -12,7 +12,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public class FireworkRocketRecipe extends CustomRecipe { @Override - public ItemStack getResultItem(RegistryAccess registryManager) { + public ItemStack getResultItem(HolderLookup.Provider registriesLookup) { - return new ItemStack(Items.FIREWORK_ROCKET); + return new ItemStack(Items.FIREWORK_ROCKET, 3); // Paper - Fix incorrect crafting result amount } diff --git a/patches/unapplied/server/Fix-inventories-returning-null-Locations.patch b/patches/server/Fix-inventories-returning-null-Locations.patch similarity index 100% rename from patches/unapplied/server/Fix-inventories-returning-null-Locations.patch rename to patches/server/Fix-inventories-returning-null-Locations.patch diff --git a/patches/unapplied/server/Fix-inventory-desync.patch b/patches/server/Fix-inventory-desync.patch similarity index 98% rename from patches/unapplied/server/Fix-inventory-desync.patch rename to patches/server/Fix-inventory-desync.patch index 14c9bd7363..70e8f50b9f 100644 --- a/patches/unapplied/server/Fix-inventory-desync.patch +++ b/patches/server/Fix-inventory-desync.patch @@ -8,7 +8,7 @@ diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/n index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -0,0 +0,0 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -0,0 +0,0 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti // CraftBukkit start - fire PlayerLeashEntityEvent if (CraftEventFactory.callPlayerLeashEntityEvent(this, player, player, hand).isCancelled()) { ((ServerPlayer) player).connection.send(new ClientboundSetEntityLinkPacket(this, this.getLeashHolder())); diff --git a/patches/unapplied/server/Fix-missing-map-initialize-event-call.patch b/patches/server/Fix-missing-map-initialize-event-call.patch similarity index 87% rename from patches/unapplied/server/Fix-missing-map-initialize-event-call.patch rename to patches/server/Fix-missing-map-initialize-event-call.patch index ea439a41b0..76b21fc798 100644 --- a/patches/unapplied/server/Fix-missing-map-initialize-event-call.patch +++ b/patches/server/Fix-missing-map-initialize-event-call.patch @@ -13,9 +13,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public class ServerLevel extends Level implements WorldGenLevel { @Nullable @Override - public MapItemSavedData getMapData(String id) { + public MapItemSavedData getMapData(MapId id) { - // CraftBukkit start -- MapItemSavedData worldmap = (MapItemSavedData) this.getServer().overworld().getDataStorage().get(MapItemSavedData.factory(), id); +- MapItemSavedData worldmap = (MapItemSavedData) this.getServer().overworld().getDataStorage().get(MapItemSavedData.factory(), id.key()); - if (worldmap != null) { - worldmap.id = id; + // Paper start - Call missing map initialize event and set id @@ -23,8 +23,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + + final net.minecraft.world.level.saveddata.SavedData existing = storage.cache.get(id); + if (existing == null && !storage.cache.containsKey(id)) { -+ final net.minecraft.world.level.saveddata.SavedData.Factory<MapItemSavedData> factory = MapItemSavedData.factory(); -+ final MapItemSavedData map = storage.readSavedData(factory.deserializer(), factory.type(), id); ++ final MapItemSavedData worldmap = (MapItemSavedData) this.getServer().overworld().getDataStorage().get(MapItemSavedData.factory(), id.key()); + storage.cache.put(id, map); + if (map != null) { + map.id = id; diff --git a/patches/unapplied/server/Fix-possible-NPE-on-painting-creation.patch b/patches/server/Fix-possible-NPE-on-painting-creation.patch similarity index 100% rename from patches/unapplied/server/Fix-possible-NPE-on-painting-creation.patch rename to patches/server/Fix-possible-NPE-on-painting-creation.patch diff --git a/patches/unapplied/server/Fix-race-condition-on-UpgradeData.BlockFixers-class-.patch b/patches/server/Fix-race-condition-on-UpgradeData.BlockFixers-class-.patch similarity index 100% rename from patches/unapplied/server/Fix-race-condition-on-UpgradeData.BlockFixers-class-.patch rename to patches/server/Fix-race-condition-on-UpgradeData.BlockFixers-class-.patch diff --git a/patches/unapplied/server/Fix-rotation-when-spawning-display-entities.patch b/patches/server/Fix-rotation-when-spawning-display-entities.patch similarity index 93% rename from patches/unapplied/server/Fix-rotation-when-spawning-display-entities.patch rename to patches/server/Fix-rotation-when-spawning-display-entities.patch index 089eeadd65..4ce3268c96 100644 --- a/patches/unapplied/server/Fix-rotation-when-spawning-display-entities.patch +++ b/patches/server/Fix-rotation-when-spawning-display-entities.patch @@ -10,7 +10,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntityTypes.java @@ -0,0 +0,0 @@ public final class CraftEntityTypes { Vector direction = spawnData.location().getDirection().multiply(10); - entity.setDirection(direction.getX(), direction.getY(), direction.getZ()); + entity.assignPower(direction.getX(), direction.getY(), direction.getZ()); }; + private static final BiConsumer<SpawnData, net.minecraft.world.entity.Entity> ROT = (spawnData, entity) -> entity.setRot(spawnData.yaw(), spawnData.pitch()); // Paper private static final Map<Class<?>, EntityTypeData<?, ?>> CLASS_TYPE_DATA = new HashMap<>(); @@ -29,4 +29,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + register(new EntityTypeData<>(EntityType.TEXT_DISPLAY, TextDisplay.class, CraftTextDisplay::new, combine(createAndSetPos(net.minecraft.world.entity.EntityType.TEXT_DISPLAY), ROT))); // Paper // MISC - register(new EntityTypeData<>(EntityType.DROPPED_ITEM, Item.class, CraftItem::new, spawnData -> { + register(new EntityTypeData<>(EntityType.ITEM, Item.class, CraftItem::new, spawnData -> { diff --git a/patches/unapplied/server/Fix-silent-equipment-change-for-mobs.patch b/patches/server/Fix-silent-equipment-change-for-mobs.patch similarity index 93% rename from patches/unapplied/server/Fix-silent-equipment-change-for-mobs.patch rename to patches/server/Fix-silent-equipment-change-for-mobs.patch index ec53232009..2d33b32dc6 100644 --- a/patches/unapplied/server/Fix-silent-equipment-change-for-mobs.patch +++ b/patches/server/Fix-silent-equipment-change-for-mobs.patch @@ -8,7 +8,7 @@ diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/n index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -0,0 +0,0 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -0,0 +0,0 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti @Override public void setItemSlot(EquipmentSlot slot, ItemStack stack) { @@ -28,6 +28,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 case ARMOR: - this.onEquipItem(slot, (ItemStack) this.armorItems.set(slot.getIndex(), stack), stack); + this.onEquipItem(slot, (ItemStack) this.armorItems.set(slot.getIndex(), stack), stack, silent); // Paper - Fix silent equipment change + break; + case BODY: + ItemStack itemstack1 = this.bodyArmorItem; + + this.bodyArmorItem = stack; +- this.onEquipItem(slot, itemstack1, stack); ++ this.onEquipItem(slot, itemstack1, stack, silent); // Paper - Fix silent equipment change } } diff --git a/patches/unapplied/server/Fix-sniffer-removeExploredLocation.patch b/patches/server/Fix-sniffer-removeExploredLocation.patch similarity index 100% rename from patches/unapplied/server/Fix-sniffer-removeExploredLocation.patch rename to patches/server/Fix-sniffer-removeExploredLocation.patch diff --git a/patches/unapplied/server/Fix-spigot-s-Forced-Stats.patch b/patches/server/Fix-spigot-s-Forced-Stats.patch similarity index 100% rename from patches/unapplied/server/Fix-spigot-s-Forced-Stats.patch rename to patches/server/Fix-spigot-s-Forced-Stats.patch diff --git a/patches/unapplied/server/Fix-spigot-sound-playing-for-BlockItem-ItemStacks.patch b/patches/server/Fix-spigot-sound-playing-for-BlockItem-ItemStacks.patch similarity index 95% rename from patches/unapplied/server/Fix-spigot-sound-playing-for-BlockItem-ItemStacks.patch rename to patches/server/Fix-spigot-sound-playing-for-BlockItem-ItemStacks.patch index b11e629eb7..aeb2e546f3 100644 --- a/patches/unapplied/server/Fix-spigot-sound-playing-for-BlockItem-ItemStacks.patch +++ b/patches/server/Fix-spigot-sound-playing-for-BlockItem-ItemStacks.patch @@ -8,7 +8,7 @@ diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/ja index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -0,0 +0,0 @@ public final class ItemStack { +@@ -0,0 +0,0 @@ public final class ItemStack implements DataComponentHolder { // SPIGOT-1288 - play sound stripped from ItemBlock if (this.item instanceof BlockItem) { diff --git a/patches/unapplied/server/Fix-strikeLightningEffect-powers-lightning-rods-and-.patch b/patches/server/Fix-strikeLightningEffect-powers-lightning-rods-and-.patch similarity index 100% rename from patches/unapplied/server/Fix-strikeLightningEffect-powers-lightning-rods-and-.patch rename to patches/server/Fix-strikeLightningEffect-powers-lightning-rods-and-.patch diff --git a/patches/unapplied/server/Fix-team-sidebar-objectives-not-being-cleared.patch b/patches/server/Fix-team-sidebar-objectives-not-being-cleared.patch similarity index 100% rename from patches/unapplied/server/Fix-team-sidebar-objectives-not-being-cleared.patch rename to patches/server/Fix-team-sidebar-objectives-not-being-cleared.patch diff --git a/patches/unapplied/server/Fix-text-display-error-on-spawn.patch b/patches/server/Fix-text-display-error-on-spawn.patch similarity index 100% rename from patches/unapplied/server/Fix-text-display-error-on-spawn.patch rename to patches/server/Fix-text-display-error-on-spawn.patch diff --git a/patches/unapplied/server/Flying-Fall-Damage.patch b/patches/server/Flying-Fall-Damage.patch similarity index 96% rename from patches/unapplied/server/Flying-Fall-Damage.patch rename to patches/server/Flying-Fall-Damage.patch index 356229620c..6c8b2884d3 100644 --- a/patches/unapplied/server/Flying-Fall-Damage.patch +++ b/patches/server/Flying-Fall-Damage.patch @@ -9,8 +9,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -0,0 +0,0 @@ public abstract class Player extends LivingEntity { - public FishingHook fishing; - public float hurtDir; // Paper - protected -> public + public Entity currentExplosionCause; + public boolean ignoreFallDamageFromCurrentImpulse; public boolean affectsSpawning = true; // Paper - Affects Spawning API + public net.kyori.adventure.util.TriState flyingFallDamage = net.kyori.adventure.util.TriState.NOT_SET; // Paper - flying fall damage diff --git a/patches/unapplied/server/Folia-scheduler-and-owned-region-API.patch b/patches/server/Folia-scheduler-and-owned-region-API.patch similarity index 99% rename from patches/unapplied/server/Folia-scheduler-and-owned-region-API.patch rename to patches/server/Folia-scheduler-and-owned-region-API.patch index 82c9c81d6d..37082a840a 100644 --- a/patches/unapplied/server/Folia-scheduler-and-owned-region-API.patch +++ b/patches/server/Folia-scheduler-and-owned-region-API.patch @@ -1188,7 +1188,7 @@ diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/jav index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -0,0 +0,0 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -0,0 +0,0 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public @org.jetbrains.annotations.Nullable net.minecraft.server.level.ChunkMap.TrackedEntity tracker; // Paper public CraftEntity getBukkitEntity() { if (this.bukkitEntity == null) { @@ -1213,7 +1213,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @Override public CommandSender getBukkitSender(CommandSourceStack wrapper) { return this.getBukkitEntity(); -@@ -0,0 +0,0 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -0,0 +0,0 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public final void setRemoved(Entity.RemovalReason entity_removalreason, EntityRemoveEvent.Cause cause) { CraftEventFactory.callEntityRemoveEvent(this, cause); // CraftBukkit end @@ -1221,7 +1221,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 if (this.removalReason == null) { this.removalReason = entity_removalreason; } -@@ -0,0 +0,0 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -0,0 +0,0 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.getPassengers().forEach(Entity::stopRiding); this.levelCallback.onRemove(entity_removalreason); diff --git a/patches/unapplied/server/Implement-OfflinePlayer-isConnected.patch b/patches/server/Implement-OfflinePlayer-isConnected.patch similarity index 95% rename from patches/unapplied/server/Implement-OfflinePlayer-isConnected.patch rename to patches/server/Implement-OfflinePlayer-isConnected.patch index 3718c5f016..eed854cceb 100644 --- a/patches/unapplied/server/Implement-OfflinePlayer-isConnected.patch +++ b/patches/server/Implement-OfflinePlayer-isConnected.patch @@ -39,4 +39,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + @Override public InetSocketAddress getAddress() { - if (this.getHandle().connection == null) return null; + if (this.getHandle().connection.protocol() == null) return null; diff --git a/patches/unapplied/server/Implement-PlayerFailMoveEvent.patch b/patches/server/Implement-PlayerFailMoveEvent.patch similarity index 95% rename from patches/unapplied/server/Implement-PlayerFailMoveEvent.patch rename to patches/server/Implement-PlayerFailMoveEvent.patch index 03a71c4b25..502f67d71d 100644 --- a/patches/unapplied/server/Implement-PlayerFailMoveEvent.patch +++ b/patches/server/Implement-PlayerFailMoveEvent.patch @@ -60,22 +60,24 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 d8 = d2 - this.player.getZ(); d10 = d6 * d6 + d7 * d7 + d8 * d8; -- boolean flag2 = false; +- boolean flag3 = false; + boolean movedWrongly = false; // Paper - Add fail move event; rename if (!this.player.isChangingDimension() && d10 > org.spigotmc.SpigotConfig.movedWronglyThreshold && !this.player.isSleeping() && !this.player.gameMode.isCreative() && this.player.gameMode.getGameModeForPlayer() != GameType.SPECTATOR) { // Spigot -- flag2 = true; +- flag3 = true; + // Paper start - Add fail move event + io.papermc.paper.event.player.PlayerFailMoveEvent event = fireFailMove(io.papermc.paper.event.player.PlayerFailMoveEvent.FailReason.MOVED_WRONGLY, + toX, toY, toZ, toYaw, toPitch, true); + if (!event.isAllowed()) { + movedWrongly = true; + if (event.getLogWarning()) ++ // Paper end ServerGamePacketListenerImpl.LOGGER.warn("{} moved wrongly!", this.player.getName().getString()); -+ } ++ } // Paper } -- if (!this.player.noPhysics && !this.player.isSleeping() && (flag2 && worldserver.noCollision(this.player, axisalignedbb) || this.isPlayerCollidingWithAnythingNew(worldserver, axisalignedbb, d0, d1, d2))) { +- if (!this.player.noPhysics && !this.player.isSleeping() && (flag3 && worldserver.noCollision(this.player, axisalignedbb) || this.isPlayerCollidingWithAnythingNew(worldserver, axisalignedbb, d0, d1, d2))) { ++ // Paper start - Add fail move event + boolean teleportBack = !this.player.noPhysics && !this.player.isSleeping() && (movedWrongly && worldserver.noCollision(this.player, axisalignedbb) || this.isPlayerCollidingWithAnythingNew(worldserver, axisalignedbb, d0, d1, d2)); + if (teleportBack) { + io.papermc.paper.event.player.PlayerFailMoveEvent event = fireFailMove(io.papermc.paper.event.player.PlayerFailMoveEvent.FailReason.CLIPPED_INTO_BLOCK, @@ -85,7 +87,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + } + } + if (teleportBack) { -+ // Paper end - Add fail move event ++ // Paper end - Add fail move event 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 { diff --git a/patches/unapplied/server/Improve-PortalEvents.patch b/patches/server/Improve-PortalEvents.patch similarity index 93% rename from patches/unapplied/server/Improve-PortalEvents.patch rename to patches/server/Improve-PortalEvents.patch index b65d1c7122..af29395d34 100644 --- a/patches/unapplied/server/Improve-PortalEvents.patch +++ b/patches/server/Improve-PortalEvents.patch @@ -8,7 +8,7 @@ diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/jav index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -0,0 +0,0 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -0,0 +0,0 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess Location enter = bukkitEntity.getLocation(); Location exit = CraftLocation.toBukkit(exitPosition, exitWorldServer.getWorld()); diff --git a/patches/unapplied/server/Improve-logging-and-errors.patch b/patches/server/Improve-logging-and-errors.patch similarity index 96% rename from patches/unapplied/server/Improve-logging-and-errors.patch rename to patches/server/Improve-logging-and-errors.patch index 395917aaba..07e823030e 100644 --- a/patches/unapplied/server/Improve-logging-and-errors.patch +++ b/patches/server/Improve-logging-and-errors.patch @@ -86,10 +86,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/net/minecraft/world/item/crafting/RecipeManager.java +++ b/src/main/java/net/minecraft/world/item/crafting/RecipeManager.java @@ -0,0 +0,0 @@ public class RecipeManager extends SimpleJsonResourceReloadListener { - return entry1.getValue(); // CraftBukkit // Paper - decompile fix - *shrugs internally* // todo: is this needed anymore? - })); - this.byName = Maps.newHashMap(builder.build()); // CraftBukkit -- RecipeManager.LOGGER.info("Loaded {} recipes", map1.size()); + this.byType = LinkedHashMultimap.create(builder.build()); + this.byName = Maps.newHashMap(com_google_common_collect_immutablemap_builder.build()); + // CraftBukkit end +- RecipeManager.LOGGER.info("Loaded {} recipes", this.byType.size()); + RecipeManager.LOGGER.info("Loaded {} recipes", this.byName.size()); // Paper - Improve logging and errors; log correct number of recipes } diff --git a/patches/unapplied/server/Make-Amethyst-throw-both-Spread-and-Grow-Events.patch b/patches/server/Make-Amethyst-throw-both-Spread-and-Grow-Events.patch similarity index 100% rename from patches/unapplied/server/Make-Amethyst-throw-both-Spread-and-Grow-Events.patch rename to patches/server/Make-Amethyst-throw-both-Spread-and-Grow-Events.patch diff --git a/patches/unapplied/server/More-DragonBattle-API.patch b/patches/server/More-DragonBattle-API.patch similarity index 100% rename from patches/unapplied/server/More-DragonBattle-API.patch rename to patches/server/More-DragonBattle-API.patch diff --git a/patches/unapplied/server/More-accurate-isInOpenWater-impl.patch b/patches/server/More-accurate-isInOpenWater-impl.patch similarity index 100% rename from patches/unapplied/server/More-accurate-isInOpenWater-impl.patch rename to patches/server/More-accurate-isInOpenWater-impl.patch diff --git a/patches/unapplied/server/Only-capture-actual-tree-growth.patch b/patches/server/Only-capture-actual-tree-growth.patch similarity index 98% rename from patches/unapplied/server/Only-capture-actual-tree-growth.patch rename to patches/server/Only-capture-actual-tree-growth.patch index 667bfd159b..e1e9ac18cc 100644 --- a/patches/unapplied/server/Only-capture-actual-tree-growth.patch +++ b/patches/server/Only-capture-actual-tree-growth.patch @@ -20,7 +20,7 @@ diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/ja index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -0,0 +0,0 @@ public final class ItemStack { +@@ -0,0 +0,0 @@ public final class ItemStack implements DataComponentHolder { for (CraftBlockState blockstate : blocks) { // SPIGOT-7572 - Move fix for SPIGOT-7248 to CapturedBlockState, to allow bees in bee nest CapturedBlockState.setBlockState(blockstate); diff --git a/patches/unapplied/server/Only-erase-allay-memory-on-non-item-targets.patch b/patches/server/Only-erase-allay-memory-on-non-item-targets.patch similarity index 100% rename from patches/unapplied/server/Only-erase-allay-memory-on-non-item-targets.patch rename to patches/server/Only-erase-allay-memory-on-non-item-targets.patch diff --git a/patches/unapplied/server/Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch b/patches/server/Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch similarity index 100% rename from patches/unapplied/server/Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch rename to patches/server/Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch diff --git a/patches/unapplied/server/Only-tick-item-frames-if-players-can-see-it.patch b/patches/server/Only-tick-item-frames-if-players-can-see-it.patch similarity index 90% rename from patches/unapplied/server/Only-tick-item-frames-if-players-can-see-it.patch rename to patches/server/Only-tick-item-frames-if-players-can-see-it.patch index 29acf8973b..4d5169d57a 100644 --- a/patches/unapplied/server/Only-tick-item-frames-if-players-can-see-it.patch +++ b/patches/server/Only-tick-item-frames-if-players-can-see-it.patch @@ -13,8 +13,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 Entity entity = this.entity; -- if (entity instanceof ItemFrame) { +- if (entity instanceof ItemFrame entityitemframe) { + if (!this.trackedPlayers.isEmpty() && entity instanceof ItemFrame) { // Paper - Perf: Only tick item frames if players can see it - ItemFrame entityitemframe = (ItemFrame) entity; - if (true || this.tickCount % 10 == 0) { // CraftBukkit - Moved below, should always enter this block + ItemStack itemstack = entityitemframe.getItem(); + diff --git a/patches/unapplied/server/Optimize-VarInts.patch b/patches/server/Optimize-VarInts.patch similarity index 100% rename from patches/unapplied/server/Optimize-VarInts.patch rename to patches/server/Optimize-VarInts.patch diff --git a/patches/unapplied/server/Optimize-nearest-structure-border-iteration.patch b/patches/server/Optimize-nearest-structure-border-iteration.patch similarity index 100% rename from patches/unapplied/server/Optimize-nearest-structure-border-iteration.patch rename to patches/server/Optimize-nearest-structure-border-iteration.patch diff --git a/patches/unapplied/server/Optimize-player-lookups-for-beacons.patch b/patches/server/Optimize-player-lookups-for-beacons.patch similarity index 100% rename from patches/unapplied/server/Optimize-player-lookups-for-beacons.patch rename to patches/server/Optimize-player-lookups-for-beacons.patch diff --git a/patches/unapplied/server/Prevent-GameEvents-being-fired-from-unloaded-chunks.patch b/patches/server/Prevent-GameEvents-being-fired-from-unloaded-chunks.patch similarity index 91% rename from patches/unapplied/server/Prevent-GameEvents-being-fired-from-unloaded-chunks.patch rename to patches/server/Prevent-GameEvents-being-fired-from-unloaded-chunks.patch index 58e30ef1d1..57db0faac4 100644 --- a/patches/unapplied/server/Prevent-GameEvents-being-fired-from-unloaded-chunks.patch +++ b/patches/server/Prevent-GameEvents-being-fired-from-unloaded-chunks.patch @@ -11,7 +11,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public class ServerLevel extends Level implements WorldGenLevel { @Override - public void gameEvent(GameEvent event, Vec3 emitterPos, GameEvent.Context emitter) { + public void gameEvent(Holder<GameEvent> event, Vec3 emitterPos, GameEvent.Context emitter) { + // Paper start - Prevent GameEvents being fired from unloaded chunks + if (this.getChunkIfLoadedImmediately((Mth.floor(emitterPos.x) >> 4), (Mth.floor(emitterPos.z) >> 4)) == null) { + return; diff --git a/patches/unapplied/server/Prevent-causing-expired-keys-from-impacting-new-join.patch b/patches/server/Prevent-causing-expired-keys-from-impacting-new-join.patch similarity index 98% rename from patches/unapplied/server/Prevent-causing-expired-keys-from-impacting-new-join.patch rename to patches/server/Prevent-causing-expired-keys-from-impacting-new-join.patch index c534ced4d9..46af8940cc 100644 --- a/patches/unapplied/server/Prevent-causing-expired-keys-from-impacting-new-join.patch +++ b/patches/server/Prevent-causing-expired-keys-from-impacting-new-join.patch @@ -50,7 +50,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + } - public void resetPosition() { + private int getMaximumFlyingTicks(Entity vehicle) { @@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl private void resetPlayerChatState(RemoteChatSession session) { diff --git a/patches/unapplied/server/Properly-handle-BlockBreakEvent-isDropItems.patch b/patches/server/Properly-handle-BlockBreakEvent-isDropItems.patch similarity index 97% rename from patches/unapplied/server/Properly-handle-BlockBreakEvent-isDropItems.patch rename to patches/server/Properly-handle-BlockBreakEvent-isDropItems.patch index c2cb1a3f47..e9e6cb86b3 100644 --- a/patches/unapplied/server/Properly-handle-BlockBreakEvent-isDropItems.patch +++ b/patches/server/Properly-handle-BlockBreakEvent-isDropItems.patch @@ -35,9 +35,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 - super.playerDestroy(world, player, pos, state, blockEntity, tool); + public void playerDestroy(Level world, Player player, BlockPos pos, BlockState state, @Nullable BlockEntity blockEntity, ItemStack tool, boolean includeDrops, boolean dropExp) { // Paper - fix drops not preventing stats/food exhaustion + super.playerDestroy(world, player, pos, state, blockEntity, tool, includeDrops, dropExp); // Paper - fix drops not preventing stats/food exhaustion - if (!world.isClientSide && blockEntity instanceof BeehiveBlockEntity) { - BeehiveBlockEntity tileentitybeehive = (BeehiveBlockEntity) blockEntity; - + if (!world.isClientSide && blockEntity instanceof BeehiveBlockEntity tileentitybeehive) { + if (EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, tool) == 0) { + tileentitybeehive.emptyAllLivingFromHive(player, state, BeehiveBlockEntity.BeeReleaseStatus.EMERGENCY); diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/world/level/block/Block.java diff --git a/patches/unapplied/server/Refresh-ProjectileSource-for-projectiles.patch b/patches/server/Refresh-ProjectileSource-for-projectiles.patch similarity index 97% rename from patches/unapplied/server/Refresh-ProjectileSource-for-projectiles.patch rename to patches/server/Refresh-ProjectileSource-for-projectiles.patch index cbd47de483..1366e580a0 100644 --- a/patches/unapplied/server/Refresh-ProjectileSource-for-projectiles.patch +++ b/patches/server/Refresh-ProjectileSource-for-projectiles.patch @@ -17,7 +17,7 @@ diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/jav index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -0,0 +0,0 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -0,0 +0,0 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public boolean inWorld = false; public boolean generation; public int maxAirTicks = this.getDefaultMaxAirSupply(); // CraftBukkit - SPIGOT-6907: re-implement LivingEntity#setMaximumAir() diff --git a/patches/unapplied/server/Remove-CraftItemStack-setAmount-null-assignment.patch b/patches/server/Remove-CraftItemStack-setAmount-null-assignment.patch similarity index 100% rename from patches/unapplied/server/Remove-CraftItemStack-setAmount-null-assignment.patch rename to patches/server/Remove-CraftItemStack-setAmount-null-assignment.patch diff --git a/patches/unapplied/server/Remove-UpgradeData-neighbour-ticks-outside-of-range.patch b/patches/server/Remove-UpgradeData-neighbour-ticks-outside-of-range.patch similarity index 100% rename from patches/unapplied/server/Remove-UpgradeData-neighbour-ticks-outside-of-range.patch rename to patches/server/Remove-UpgradeData-neighbour-ticks-outside-of-range.patch diff --git a/patches/unapplied/server/Respect-randomizeData-on-more-entities-when-spawning.patch b/patches/server/Respect-randomizeData-on-more-entities-when-spawning.patch similarity index 80% rename from patches/unapplied/server/Respect-randomizeData-on-more-entities-when-spawning.patch rename to patches/server/Respect-randomizeData-on-more-entities-when-spawning.patch index 8ebce14915..60668d43aa 100644 --- a/patches/unapplied/server/Respect-randomizeData-on-more-entities-when-spawning.patch +++ b/patches/server/Respect-randomizeData-on-more-entities-when-spawning.patch @@ -13,7 +13,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntityTypes.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntityTypes.java @@ -0,0 +0,0 @@ public final class CraftEntityTypes { - entity.setDirection(direction.getX(), direction.getY(), direction.getZ()); + entity.assignPower(direction.getX(), direction.getY(), direction.getZ()); }; private static final BiConsumer<SpawnData, net.minecraft.world.entity.Entity> ROT = (spawnData, entity) -> entity.setRot(spawnData.yaw(), spawnData.pitch()); // Paper + // Paper start - respect randomizeData @@ -44,15 +44,15 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 entity.setItem(CraftItemStack.asNMSCopy(new ItemStack(Material.SPLASH_POTION, 1))); return entity; })); -- register(new EntityTypeData<>(EntityType.PRIMED_TNT, TNTPrimed.class, CraftTNTPrimed::new, spawnData -> new PrimedTnt(spawnData.minecraftWorld(), spawnData.x(), spawnData.y(), spawnData.z(), null))); -+ register(new EntityTypeData<>(EntityType.PRIMED_TNT, TNTPrimed.class, CraftTNTPrimed::new, combine(spawnData -> new PrimedTnt(spawnData.minecraftWorld(), spawnData.x(), spawnData.y(), spawnData.z(), null), CLEAR_MOVE_IF_NOT_RANDOMIZED))); // Paper - respect randomizeData +- register(new EntityTypeData<>(EntityType.TNT, TNTPrimed.class, CraftTNTPrimed::new, spawnData -> new PrimedTnt(spawnData.minecraftWorld(), spawnData.x(), spawnData.y(), spawnData.z(), null))); ++ register(new EntityTypeData<>(EntityType.TNT, TNTPrimed.class, CraftTNTPrimed::new, combine(spawnData -> new PrimedTnt(spawnData.minecraftWorld(), spawnData.x(), spawnData.y(), spawnData.z(), null), CLEAR_MOVE_IF_NOT_RANDOMIZED))); // Paper - respect randomizeData register(new EntityTypeData<>(EntityType.FALLING_BLOCK, FallingBlock.class, CraftFallingBlock::new, spawnData -> { BlockPos pos = BlockPos.containing(spawnData.x(), spawnData.y(), spawnData.z()); return new FallingBlockEntity(spawnData.minecraftWorld(), spawnData.x(), spawnData.y(), spawnData.z(), spawnData.world().getBlockState(pos)); // Paper - create falling block entities correctly })); -- register(new EntityTypeData<>(EntityType.FIREWORK, Firework.class, CraftFirework::new, spawnData -> new FireworkRocketEntity(spawnData.minecraftWorld(), spawnData.x(), spawnData.y(), spawnData.z(), net.minecraft.world.item.ItemStack.EMPTY))); +- register(new EntityTypeData<>(EntityType.FIREWORK_ROCKET, Firework.class, CraftFirework::new, spawnData -> new FireworkRocketEntity(spawnData.minecraftWorld(), spawnData.x(), spawnData.y(), spawnData.z(), net.minecraft.world.item.ItemStack.EMPTY))); + // Paper start - respect randomizeData -+ register(new EntityTypeData<>(EntityType.FIREWORK, Firework.class, CraftFirework::new, spawnData -> { ++ register(new EntityTypeData<>(EntityType.FIREWORK_ROCKET, Firework.class, CraftFirework::new, spawnData -> { + FireworkRocketEntity entity = new FireworkRocketEntity(spawnData.minecraftWorld(), spawnData.x(), spawnData.y(), spawnData.z(), net.minecraft.world.item.ItemStack.EMPTY); + if (!spawnData.randomizeData()) { + // logic below was taken from FireworkRocketEntity constructor @@ -64,5 +64,5 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + })); + // Paper end - respect randomizeData register(new EntityTypeData<>(EntityType.EVOKER_FANGS, EvokerFangs.class, CraftEvokerFangs::new, spawnData -> new net.minecraft.world.entity.projectile.EvokerFangs(spawnData.minecraftWorld(), spawnData.x(), spawnData.y(), spawnData.z(), (float) Math.toRadians(spawnData.yaw()), 0, null))); - register(new EntityTypeData<>(EntityType.MINECART_COMMAND, CommandMinecart.class, CraftMinecartCommand::new, spawnData -> new MinecartCommandBlock(spawnData.minecraftWorld(), spawnData.x(), spawnData.y(), spawnData.z()))); + register(new EntityTypeData<>(EntityType.COMMAND_BLOCK_MINECART, CommandMinecart.class, CraftMinecartCommand::new, spawnData -> new MinecartCommandBlock(spawnData.minecraftWorld(), spawnData.x(), spawnData.y(), spawnData.z()))); register(new EntityTypeData<>(EntityType.MINECART, RideableMinecart.class, CraftMinecartRideable::new, spawnData -> new Minecart(spawnData.minecraftWorld(), spawnData.x(), spawnData.y(), spawnData.z()))); diff --git a/patches/unapplied/server/SculkCatalyst-bloom-API.patch b/patches/server/SculkCatalyst-bloom-API.patch similarity index 93% rename from patches/unapplied/server/SculkCatalyst-bloom-API.patch rename to patches/server/SculkCatalyst-bloom-API.patch index 985698cb35..4e58b912f0 100644 --- a/patches/unapplied/server/SculkCatalyst-bloom-API.patch +++ b/patches/server/SculkCatalyst-bloom-API.patch @@ -11,8 +11,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftSculkCatalyst.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftSculkCatalyst.java @@ -0,0 +0,0 @@ public class CraftSculkCatalyst extends CraftBlockEntityState<SculkCatalystBlock - public CraftSculkCatalyst copy() { - return new CraftSculkCatalyst(this); + public CraftSculkCatalyst copy(Location location) { + return new CraftSculkCatalyst(this, location); } + + // Paper start - SculkCatalyst bloom API diff --git a/patches/unapplied/server/Skip-POI-finding-if-stuck-in-vehicle.patch b/patches/server/Skip-POI-finding-if-stuck-in-vehicle.patch similarity index 100% rename from patches/unapplied/server/Skip-POI-finding-if-stuck-in-vehicle.patch rename to patches/server/Skip-POI-finding-if-stuck-in-vehicle.patch diff --git a/patches/unapplied/server/Treat-sequence-violations-like-they-should-be.patch b/patches/server/Treat-sequence-violations-like-they-should-be.patch similarity index 100% rename from patches/unapplied/server/Treat-sequence-violations-like-they-should-be.patch rename to patches/server/Treat-sequence-violations-like-they-should-be.patch diff --git a/patches/unapplied/server/Update-entity-data-when-attaching-firework-to-entity.patch b/patches/server/Update-entity-data-when-attaching-firework-to-entity.patch similarity index 100% rename from patches/unapplied/server/Update-entity-data-when-attaching-firework-to-entity.patch rename to patches/server/Update-entity-data-when-attaching-firework-to-entity.patch diff --git a/patches/unapplied/server/Use-array-for-gamerule-storage.patch b/patches/server/Use-array-for-gamerule-storage.patch similarity index 88% rename from patches/unapplied/server/Use-array-for-gamerule-storage.patch rename to patches/server/Use-array-for-gamerule-storage.patch index c14b604519..d69377731d 100644 --- a/patches/unapplied/server/Use-array-for-gamerule-storage.patch +++ b/patches/server/Use-array-for-gamerule-storage.patch @@ -9,8 +9,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/net/minecraft/world/level/GameRules.java +++ b/src/main/java/net/minecraft/world/level/GameRules.java @@ -0,0 +0,0 @@ public class GameRules { - public static final GameRules.Key<GameRules.BooleanValue> RULE_DO_VINES_SPREAD = GameRules.register("doVinesSpread", GameRules.Category.UPDATES, GameRules.BooleanValue.create(true)); - public static final GameRules.Key<GameRules.BooleanValue> RULE_ENDER_PEARLS_VANISH_ON_DEATH = GameRules.register("enderPearlsVanishOnDeath", GameRules.Category.PLAYER, GameRules.BooleanValue.create(true)); + worldserver.setDefaultSpawnPos(worldserver.getSharedSpawnPos(), worldserver.getSharedSpawnAngle()); + })); private final Map<GameRules.Key<?>, GameRules.Value<?>> rules; + private final GameRules.Value<?>[] gameruleArray; // Paper - Perf: Use array for gamerule storage diff --git a/patches/unapplied/server/Use-correct-seed-on-api-world-load.patch b/patches/server/Use-correct-seed-on-api-world-load.patch similarity index 92% rename from patches/unapplied/server/Use-correct-seed-on-api-world-load.patch rename to patches/server/Use-correct-seed-on-api-world-load.patch index 2fb8319cd0..7d025e98a5 100644 --- a/patches/unapplied/server/Use-correct-seed-on-api-world-load.patch +++ b/patches/server/Use-correct-seed-on-api-world-load.patch @@ -9,7 +9,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -0,0 +0,0 @@ public final class CraftServer implements Server { - net.minecraft.server.Main.forceUpgrade(worldSession, DataFixers.getDataFixer(), this.console.options.has("eraseCache"), () -> true, iregistry); + net.minecraft.server.Main.forceUpgrade(worldSession, DataFixers.getDataFixer(), this.console.options.has("eraseCache"), () -> true, iregistrycustom_dimension, this.console.options.has("recreateRegionFiles")); } - long j = BiomeManager.obfuscateSeed(creator.seed()); diff --git a/patches/unapplied/server/Use-correct-source-for-mushroom-block-spread-event.patch b/patches/server/Use-correct-source-for-mushroom-block-spread-event.patch similarity index 100% rename from patches/unapplied/server/Use-correct-source-for-mushroom-block-spread-event.patch rename to patches/server/Use-correct-source-for-mushroom-block-spread-event.patch diff --git a/patches/unapplied/server/Use-single-player-info-update-packet-on-join.patch b/patches/server/Use-single-player-info-update-packet-on-join.patch similarity index 100% rename from patches/unapplied/server/Use-single-player-info-update-packet-on-join.patch rename to patches/server/Use-single-player-info-update-packet-on-join.patch diff --git a/patches/unapplied/server/Win-Screen-API.patch b/patches/server/Win-Screen-API.patch similarity index 100% rename from patches/unapplied/server/Win-Screen-API.patch rename to patches/server/Win-Screen-API.patch diff --git a/patches/unapplied/server/config-for-disabling-entity-tag-tags.patch b/patches/server/config-for-disabling-entity-tag-tags.patch similarity index 57% rename from patches/unapplied/server/config-for-disabling-entity-tag-tags.patch rename to patches/server/config-for-disabling-entity-tag-tags.patch index 12d0270053..fcf4948927 100644 --- a/patches/unapplied/server/config-for-disabling-entity-tag-tags.patch +++ b/patches/server/config-for-disabling-entity-tag-tags.patch @@ -9,16 +9,19 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java @@ -0,0 +0,0 @@ public class EntityType<T extends Entity> implements FeatureElement, EntityTypeT - if (world.isClientSide || !entity.onlyOpCanSetNbt() || player != null && minecraftserver.getPlayerList().isOp(player.getGameProfile())) { - CompoundTag nbttagcompound1 = entity.saveWithoutId(new CompoundTag()); - UUID uuid = entity.getUUID(); + + if (minecraftserver != null && entity != null) { + if (world.isClientSide || !entity.onlyOpCanSetNbt() || player != null && minecraftserver.getPlayerList().isOp(player.getGameProfile())) { + // Paper start - filter out protected tags + if (player == null || !player.getBukkitEntity().hasPermission("minecraft.nbt.place")) { -+ for (net.minecraft.commands.arguments.NbtPathArgument.NbtPath tag : world.paperConfig().entities.spawning.filteredEntityTagNbtPaths) { -+ tag.remove(itemNbt.getCompound("EntityTag")); -+ } ++ nbt = nbt.update((compound) -> { ++ for (net.minecraft.commands.arguments.NbtPathArgument.NbtPath tag : world.paperConfig().entities.spawning.filteredEntityTagNbtPaths) { ++ tag.remove(compound); ++ } ++ }); + } + // Paper end - filter out protected tags - - nbttagcompound1.merge(itemNbt.getCompound("EntityTag")); - entity.setUUID(uuid); ++ + nbt.loadInto(entity); + } + } diff --git a/patches/unapplied/server/fix-MapLike-spam-for-missing-key-selector.patch b/patches/server/fix-MapLike-spam-for-missing-key-selector.patch similarity index 93% rename from patches/unapplied/server/fix-MapLike-spam-for-missing-key-selector.patch rename to patches/server/fix-MapLike-spam-for-missing-key-selector.patch index 34b6b8addc..fa101421d0 100644 --- a/patches/unapplied/server/fix-MapLike-spam-for-missing-key-selector.patch +++ b/patches/server/fix-MapLike-spam-for-missing-key-selector.patch @@ -10,7 +10,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +++ b/src/main/java/net/minecraft/world/level/gameevent/vibrations/VibrationSystem.java @@ -0,0 +0,0 @@ public interface VibrationSystem { public static Codec<VibrationSystem.Data> CODEC = RecordCodecBuilder.create((instance) -> { - return instance.group(VibrationInfo.CODEC.optionalFieldOf("event").forGetter((vibrationsystem_a) -> { + return instance.group(VibrationInfo.CODEC.lenientOptionalFieldOf("event").forGetter((vibrationsystem_a) -> { return Optional.ofNullable(vibrationsystem_a.currentVibration); - }), VibrationSelector.CODEC.fieldOf("selector").forGetter(VibrationSystem.Data::getSelectionStrategy), ExtraCodecs.NON_NEGATIVE_INT.fieldOf("event_delay").orElse(0).forGetter(VibrationSystem.Data::getTravelTimeInTicks)).apply(instance, (optional, vibrationselector, integer) -> { + }), Codec.optionalField("selector", VibrationSelector.CODEC).xmap(o -> o.orElseGet(VibrationSelector::new), Optional::of).forGetter(VibrationSystem.Data::getSelectionStrategy), ExtraCodecs.NON_NEGATIVE_INT.fieldOf("event_delay").orElse(0).forGetter(VibrationSystem.Data::getTravelTimeInTicks)).apply(instance, (optional, vibrationselector, integer) -> { // Paper - fix MapLike spam for missing "selector" in 1.19.2 diff --git a/patches/unapplied/server/fix-item-meta-for-tadpole-buckets.patch b/patches/server/fix-item-meta-for-tadpole-buckets.patch similarity index 100% rename from patches/unapplied/server/fix-item-meta-for-tadpole-buckets.patch rename to patches/server/fix-item-meta-for-tadpole-buckets.patch diff --git a/patches/unapplied/server/remove-duplicate-animate-packet-for-records.patch b/patches/server/remove-duplicate-animate-packet-for-records.patch similarity index 100% rename from patches/unapplied/server/remove-duplicate-animate-packet-for-records.patch rename to patches/server/remove-duplicate-animate-packet-for-records.patch diff --git a/patches/unapplied/server/Fix-concurrenct-access-to-lookups-field-in-RegistryO.patch b/removed-patches-1-20-5/0876-Fix-concurrenct-access-to-lookups-field-in-RegistryO.patch similarity index 100% rename from patches/unapplied/server/Fix-concurrenct-access-to-lookups-field-in-RegistryO.patch rename to removed-patches-1-20-5/0876-Fix-concurrenct-access-to-lookups-field-in-RegistryO.patch diff --git a/patches/unapplied/server/Array-backed-synched-entity-data.patch b/removed-patches-1-20-5/0896-Array-backed-synched-entity-data.patch similarity index 100% rename from patches/unapplied/server/Array-backed-synched-entity-data.patch rename to removed-patches-1-20-5/0896-Array-backed-synched-entity-data.patch diff --git a/patches/unapplied/server/Deep-clone-unhandled-nbt-tags.patch b/removed-patches-1-20-5/0931-Deep-clone-unhandled-nbt-tags.patch similarity index 100% rename from patches/unapplied/server/Deep-clone-unhandled-nbt-tags.patch rename to removed-patches-1-20-5/0931-Deep-clone-unhandled-nbt-tags.patch diff --git a/patches/unapplied/server/Use-correct-variable-for-initializing-CraftLootTable.patch b/removed-patches-1-20-5/0955-Use-correct-variable-for-initializing-CraftLootTable.patch similarity index 100% rename from patches/unapplied/server/Use-correct-variable-for-initializing-CraftLootTable.patch rename to removed-patches-1-20-5/0955-Use-correct-variable-for-initializing-CraftLootTable.patch