From 4f9a205c95ae5f627a1a58d0c2a7407a1f29e777 Mon Sep 17 00:00:00 2001 From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> Date: Sun, 16 Jun 2024 06:04:36 +0800 Subject: [PATCH] 1.21 work --- README.md | 4 + build.gradle.kts | 2 +- gradle.properties | 10 +- gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 2 +- patches/api/0003-Gale-configuration.patch | 4 +- .../0008-Player-canSee-by-entity-UUID.patch | 4 +- .../api/0009-Specific-interval-TPS-API.patch | 8 +- patches/api/0010-5-second-TPS-average.patch | 8 +- patches/api/0011-Last-tick-time-API.patch | 8 +- .../0002-Dev-import-deobfuscation-fixes.patch | 20 +- ...Hide-irrelevant-compilation-warnings.patch | 4 +- .../server/0005-Gale-branding-changes.patch | 50 +- patches/server/0006-Gale-metrics.patch | 40 +- .../server/0007-Gale-semantic-version.patch | 4 +- patches/server/0008-Gale-configuration.patch | 79 +-- patches/server/0010-Gale-commands.patch | 6 +- .../0011-Include-time-in-startup-logs.patch | 4 +- ...Include-server.properties-in-timings.patch | 10 +- .../0016-Make-timings-calls-final.patch | 6 +- .../server/0017-Remove-vanilla-profiler.patch | 491 ++++++++---------- .../0018-Use-platform-math-functions.patch | 8 +- ...apelessRecipe-comparison-for-vanilla.patch | 19 +- ...0021-Reduce-projectile-chunk-loading.patch | 4 +- ...uce-enderman-teleport-chunk-lookups.patch} | 4 +- ...duce-acquire-POI-for-stuck-entities.patch} | 2 +- ...e-iterators-from-Inventory-contains.patch} | 8 +- ...ing-range-before-getting-visibility.patch} | 2 +- ...-for-plugins-not-shutting-down-task.patch} | 4 +- ...029-Improve-fluid-direction-caching.patch} | 16 +- ...ch => 0030-Cache-on-climbable-check.patch} | 8 +- ...lisionContext-a-live-representation.patch} | 0 ...-aging-cache-for-biome-temperatures.patch} | 2 +- ...r-checking-for-useless-move-packets.patch} | 32 +- ...t.patch => 0034-Inline-level-height.patch} | 12 +- ...eams-and-iterators-from-range-check.patch} | 6 +- ...037-Block-goal-does-not-load-chunks.patch} | 0 ...h => 0038-Reduce-entity-allocations.patch} | 18 +- ...e-entity-fluid-lookups-if-no-fluids.patch} | 46 +- ...-support.patch => 0041-SIMD-support.patch} | 14 +- ...0042-Make-book-writing-configurable.patch} | 4 +- ...0043-Optimize-entity-coordinate-key.patch} | 8 +- ...patch => 0044-Reduce-in-wall-checks.patch} | 6 +- ...hat-order-verification-configurable.patch} | 0 ...-respawn-attempt-after-placing-end-.patch} | 0 ...-Make-saving-fireworks-configurable.patch} | 8 +- ...table-refresh-for-non-player-intera.patch} | 2 +- ...h => 0049-Reduce-hopper-item-checks.patch} | 15 +- ...0050-Reduce-villager-item-re-pickup.patch} | 0 ...51-Variable-entity-wake-up-duration.patch} | 2 +- ...at-commands-before-player-has-joine.patch} | 12 +- ... 0053-Do-not-log-invalid-statistics.patch} | 2 +- ...4-Do-not-log-empty-message-warnings.patch} | 4 +- ...055-Do-not-log-ignored-advancements.patch} | 2 +- ...6-Do-not-log-setBlock-in-far-chunks.patch} | 16 +- ...057-Do-not-log-unrecognized-recipes.patch} | 2 +- ...-log-legacy-Material-initialization.patch} | 2 +- ...059-Do-not-log-plugin-library-loads.patch} | 0 ...Do-not-log-expired-message-warnings.patch} | 0 ...> 0061-Do-not-log-Not-Secure-marker.patch} | 6 +- ...not-log-disconnections-with-null-id.patch} | 30 +- ...0063-Do-not-log-run-as-root-warning.patch} | 4 +- ...064-Do-not-log-offline-mode-warning.patch} | 4 +- ...tly-log-invalid-pool-element-errors.patch} | 22 +- ...er-showing-in-ping-before-server-fu.patch} | 4 +- ...-238526.patch => 0067-Fix-MC-238526.patch} | 4 +- ...ow-rotation-when-shearing-mooshroom.patch} | 0 ...-121706.patch => 0069-Fix-MC-121706.patch} | 0 ...-110386.patch => 0070-Fix-MC-110386.patch} | 0 ...MC-31819.patch => 0071-Fix-MC-31819.patch} | 4 +- ...MC-26304.patch => 0072-Fix-MC-26304.patch} | 25 +- ...nt-resetting-despawn-counter-config.patch} | 31 +- ...ogging-login-locations-configurable.patch} | 4 +- ...atch => 0075-Optimize-sun-burn-tick.patch} | 20 +- ...-Optional-allocation-in-EntityBased.patch} | 0 ...rules-map-with-optimized-collection.patch} | 0 ...class-map-with-optimized-collection.patch} | 0 ...tracker-map-with-optimized-collecti.patch} | 28 +- ...ignableFrom-call-in-ClassInstanceMu.patch} | 0 ...> 0081-Cache-BlockStatePairKey-hash.patch} | 6 +- ...82-Cache-CubeVoxelShape-shape-array.patch} | 15 +- ...by-multiplication-in-CubePointRange.patch} | 4 +- ...ace-parts-by-size-in-CubePointRange.patch} | 4 +- ...k-frozen-ticks-before-landing-block.patch} | 8 +- ... => 0086-Faster-chunk-serialization.patch} | 28 +- ...=> 0087-Update-boss-bar-within-tick.patch} | 8 +- ...088-Cache-world-generator-sea-level.patch} | 6 +- ...Skip-secondary-POI-sensor-if-absent.patch} | 0 ...kip-entity-move-if-movement-is-zero.patch} | 14 +- ...> 0091-Store-mob-counts-in-an-array.patch} | 2 +- ...-Use-linked-map-for-entity-trackers.patch} | 18 +- ...h => 0093-Optimize-noise-generation.patch} | 0 ...0094-Optimize-sheep-offspring-color.patch} | 95 ++-- ...es-on-entities-with-fire-resistance.patch} | 4 +- ...6-Skip-cloning-advancement-criteria.patch} | 2 +- ...lock-destruction-packet-allocations.patch} | 6 +- ...-Spread-out-sending-all-player-info.patch} | 28 +- ...player-list-for-sending-player-info.patch} | 4 +- ...dSendEvent-if-there-are-no-listener.patch} | 6 +- ...01-Send-multiple-keep-alive-packets.patch} | 22 +- ...ake-slow-login-timeout-configurable.patch} | 4 +- ...nation-chunk-before-entity-teleport.patch} | 30 +- ...Don-t-load-chunks-to-spawn-phantoms.patch} | 0 ...hunks-to-activate-climbing-entities.patch} | 8 +- ...imations-as-the-entity-being-critte.patch} | 4 +- ...7-Ignore-null-legacy-structure-data.patch} | 0 ...necessary-mob-spawning-computations.patch} | 26 +- ...random-strolling-into-non-ticking-c.patch} | 0 ...er-in-world-if-kicked-before-being-.patch} | 6 +- ... 0111-CraftBukkit-UUID-to-world-map.patch} | 10 +- ...file.patch => 0112-Global-EULA-file.patch} | 6 +- ...h => 0113-Specific-interval-TPS-API.patch} | 4 +- ....patch => 0114-5-second-TPS-average.patch} | 10 +- ...atch => 0115-Measure-last-tick-time.patch} | 20 +- ...PI.patch => 0116-Last-tick-time-API.patch} | 4 +- ...-Show-last-tick-time-in-tps-command.patch} | 0 ...crease-time-statistics-in-intervals.patch} | 6 +- ...eck-has-physics-before-same-vehicle.patch} | 4 +- ...ible-planar-movement-multiplication.patch} | 20 +- ... 0121-Optimize-matching-item-checks.patch} | 6 +- ...h => 0122-Pre-compute-VarLong-sizes.patch} | 0 ...mize-VarInt-write-and-VarLong-write.patch} | 0 ... 0124-Reduce-RandomSource-instances.patch} | 26 +- ...Stack-lookups-for-reduced-visibilit.patch} | 4 +- ...ne-of-sight-cache-with-low-capacity.patch} | 0 ...-of-sight-updates-and-cache-lookups.patch} | 4 +- ...hread-priority-environment-variable.patch} | 8 +- ...atch => 0129-Virtual-thread-support.patch} | 4 +- .../server/0023-Move-random-tick-random.patch | 0 ...imize-random-calls-in-chunk-ticking.patch} | 35 +- ...ove-container-checking-with-a-bitset.patch | 0 ...ThreadUnsafeRandom-for-mob-spawning.patch} | 0 ...39-Remove-lambda-from-ticking-guard.patch} | 11 +- ...hould-check-if-entity-can-use-portal.patch | 0 .../0078-Reduce-array-allocations.patch | 0 ...ld-generation-chunk-and-block-access.patch | 0 .../0095-Optimize-villager-data-storage.patch | 0 .../server/0131-Add-xor-shift-random.patch | 0 138 files changed, 871 insertions(+), 911 deletions(-) rename patches/server/{0025-Reduce-enderman-teleport-chunk-lookups.patch => 0024-Reduce-enderman-teleport-chunk-lookups.patch} (94%) rename patches/server/{0026-Reduce-acquire-POI-for-stuck-entities.patch => 0025-Reduce-acquire-POI-for-stuck-entities.patch} (98%) rename patches/server/{0027-Remove-iterators-from-Inventory-contains.patch => 0026-Remove-iterators-from-Inventory-contains.patch} (94%) rename patches/server/{0028-Check-targeting-range-before-getting-visibility.patch => 0027-Check-targeting-range-before-getting-visibility.patch} (96%) rename patches/server/{0029-Print-stack-trace-for-plugins-not-shutting-down-task.patch => 0028-Print-stack-trace-for-plugins-not-shutting-down-task.patch} (93%) rename patches/server/{0030-Improve-fluid-direction-caching.patch => 0029-Improve-fluid-direction-caching.patch} (95%) rename patches/server/{0031-Cache-on-climbable-check.patch => 0030-Cache-on-climbable-check.patch} (90%) rename patches/server/{0032-Make-EntityCollisionContext-a-live-representation.patch => 0031-Make-EntityCollisionContext-a-live-representation.patch} (100%) rename patches/server/{0035-Use-aging-cache-for-biome-temperatures.patch => 0032-Use-aging-cache-for-biome-temperatures.patch} (98%) rename patches/server/{0034-Better-checking-for-useless-move-packets.patch => 0033-Better-checking-for-useless-move-packets.patch} (50%) rename patches/server/{0036-Inline-level-height.patch => 0034-Inline-level-height.patch} (89%) rename patches/server/{0038-Remove-streams-and-iterators-from-range-check.patch => 0036-Remove-streams-and-iterators-from-range-check.patch} (93%) rename patches/server/{0039-Block-goal-does-not-load-chunks.patch => 0037-Block-goal-does-not-load-chunks.patch} (100%) rename patches/server/{0040-Reduce-entity-allocations.patch => 0038-Reduce-entity-allocations.patch} (80%) rename patches/server/{0042-Reduce-entity-fluid-lookups-if-no-fluids.patch => 0040-Reduce-entity-fluid-lookups-if-no-fluids.patch} (83%) rename patches/server/{0043-SIMD-support.patch => 0041-SIMD-support.patch} (93%) rename patches/server/{0044-Make-book-writing-configurable.patch => 0042-Make-book-writing-configurable.patch} (96%) rename patches/server/{0045-Optimize-entity-coordinate-key.patch => 0043-Optimize-entity-coordinate-key.patch} (88%) rename patches/server/{0046-Reduce-in-wall-checks.patch => 0044-Reduce-in-wall-checks.patch} (94%) rename patches/server/{0047-Make-chat-order-verification-configurable.patch => 0045-Make-chat-order-verification-configurable.patch} (100%) rename patches/server/{0048-Make-ender-dragon-respawn-attempt-after-placing-end-.patch => 0046-Make-ender-dragon-respawn-attempt-after-placing-end-.patch} (100%) rename patches/server/{0049-Make-saving-fireworks-configurable.patch => 0047-Make-saving-fireworks-configurable.patch} (89%) rename patches/server/{0050-Don-t-trigger-lootable-refresh-for-non-player-intera.patch => 0048-Don-t-trigger-lootable-refresh-for-non-player-intera.patch} (92%) rename patches/server/{0051-Reduce-hopper-item-checks.patch => 0049-Reduce-hopper-item-checks.patch} (94%) rename patches/server/{0052-Reduce-villager-item-re-pickup.patch => 0050-Reduce-villager-item-re-pickup.patch} (100%) rename patches/server/{0053-Variable-entity-wake-up-duration.patch => 0051-Variable-entity-wake-up-duration.patch} (97%) rename patches/server/{0054-Do-not-process-chat-commands-before-player-has-joine.patch => 0052-Do-not-process-chat-commands-before-player-has-joine.patch} (82%) rename patches/server/{0055-Do-not-log-invalid-statistics.patch => 0053-Do-not-log-invalid-statistics.patch} (97%) rename patches/server/{0056-Do-not-log-empty-message-warnings.patch => 0054-Do-not-log-empty-message-warnings.patch} (93%) rename patches/server/{0057-Do-not-log-ignored-advancements.patch => 0055-Do-not-log-ignored-advancements.patch} (97%) rename patches/server/{0058-Do-not-log-setBlock-in-far-chunks.patch => 0056-Do-not-log-setBlock-in-far-chunks.patch} (79%) rename patches/server/{0059-Do-not-log-unrecognized-recipes.patch => 0057-Do-not-log-unrecognized-recipes.patch} (97%) rename patches/server/{0060-Do-not-log-legacy-Material-initialization.patch => 0058-Do-not-log-legacy-Material-initialization.patch} (97%) rename patches/server/{0061-Do-not-log-plugin-library-loads.patch => 0059-Do-not-log-plugin-library-loads.patch} (100%) rename patches/server/{0062-Do-not-log-expired-message-warnings.patch => 0060-Do-not-log-expired-message-warnings.patch} (100%) rename patches/server/{0063-Do-not-log-Not-Secure-marker.patch => 0061-Do-not-log-Not-Secure-marker.patch} (94%) rename patches/server/{0064-Do-not-log-disconnections-with-null-id.patch => 0062-Do-not-log-disconnections-with-null-id.patch} (68%) rename patches/server/{0065-Do-not-log-run-as-root-warning.patch => 0063-Do-not-log-run-as-root-warning.patch} (94%) rename patches/server/{0066-Do-not-log-offline-mode-warning.patch => 0064-Do-not-log-offline-mode-warning.patch} (94%) rename patches/server/{0067-Softly-log-invalid-pool-element-errors.patch => 0065-Softly-log-invalid-pool-element-errors.patch} (78%) rename patches/server/{0068-Fix-outdated-server-showing-in-ping-before-server-fu.patch => 0066-Fix-outdated-server-showing-in-ping-before-server-fu.patch} (94%) rename patches/server/{0069-Fix-MC-238526.patch => 0067-Fix-MC-238526.patch} (96%) rename patches/server/{0070-Fix-cow-rotation-when-shearing-mooshroom.patch => 0068-Fix-cow-rotation-when-shearing-mooshroom.patch} (100%) rename patches/server/{0071-Fix-MC-121706.patch => 0069-Fix-MC-121706.patch} (100%) rename patches/server/{0072-Fix-MC-110386.patch => 0070-Fix-MC-110386.patch} (100%) rename patches/server/{0073-Fix-MC-31819.patch => 0071-Fix-MC-31819.patch} (93%) rename patches/server/{0074-Fix-MC-26304.patch => 0072-Fix-MC-26304.patch} (74%) rename patches/server/{0076-Make-arrow-movement-resetting-despawn-counter-config.patch => 0073-Make-arrow-movement-resetting-despawn-counter-config.patch} (61%) rename patches/server/{0077-Make-logging-login-locations-configurable.patch => 0074-Make-logging-login-locations-configurable.patch} (94%) rename patches/server/{0079-Optimize-sun-burn-tick.patch => 0075-Optimize-sun-burn-tick.patch} (88%) rename patches/server/{0080-Reduce-lambda-and-Optional-allocation-in-EntityBased.patch => 0076-Reduce-lambda-and-Optional-allocation-in-EntityBased.patch} (100%) rename patches/server/{0081-Replace-game-rules-map-with-optimized-collection.patch => 0077-Replace-game-rules-map-with-optimized-collection.patch} (100%) rename patches/server/{0082-Replace-class-map-with-optimized-collection.patch => 0078-Replace-class-map-with-optimized-collection.patch} (100%) rename patches/server/{0083-Replace-throttle-tracker-map-with-optimized-collecti.patch => 0079-Replace-throttle-tracker-map-with-optimized-collecti.patch} (81%) rename patches/server/{0084-Avoid-Class-isAssignableFrom-call-in-ClassInstanceMu.patch => 0080-Avoid-Class-isAssignableFrom-call-in-ClassInstanceMu.patch} (100%) rename patches/server/{0085-Cache-BlockStatePairKey-hash.patch => 0081-Cache-BlockStatePairKey-hash.patch} (90%) rename patches/server/{0086-Cache-CubeVoxelShape-shape-array.patch => 0082-Cache-CubeVoxelShape-shape-array.patch} (72%) rename patches/server/{0087-Replace-division-by-multiplication-in-CubePointRange.patch => 0083-Replace-division-by-multiplication-in-CubePointRange.patch} (92%) rename patches/server/{0088-Replace-parts-by-size-in-CubePointRange.patch => 0084-Replace-parts-by-size-in-CubePointRange.patch} (91%) rename patches/server/{0089-Check-frozen-ticks-before-landing-block.patch => 0085-Check-frozen-ticks-before-landing-block.patch} (81%) rename patches/server/{0090-Faster-chunk-serialization.patch => 0086-Faster-chunk-serialization.patch} (95%) rename patches/server/{0091-Update-boss-bar-within-tick.patch => 0087-Update-boss-bar-within-tick.patch} (91%) rename patches/server/{0093-Cache-world-generator-sea-level.patch => 0088-Cache-world-generator-sea-level.patch} (90%) rename patches/server/{0094-Skip-secondary-POI-sensor-if-absent.patch => 0089-Skip-secondary-POI-sensor-if-absent.patch} (100%) rename patches/server/{0096-Skip-entity-move-if-movement-is-zero.patch => 0090-Skip-entity-move-if-movement-is-zero.patch} (80%) rename patches/server/{0097-Store-mob-counts-in-an-array.patch => 0091-Store-mob-counts-in-an-array.patch} (94%) rename patches/server/{0098-Use-linked-map-for-entity-trackers.patch => 0092-Use-linked-map-for-entity-trackers.patch} (60%) rename patches/server/{0099-Optimize-noise-generation.patch => 0093-Optimize-noise-generation.patch} (100%) rename patches/server/{0100-Optimize-sheep-offspring-color.patch => 0094-Optimize-sheep-offspring-color.patch} (63%) rename patches/server/{0101-Hide-flames-on-entities-with-fire-resistance.patch => 0095-Hide-flames-on-entities-with-fire-resistance.patch} (94%) rename patches/server/{0102-Skip-cloning-advancement-criteria.patch => 0096-Skip-cloning-advancement-criteria.patch} (93%) rename patches/server/{0103-Reduce-block-destruction-packet-allocations.patch => 0097-Reduce-block-destruction-packet-allocations.patch} (86%) rename patches/server/{0104-Spread-out-sending-all-player-info.patch => 0098-Spread-out-sending-all-player-info.patch} (91%) rename patches/server/{0105-Optimize-player-list-for-sending-player-info.patch => 0099-Optimize-player-list-for-sending-player-info.patch} (95%) rename patches/server/{0106-Skip-PlayerCommandSendEvent-if-there-are-no-listener.patch => 0100-Skip-PlayerCommandSendEvent-if-there-are-no-listener.patch} (93%) rename patches/server/{0107-Send-multiple-keep-alive-packets.patch => 0101-Send-multiple-keep-alive-packets.patch} (91%) rename patches/server/{0108-Make-slow-login-timeout-configurable.patch => 0102-Make-slow-login-timeout-configurable.patch} (92%) rename patches/server/{0109-Load-portal-destination-chunk-before-entity-teleport.patch => 0103-Load-portal-destination-chunk-before-entity-teleport.patch} (64%) rename patches/server/{0110-Don-t-load-chunks-to-spawn-phantoms.patch => 0104-Don-t-load-chunks-to-spawn-phantoms.patch} (100%) rename patches/server/{0111-Don-t-load-chunks-to-activate-climbing-entities.patch => 0105-Don-t-load-chunks-to-activate-climbing-entities.patch} (93%) rename patches/server/{0112-Broadcast-crit-animations-as-the-entity-being-critte.patch => 0106-Broadcast-crit-animations-as-the-entity-being-critte.patch} (93%) rename patches/server/{0113-Ignore-null-legacy-structure-data.patch => 0107-Ignore-null-legacy-structure-data.patch} (100%) rename patches/server/{0114-Skip-unnecessary-mob-spawning-computations.patch => 0108-Skip-unnecessary-mob-spawning-computations.patch} (72%) rename patches/server/{0115-Prevent-entities-random-strolling-into-non-ticking-c.patch => 0109-Prevent-entities-random-strolling-into-non-ticking-c.patch} (100%) rename patches/server/{0116-Do-not-place-player-in-world-if-kicked-before-being-.patch => 0110-Do-not-place-player-in-world-if-kicked-before-being-.patch} (84%) rename patches/server/{0117-CraftBukkit-UUID-to-world-map.patch => 0111-CraftBukkit-UUID-to-world-map.patch} (89%) rename patches/server/{0118-Global-EULA-file.patch => 0112-Global-EULA-file.patch} (95%) rename patches/server/{0119-Specific-interval-TPS-API.patch => 0113-Specific-interval-TPS-API.patch} (88%) rename patches/server/{0120-5-second-TPS-average.patch => 0114-5-second-TPS-average.patch} (95%) rename patches/server/{0121-Measure-last-tick-time.patch => 0115-Measure-last-tick-time.patch} (82%) rename patches/server/{0122-Last-tick-time-API.patch => 0116-Last-tick-time-API.patch} (93%) rename patches/server/{0123-Show-last-tick-time-in-tps-command.patch => 0117-Show-last-tick-time-in-tps-command.patch} (100%) rename patches/server/{0124-Increase-time-statistics-in-intervals.patch => 0118-Increase-time-statistics-in-intervals.patch} (96%) rename patches/server/{0125-For-collision-check-has-physics-before-same-vehicle.patch => 0119-For-collision-check-has-physics-before-same-vehicle.patch} (90%) rename patches/server/{0126-Skip-negligible-planar-movement-multiplication.patch => 0120-Skip-negligible-planar-movement-multiplication.patch} (61%) rename patches/server/{0127-Optimize-matching-item-checks.patch => 0121-Optimize-matching-item-checks.patch} (88%) rename patches/server/{0128-Pre-compute-VarLong-sizes.patch => 0122-Pre-compute-VarLong-sizes.patch} (100%) rename patches/server/{0129-Optimize-VarInt-write-and-VarLong-write.patch => 0123-Optimize-VarInt-write-and-VarLong-write.patch} (100%) rename patches/server/{0130-Reduce-RandomSource-instances.patch => 0124-Reduce-RandomSource-instances.patch} (89%) rename patches/server/{0132-Reduce-skull-ItemStack-lookups-for-reduced-visibilit.patch => 0125-Reduce-skull-ItemStack-lookups-for-reduced-visibilit.patch} (93%) rename patches/server/{0133-Initialize-line-of-sight-cache-with-low-capacity.patch => 0126-Initialize-line-of-sight-cache-with-low-capacity.patch} (100%) rename patches/server/{0134-Reduce-line-of-sight-updates-and-cache-lookups.patch => 0127-Reduce-line-of-sight-updates-and-cache-lookups.patch} (97%) rename patches/server/{0135-Server-thread-priority-environment-variable.patch => 0128-Server-thread-priority-environment-variable.patch} (78%) rename patches/server/{0136-Virtual-thread-support.patch => 0129-Virtual-thread-support.patch} (98%) rename patches/{ => work}/server/0023-Move-random-tick-random.patch (100%) rename patches/{server/0024-Optimize-random-calls-in-chunk-ticking.patch => work/server/0023-Optimize-random-calls-in-chunk-ticking.patch} (79%) rename patches/{ => work}/server/0033-Improve-container-checking-with-a-bitset.patch (100%) rename patches/{server/0037-Use-ThreadUnsafeRandom-for-mob-spawning.patch => work/server/0035-Use-ThreadUnsafeRandom-for-mob-spawning.patch} (100%) rename patches/{server/0041-Remove-lambda-from-ticking-guard.patch => work/server/0039-Remove-lambda-from-ticking-guard.patch} (88%) rename patches/{ => work}/server/0075-End-gateway-should-check-if-entity-can-use-portal.patch (100%) rename patches/{ => work}/server/0078-Reduce-array-allocations.patch (100%) rename patches/{ => work}/server/0092-Optimize-world-generation-chunk-and-block-access.patch (100%) rename patches/{ => work}/server/0095-Optimize-villager-data-storage.patch (100%) rename patches/{ => work}/server/0131-Add-xor-shift-random.patch (100%) diff --git a/README.md b/README.md index 8bda674..a243921 100644 --- a/README.md +++ b/README.md @@ -61,3 +61,7 @@ Additional thanks and friendly greetings go out to the following forks and other Paperweight files are licensed under MIT. Patches are licensed under GPL-3.0, unless indicated differently in their header. Binaries are licensed under GPL-3.0. + +## TODO +check Simpler ShapelessRecipe comparison for vanilla patch +check fix MC-26304 (needs tryParse? or just parse) \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index 1c13c78..7316600 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -57,7 +57,7 @@ repositories { } dependencies { - remapper("net.fabricmc:tiny-remapper:0.10.2:fat") + remapper("net.fabricmc:tiny-remapper:0.10.3:fat") decompiler("org.vineflower:vineflower:1.10.1") paperclip("io.papermc:paperclip:3.0.3") } diff --git a/gradle.properties b/gradle.properties index 495e9a9..0ee4b7d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,9 +1,11 @@ group=org.galemc.gale -version=1.20.6-R0.1-SNAPSHOT +version=1.21-R0.1-SNAPSHOT -mcVersion=1.20.6 -paperRef=9e7f6c3f7e6c0017ac440023518e48cca7550163 +mcVersion=1.21 +paperRef=56b5b7d452e8173ee005c941010632aeb6dbecaf -org.gradle.caching=true +updatingMinecraft=true + +org.gradle.caching=false org.gradle.parallel=true org.gradle.vfs.watch=false \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b82aa23..a441313 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index 1aa94a4..b740cf1 100755 --- a/gradlew +++ b/gradlew @@ -55,7 +55,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. diff --git a/patches/api/0003-Gale-configuration.patch b/patches/api/0003-Gale-configuration.patch index 4e47d34..d59629f 100644 --- a/patches/api/0003-Gale-configuration.patch +++ b/patches/api/0003-Gale-configuration.patch @@ -13,10 +13,10 @@ As part of: Paper (https://github.com/PaperMC/Paper) Licensed under: MIT (https://opensource.org/licenses/MIT) diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 30cbe3bdc7142769019765b03cc4fe1f9ba1ddb4..d13d4c0971b79d2447f42d395a1ba4d1bf00c38a 100644 +index bbc4d7d3ca84642828f9a3f788ca26bba900d15b..17aaca2d039eb9c0816a9bdde0876a4debcaeb9d 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2255,6 +2255,15 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2249,6 +2249,15 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi { throw new UnsupportedOperationException("Not supported yet."); } diff --git a/patches/api/0008-Player-canSee-by-entity-UUID.patch b/patches/api/0008-Player-canSee-by-entity-UUID.patch index 72263ea..f4e84d9 100644 --- a/patches/api/0008-Player-canSee-by-entity-UUID.patch +++ b/patches/api/0008-Player-canSee-by-entity-UUID.patch @@ -37,10 +37,10 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 6c327a07bf8a6aa11a2d7dad12b2830acc539484..2d63d61fcfe87c4f07b1d752facbb1bae6f2b0ca 100644 +index 7c56182acaf827f4b1a986a61cea8e9960604c98..328c34dee07311193d41f36c0976ed09135ab448 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -2108,6 +2108,16 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -2113,6 +2113,16 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM boolean listPlayer(@NotNull Player other); // Paper end diff --git a/patches/api/0009-Specific-interval-TPS-API.patch b/patches/api/0009-Specific-interval-TPS-API.patch index a2c032c..9fee5ad 100644 --- a/patches/api/0009-Specific-interval-TPS-API.patch +++ b/patches/api/0009-Specific-interval-TPS-API.patch @@ -7,10 +7,10 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) Gale - https://galemc.org diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 71f1c361ebccbe83193c37ec3a90faa4085001c3..0c44d54bc9a63fa351f84dec3b7f62b69c086f0d 100644 +index b9b751ea0d11381e846d5f35f39f285c075c171a..3157818826a08fc64e6aafa269cb53a0797f3a4d 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2377,6 +2377,37 @@ public final class Bukkit { +@@ -2371,6 +2371,37 @@ public final class Bukkit { return server.getTPS(); } @@ -49,10 +49,10 @@ index 71f1c361ebccbe83193c37ec3a90faa4085001c3..0c44d54bc9a63fa351f84dec3b7f62b6 * Get a sample of the servers last tick times (in nanos) * diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index b50f6fb3b45678374348778388d18f15b2d8d3e7..3d93593c2e2114a0415529bbc0e8c2733ca79e1d 100644 +index 17aaca2d039eb9c0816a9bdde0876a4debcaeb9d..d8e78424809ee1e1107e37a32552d57c24fa48b0 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2034,6 +2034,31 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2028,6 +2028,31 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi @NotNull public double[] getTPS(); diff --git a/patches/api/0010-5-second-TPS-average.patch b/patches/api/0010-5-second-TPS-average.patch index ef63245..18f01cf 100644 --- a/patches/api/0010-5-second-TPS-average.patch +++ b/patches/api/0010-5-second-TPS-average.patch @@ -37,10 +37,10 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 0c44d54bc9a63fa351f84dec3b7f62b69c086f0d..d627e3f8ffd37eb79affdce0c06f3d8624e90833 100644 +index 3157818826a08fc64e6aafa269cb53a0797f3a4d..4e2e5b2727ccfdd2f029ad786e0165f37f7e2144 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2377,8 +2377,30 @@ public final class Bukkit { +@@ -2371,8 +2371,30 @@ public final class Bukkit { return server.getTPS(); } @@ -72,10 +72,10 @@ index 0c44d54bc9a63fa351f84dec3b7f62b69c086f0d..d627e3f8ffd37eb79affdce0c06f3d86 * Gets the average server TPS over the last 1 minute * diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 3d93593c2e2114a0415529bbc0e8c2733ca79e1d..7b31498b03f1ea44d7533cfc8c8afdac9d2898b6 100644 +index d8e78424809ee1e1107e37a32552d57c24fa48b0..9c032132d242c61facb89efe89b548ff051a2977 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2034,8 +2034,27 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2028,8 +2028,27 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi @NotNull public double[] getTPS(); diff --git a/patches/api/0011-Last-tick-time-API.patch b/patches/api/0011-Last-tick-time-API.patch index 11133e6..c9fc1b7 100644 --- a/patches/api/0011-Last-tick-time-API.patch +++ b/patches/api/0011-Last-tick-time-API.patch @@ -23,10 +23,10 @@ The above copyright notice and this permission notice shall be included in all c THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 2cb2b7bb87f91d0500872215bfdb2fefba549d6f..dec4ad04ac3dc2e869ea78f354cdf37d7a305a55 100644 +index 4e2e5b2727ccfdd2f029ad786e0165f37f7e2144..1ea2a7f598c6a214a6562ce6ad2e49e83c7149ab 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2962,6 +2962,20 @@ public final class Bukkit { +@@ -2956,6 +2956,20 @@ public final class Bukkit { } // Paper end - Folia region threading API @@ -48,10 +48,10 @@ index 2cb2b7bb87f91d0500872215bfdb2fefba549d6f..dec4ad04ac3dc2e869ea78f354cdf37d public static Server.Spigot spigot() { return server.spigot(); diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index fb754abc50e79030497a178c443421da1cb88e7f..6d77d7989e757f18ba5d72b07e3b82016a5e28a2 100644 +index 9c032132d242c61facb89efe89b548ff051a2977..2732389405c054d34cf030ce46323ceaf899b61b 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2599,4 +2599,30 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2593,4 +2593,30 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi */ boolean isOwnedByCurrentRegion(@NotNull Entity entity); // Paper end - Folia region threading API diff --git a/patches/server/0002-Dev-import-deobfuscation-fixes.patch b/patches/server/0002-Dev-import-deobfuscation-fixes.patch index f8d90af..dbe5045 100644 --- a/patches/server/0002-Dev-import-deobfuscation-fixes.patch +++ b/patches/server/0002-Dev-import-deobfuscation-fixes.patch @@ -34,7 +34,7 @@ index b0d26b0eadb2a43924629424a6c13198aace8f69..bcba8224b9a210bced04ff370a73b306 for (T executionCommandSource2 : list) { diff --git a/src/main/java/net/minecraft/util/ExtraCodecs.java b/src/main/java/net/minecraft/util/ExtraCodecs.java -index 4f206e32477d84f4ba16e49d5abd3c28da5cab8f..3c8f05a13d4fb10ac1e0ed444f1bfe665a077033 100644 +index 68dda6a3257ca18c1e6c7659d62455da46d187e2..24a478c0e874692964fb1c670277aca94f273749 100644 --- a/src/main/java/net/minecraft/util/ExtraCodecs.java +++ b/src/main/java/net/minecraft/util/ExtraCodecs.java @@ -224,7 +224,7 @@ public class ExtraCodecs { @@ -56,7 +56,7 @@ index 4f206e32477d84f4ba16e49d5abd3c28da5cab8f..3c8f05a13d4fb10ac1e0ed444f1bfe66 public DataResult coApply(DynamicOps dynamicOps, A object, DataResult dataResult) { diff --git a/src/main/java/net/minecraft/util/datafix/fixes/ChunkProtoTickListFix.java b/src/main/java/net/minecraft/util/datafix/fixes/ChunkProtoTickListFix.java -index c9101a3bf0cb2c9e49e0e768b379e8dd816012de..ec7f8ef7bcd0a6cf72d032714c3e1057704260e9 100644 +index 2942534d265416a3693848d76538c04735bc14fa..1665e457bbfea822f5822c31f6c93f3a0d6fa7a3 100644 --- a/src/main/java/net/minecraft/util/datafix/fixes/ChunkProtoTickListFix.java +++ b/src/main/java/net/minecraft/util/datafix/fixes/ChunkProtoTickListFix.java @@ -18,6 +18,7 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap; @@ -67,17 +67,17 @@ index c9101a3bf0cb2c9e49e0e768b379e8dd816012de..ec7f8ef7bcd0a6cf72d032714c3e1057 import java.util.Optional; import java.util.function.Function; import java.util.function.Supplier; -@@ -183,7 +184,7 @@ public class ChunkProtoTickListFix extends DataFix { - int o = l >>> 8 & 15; - String string = function.apply(supplier != null ? supplier.get().get(m, n, o) : null); - return dynamic.createMap( +@@ -186,7 +187,7 @@ public class ChunkProtoTickListFix extends DataFix { + int k = packedLocalPos >>> 8 & 15; + String string = blockIdGetter.apply(sectionSupplier != null ? sectionSupplier.get().get(i, j, k) : null); + return levelDynamic.createMap( - ImmutableMap.builder() + (Map) ImmutableMap.builder() // Gale - dev import deobfuscation fixes - .put(dynamic.createString("i"), dynamic.createString(string)) - .put(dynamic.createString("x"), dynamic.createInt(i * 16 + m)) - .put(dynamic.createString("y"), dynamic.createInt(j * 16 + n)) + .put(levelDynamic.createString("i"), levelDynamic.createString(string)) + .put(levelDynamic.createString("x"), levelDynamic.createInt(sectionX * 16 + i)) + .put(levelDynamic.createString("y"), levelDynamic.createInt(sectionY * 16 + j)) diff --git a/src/main/java/net/minecraft/world/level/levelgen/SurfaceRules.java b/src/main/java/net/minecraft/world/level/levelgen/SurfaceRules.java -index 166b7d87ab88e28d465fb4a5d07c180c10464925..a506f3ef40ec34a89abb73a60cedf3b556585bee 100644 +index 9167bad12e1be3f4163f85987862b044a630b2eb..9df053ddff459d4aab478106c6e66a5fc3cda8f6 100644 --- a/src/main/java/net/minecraft/world/level/levelgen/SurfaceRules.java +++ b/src/main/java/net/minecraft/world/level/levelgen/SurfaceRules.java @@ -155,7 +155,7 @@ public class SurfaceRules { diff --git a/patches/server/0003-Hide-irrelevant-compilation-warnings.patch b/patches/server/0003-Hide-irrelevant-compilation-warnings.patch index 7b19ab2..905054e 100644 --- a/patches/server/0003-Hide-irrelevant-compilation-warnings.patch +++ b/patches/server/0003-Hide-irrelevant-compilation-warnings.patch @@ -7,11 +7,11 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) Gale - https://galemc.org diff --git a/build.gradle.kts b/build.gradle.kts -index 983b6fbc67cc6914b9bcfcd76b15197671750c21..96186b0795c5d74012e2e8eb241f8b7db3fed8e0 100644 +index a302242681e477aa8f0d243e3a0ecf9f31c27c0a..fcc026e9b5ebf892d86f8395f3571b0a7c5b8311 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -67,6 +67,15 @@ paperweight { - craftBukkitPackageVersion.set("v1_20_R4") // also needs to be updated in MappingEnvironment + craftBukkitPackageVersion.set("v1_21_R1") // also needs to be updated in MappingEnvironment } +// Gale start - hide irrelevant compilation warnings diff --git a/patches/server/0005-Gale-branding-changes.patch b/patches/server/0005-Gale-branding-changes.patch index 86465f0..bbb4845 100644 --- a/patches/server/0005-Gale-branding-changes.patch +++ b/patches/server/0005-Gale-branding-changes.patch @@ -221,7 +221,7 @@ index 94a9ed024d3859793618152ea559a168bbcbb5e2..e60008693e017bec1b4eb49c84be3898 -. +. diff --git a/build.gradle.kts b/build.gradle.kts -index f43a0aff5d735e21ac63eeb0314f829bd3b83554..335cc8638d307fcd0dad44c431ec7f9d5376fc09 100644 +index fc4e25d39c309e3be83e9a380eb6f5f0b58f5191..8f97350aac2f19a0d19e35630261dacc7b46ce52 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -89,14 +89,14 @@ tasks.jar { @@ -463,25 +463,19 @@ index 790bad0494454ca12ee152e3de6da3da634d9b20..2596e0ee4df5b96f181e28a742ef3459 } @Override -diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 3751c2a077bd13bac330b93c6efc2a640a17f4f2..edabecf0cdd5dca3cc40084f87f4af750ffe3507 100644 ---- a/src/main/java/net/minecraft/server/MinecraftServer.java -+++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -956,7 +956,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop public + static int newChunkSystemGenParallelism; + static int newChunkSystemGenPopulationParallelism; + static int newChunkSystemLoadParallelism; diff --git a/src/main/java/com/destroystokyo/paper/Metrics.java b/src/main/java/com/destroystokyo/paper/Metrics.java -index 4b002e8b75d117b726b0de274a76d3596fce015b..2868dab7b100d9c325b0e5056f86660d631dec4b 100644 +index 6aaed8e8bf8c721fc834da5c76ac72a4c3e92458..2d5688979f269fa887448fe910ea87a87d93d1dd 100644 --- a/src/main/java/com/destroystokyo/paper/Metrics.java +++ b/src/main/java/com/destroystokyo/paper/Metrics.java -@@ -593,7 +593,7 @@ public class Metrics { +@@ -588,7 +588,7 @@ public class Metrics { boolean logFailedRequests = config.getBoolean("logFailedRequests", false); // Only start Metrics, if it's enabled in the config if (config.getBoolean("enabled", true)) { @@ -19,7 +32,7 @@ index 4b002e8b75d117b726b0de274a76d3596fce015b..2868dab7b100d9c325b0e5056f86660d metrics.addCustomChart(new Metrics.SimplePie("minecraft_version", () -> { String minecraftVersion = Bukkit.getVersion(); -@@ -603,20 +603,20 @@ public class Metrics { +@@ -598,20 +598,20 @@ public class Metrics { metrics.addCustomChart(new Metrics.SingleLineChart("players", () -> Bukkit.getOnlinePlayers().size())); metrics.addCustomChart(new Metrics.SimplePie("online_mode", () -> Bukkit.getOnlineMode() ? "online" : "offline")); @@ -46,7 +59,7 @@ index 4b002e8b75d117b726b0de274a76d3596fce015b..2868dab7b100d9c325b0e5056f86660d entry.put(javaVersion, 1); // http://openjdk.java.net/jeps/223 -@@ -645,7 +645,7 @@ public class Metrics { +@@ -640,7 +640,7 @@ public class Metrics { })); metrics.addCustomChart(new Metrics.DrilldownPie("legacy_plugins", () -> { @@ -55,7 +68,7 @@ index 4b002e8b75d117b726b0de274a76d3596fce015b..2868dab7b100d9c325b0e5056f86660d // count legacy plugins int legacy = 0; -@@ -656,7 +656,7 @@ public class Metrics { +@@ -651,7 +651,7 @@ public class Metrics { } // insert real value as lower dimension @@ -64,7 +77,7 @@ index 4b002e8b75d117b726b0de274a76d3596fce015b..2868dab7b100d9c325b0e5056f86660d entry.put(String.valueOf(legacy), 1); // create buckets as higher dimension -@@ -676,6 +676,253 @@ public class Metrics { +@@ -671,6 +671,253 @@ public class Metrics { return map; })); @@ -203,7 +216,7 @@ index 4b002e8b75d117b726b0de274a76d3596fce015b..2868dab7b100d9c325b0e5056f86660d + })); + // Gale end - metrics - netty threads + -+ metrics.addCustomChart(new Metrics.SimplePie("chunk_system_io_thread_count", () -> String.valueOf(io.papermc.paper.chunk.system.scheduling.ChunkTaskScheduler.newChunkSystemIOThreads))); // Gale - metrics - chunk system IO threads ++ metrics.addCustomChart(new Metrics.SimplePie("chunk_system_io_thread_count", () -> String.valueOf(ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkTaskScheduler.newChunkSystemIOThreads))); // Gale - metrics - chunk system IO threads + + // Gale start - metrics - physical cores + metrics.addCustomChart(new Metrics.SimplePie("physical_core_count", () -> { @@ -318,16 +331,3 @@ index 4b002e8b75d117b726b0de274a76d3596fce015b..2868dab7b100d9c325b0e5056f86660d } } -diff --git a/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkTaskScheduler.java b/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkTaskScheduler.java -index 17ce14f2dcbf900890efbc2351782bc6f8867068..fd099f8a7d95f46de7380c8280623bf5eb427eaa 100644 ---- a/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkTaskScheduler.java -+++ b/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkTaskScheduler.java -@@ -43,7 +43,7 @@ public final class ChunkTaskScheduler { - - private static final Logger LOGGER = LogUtils.getClassLogger(); - -- static int newChunkSystemIOThreads; -+ public static int newChunkSystemIOThreads; // Gale - metrics - chunk system IO threads - package-private -> public - static int newChunkSystemWorkerThreads; - static int newChunkSystemGenParallelism; - static int newChunkSystemLoadParallelism; diff --git a/patches/server/0007-Gale-semantic-version.patch b/patches/server/0007-Gale-semantic-version.patch index 1f9bb20..9767be5 100644 --- a/patches/server/0007-Gale-semantic-version.patch +++ b/patches/server/0007-Gale-semantic-version.patch @@ -7,10 +7,10 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) Gale - https://galemc.org diff --git a/src/main/java/com/destroystokyo/paper/Metrics.java b/src/main/java/com/destroystokyo/paper/Metrics.java -index 2868dab7b100d9c325b0e5056f86660d631dec4b..2acad4c3fd58178b0f8b22bdb04eeeeb689d5afa 100644 +index 2d5688979f269fa887448fe910ea87a87d93d1dd..16ecdf3c56809100032ca627a1769e4e8c452f08 100644 --- a/src/main/java/com/destroystokyo/paper/Metrics.java +++ b/src/main/java/com/destroystokyo/paper/Metrics.java -@@ -923,6 +923,16 @@ public class Metrics { +@@ -918,6 +918,16 @@ public class Metrics { })); // Gale end - metrics - runtime max memory diff --git a/patches/server/0008-Gale-configuration.patch b/patches/server/0008-Gale-configuration.patch index 453b376..42c2964 100644 --- a/patches/server/0008-Gale-configuration.patch +++ b/patches/server/0008-Gale-configuration.patch @@ -38,7 +38,7 @@ index 7620c72a4c243cbeea245203ce03a97cbfa7d922..29796a404e210f7864f4b33b3367e025 JSONObject object = new JSONObject(); for (String key : config.getKeys(false)) { diff --git a/src/main/java/io/papermc/paper/configuration/Configurations.java b/src/main/java/io/papermc/paper/configuration/Configurations.java -index 96142deb42700f888ea08689ab62c27ef2b881fd..6f1ce6bfca1ab1cb64c6da381329349b7f1153c1 100644 +index 87e5f614ba988547a827486740db217e28585773..38d99d73a33911afa71d02a456bb4df62ce75166 100644 --- a/src/main/java/io/papermc/paper/configuration/Configurations.java +++ b/src/main/java/io/papermc/paper/configuration/Configurations.java @@ -7,8 +7,11 @@ import io.papermc.paper.configuration.constraint.Constraint; @@ -189,7 +189,7 @@ index 8f23276796037d048eb114952891a01a40971b3e..ac9ceb54b894119cb30a22d37e035e2c } } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index edabecf0cdd5dca3cc40084f87f4af750ffe3507..9bdd6a3db74cf5c5c069be88cf2135ebda08b2ef 100644 +index 7e32eecacf6f5e832dbfd0455e4bab1302a33d46..c7bb2416529a96614cdaf8e86e0c37690e69102e 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -3,9 +3,6 @@ package net.minecraft.server; @@ -202,7 +202,7 @@ index edabecf0cdd5dca3cc40084f87f4af750ffe3507..9bdd6a3db74cf5c5c069be88cf2135eb import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; -@@ -144,6 +141,9 @@ import net.minecraft.world.level.levelgen.WorldOptions; +@@ -149,6 +146,9 @@ import net.minecraft.world.level.levelgen.WorldOptions; import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplateManager; import net.minecraft.world.level.storage.WorldData; @@ -212,7 +212,7 @@ index edabecf0cdd5dca3cc40084f87f4af750ffe3507..9bdd6a3db74cf5c5c069be88cf2135eb import org.slf4j.Logger; // CraftBukkit start -@@ -310,6 +310,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop getTypeKey(); - -- protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - create paper world config; Async-Anti-Xray: Pass executor -+ protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.function.Function galeWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - create paper world config; Async-Anti-Xray: Pass executor // Gale - Gale configuration +- protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - create paper world config & Anti-Xray ++ protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.function.Function galeWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - create paper world config & Anti-Xray // Gale - Gale configuration this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config + this.galeConfig = galeWorldConfigCreator.apply(this.spigotConfig); // Gale - Gale configuration @@ -391,10 +356,10 @@ index 14281a4e72f49dc4eb2ca3da8479c1f81a3a175d..01453ffd7e47933dd65fddba9be8e71f this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 5db08432b6afd3639688830e717f40ceaf599248..e4ab54277f7f21c41c07ce9b149431d96d794cd8 100644 +index caf6ff33b42472d30f28629470e12889f50490cc..eb4c9014afe2b59e991a2812c55eaa226925272c 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1056,6 +1056,7 @@ public final class CraftServer implements Server { +@@ -1059,6 +1059,7 @@ public final class CraftServer implements Server { org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot this.console.paperConfigurations.reloadConfigs(this.console); @@ -402,7 +367,7 @@ index 5db08432b6afd3639688830e717f40ceaf599248..e4ab54277f7f21c41c07ce9b149431d9 for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters, config.spawnAnimals); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -@@ -3053,6 +3054,14 @@ public final class CraftServer implements Server { +@@ -2978,6 +2979,14 @@ public final class CraftServer implements Server { return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } diff --git a/patches/server/0010-Gale-commands.patch b/patches/server/0010-Gale-commands.patch index 9e35df7..8ee8134 100644 --- a/patches/server/0010-Gale-commands.patch +++ b/patches/server/0010-Gale-commands.patch @@ -13,10 +13,10 @@ As part of: Paper (https://github.com/PaperMC/Paper) Licensed under: MIT (https://opensource.org/licenses/MIT) diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 729663b324a7473a5da22f0a615ad20380c7374d..22e6faa71d4bca2f6e975d5be2d05e09300400d4 100644 +index 87ec971241047314e7d505fb6b35be4a456727de..f5510ec3ecdb51ca33b4e91ffd164d62b4f7c5dd 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -@@ -50,6 +50,7 @@ import net.minecraft.world.level.GameRules; +@@ -57,6 +57,7 @@ import net.minecraft.world.level.GameRules; import net.minecraft.world.level.GameType; import net.minecraft.world.level.block.entity.SkullBlockEntity; import net.minecraft.world.level.storage.LevelStorageSource; @@ -24,7 +24,7 @@ index 729663b324a7473a5da22f0a615ad20380c7374d..22e6faa71d4bca2f6e975d5be2d05e09 import org.slf4j.Logger; // CraftBukkit start -@@ -230,6 +231,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -239,6 +240,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface org.spigotmc.WatchdogThread.doStart(org.spigotmc.SpigotConfig.timeoutTime, org.spigotmc.SpigotConfig.restartOnCrash); // Paper - start watchdog thread thread.start(); // Paper - Enhance console tab completions for brigadier commands; start console thread after MinecraftServer.console & PaperConfig are initialized io.papermc.paper.command.PaperCommands.registerCommands(this); // Paper - setup /paper command diff --git a/patches/server/0011-Include-time-in-startup-logs.patch b/patches/server/0011-Include-time-in-startup-logs.patch index c677323..82d0f73 100644 --- a/patches/server/0011-Include-time-in-startup-logs.patch +++ b/patches/server/0011-Include-time-in-startup-logs.patch @@ -7,7 +7,7 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) Gale - https://galemc.org diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index e02102280ed1dc300191d19bbca8f00e17701753..6224bb20a2e3919b5fb33e5cfb8babc1929460c2 100644 +index 6e1f92b45504cef0c4dcbbebf3df339ef4cad0a1..f4106b117c2b82a25616b590e7b0853f05864ea1 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -2,6 +2,7 @@ package org.bukkit.craftbukkit; @@ -45,7 +45,7 @@ index e02102280ed1dc300191d19bbca8f00e17701753..6224bb20a2e3919b5fb33e5cfb8babc1 public static void main(String[] args) { // Paper start final String warnWhenLegacyFormattingDetected = String.join(".", "net", "kyori", "adventure", "text", "warnWhenLegacyFormattingDetected"); -@@ -318,13 +339,13 @@ public class Main { +@@ -288,13 +309,13 @@ public class Main { String javaInfo = "Java " + runtimeMX.getSpecVersion() + " (" + runtimeMX.getVmName() + " " + runtimeMX.getVmVersion() + ")"; String osInfo = "Host: " + osMX.getName() + " " + osMX.getVersion() + " (" + osMX.getArch() + ")"; diff --git a/patches/server/0012-Include-server.properties-in-timings.patch b/patches/server/0012-Include-server.properties-in-timings.patch index c93f8a9..0f2b5df 100644 --- a/patches/server/0012-Include-server.properties-in-timings.patch +++ b/patches/server/0012-Include-server.properties-in-timings.patch @@ -27,10 +27,10 @@ index 29796a404e210f7864f4b33b3367e02531bca2a0..73e503d0590964ac7f9ea15ac7ee7783 pair("bukkit", mapAsJSON(Bukkit.spigot().getBukkitConfig(), null)), // Gale start - Gale configuration - include in timings diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java -index 9d10cdacb3aed2c00dc60aeb6f2cbeb48905e21f..4323ffee716380bd67eb04a4a7bb62bc4ba2f7df 100644 +index d6431376184e5650b370cbab204e28bc31f4dac6..bfe9be2e329c2ea2c8c44458e88d22bc75520ed4 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java -@@ -66,6 +66,7 @@ public class DedicatedServerProperties extends Settings { return s1.toLowerCase(Locale.ROOT); }, WorldPresets.NORMAL.location().toString())); diff --git a/patches/server/0016-Make-timings-calls-final.patch b/patches/server/0016-Make-timings-calls-final.patch index fe730da..e7a3399 100644 --- a/patches/server/0016-Make-timings-calls-final.patch +++ b/patches/server/0016-Make-timings-calls-final.patch @@ -7,10 +7,10 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) Gale - https://galemc.org diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 729666f8d9fdb83bbc2b1baa3c61ecf02c10cc45..96830b6ec04d96f5108efbccdcbe45047e1230d7 100644 +index c7bb2416529a96614cdaf8e86e0c37690e69102e..fccf9d434f541ce07da19afed527e2fb6fa97c4d 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1562,7 +1562,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop tickables = Lists.newArrayList(); @@ -201,7 +201,7 @@ index b877abf070100486bdd3f5e329a6ac68b1ed27e7..83e8cca6181129a48a83bd1630b8ffa8 private ServerConnectionListener connection; public final ChunkProgressListenerFactory progressListenerFactory; @Nullable -@@ -342,13 +325,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { return false; } : this::haveTime); +@@ -1215,7 +1181,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0 && this.tickCount % autosavePeriod == 0; - try { - this.isSaving = true; -@@ -1603,7 +1564,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper - Add EntityMoveEvent net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = worldserver.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers - worldserver.updateLagCompensationTick(); // Paper - lag compensation - this.profiler.push(() -> { - String s = String.valueOf(worldserver); @@ -330,7 +328,7 @@ index b877abf070100486bdd3f5e329a6ac68b1ed27e7..83e8cca6181129a48a83bd1630b8ffa8 try { worldserver.timings.doTick.startTiming(); // Spigot worldserver.tick(shouldKeepTicking); -@@ -1798,17 +1745,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop> completablefuture = this.getChunkFutureMainThread(x, z, leastStatus, create); - ServerChunkCache.MainThreadExecutor chunkproviderserver_b = this.mainThreadProcessor; - -@@ -459,19 +454,15 @@ public class ServerChunkCache extends ChunkSource { // CraftBukkit start - modelled on below public void purgeUnload() { - if (true) return; // Paper - tickets will be removed later, this behavior isn't really well accounted for by the chunk system - this.level.getProfiler().push("purge"); this.distanceManager.purgeStaleTickets(); this.runDistanceManagerUpdates(); @@ -695,15 +674,15 @@ index fcecfda569d2a8d6b8a7e228831f822fb7327748..56943c009bad6970d1e9ce7eefb34f52 this.level.timings.doChunkMap.startTiming(); // Spigot if (this.level.tickRateManager().runsNormally() || !tickChunks || this.level.spigotConfig.unloadFrozenChunks) { // Spigot this.distanceManager.purgeStaleTickets(); -@@ -479,7 +470,6 @@ public class ServerChunkCache extends ChunkSource { +@@ -455,7 +450,6 @@ public class ServerChunkCache extends ChunkSource { this.runDistanceManagerUpdates(); this.level.timings.doChunkMap.stopTiming(); // Spigot - this.level.getProfiler().popPush("chunks"); if (tickChunks) { this.level.timings.chunks.startTiming(); // Paper - timings - this.chunkMap.level.playerChunkLoader.tick(); // Paper - replace player chunk loader - this is mostly required to account for view distance changes -@@ -489,10 +479,8 @@ public class ServerChunkCache extends ChunkSource { + ((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemServerLevel)this.level).moonrise$getPlayerChunkLoader().tick(); // Paper - rewrite chunk system +@@ -465,10 +459,8 @@ public class ServerChunkCache extends ChunkSource { } this.level.timings.doChunkUnload.startTiming(); // Spigot @@ -714,7 +693,7 @@ index fcecfda569d2a8d6b8a7e228831f822fb7327748..56943c009bad6970d1e9ce7eefb34f52 this.clearCache(); } -@@ -502,17 +490,12 @@ public class ServerChunkCache extends ChunkSource { +@@ -478,10 +470,6 @@ public class ServerChunkCache extends ChunkSource { this.lastInhabitedUpdate = i; if (!this.level.isDebug()) { @@ -722,50 +701,49 @@ index fcecfda569d2a8d6b8a7e228831f822fb7327748..56943c009bad6970d1e9ce7eefb34f52 - - gameprofilerfiller.push("pollingChunks"); - gameprofilerfiller.push("filteringLoadedChunks"); - // Paper - optimise chunk tick iteration + List list = Lists.newArrayListWithCapacity(this.chunkMap.size()); + Iterator iterator = this.chunkMap.getChunks().iterator(); if (this.level.getServer().tickRateManager().runsNormally()) this.level.timings.chunkTicks.startTiming(); // Paper - - // Paper - optimise chunk tick iteration +@@ -496,7 +484,6 @@ public class ServerChunkCache extends ChunkSource { + } if (this.level.tickRateManager().runsNormally()) { - gameprofilerfiller.popPush("naturalSpawnCount"); this.level.timings.countNaturalMobs.startTiming(); // Paper - timings int k = this.distanceManager.getNaturalSpawnChunkCount(); // Paper start - Optional per player mob spawns -@@ -541,7 +524,6 @@ public class ServerChunkCache extends ChunkSource { +@@ -525,7 +512,6 @@ public class ServerChunkCache extends ChunkSource { this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings this.lastSpawnState = spawnercreature_d; - gameprofilerfiller.popPush("spawnAndTick"); boolean flag = this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && !this.level.players().isEmpty(); // CraftBukkit - // Paper start - optimise chunk tick iteration -@@ -649,7 +631,6 @@ public class ServerChunkCache extends ChunkSource { - // Paper end - optimise chunk tick iteration + Util.shuffle(list, this.level.random); +@@ -560,7 +546,6 @@ public class ServerChunkCache extends ChunkSource { + } this.level.timings.chunkTicks.stopTiming(); // Paper - gameprofilerfiller.popPush("customSpawners"); if (flag) { try (co.aikar.timings.Timing ignored = this.level.timings.miscMobSpawning.startTiming()) { // Paper - timings this.level.tickCustomSpawners(this.spawnEnemies, this.spawnFriendlies); -@@ -657,7 +638,6 @@ public class ServerChunkCache extends ChunkSource { +@@ -568,14 +553,11 @@ public class ServerChunkCache extends ChunkSource { } } - gameprofilerfiller.popPush("broadcast"); - // Paper - optimise chunk tick iteration + list.forEach((chunkproviderserver_a1) -> { this.level.timings.broadcastChunkUpdates.startTiming(); // Paper - timing - // Paper start - optimise chunk tick iteration -@@ -675,8 +655,6 @@ public class ServerChunkCache extends ChunkSource { - // Paper end - optimise chunk tick iteration + chunkproviderserver_a1.holder.broadcastChanges(chunkproviderserver_a1.chunk); this.level.timings.broadcastChunkUpdates.stopTiming(); // Paper - timing - // Paper - optimise chunk tick iteration + }); - gameprofilerfiller.pop(); - gameprofilerfiller.pop(); } } -@@ -848,7 +826,6 @@ public class ServerChunkCache extends ChunkSource { +@@ -756,7 +738,6 @@ public class ServerChunkCache extends ChunkSource { @Override protected void doRunTask(Runnable task) { @@ -774,10 +752,10 @@ index fcecfda569d2a8d6b8a7e228831f822fb7327748..56943c009bad6970d1e9ce7eefb34f52 } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 40db66b168b8927b3d3dd8ec2bf77c22212142ce..db21e92d1e81e34a80342581107e20a314415481 100644 +index 1972203ee1bdd9966b74926bae6ef23d4a1cedef..e018f5686406b58e09c9b62a9bcd4982c8aed905 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -79,7 +79,6 @@ import net.minecraft.util.ProgressListener; +@@ -80,7 +80,6 @@ import net.minecraft.util.ProgressListener; import net.minecraft.util.RandomSource; import net.minecraft.util.Unit; import net.minecraft.util.datafix.DataFixTypes; @@ -785,7 +763,7 @@ index 40db66b168b8927b3d3dd8ec2bf77c22212142ce..db21e92d1e81e34a80342581107e20a3 import net.minecraft.util.valueproviders.IntProvider; import net.minecraft.util.valueproviders.UniformInt; import net.minecraft.world.DifficultyInstance; -@@ -695,15 +694,17 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -503,15 +502,17 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. // Holder holder = worlddimension.type(); // CraftBukkit - decompile error // Objects.requireNonNull(minecraftserver); // CraftBukkit - decompile error @@ -806,7 +784,7 @@ index 40db66b168b8927b3d3dd8ec2bf77c22212142ce..db21e92d1e81e34a80342581107e20a3 this.pathTypesByPosCache = new PathTypeCache(); this.navigatingMobs = new ObjectOpenHashSet(); this.blockEvents = new ObjectLinkedOpenHashSet(); -@@ -807,16 +808,12 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -624,16 +625,12 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } public void tick(BooleanSupplier shouldKeepTicking) { @@ -823,7 +801,7 @@ index 40db66b168b8927b3d3dd8ec2bf77c22212142ce..db21e92d1e81e34a80342581107e20a3 this.advanceWeatherCycle(); } -@@ -848,30 +845,23 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -665,30 +662,23 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. this.tickTime(); } @@ -854,7 +832,7 @@ index 40db66b168b8927b3d3dd8ec2bf77c22212142ce..db21e92d1e81e34a80342581107e20a3 if (flag) { this.timings.doSounds.startTiming(); // Spigot this.runBlockEvents(); -@@ -879,7 +869,6 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -696,7 +686,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } this.handlingTick = false; @@ -862,7 +840,7 @@ index 40db66b168b8927b3d3dd8ec2bf77c22212142ce..db21e92d1e81e34a80342581107e20a3 boolean flag1 = !paperConfig().unsupportedSettings.disableWorldTickingWhenEmpty || !this.players.isEmpty() || !this.getForcedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players // Paper - restore this if (flag1) { -@@ -887,12 +876,9 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -704,12 +693,9 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } if (flag1 || this.emptyTime++ < 300) { @@ -875,17 +853,17 @@ index 40db66b168b8927b3d3dd8ec2bf77c22212142ce..db21e92d1e81e34a80342581107e20a3 } org.spigotmc.ActivationRange.activateEntities(this); // Spigot -@@ -902,9 +888,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -719,9 +705,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed entity.discard(); } else if (!tickratemanager.isEntityFrozen(entity)) { - gameprofilerfiller.push("checkDespawn"); entity.checkDespawn(); - gameprofilerfiller.pop(); - if (true || this.chunkSource.chunkMap.getDistanceManager().inEntityTickingRange(entity.chunkPosition().toLong())) { // Paper - now always true if in the ticking list + if (true || this.chunkSource.chunkMap.getDistanceManager().inEntityTickingRange(entity.chunkPosition().toLong())) { // Paper - rewrite chunk system Entity entity1 = entity.getVehicle(); -@@ -916,22 +900,17 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -733,22 +717,17 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. entity.stopRiding(); } @@ -903,22 +881,22 @@ index 40db66b168b8927b3d3dd8ec2bf77c22212142ce..db21e92d1e81e34a80342581107e20a3 } - gameprofilerfiller.push("entityManagement"); - //this.entityManager.tick(); // Paper - rewrite chunk system + // Paper - rewrite chunk system - gameprofilerfiller.pop(); } @Override -@@ -990,9 +969,6 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -803,9 +782,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. boolean flag = this.isRaining(); int j = chunkcoordintpair.getMinBlockX(); int k = chunkcoordintpair.getMinBlockZ(); - ProfilerFiller gameprofilerfiller = this.getProfiler(); -- -- gameprofilerfiller.push("thunder"); - final BlockPos.MutableBlockPos blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change +- gameprofilerfiller.push("thunder"); if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && this.random.nextInt(this.spigotConfig.thunderChance) == 0) { // Spigot // Paper - Option to disable thunder -@@ -1023,8 +999,6 @@ public class ServerLevel extends Level implements WorldGenLevel { + BlockPos blockposition = this.findLightningTargetAround(this.getBlockRandomPos(j, 0, k, 15)); + +@@ -834,8 +811,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } } @@ -927,23 +905,38 @@ index 40db66b168b8927b3d3dd8ec2bf77c22212142ce..db21e92d1e81e34a80342581107e20a3 if (!this.paperConfig().environment.disableIceAndSnow) { // Paper - Option to disable ice and snow for (int l = 0; l < randomTickSpeed; ++l) { if (this.random.nextInt(48) == 0) { -@@ -1036,7 +1010,6 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -844,7 +819,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } } // Paper - Option to disable ice and snow - gameprofilerfiller.popPush("tickBlocks"); timings.chunkTicksBlocks.startTiming(); // Paper if (randomTickSpeed > 0) { - // Paper start - optimize random block ticking -@@ -1072,7 +1045,6 @@ public class ServerLevel extends Level implements WorldGenLevel { - // Paper end - optimise random block ticking + LevelChunkSection[] achunksection = chunk.getSections(); +@@ -859,7 +833,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. + for (int l1 = 0; l1 < randomTickSpeed; ++l1) { + BlockPos blockposition1 = this.getBlockRandomPos(j, k1, k, 15); + +- gameprofilerfiller.push("randomTick"); + BlockState iblockdata = chunksection.getBlockState(blockposition1.getX() - j, blockposition1.getY() - k1, blockposition1.getZ() - k); + + if (iblockdata.isRandomlyTicking()) { +@@ -872,14 +845,12 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. + fluid.randomTick(this, blockposition1, this.random); + } + +- gameprofilerfiller.pop(); + } + } + } + } timings.chunkTicksBlocks.stopTiming(); // Paper - gameprofilerfiller.pop(); } @VisibleForTesting -@@ -1401,19 +1373,13 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1178,19 +1149,13 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. try { // Paper end - timings entity.setOldPosAndRot(); @@ -963,12 +956,12 @@ index 40db66b168b8927b3d3dd8ec2bf77c22212142ce..db21e92d1e81e34a80342581107e20a3 } finally { timer.stopTiming(); } // Paper - timings Iterator iterator = entity.getPassengers().iterator(); -@@ -1442,12 +1408,6 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1213,12 +1178,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. // Paper end passenger.setOldPosAndRot(); ++passenger.tickCount; - ProfilerFiller gameprofilerfiller = this.getProfiler(); -- + - gameprofilerfiller.push(() -> { - return BuiltInRegistries.ENTITY_TYPE.getKey(passenger.getType()).toString(); - }); @@ -976,7 +969,7 @@ index 40db66b168b8927b3d3dd8ec2bf77c22212142ce..db21e92d1e81e34a80342581107e20a3 // Paper start - EAR 2 if (isActive) { passenger.rideTick(); -@@ -1459,7 +1419,6 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1230,7 +1190,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. vehicle.positionRider(passenger); } // Paper end - EAR 2 @@ -985,39 +978,39 @@ index 40db66b168b8927b3d3dd8ec2bf77c22212142ce..db21e92d1e81e34a80342581107e20a3 while (iterator.hasNext()) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 6a4637eef14cbd84bbe26ef16f004b8f93367a3d..85a61984d241fe702e2cda22e5ea5dde239084f3 100644 +index 89ed20e9c629cf39a24c7a0ce5c4fee41fc64fd5..3d1aff8318620bc87a439e095bc1d06e4dafbba1 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1291,7 +1291,6 @@ public class ServerPlayer extends Player { - PortalInfo shapedetectorshape = this.findDimensionEntryPoint(worldserver); - - if (shapedetectorshape != null) { +@@ -1371,7 +1371,6 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple + this.unsetRemoved(); + */ + // CraftBukkit end - worldserver1.getProfiler().push("moving"); - worldserver = shapedetectorshape.world; // CraftBukkit - if (worldserver == null) { } else // CraftBukkit - empty to fall through to null to event - if (resourcekey == LevelStem.OVERWORLD && worldserver.getTypeKey() == LevelStem.NETHER) { // CraftBukkit -@@ -1314,8 +1313,6 @@ public class ServerPlayer extends Player { - worldserver = ((CraftWorld) exit.getWorld()).getHandle(); - // CraftBukkit end + if (worldserver != null && resourcekey == LevelStem.OVERWORLD && worldserver.getTypeKey() == LevelStem.NETHER) { // CraftBukkit - empty to fall through to null to event + this.enteredNetherPosition = this.position(); + } +@@ -1387,8 +1386,6 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple + worldserver = ((CraftWorld) exit.getWorld()).getHandle(); + // CraftBukkit end -- worldserver1.getProfiler().pop(); -- worldserver1.getProfiler().push("placing"); - if (true) { // CraftBukkit +- worldserver1.getProfiler().pop(); +- worldserver1.getProfiler().push("placing"); + // CraftBukkit start this.isChangingDimension = true; // CraftBukkit - Set teleport invulnerability only if player changing worlds - -@@ -1332,7 +1329,6 @@ public class ServerPlayer extends Player { + LevelData worlddata = worldserver.getLevelData(); +@@ -1405,7 +1402,6 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple this.connection.teleport(exit); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); - worldserver.addDuringPortalTeleport(this); + worldserver.addDuringTeleport(this); - worldserver1.getProfiler().pop(); this.triggerDimensionChangeTriggers(worldserver1); this.connection.send(new ClientboundPlayerAbilitiesPacket(this.getAbilities())); playerlist.sendLevelInfo(this, worldserver); diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -index 308aef9c4933b2bcdd622a34b68efab4a220fe4d..652ae75254d78fff02d68cbb747eaee4c3f35a1a 100644 +index b43f87ff4b9853b5d4bbea5ff9686d64d9d0d26b..8757a6ac609d463f94846d66fe04f50e859e7ce8 100644 --- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -@@ -246,7 +246,6 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -247,7 +247,6 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack } protected void keepConnectionAlive() { @@ -1025,7 +1018,7 @@ index 308aef9c4933b2bcdd622a34b68efab4a220fe4d..652ae75254d78fff02d68cbb747eaee4 // Paper start - give clients a longer time to respond to pings as per pre 1.12.2 timings // This should effectively place the keepalive handling back to "as it was" before 1.12.2 long currentTime = Util.getMillis(); -@@ -264,7 +263,6 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -265,7 +264,6 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack } // Paper end - give clients a longer time to respond to pings as per pre 1.12.2 timings @@ -1135,10 +1128,10 @@ index 298e3eddd600f0b2e48ce2d4080cf68adff59a3a..6b3c57fc1231cd37e17a58137bb78411 protected abstract T prepare(ResourceManager manager, ProfilerFiller profiler); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 7ef9f67d27cc240191dd5d07e8dcf5fbdebe1049..f60573a8c694f2efb5e8f2a4e6ae4dd87d896482 100644 +index 14db8510af7465eb663501008ca35f8ec63bfe30..bf69dd0f673e86fb2de6251bedcf36e4577933d9 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -876,7 +876,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -806,7 +806,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess // CraftBukkit end public void baseTick() { @@ -1146,15 +1139,16 @@ index 7ef9f67d27cc240191dd5d07e8dcf5fbdebe1049..f60573a8c694f2efb5e8f2a4e6ae4dd8 if (firstTick && this instanceof net.minecraft.world.entity.NeutralMob neutralMob) neutralMob.tickInitialPersistentAnger(level); // Paper - Prevent entity loading causing async lookups this.inBlockState = null; if (this.isPassenger() && this.getVehicle().isRemoved()) { -@@ -937,7 +936,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -870,8 +869,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess + if (!this.level().isClientSide && this instanceof Leashable) { + Leashable.tickLeash((Entity & Leashable) this); // CraftBukkit - decompile error } - - this.firstTick = false; +- - this.level().getProfiler().pop(); } public void setSharedFlagOnFire(boolean onFire) { -@@ -1154,7 +1152,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1049,7 +1046,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } } @@ -1162,15 +1156,7 @@ index 7ef9f67d27cc240191dd5d07e8dcf5fbdebe1049..f60573a8c694f2efb5e8f2a4e6ae4dd8 if (this.stuckSpeedMultiplier.lengthSqr() > 1.0E-7D) { movement = movement.multiply(this.stuckSpeedMultiplier); this.stuckSpeedMultiplier = Vec3.ZERO; -@@ -1163,7 +1160,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - // Paper start - ignore movement changes while inactive. - if (isTemporarilyActive && !(this instanceof ItemEntity) && movement == getDeltaMovement() && movementType == MoverType.SELF) { - setDeltaMovement(Vec3.ZERO); -- this.level.getProfiler().pop(); - return; - } - // Paper end -@@ -1184,8 +1180,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1079,8 +1075,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.setPos(this.getX() + vec3d1.x, this.getY() + vec3d1.y, this.getZ() + vec3d1.z); } @@ -1179,7 +1165,7 @@ index 7ef9f67d27cc240191dd5d07e8dcf5fbdebe1049..f60573a8c694f2efb5e8f2a4e6ae4dd8 boolean flag = !Mth.equal(movement.x, vec3d1.x); boolean flag1 = !Mth.equal(movement.z, vec3d1.z); -@@ -1203,9 +1197,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1098,9 +1092,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess BlockState iblockdata = this.level().getBlockState(blockposition); this.checkFallDamage(vec3d1.y, this.onGround(), iblockdata, blockposition); @@ -1190,7 +1176,7 @@ index 7ef9f67d27cc240191dd5d07e8dcf5fbdebe1049..f60573a8c694f2efb5e8f2a4e6ae4dd8 if (this.horizontalCollision) { Vec3 vec3d2 = this.getDeltaMovement(); -@@ -1341,8 +1333,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1201,8 +1193,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess if (this.isOnFire() && (this.isInPowderSnow || this.isInWaterRainOrBubble())) { this.setRemainingFireTicks(-this.getFireImmuneTicks()); } @@ -1198,62 +1184,12 @@ index 7ef9f67d27cc240191dd5d07e8dcf5fbdebe1049..f60573a8c694f2efb5e8f2a4e6ae4dd8 - this.level().getProfiler().pop(); } } - // Paper start - detailed watchdog information -@@ -3225,7 +3215,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - ServerLevel worldserver1 = minecraftserver.getLevel(resourcekey); - - if (true && !this.isPassenger() && this.portalTime++ >= i) { // CraftBukkit -- this.level().getProfiler().push("portal"); - this.portalTime = i; - // Paper start - Add EntityPortalReadyEvent - io.papermc.paper.event.entity.EntityPortalReadyEvent event = new io.papermc.paper.event.entity.EntityPortalReadyEvent(this.getBukkitEntity(), worldserver1 == null ? null : worldserver1.getWorld(), org.bukkit.PortalType.NETHER); -@@ -3243,7 +3232,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - } - } // Paper - Add EntityPortalReadyEvent - // CraftBukkit end -- this.level().getProfiler().pop(); - } - - this.isInsidePortal = false; -@@ -3703,14 +3691,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - } - // Paper end - Fix item duplication and teleport issues - if (this.level() instanceof ServerLevel && !this.isRemoved()) { -- this.level().getProfiler().push("changeDimension"); - // CraftBukkit start - // this.unRide(); - if (worldserver == null) { - return null; - } - // CraftBukkit end -- this.level().getProfiler().push("reposition"); - PortalInfo shapedetectorshape = (location == null) ? this.findDimensionEntryPoint(worldserver) : new PortalInfo(new Vec3(location.x(), location.y(), location.z()), Vec3.ZERO, this.yRot, this.xRot, worldserver, null); // CraftBukkit - - if (shapedetectorshape == null) { -@@ -3749,7 +3735,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - this.unRide(); - // CraftBukkit end - -- this.level().getProfiler().popPush("reloading"); - // Paper start - Fix item duplication and teleport issues - if (this instanceof Mob) { - ((Mob) this).dropLeash(true, true); // Paper drop lead -@@ -3776,10 +3761,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - } - - this.removeAfterChangingDimensions(); -- this.level().getProfiler().pop(); - ((ServerLevel) this.level()).resetEmptyTime(); - worldserver.resetEmptyTime(); -- this.level().getProfiler().pop(); - return entity; - } - } else { + } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 21e61bb75ac7ce468bc757633ce678b21bcb9deb..d67a149de34619ac9945ba7fdbd4c7c8f33c8817 100644 +index f35c9b1ee4bb99a4fad269b5f0cc46b8a1f3adfb..5021c4618c8302e103fb2595a8d3df26f7479140 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -418,7 +418,6 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -440,7 +440,6 @@ public abstract class LivingEntity extends Entity implements Attackable { } super.baseTick(); @@ -1261,15 +1197,15 @@ index 21e61bb75ac7ce468bc757633ce678b21bcb9deb..d67a149de34619ac9945ba7fdbd4c7c8 if (this.fireImmune() || this.level().isClientSide) { this.clearFire(); } -@@ -520,7 +519,6 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -545,7 +544,6 @@ public abstract class LivingEntity extends Entity implements Attackable { this.yHeadRotO = this.yHeadRot; this.yRotO = this.getYRot(); this.xRotO = this.getXRot(); - this.level().getProfiler().pop(); } - public boolean canSpawnSoulSpeedParticle() { -@@ -3147,10 +3145,7 @@ public abstract class LivingEntity extends Entity implements Attackable { + @Override +@@ -3150,10 +3148,7 @@ public abstract class LivingEntity extends Entity implements Attackable { } this.run += (f3 - this.run) * 0.3F; @@ -1280,7 +1216,7 @@ index 21e61bb75ac7ce468bc757633ce678b21bcb9deb..d67a149de34619ac9945ba7fdbd4c7c8 // Paper start - stop large pitch and yaw changes from crashing the server this.yRotO += Math.round((this.getYRot() - this.yRotO) / 360.0F) * 360.0F; -@@ -3162,7 +3157,6 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3165,7 +3160,6 @@ public abstract class LivingEntity extends Entity implements Attackable { this.yHeadRotO += Math.round((this.yHeadRot - this.yHeadRotO) / 360.0F) * 360.0F; // Paper end @@ -1288,7 +1224,7 @@ index 21e61bb75ac7ce468bc757633ce678b21bcb9deb..d67a149de34619ac9945ba7fdbd4c7c8 this.animStep += f2; if (this.isFallFlying()) { ++this.fallFlyTicks; -@@ -3385,19 +3379,14 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3405,19 +3399,14 @@ public abstract class LivingEntity extends Entity implements Attackable { } this.setDeltaMovement(d0, d1, d2); @@ -1308,7 +1244,7 @@ index 21e61bb75ac7ce468bc757633ce678b21bcb9deb..d67a149de34619ac9945ba7fdbd4c7c8 if (this.jumping && this.isAffectedByFluids()) { double d3; -@@ -3424,8 +3413,6 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3444,8 +3433,6 @@ public abstract class LivingEntity extends Entity implements Attackable { this.noJumpDelay = 0; } @@ -1317,7 +1253,7 @@ index 21e61bb75ac7ce468bc757633ce678b21bcb9deb..d67a149de34619ac9945ba7fdbd4c7c8 this.xxa *= 0.98F; this.zza *= 0.98F; this.updateFallFlying(); -@@ -3450,8 +3437,6 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3470,8 +3457,6 @@ public abstract class LivingEntity extends Entity implements Attackable { this.travel(vec3d1); } @@ -1326,7 +1262,7 @@ index 21e61bb75ac7ce468bc757633ce678b21bcb9deb..d67a149de34619ac9945ba7fdbd4c7c8 if (!this.level().isClientSide && !this.isDeadOrDying() && !this.freezeLocked) { // Paper - Freeze Tick Lock API int i = this.getTicksFrozen(); -@@ -3468,15 +3453,12 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3488,15 +3473,12 @@ public abstract class LivingEntity extends Entity implements Attackable { this.hurt(this.damageSources().freeze(), 1.0F); } @@ -1343,10 +1279,10 @@ index 21e61bb75ac7ce468bc757633ce678b21bcb9deb..d67a149de34619ac9945ba7fdbd4c7c8 if (((ServerLevel) this.level()).hasEntityMoveEvent && !(this instanceof net.minecraft.world.entity.player.Player)) { if (this.xo != this.getX() || this.yo != this.getY() || this.zo != this.getZ() || this.yRotO != this.getYRot() || this.xRotO != this.getXRot()) { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 8b612b772ca87c852d0b108c2afd6785c261c9b9..a5fb569f89b0227adc753dc34ae83077db979cb9 100644 +index 7b93c6a04cca2ac31d137f06ef83bb08559b10bf..2a25238dcd741f9a5d16b202902210244d9a1947 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -37,7 +37,6 @@ import net.minecraft.sounds.SoundEvent; +@@ -34,7 +34,6 @@ import net.minecraft.sounds.SoundEvent; import net.minecraft.tags.TagKey; import net.minecraft.util.Mth; import net.minecraft.util.RandomSource; @@ -1354,7 +1290,7 @@ index 8b612b772ca87c852d0b108c2afd6785c261c9b9..a5fb569f89b0227adc753dc34ae83077 import net.minecraft.world.Difficulty; import net.minecraft.world.DifficultyInstance; import net.minecraft.world.InteractionHand; -@@ -163,8 +162,10 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti +@@ -158,8 +157,10 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab this.pathfindingMalus = Maps.newEnumMap(PathType.class); this.restrictCenter = BlockPos.ZERO; this.restrictRadius = -1.0F; @@ -1367,7 +1303,7 @@ index 8b612b772ca87c852d0b108c2afd6785c261c9b9..a5fb569f89b0227adc753dc34ae83077 this.lookControl = new LookControl(this); this.moveControl = new MoveControl(this); this.jumpControl = new JumpControl(this); -@@ -373,13 +374,10 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti +@@ -368,13 +369,10 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab @Override public void baseTick() { super.baseTick(); @@ -1381,7 +1317,7 @@ index 8b612b772ca87c852d0b108c2afd6785c261c9b9..a5fb569f89b0227adc753dc34ae83077 } @Override -@@ -718,7 +716,6 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti +@@ -678,7 +676,6 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab @Override public void aiStep() { super.aiStep(); @@ -1389,7 +1325,7 @@ index 8b612b772ca87c852d0b108c2afd6785c261c9b9..a5fb569f89b0227adc753dc34ae83077 if (!this.level().isClientSide && this.canPickUpLoot() && this.isAlive() && !this.dead && this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { Vec3i baseblockposition = this.getPickupReach(); List list = this.level().getEntitiesOfClass(ItemEntity.class, this.getBoundingBox().inflate((double) baseblockposition.getX(), (double) baseblockposition.getY(), (double) baseblockposition.getZ())); -@@ -737,8 +734,6 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti +@@ -697,8 +694,6 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab } } } @@ -1398,7 +1334,7 @@ index 8b612b772ca87c852d0b108c2afd6785c261c9b9..a5fb569f89b0227adc753dc34ae83077 } protected Vec3i getPickupReach() { -@@ -963,44 +958,23 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti +@@ -918,44 +913,23 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab return; } // Paper end - Allow nerfed mobs to jump and float @@ -1544,10 +1480,10 @@ index 51772f03a3469b11e7166ec6f3a1b9c64a606221..ed440b9a84ac0e4619c075491515fa07 this.seen.add(i); } else { diff --git a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -index 991e3274091c4e25eebc6debd44653e5b566eedb..29802fa506042c80bd1a03cf88f4ab326dfb94b5 100644 +index 69986f75d3cf729204cca0c7e5428536af31f695..a6b8c6540886af41ef1bccbd76784fe327e8277b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java +++ b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -@@ -217,12 +217,8 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS +@@ -219,12 +219,8 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS @Override protected void customServerAiStep() { @@ -1561,10 +1497,10 @@ index 991e3274091c4e25eebc6debd44653e5b566eedb..29802fa506042c80bd1a03cf88f4ab32 } diff --git a/src/main/java/net/minecraft/world/entity/animal/armadillo/Armadillo.java b/src/main/java/net/minecraft/world/entity/animal/armadillo/Armadillo.java -index b38281f963377cc82b360e8457da7cad033b8c36..6a3b119bdcac4de1b39216b23ba8dceae062d278 100644 +index 792d9039ac0561464c666977ff8308e4c629e5eb..a70077521a13d0fbdc987b39a89345442c8e8cc3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/armadillo/Armadillo.java +++ b/src/main/java/net/minecraft/world/entity/animal/armadillo/Armadillo.java -@@ -130,12 +130,8 @@ public class Armadillo extends Animal { +@@ -131,12 +131,8 @@ public class Armadillo extends Animal { @Override protected void customServerAiStep() { @@ -1578,10 +1514,10 @@ index b38281f963377cc82b360e8457da7cad033b8c36..6a3b119bdcac4de1b39216b23ba8dcea this.playSound(SoundEvents.ARMADILLO_SCUTE_DROP, 1.0F, (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F); this.forceDrops = true; // CraftBukkit diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index a8cc6ddbf45370fe632e5c5fb7ceef3d299e62a4..8a14e3c2bd2162e36634f532fa86a7fba0548541 100644 +index 01a0731e92d39c8718538244e34a271fb8717fc2..1147bf32f6efe02e51c838eb371f11c6430a80a9 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -270,12 +270,8 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder optional = this.getBrain().getMemory(MemoryModuleType.PLAY_DEAD_TICKS); diff --git a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java -index 4eb26874f21726bbc6e6ad78bfaf4ecd268c7246..3b051447687e309b96fd1ea5405a972568aa7d99 100644 +index 147974651d37e81d81ca97bfa31c9df9867492be..61df975e45ca5704654bb5b295a6e36aec8623ee 100644 --- a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java +++ b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java @@ -140,14 +140,10 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl @@ -1631,7 +1567,7 @@ index 816977990639ec0559b652fc9666afd5046f0a5d..22b84f4d84ca749a2094627b4dd4f471 } diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -index 290d41136f5ec7671bc4990dfe50da0a770c124d..53dbe9d296a89d23b19f2551b20b464731ee800e 100644 +index 43046f4a0cff620834ac4647efdcde227185b2ff..ab27bfb8b5a036eb13e77c8baeaa47e86a9ed2d6 100644 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java @@ -85,12 +85,8 @@ public class Tadpole extends AbstractFish { @@ -1665,7 +1601,7 @@ index 376bcbc189008464f4d518c1e07643431ba96306..a6b6dd1715f7cb278b66381cbb0dd9d7 } diff --git a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java -index dc035bf94c5f6574ed8ad369b327b7f7a145e1d6..e35028ec585d65aafeb29266b57264b2e1322d8a 100644 +index fadd341ff398886a4da102eefa1beb95a63bbd6d..fbc6474ce3960e6675dabaaedb6801d99ccdb1aa 100644 --- a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java +++ b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java @@ -477,11 +477,8 @@ public class Sniffer extends Animal { @@ -1681,10 +1617,10 @@ index dc035bf94c5f6574ed8ad369b327b7f7a145e1d6..e35028ec585d65aafeb29266b57264b2 } diff --git a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -index cfdb2b793f11544ec5e2d1e726134089994b2b0f..e650d78e21944579f556f9c9efb38d150cd3a64e 100644 +index aa458ede5bd645ebf524238179edb33f41bd683f..0d447c8a141a7d7fcaf9218571bf0513dd28269e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -@@ -234,9 +234,7 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { +@@ -233,9 +233,7 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { @Override protected void customServerAiStep() { @@ -1695,10 +1631,10 @@ index cfdb2b793f11544ec5e2d1e726134089994b2b0f..e650d78e21944579f556f9c9efb38d15 } diff --git a/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java b/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java -index 796ce24185ab9e80864116f9523c4289fcaad243..f0f7c8eb477a2f741ddea2814e112f2ee2b5a879 100644 +index ee9098f311b5db7251fcaf3ca199ae51ec1f2a2a..afe1e0518be486c7e3c3103fc66980b5c234c1ac 100644 --- a/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java +++ b/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java -@@ -226,11 +226,8 @@ public class Breeze extends Monster { +@@ -228,11 +228,8 @@ public class Breeze extends Monster { @Override protected void customServerAiStep() { @@ -1711,7 +1647,7 @@ index 796ce24185ab9e80864116f9523c4289fcaad243..f0f7c8eb477a2f741ddea2814e112f2e } diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index c583d883118ded5e1884c757427dc5e73c10dd27..910c3df3e8232db8b7140c51df010f0a9bdcad68 100644 +index d5e0c493f4c348724958193795ceb987765a465f..8453c20a4b5f3a1205d0530b5c3b9f2c38a234a2 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java @@ -155,9 +155,7 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { @@ -1725,10 +1661,10 @@ index c583d883118ded5e1884c757427dc5e73c10dd27..910c3df3e8232db8b7140c51df010f0a if (this.isConverting()) { this.timeInOverworld++; diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index a8ab486c7e11ec137da48174af6f1030dfd48056..74ffc0c8ac95590c39e86893bb4f270eb63efd49 100644 +index bc58323801ee16fe9b63c21332144ec002a902f2..37452ff83fe07c9fa14a337cbf5018bfc7543f5a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -296,9 +296,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -295,9 +295,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @Override protected void customServerAiStep() { @@ -1753,10 +1689,10 @@ index fcadd7f28ccb81bbb36e97d8b8d8a8ba3f3d6a16..072c28e309d1d18cb3e3e719aec23d77 PiglinBruteAi.maybePlayActivitySound(this); super.customServerAiStep(); diff --git a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -index ddd60be52dce5773c80934be5aa5705db239e3dd..f41898080a0cce6e1c2d50c3a7f1a0d67df5605a 100644 +index 38bf417a9ad4647f4af24d969f3bf4fed9c4bad7..1cb55c9240dfa46cf117ac5b8923b064a96788c3 100644 --- a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java +++ b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -@@ -275,9 +275,7 @@ public class Warden extends Monster implements VibrationSystem { +@@ -276,9 +276,7 @@ public class Warden extends Monster implements VibrationSystem { protected void customServerAiStep() { ServerLevel worldserver = (ServerLevel) this.level(); @@ -1767,7 +1703,7 @@ index ddd60be52dce5773c80934be5aa5705db239e3dd..f41898080a0cce6e1c2d50c3a7f1a0d6 if ((this.tickCount + this.getId()) % 120 == 0) { Warden.applyDarknessAround(worldserver, this.position(), this, 20); diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index a7930f9875aa4aca997caaead46ecdc21e5e11d7..64ec94ba2b2ce3884f56c95464384fbc1d29e36c 100644 +index 7e1871401ec5e3e9a85232053490259f132aec0a..ba49442ed0b7c05c50dbc2a640f5759e391902f2 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -254,9 +254,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -1781,10 +1717,10 @@ index a7930f9875aa4aca997caaead46ecdc21e5e11d7..64ec94ba2b2ce3884f56c95464384fbc this.assignProfessionWhenSpawned = false; } diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index 638447e8cb74b26f4f8e3862c2fb4a3048979ebc..61dbd071bbe311743ed8244a85ee044471be007d 100644 +index bff83fe413c7baef4ba56a3270ea4463a58c792f..807964a19ac15717715c9a92aeefadbeb5875681 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -668,7 +668,6 @@ public class Explosion { +@@ -350,7 +350,6 @@ public class Explosion { } if (flag1) { @@ -1792,7 +1728,7 @@ index 638447e8cb74b26f4f8e3862c2fb4a3048979ebc..61dbd071bbe311743ed8244a85ee0444 List> list = new ArrayList(); Util.shuffle(this.toBlow, this.level.random); -@@ -746,7 +745,6 @@ public class Explosion { +@@ -428,7 +427,6 @@ public class Explosion { Block.popResource(this.level, (BlockPos) pair.getSecond(), (ItemStack) pair.getFirst()); } @@ -1801,10 +1737,10 @@ index 638447e8cb74b26f4f8e3862c2fb4a3048979ebc..61dbd071bbe311743ed8244a85ee0444 if (this.fire) { diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 01453ffd7e47933dd65fddba9be8e71f3a51cc46..118d1a5aedce3f478f47b9e36cf419c15f3bd7ca 100644 +index 7d53bcbb62ed87d39dd1e47136343541cca2d547..d7a638680fa349caba43f07ab9e6e4fa7303fb48 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -131,7 +131,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -132,7 +132,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl private final RandomSource threadSafeRandom = RandomSource.createThreadSafe(); private final Holder dimensionTypeRegistration; public final WritableLevelData levelData; @@ -1812,16 +1748,32 @@ index 01453ffd7e47933dd65fddba9be8e71f3a51cc46..118d1a5aedce3f478f47b9e36cf419c1 public final boolean isClientSide; private final WorldBorder worldBorder; private final BiomeManager biomeManager; -@@ -209,7 +208,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -228,7 +227,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl - public abstract ResourceKey getTypeKey(); + @Override + public final List getEntitiesOfClass(final Class entityClass, final AABB boundingBox, final Predicate predicate) { +- this.getProfiler().incrementCounter("getEntities"); + final List ret = new java.util.ArrayList<>(); -- protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.function.Function galeWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - create paper world config; Async-Anti-Xray: Pass executor // Gale - Gale configuration -+ protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.function.Function galeWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - create paper world config; Async-Anti-Xray: Pass executor // Gale - Gale configuration // Gale - Purpur - remove vanilla profiler + ((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemLevel)this).moonrise$getEntityLookup().getEntities(entityClass, null, boundingBox, ret, predicate); +@@ -238,7 +236,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl + + @Override + public final List moonrise$getHardCollidingEntities(final Entity entity, final AABB box, final Predicate predicate) { +- this.getProfiler().incrementCounter("getEntities"); + final List ret = new java.util.ArrayList<>(); + + ((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemLevel)this).moonrise$getEntityLookup().getHardCollidingEntities(entity, box, ret, predicate); +@@ -262,7 +259,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl + } + // Paper end - rewrite chunk system + +- protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.function.Function galeWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - create paper world config & Anti-Xray // Gale - Gale configuration ++ protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.function.Function galeWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - create paper world config & Anti-Xray // Gale - Gale configuration // Gale - Purpur - remove vanilla profiler this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config this.galeConfig = galeWorldConfigCreator.apply(this.spigotConfig); // Gale - Gale configuration -@@ -224,7 +223,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -277,7 +274,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl } // CraftBukkit end @@ -1829,7 +1781,7 @@ index 01453ffd7e47933dd65fddba9be8e71f3a51cc46..118d1a5aedce3f478f47b9e36cf419c1 this.levelData = worlddatamutable; this.dimensionTypeRegistration = holder; final DimensionType dimensionmanager = (DimensionType) holder.value(); -@@ -1254,9 +1252,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -943,9 +939,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl } protected void tickBlockEntities() { @@ -1839,7 +1791,7 @@ index 01453ffd7e47933dd65fddba9be8e71f3a51cc46..118d1a5aedce3f478f47b9e36cf419c1 this.timings.tileEntityPending.startTiming(); // Spigot this.tickingBlockEntities = true; if (!this.pendingBlockEntityTickers.isEmpty()) { -@@ -1297,7 +1292,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -981,7 +974,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl this.timings.tileEntityTick.stopTiming(); // Spigot this.tickingBlockEntities = false; co.aikar.timings.TimingHistory.tileEntityTicks += this.blockEntityTickers.size(); // Paper @@ -1847,23 +1799,24 @@ index 01453ffd7e47933dd65fddba9be8e71f3a51cc46..118d1a5aedce3f478f47b9e36cf419c1 this.spigotConfig.currentPrimedTnt = 0; // Spigot } -@@ -1512,7 +1506,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1184,7 +1176,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl @Override public List getEntities(@Nullable Entity except, AABB box, Predicate predicate) { - this.getProfiler().incrementCounter("getEntities"); - List list = Lists.newArrayList(); - ((ServerLevel)this).getEntityLookup().getEntities(except, box, list, predicate); // Paper - optimise this call - return list; -@@ -1531,7 +1524,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - } + // Paper start - rewrite chunk system + final List ret = new java.util.ArrayList<>(); - public void getEntities(EntityTypeTest filter, AABB box, Predicate predicate, List result, int limit) { +@@ -1210,8 +1201,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl + public void getEntities(final EntityTypeTest entityTypeTest, + final AABB boundingBox, final Predicate predicate, + final List into, final int maxCount) { - this.getProfiler().incrementCounter("getEntities"); - // Paper start - optimise this call - //TODO use limit - if (filter instanceof net.minecraft.world.entity.EntityType entityTypeTest) { -@@ -1786,11 +1778,11 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +- + if (entityTypeTest instanceof net.minecraft.world.entity.EntityType byType) { + if (maxCount != Integer.MAX_VALUE) { + ((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemLevel)this).moonrise$getEntityLookup().getEntities(byType, boundingBox, into, predicate, maxCount); +@@ -1505,11 +1494,11 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl } public ProfilerFiller getProfiler() { @@ -1919,10 +1872,10 @@ index c5454b92ca2565461c799d7340160f9fb72c1b0f..a1a4b99167919bedb8a45c3b81889f58 - } } diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 14ee7b5b9b804bebd4e2a846b238547a28a36035..1bee0c58ca6acf734e060b4ef6b0b5b42b868613 100644 +index d869607853ad27032df072c1f1d74a74e4911baf..715a39cf1d075e0ef7f32c9066714a21b46f64b0 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -26,7 +26,6 @@ import net.minecraft.network.FriendlyByteBuf; +@@ -25,7 +25,6 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.protocol.game.ClientboundLevelChunkPacketData; import net.minecraft.server.level.FullChunkStatus; import net.minecraft.server.level.ServerLevel; @@ -1930,21 +1883,21 @@ index 14ee7b5b9b804bebd4e2a846b238547a28a36035..1bee0c58ca6acf734e060b4ef6b0b5b4 import net.minecraft.world.entity.Entity; import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.Level; -@@ -441,13 +440,8 @@ public class LevelChunk extends ChunkAccess { +@@ -447,13 +446,8 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p } if (LightEngine.hasDifferentLightProperties(this, blockposition, iblockdata1, iblockdata)) { - ProfilerFiller gameprofilerfiller = this.level.getProfiler(); - - gameprofilerfiller.push("updateSkyLightSources"); - // Paper - starlight - remove skyLightSources + // Paper - rewrite chunk system - gameprofilerfiller.popPush("queueCheckLight"); this.level.getChunkSource().getLightEngine().checkBlock(blockposition); - gameprofilerfiller.pop(); } boolean flag3 = iblockdata1.hasBlockEntity(); -@@ -1158,9 +1152,6 @@ public class LevelChunk extends ChunkAccess { +@@ -1106,9 +1100,6 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p if (LevelChunk.this.isTicking(blockposition)) { try { @@ -1954,15 +1907,15 @@ index 14ee7b5b9b804bebd4e2a846b238547a28a36035..1bee0c58ca6acf734e060b4ef6b0b5b4 this.blockEntity.tickTimer.startTiming(); // Spigot BlockState iblockdata = LevelChunk.this.getBlockState(blockposition); -@@ -1176,8 +1167,6 @@ public class LevelChunk extends ChunkAccess { +@@ -1124,8 +1115,6 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p } // Paper end - Remove the Block Entity if it's invalid } - - gameprofilerfiller.pop(); } catch (Throwable throwable) { - if (throwable instanceof ThreadDeath) throw throwable; // Paper // Paper start - Prevent block entity and entity crashes + final String msg = String.format("BlockEntity threw exception at %s:%s,%s,%s", LevelChunk.this.getLevel().getWorld().getName(), this.getPos().getX(), this.getPos().getY(), this.getPos().getZ()); diff --git a/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java b/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java index 18bbb3f8f99849333ff4bc020c8ce758a69312a5..f890c27c960b6511b7961f380b23e9ca8f86ba0e 100644 --- a/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java diff --git a/patches/server/0018-Use-platform-math-functions.patch b/patches/server/0018-Use-platform-math-functions.patch index 1682f66..852fc9b 100644 --- a/patches/server/0018-Use-platform-math-functions.patch +++ b/patches/server/0018-Use-platform-math-functions.patch @@ -99,10 +99,10 @@ public class Main { ``` diff --git a/src/main/java/io/papermc/paper/util/MCUtil.java b/src/main/java/io/papermc/paper/util/MCUtil.java -index e5c2e53388ff61e4aeae22a74b525d9a26ea0200..15dddb035c7ae3aca9b5cd5a5f56e0407641d9dd 100644 +index 4f5badb9429b34ed999183321c98b60978715638..015a6463875b5ae46da0491b358adc568ac9a174 100644 --- a/src/main/java/io/papermc/paper/util/MCUtil.java +++ b/src/main/java/io/papermc/paper/util/MCUtil.java -@@ -168,13 +168,11 @@ public final class MCUtil { +@@ -152,13 +152,11 @@ public final class MCUtil { } public static int fastFloor(double x) { @@ -118,7 +118,7 @@ index e5c2e53388ff61e4aeae22a74b525d9a26ea0200..15dddb035c7ae3aca9b5cd5a5f56e040 } public static float normalizeYaw(float f) { -@@ -235,11 +233,11 @@ public final class MCUtil { +@@ -219,11 +217,11 @@ public final class MCUtil { } public static int getChunkCoordinate(final double coordinate) { @@ -133,7 +133,7 @@ index e5c2e53388ff61e4aeae22a74b525d9a26ea0200..15dddb035c7ae3aca9b5cd5a5f56e040 public static long getBlockKey(final int x, final int y, final int z) { diff --git a/src/main/java/net/minecraft/util/Mth.java b/src/main/java/net/minecraft/util/Mth.java -index 990ea96de8e940390b67e9462fcfd6025f2f5770..e102c109d01e0f992808a6096b5f6a323b52d970 100644 +index f298cdfcf1539e467f57f9f7789de3cf2ca54665..4150562f61fbb5962bf6c7d2727da43feed89036 100644 --- a/src/main/java/net/minecraft/util/Mth.java +++ b/src/main/java/net/minecraft/util/Mth.java @@ -58,13 +58,11 @@ public class Mth { diff --git a/patches/server/0020-Simpler-ShapelessRecipe-comparison-for-vanilla.patch b/patches/server/0020-Simpler-ShapelessRecipe-comparison-for-vanilla.patch index 65ba2ab..385f806 100644 --- a/patches/server/0020-Simpler-ShapelessRecipe-comparison-for-vanilla.patch +++ b/patches/server/0020-Simpler-ShapelessRecipe-comparison-for-vanilla.patch @@ -37,10 +37,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/item/crafting/ShapelessRecipe.java b/src/main/java/net/minecraft/world/item/crafting/ShapelessRecipe.java -index 3554109bcc4651ca93b6275c914e57e007e2204e..d7f11092148f2b4f1aa224906765ab1cbeb81a26 100644 +index 5740296b55827f11c0029e89a86eaab1a24f560c..23344dcb49e8bfd6338e1e9d204861b28ea1da11 100644 --- a/src/main/java/net/minecraft/world/item/crafting/ShapelessRecipe.java +++ b/src/main/java/net/minecraft/world/item/crafting/ShapelessRecipe.java -@@ -27,8 +27,15 @@ public class ShapelessRecipe extends io.papermc.paper.inventory.recipe.RecipeBoo +@@ -25,8 +25,15 @@ public class ShapelessRecipe extends io.papermc.paper.inventory.recipe.RecipeBoo final CraftingBookCategory category; final ItemStack result; final NonNullList ingredients; @@ -56,16 +56,17 @@ index 3554109bcc4651ca93b6275c914e57e007e2204e..d7f11092148f2b4f1aa224906765ab1c this.group = group; this.category = category; this.result = result; -@@ -78,6 +85,28 @@ public class ShapelessRecipe extends io.papermc.paper.inventory.recipe.RecipeBoo +@@ -76,6 +83,29 @@ public class ShapelessRecipe extends io.papermc.paper.inventory.recipe.RecipeBoo } - public boolean matches(CraftingContainer inventory, Level world) { + public boolean matches(CraftingInput input, Level world) { + // Gale start - Airplane - simpler ShapelessRecipe comparison for vanilla + if (!this.isBukkit) { + java.util.List ingredients = com.google.common.collect.Lists.newArrayList(this.ingredients.toArray(new Ingredient[0])); + -+ inventory: for (int index = 0; index < inventory.getContainerSize(); index++) { -+ ItemStack itemStack = inventory.getItem(index); ++ inventory: ++ for (int index = 0; index < input.size(); index++) { ++ ItemStack itemStack = input.getItem(index); + + if (!itemStack.isEmpty()) { + for (int i = 0; i < ingredients.size(); i++) { @@ -82,9 +83,9 @@ index 3554109bcc4651ca93b6275c914e57e007e2204e..d7f11092148f2b4f1aa224906765ab1c + } + // Gale end - Airplane - simpler ShapelessRecipe comparison for vanilla + - StackedContents autorecipestackmanager = new StackedContents(); - autorecipestackmanager.initialize(this); // Paper - better exact choice recipes - int i = 0; + // Paper start - unwrap ternary & better exact choice recipes + if (input.ingredientCount() != this.ingredients.size()) { + return false; diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftShapelessRecipe.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftShapelessRecipe.java index 96d772eb02f79f8c478f5e6f065e387aa7665b18..0d27792dcc3deb4cc7835512f4156b490223358d 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftShapelessRecipe.java diff --git a/patches/server/0021-Reduce-projectile-chunk-loading.patch b/patches/server/0021-Reduce-projectile-chunk-loading.patch index 5362794..0280215 100644 --- a/patches/server/0021-Reduce-projectile-chunk-loading.patch +++ b/patches/server/0021-Reduce-projectile-chunk-loading.patch @@ -31,10 +31,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -index 74c596264d4da551437bd2a23e1c70022cfc73fc..adb4cd2a926744182952d0702284f7c7b9e5d42c 100644 +index 5f7d152f41eb85f17bcded4bc8099b998e5a338b..e58c61b73e8a0a1701e6756408aafe81e52fb6f2 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -@@ -46,6 +46,45 @@ public abstract class Projectile extends Entity implements TraceableEntity { +@@ -52,6 +52,45 @@ public abstract class Projectile extends Entity implements TraceableEntity { super(type, world); } diff --git a/patches/server/0025-Reduce-enderman-teleport-chunk-lookups.patch b/patches/server/0024-Reduce-enderman-teleport-chunk-lookups.patch similarity index 94% rename from patches/server/0025-Reduce-enderman-teleport-chunk-lookups.patch rename to patches/server/0024-Reduce-enderman-teleport-chunk-lookups.patch index 134f661..d19e37f 100644 --- a/patches/server/0025-Reduce-enderman-teleport-chunk-lookups.patch +++ b/patches/server/0024-Reduce-enderman-teleport-chunk-lookups.patch @@ -31,10 +31,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index 260202fab3ac300552c557b44dcf251f083c6a78..15b544bd0794e021ed4a9fde94883bcb5c6a3521 100644 +index 828c51477cd8f35d591367b30bf4feef6a250292..7b05ef99702af0e8a7d2a652984c4f8c15eefed8 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -318,11 +318,17 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -320,11 +320,17 @@ public class EnderMan extends Monster implements NeutralMob { private boolean teleport(double x, double y, double z) { BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos(x, y, z); diff --git a/patches/server/0026-Reduce-acquire-POI-for-stuck-entities.patch b/patches/server/0025-Reduce-acquire-POI-for-stuck-entities.patch similarity index 98% rename from patches/server/0026-Reduce-acquire-POI-for-stuck-entities.patch rename to patches/server/0025-Reduce-acquire-POI-for-stuck-entities.patch index 24e340f..28c9de5 100644 --- a/patches/server/0026-Reduce-acquire-POI-for-stuck-entities.patch +++ b/patches/server/0025-Reduce-acquire-POI-for-stuck-entities.patch @@ -31,7 +31,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java b/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java -index e1b6fe9ecda25f86431baf414f1bfd3a26a8b2bd..b5242f2d450f863a3eb774d8a14bb00cbe699a16 100644 +index e8aa27547e3fa1a42720889c7038d4fb0273e7b5..f053ee19875e6c1586ffe4ebb0284172af5fbb23 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java @@ -13,6 +13,7 @@ import net.minecraft.core.BlockPos; diff --git a/patches/server/0027-Remove-iterators-from-Inventory-contains.patch b/patches/server/0026-Remove-iterators-from-Inventory-contains.patch similarity index 94% rename from patches/server/0027-Remove-iterators-from-Inventory-contains.patch rename to patches/server/0026-Remove-iterators-from-Inventory-contains.patch index 1d9ec78..fb4df48 100644 --- a/patches/server/0027-Remove-iterators-from-Inventory-contains.patch +++ b/patches/server/0026-Remove-iterators-from-Inventory-contains.patch @@ -31,7 +31,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/entity/player/Inventory.java b/src/main/java/net/minecraft/world/entity/player/Inventory.java -index ca7fbe4f8c1e1d2fb90095aa35be4dda3029c23e..4ef55f51f98a4b5c164b40728efd82052c5bf762 100644 +index 6e66141dca61f777b354854b5d0bac2570b8bf3b..06104744bb778a922adaaee2d91252cd37080f8f 100644 --- a/src/main/java/net/minecraft/world/entity/player/Inventory.java +++ b/src/main/java/net/minecraft/world/entity/player/Inventory.java @@ -643,6 +643,8 @@ public class Inventory implements Container, Nameable { @@ -89,10 +89,10 @@ index ca7fbe4f8c1e1d2fb90095aa35be4dda3029c23e..4ef55f51f98a4b5c164b40728efd8205 public void replaceWith(Inventory other) { for (int i = 0; i < this.getContainerSize(); ++i) { diff --git a/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java b/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java -index cf8ae635fce7ea66d4e1ab1dc05575f035fa95ef..973f1d2c1db383eed5fccb7ccbad8f9a6b81d824 100644 +index 17f33c83c6033564d6bf4fbd388b0b847c68adb3..73e546cc828850365dae0131bf8d997f58473823 100644 --- a/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java +++ b/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java -@@ -294,7 +294,7 @@ public class MapItemSavedData extends SavedData { +@@ -295,7 +295,7 @@ public class MapItemSavedData extends SavedData { Predicate predicate = MapItemSavedData.mapMatcher(stack); @@ -101,7 +101,7 @@ index cf8ae635fce7ea66d4e1ab1dc05575f035fa95ef..973f1d2c1db383eed5fccb7ccbad8f9a this.removeDecoration(player.getName().getString()); } -@@ -302,7 +302,7 @@ public class MapItemSavedData extends SavedData { +@@ -303,7 +303,7 @@ public class MapItemSavedData extends SavedData { MapItemSavedData.HoldingPlayer worldmap_worldmaphumantracker1 = (MapItemSavedData.HoldingPlayer) this.carriedBy.get(i); String s = worldmap_worldmaphumantracker1.player.getName().getString(); diff --git a/patches/server/0028-Check-targeting-range-before-getting-visibility.patch b/patches/server/0027-Check-targeting-range-before-getting-visibility.patch similarity index 96% rename from patches/server/0028-Check-targeting-range-before-getting-visibility.patch rename to patches/server/0027-Check-targeting-range-before-getting-visibility.patch index 09d6b94..e9f9fb1 100644 --- a/patches/server/0028-Check-targeting-range-before-getting-visibility.patch +++ b/patches/server/0027-Check-targeting-range-before-getting-visibility.patch @@ -31,7 +31,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java -index d2f0c3b26d4beedb49d86e0242d843590d469d02..68bc8699a9389d118411ea7134ea0e0588adf8dc 100644 +index aecb0ad814586bfc5e56755ee14379a69388b38c..4addcfe248dd4705be7e67551b258ce86c57e194 100644 --- a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java +++ b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java @@ -76,9 +76,18 @@ public class TargetingConditions { diff --git a/patches/server/0029-Print-stack-trace-for-plugins-not-shutting-down-task.patch b/patches/server/0028-Print-stack-trace-for-plugins-not-shutting-down-task.patch similarity index 93% rename from patches/server/0029-Print-stack-trace-for-plugins-not-shutting-down-task.patch rename to patches/server/0028-Print-stack-trace-for-plugins-not-shutting-down-task.patch index 3072c22..e4d7fcb 100644 --- a/patches/server/0029-Print-stack-trace-for-plugins-not-shutting-down-task.patch +++ b/patches/server/0028-Print-stack-trace-for-plugins-not-shutting-down-task.patch @@ -31,10 +31,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index e4ab54277f7f21c41c07ce9b149431d96d794cd8..d1757b96dc4d27605ed1d0819c4b6246152ae1da 100644 +index eb4c9014afe2b59e991a2812c55eaa226925272c..e466142e52fe29505384bf5371a54b0976ebd7fe 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1148,6 +1148,13 @@ public final class CraftServer implements Server { +@@ -1151,6 +1151,13 @@ public final class CraftServer implements Server { plugin.getPluginMeta().getDisplayName(), "This plugin is not properly shutting down its async tasks when it is being shut down. This task may throw errors during the final shutdown logs and might not complete before process dies." )); diff --git a/patches/server/0030-Improve-fluid-direction-caching.patch b/patches/server/0029-Improve-fluid-direction-caching.patch similarity index 95% rename from patches/server/0030-Improve-fluid-direction-caching.patch rename to patches/server/0029-Improve-fluid-direction-caching.patch index 70daccc..65f0f6a 100644 --- a/patches/server/0030-Improve-fluid-direction-caching.patch +++ b/patches/server/0029-Improve-fluid-direction-caching.patch @@ -186,7 +186,7 @@ index 0000000000000000000000000000000000000000..bf6a36c933b686f0e34591dff3d43b37 + } +} diff --git a/src/main/java/net/minecraft/world/level/material/FlowingFluid.java b/src/main/java/net/minecraft/world/level/material/FlowingFluid.java -index 6d8ff6c06af5545634f255ed17dc1e489ece2548..05273fa3b59d67858abffcb1ff18a6ff5885c316 100644 +index 1c0712295695727ee9c4d430d4157b8e17cbd71f..0eac7bc0c56ac17c900737271a965cfc1ccd03d2 100644 --- a/src/main/java/net/minecraft/world/level/material/FlowingFluid.java +++ b/src/main/java/net/minecraft/world/level/material/FlowingFluid.java @@ -45,6 +45,8 @@ public abstract class FlowingFluid extends Fluid { @@ -213,16 +213,16 @@ index 6d8ff6c06af5545634f255ed17dc1e489ece2548..05273fa3b59d67858abffcb1ff18a6ff private final Map shapes = Maps.newIdentityHashMap(); public FlowingFluid() {} -@@ -251,6 +261,8 @@ public abstract class FlowingFluid extends Fluid { - return false; - } - // Paper end - optimise collisions +@@ -240,6 +250,8 @@ public abstract class FlowingFluid extends Fluid { + } + + private boolean canPassThroughWall(Direction face, BlockGetter world, BlockPos pos, BlockState state, BlockPos fromPos, BlockState fromState) { + // Gale start - Airplane - improve fluid direction caching - modify to use our cache + /* Object2ByteLinkedOpenHashMap object2bytelinkedopenhashmap; if (!state.getBlock().hasDynamicShape() && !fromState.getBlock().hasDynamicShape()) { -@@ -258,9 +270,16 @@ public abstract class FlowingFluid extends Fluid { +@@ -247,9 +259,16 @@ public abstract class FlowingFluid extends Fluid { } else { object2bytelinkedopenhashmap = null; } @@ -239,7 +239,7 @@ index 6d8ff6c06af5545634f255ed17dc1e489ece2548..05273fa3b59d67858abffcb1ff18a6ff if (object2bytelinkedopenhashmap != null) { block_a = new Block.BlockStatePairKey(state, fromState, face); byte b0 = object2bytelinkedopenhashmap.getAndMoveToFirst(block_a); -@@ -271,11 +290,22 @@ public abstract class FlowingFluid extends Fluid { +@@ -260,11 +279,22 @@ public abstract class FlowingFluid extends Fluid { } else { block_a = null; } @@ -262,7 +262,7 @@ index 6d8ff6c06af5545634f255ed17dc1e489ece2548..05273fa3b59d67858abffcb1ff18a6ff if (object2bytelinkedopenhashmap != null) { if (object2bytelinkedopenhashmap.size() == 200) { object2bytelinkedopenhashmap.removeLastByte(); -@@ -283,6 +313,11 @@ public abstract class FlowingFluid extends Fluid { +@@ -272,6 +302,11 @@ public abstract class FlowingFluid extends Fluid { object2bytelinkedopenhashmap.putAndMoveToFirst(block_a, (byte) (flag ? 1 : 0)); } diff --git a/patches/server/0031-Cache-on-climbable-check.patch b/patches/server/0030-Cache-on-climbable-check.patch similarity index 90% rename from patches/server/0031-Cache-on-climbable-check.patch rename to patches/server/0030-Cache-on-climbable-check.patch index 64e5788..f547f01 100644 --- a/patches/server/0031-Cache-on-climbable-check.patch +++ b/patches/server/0030-Cache-on-climbable-check.patch @@ -31,10 +31,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index d67a149de34619ac9945ba7fdbd4c7c8f33c8817..6c7a94fc951f6168c4a2907cc4d50b09c2913ab1 100644 +index 5021c4618c8302e103fb2595a8d3df26f7479140..8676206457ec59bf711d3f4a2836ff47fea23bb6 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -150,7 +150,6 @@ import org.bukkit.event.entity.EntityTeleportEvent; +@@ -157,7 +157,6 @@ import org.bukkit.event.entity.EntityTeleportEvent; import org.bukkit.event.player.PlayerItemConsumeEvent; // CraftBukkit end @@ -42,7 +42,7 @@ index d67a149de34619ac9945ba7fdbd4c7c8f33c8817..6c7a94fc951f6168c4a2907cc4d50b09 public abstract class LivingEntity extends Entity implements Attackable { -@@ -2032,6 +2031,20 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2026,6 +2025,20 @@ public abstract class LivingEntity extends Entity implements Attackable { return this.lastClimbablePos; } @@ -64,7 +64,7 @@ index d67a149de34619ac9945ba7fdbd4c7c8f33c8817..6c7a94fc951f6168c4a2907cc4d50b09 if (this.isSpectator()) { return false; diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index 3283ed99c35ffed6805567705e0518d9f84feedc..6bd07ab4bd46bc6ffd4b20132e05fccb1adf1329 100644 +index bf2d18f74b0f0da7c3c30310c74224a1c0853564..f83c2b35cc279666686be3af558473b5d93bf7cd 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -298,7 +298,7 @@ public class ActivationRange diff --git a/patches/server/0032-Make-EntityCollisionContext-a-live-representation.patch b/patches/server/0031-Make-EntityCollisionContext-a-live-representation.patch similarity index 100% rename from patches/server/0032-Make-EntityCollisionContext-a-live-representation.patch rename to patches/server/0031-Make-EntityCollisionContext-a-live-representation.patch diff --git a/patches/server/0035-Use-aging-cache-for-biome-temperatures.patch b/patches/server/0032-Use-aging-cache-for-biome-temperatures.patch similarity index 98% rename from patches/server/0035-Use-aging-cache-for-biome-temperatures.patch rename to patches/server/0032-Use-aging-cache-for-biome-temperatures.patch index 256134c..33ee4a9 100644 --- a/patches/server/0035-Use-aging-cache-for-biome-temperatures.patch +++ b/patches/server/0032-Use-aging-cache-for-biome-temperatures.patch @@ -158,7 +158,7 @@ index 0000000000000000000000000000000000000000..f3835d6934f4d82980eb068c0b8c238f + } +} diff --git a/src/main/java/net/minecraft/world/level/biome/Biome.java b/src/main/java/net/minecraft/world/level/biome/Biome.java -index 64076a452a315090d299a7a58a43fd3b5c1b4e0a..455a037174d66fd2fa1a136207ff7495486fd918 100644 +index 15f82c9a1ce1fef2e951d1b3c7a65e64b82061ea..115a9adac2131dd875d4bf1b6bc998125a96008d 100644 --- a/src/main/java/net/minecraft/world/level/biome/Biome.java +++ b/src/main/java/net/minecraft/world/level/biome/Biome.java @@ -63,13 +63,18 @@ public final class Biome { diff --git a/patches/server/0034-Better-checking-for-useless-move-packets.patch b/patches/server/0033-Better-checking-for-useless-move-packets.patch similarity index 50% rename from patches/server/0034-Better-checking-for-useless-move-packets.patch rename to patches/server/0033-Better-checking-for-useless-move-packets.patch index eefed3d..7a1f9d9 100644 --- a/patches/server/0034-Better-checking-for-useless-move-packets.patch +++ b/patches/server/0033-Better-checking-for-useless-move-packets.patch @@ -31,22 +31,22 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java -index f16a69775332a08ed0e87d27acd0fc959359694c..4a5dc0c552bbd48cb79e29016ea455882cf13744 100644 +index 1d849ce4e2c85f149af25318b8ffb6dcef6c6788..ac5bdd0584cd48d95c97dfa791eee9f447082cea 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java -@@ -191,6 +191,7 @@ public class ServerEntity { - boolean flag6 = k < -32768L || k > 32767L || l < -32768L || l > 32767L || i1 < -32768L || i1 > 32767L; +@@ -181,6 +181,7 @@ public class ServerEntity { + boolean flag6 = k < -32768L || k > 32767L || l < -32768L || l > 32767L || i1 < -32768L || i1 > 32767L; - if (!this.forceStateResync && !flag6 && this.teleportDelay <= 400 && !this.wasRiding && this.wasOnGround == this.entity.onGround()&& !(io.papermc.paper.configuration.GlobalConfiguration.get().collisions.sendFullPosForHardCollidingEntities && this.entity.hardCollides())) { // Paper - send full pos for hard colliding entities to prevent collision problems due to desync -+ if (flag2 || flag3 || this.entity instanceof AbstractArrow) { // Gale - Airplane - better checking for useless move packets - if ((!flag2 || !flag3) && !(this.entity instanceof AbstractArrow)) { - if (flag2) { - packet1 = new ClientboundMoveEntityPacket.Pos(this.entity.getId(), (short) ((int) k), (short) ((int) l), (short) ((int) i1), this.entity.onGround()); -@@ -204,6 +205,7 @@ public class ServerEntity { - flag4 = true; - flag5 = true; - } -+ } // Gale - Airplane - better checking for useless move packets - } else { - this.wasOnGround = this.entity.onGround(); - this.teleportDelay = 0; + if (!flag6 && this.teleportDelay <= 400 && !this.wasRiding && this.wasOnGround == this.entity.onGround()) { ++ if (flag2 || flag3 || this.entity instanceof AbstractArrow) { // Gale - Airplane - better checking for useless move packets + if ((!flag2 || !flag3) && !(this.entity instanceof AbstractArrow)) { + if (flag2) { + packet1 = new ClientboundMoveEntityPacket.Pos(this.entity.getId(), (short) ((int) k), (short) ((int) l), (short) ((int) i1), this.entity.onGround()); +@@ -194,6 +195,7 @@ public class ServerEntity { + flag4 = true; + flag5 = true; + } ++ } // Gale - Airplane - better checking for useless move packets + } else { + this.wasOnGround = this.entity.onGround(); + this.teleportDelay = 0; diff --git a/patches/server/0036-Inline-level-height.patch b/patches/server/0034-Inline-level-height.patch similarity index 89% rename from patches/server/0036-Inline-level-height.patch rename to patches/server/0034-Inline-level-height.patch index 21feb9c..9309ca3 100644 --- a/patches/server/0036-Inline-level-height.patch +++ b/patches/server/0034-Inline-level-height.patch @@ -31,12 +31,12 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 42750bdde718f9047f008afbb12c0836e9c3d089..e5c640b4353d2fb09ebb2e7d498f704cc9a6acfa 100644 +index d7a638680fa349caba43f07ab9e6e4fa7303fb48..13b38b21d0425527e1a83e655e6be4bd6c5c2a02 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -210,6 +210,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - - public abstract ResourceKey getTypeKey(); +@@ -259,6 +259,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl + } + // Paper end - rewrite chunk system + // Gale start - Airplane - inline level height + private final int minBuildHeight, levelHeightAccessorMinSection, height, maxBuildHeight, levelHeightAccessorMaxSection; @@ -47,10 +47,10 @@ index 42750bdde718f9047f008afbb12c0836e9c3d089..e5c640b4353d2fb09ebb2e7d498f704c + @Override public final int getHeight() { return this.height; } + // Gale end - Airplane - inline level height + - protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.function.Function galeWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - create paper world config; Async-Anti-Xray: Pass executor // Gale - Gale configuration // Gale - Purpur - remove vanilla profiler + protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.function.Function galeWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - create paper world config & Anti-Xray // Gale - Gale configuration // Gale - Purpur - remove vanilla profiler this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config -@@ -229,6 +238,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -278,6 +287,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl this.dimensionTypeRegistration = holder; final DimensionType dimensionmanager = (DimensionType) holder.value(); diff --git a/patches/server/0038-Remove-streams-and-iterators-from-range-check.patch b/patches/server/0036-Remove-streams-and-iterators-from-range-check.patch similarity index 93% rename from patches/server/0038-Remove-streams-and-iterators-from-range-check.patch rename to patches/server/0036-Remove-streams-and-iterators-from-range-check.patch index d18d2fe..907afe0 100644 --- a/patches/server/0038-Remove-streams-and-iterators-from-range-check.patch +++ b/patches/server/0036-Remove-streams-and-iterators-from-range-check.patch @@ -31,10 +31,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 278c90341e1a3c47a584c6520ef8c108f7014c7a..8249ddaef0ad20ac5c3482159be24066230e6563 100644 +index a7142d9c7a1b739ada45f4d393fb970b1e21214f..aa6927ad7ea10b64693a069202366a051183e878 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -1456,8 +1456,30 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1221,8 +1221,30 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider return ChunkMap.this.level.getServer().getScaledTrackingDistance(initialDistance); } @@ -65,7 +65,7 @@ index 278c90341e1a3c47a584c6520ef8c108f7014c7a..8249ddaef0ad20ac5c3482159be24066 Iterator iterator = this.entity.getIndirectPassengers().iterator(); while (iterator.hasNext()) { -@@ -1469,6 +1491,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1234,6 +1256,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider i = j; } } diff --git a/patches/server/0039-Block-goal-does-not-load-chunks.patch b/patches/server/0037-Block-goal-does-not-load-chunks.patch similarity index 100% rename from patches/server/0039-Block-goal-does-not-load-chunks.patch rename to patches/server/0037-Block-goal-does-not-load-chunks.patch diff --git a/patches/server/0040-Reduce-entity-allocations.patch b/patches/server/0038-Reduce-entity-allocations.patch similarity index 80% rename from patches/server/0040-Reduce-entity-allocations.patch rename to patches/server/0038-Reduce-entity-allocations.patch index 394faf3..c36934c 100644 --- a/patches/server/0040-Reduce-entity-allocations.patch +++ b/patches/server/0038-Reduce-entity-allocations.patch @@ -31,24 +31,24 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 7ff046e6e1e8f532ab7347beaeac898c57157cc2..2e784ad7c5e38ce74f3bcf0f20718422e3335c98 100644 +index bf69dd0f673e86fb2de6251bedcf36e4577933d9..12a23899497ee4a9666cfbee1bc2e535812512d4 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -503,6 +503,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - return chunkMap.playerEntityTrackerTrackMaps[type.ordinal()].getObjectsInRange(MCUtil.getCoordinateKey(this)); +@@ -445,6 +445,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess + return this.originWorld; } - // Paper end - optimise entity tracking + // Paper end - Entity origin API + public float getBukkitYaw() { return this.yRot; } diff --git a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java -index 9ef8f014af332da129bfcd3370da983ec035ecc6..665fbe3362dcd9de4bd290b71a1b1f2fed218eeb 100644 +index 69992ebc999ea3ff9e47e4e049bcc514c01150ca..f9f6745d45aaba4a7106f80d403dcf9ae40e1d6c 100644 --- a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java +++ b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java -@@ -22,9 +22,11 @@ public class AttributeMap { - private final Map, AttributeInstance> attributes = new Object2ObjectOpenHashMap<>(); - private final Set dirtyAttributes = new ObjectOpenHashSet<>(); +@@ -23,9 +23,11 @@ public class AttributeMap { + private final Set attributesToSync = new ObjectOpenHashSet<>(); + private final Set attributesToUpdate = new ObjectOpenHashSet<>(); private final AttributeSupplier supplier; + private final java.util.function.Function, AttributeInstance> createInstance; // Gale - Airplane - reduce entity allocations @@ -58,7 +58,7 @@ index 9ef8f014af332da129bfcd3370da983ec035ecc6..665fbe3362dcd9de4bd290b71a1b1f2f } private void onAttributeModified(AttributeInstance instance) { -@@ -43,7 +45,7 @@ public class AttributeMap { +@@ -49,7 +51,7 @@ public class AttributeMap { @Nullable public AttributeInstance getInstance(Holder attribute) { diff --git a/patches/server/0042-Reduce-entity-fluid-lookups-if-no-fluids.patch b/patches/server/0040-Reduce-entity-fluid-lookups-if-no-fluids.patch similarity index 83% rename from patches/server/0042-Reduce-entity-fluid-lookups-if-no-fluids.patch rename to patches/server/0040-Reduce-entity-fluid-lookups-if-no-fluids.patch index 6c34d51..eb65ad8 100644 --- a/patches/server/0042-Reduce-entity-fluid-lookups-if-no-fluids.patch +++ b/patches/server/0040-Reduce-entity-fluid-lookups-if-no-fluids.patch @@ -31,10 +31,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 2e784ad7c5e38ce74f3bcf0f20718422e3335c98..899cf208b8059600b364ae0d64b2a041620c3da3 100644 +index 12a23899497ee4a9666cfbee1bc2e535812512d4..795f7ac6479648fbfc34a3eb2ff954202f27789e 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4467,16 +4467,18 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4255,16 +4255,18 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public boolean updateFluidHeightAndDoFluidPushing(TagKey tag, double speed) { @@ -60,7 +60,7 @@ index 2e784ad7c5e38ce74f3bcf0f20718422e3335c98..899cf208b8059600b364ae0d64b2a041 double d1 = 0.0D; boolean flag = this.isPushedByFluid(); boolean flag1 = false; -@@ -4484,14 +4486,61 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4272,14 +4274,61 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess int k1 = 0; BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos(); @@ -128,7 +128,7 @@ index 2e784ad7c5e38ce74f3bcf0f20718422e3335c98..899cf208b8059600b364ae0d64b2a041 if (d2 >= axisalignedbb.minY) { flag1 = true; -@@ -4513,9 +4562,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4301,9 +4350,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess // CraftBukkit end } } @@ -142,7 +142,7 @@ index 2e784ad7c5e38ce74f3bcf0f20718422e3335c98..899cf208b8059600b364ae0d64b2a041 if (vec3d.length() > 0.0D) { if (k1 > 0) { diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java -index a2a5aef769ee8bb638a5a9f3da9812fa4a85dda5..121459fdb47904d448f86362f535765c713a4b67 100644 +index f2e11bff414b521295bde721e01ae2166a6a3fd6..440a35f0b987187895a7f74efc4f1989e1bee907 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java @@ -25,6 +25,7 @@ public class LevelChunkSection { @@ -150,10 +150,10 @@ index a2a5aef769ee8bb638a5a9f3da9812fa4a85dda5..121459fdb47904d448f86362f535765c // CraftBukkit start - read/write private PalettedContainer> biomes; + public short fluidStateCount; // Gale - Airplane - reduce entity fluid lookups if no fluids - public final com.destroystokyo.paper.util.maplist.IBlockDataList tickingList = new com.destroystokyo.paper.util.maplist.IBlockDataList(); // Paper - // Paper start - optimise collisions - private int specialCollidingBlocks; -@@ -102,6 +103,7 @@ public class LevelChunkSection { + + public LevelChunkSection(PalettedContainer datapaletteblock, PalettedContainer> palettedcontainerro) { + // CraftBukkit end +@@ -82,6 +83,7 @@ public class LevelChunkSection { if (!fluid.isEmpty()) { --this.tickingFluidCount; @@ -161,19 +161,35 @@ index a2a5aef769ee8bb638a5a9f3da9812fa4a85dda5..121459fdb47904d448f86362f535765c } if (!state.isAir()) { -@@ -116,6 +118,7 @@ public class LevelChunkSection { +@@ -93,6 +95,7 @@ public class LevelChunkSection { if (!fluid1.isEmpty()) { ++this.tickingFluidCount; + ++this.fluidStateCount; // Gale - Airplane - reduce entity fluid lookups if no fluids } - this.updateBlockCallback(x, y, z, iblockdata1, state); // Paper - optimise collisions -@@ -162,6 +165,7 @@ public class LevelChunkSection { + return iblockdata1; +@@ -120,6 +123,7 @@ public class LevelChunkSection { + public int nonEmptyBlockCount; + public int tickingBlockCount; + public int tickingFluidCount; ++ public int fluidStateCount; // Gale - Airplane - reduce entity fluid lookups if no fluids + + a(final LevelChunkSection chunksection) {} + +@@ -138,6 +142,7 @@ public class LevelChunkSection { if (fluid.isRandomlyTicking()) { - this.tickingFluidCount = (short) (this.tickingFluidCount + 1); + this.tickingFluidCount += i; } -+ this.fluidStateCount++; // Gale - Airplane - reduce entity fluid lookups if no fluids ++ this.fluidStateCount++; // Gale - Airplane - reduce entity fluid lookups if no fluids } - // Paper start - optimise collisions + } +@@ -149,6 +154,7 @@ public class LevelChunkSection { + this.nonEmptyBlockCount = (short) a0.nonEmptyBlockCount; + this.tickingBlockCount = (short) a0.tickingBlockCount; + this.tickingFluidCount = (short) a0.tickingFluidCount; ++ this.fluidStateCount = (short) a0.fluidStateCount; // Gale - Airplane - reduce entity fluid lookups if no fluids + } + + public PalettedContainer getStates() { diff --git a/patches/server/0043-SIMD-support.patch b/patches/server/0041-SIMD-support.patch similarity index 93% rename from patches/server/0043-SIMD-support.patch rename to patches/server/0041-SIMD-support.patch index 0de736b..5103368 100644 --- a/patches/server/0043-SIMD-support.patch +++ b/patches/server/0041-SIMD-support.patch @@ -13,7 +13,7 @@ As part of: Pufferfish (https://github.com/pufferfish-gg/Pufferfish) Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) diff --git a/build.gradle.kts b/build.gradle.kts -index 335cc8638d307fcd0dad44c431ec7f9d5376fc09..e2cc87a762c88a6360c265e66ed3bb0592eab2e3 100644 +index 8f97350aac2f19a0d19e35630261dacc7b46ce52..13d1908b378e5311d8bb7f9317b4b1c2d82ea042 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -73,6 +73,7 @@ tasks.withType { @@ -33,10 +33,10 @@ index 335cc8638d307fcd0dad44c431ec7f9d5376fc09..e2cc87a762c88a6360c265e66ed3bb05 doFirst { workingDir.mkdirs() diff --git a/src/main/java/com/destroystokyo/paper/Metrics.java b/src/main/java/com/destroystokyo/paper/Metrics.java -index 2acad4c3fd58178b0f8b22bdb04eeeeb689d5afa..850ccd53c5007e8b18344ba76c9e7f0003decaff 100644 +index 16ecdf3c56809100032ca627a1769e4e8c452f08..f921771c0aeba72f3f208703dbf300e8748ded17 100644 --- a/src/main/java/com/destroystokyo/paper/Metrics.java +++ b/src/main/java/com/destroystokyo/paper/Metrics.java -@@ -933,6 +933,46 @@ public class Metrics { +@@ -928,6 +928,46 @@ public class Metrics { metrics.addCustomChart(new Metrics.DrilldownPie("gale_semantic_version", () -> semanticVersionMap)); // Gale end - semantic version - include in metrics @@ -84,10 +84,10 @@ index 2acad4c3fd58178b0f8b22bdb04eeeeb689d5afa..850ccd53c5007e8b18344ba76c9e7f00 } diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index e83db964c4016ed9252a76ff452eb5807a1d33cd..5bdcc501c8742b0e3e3c382c0ea5221c2b0d4982 100644 +index d42d6237831d500d0686b58abc4750896a1985c8..4fbdd8b1ead384762164c2d13180bfa230c40262 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -@@ -14,6 +14,8 @@ import java.util.Locale; +@@ -20,6 +20,8 @@ import java.util.Locale; import java.util.Optional; import java.util.function.BooleanSupplier; import javax.annotation.Nullable; @@ -96,7 +96,7 @@ index e83db964c4016ed9252a76ff452eb5807a1d33cd..5bdcc501c8742b0e3e3c382c0ea5221c import net.minecraft.DefaultUncaughtExceptionHandler; import net.minecraft.DefaultUncaughtExceptionHandlerWithName; import net.minecraft.SharedConstants; -@@ -51,6 +53,7 @@ import net.minecraft.world.level.GameType; +@@ -58,6 +60,7 @@ import net.minecraft.world.level.GameType; import net.minecraft.world.level.block.entity.SkullBlockEntity; import net.minecraft.world.level.storage.LevelStorageSource; import org.galemc.gale.command.GaleCommands; @@ -104,7 +104,7 @@ index e83db964c4016ed9252a76ff452eb5807a1d33cd..5bdcc501c8742b0e3e3c382c0ea5221c import org.slf4j.Logger; // CraftBukkit start -@@ -235,6 +238,13 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -244,6 +247,13 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); // Paper - start metrics com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // Paper - load version history now diff --git a/patches/server/0044-Make-book-writing-configurable.patch b/patches/server/0042-Make-book-writing-configurable.patch similarity index 96% rename from patches/server/0044-Make-book-writing-configurable.patch rename to patches/server/0042-Make-book-writing-configurable.patch index 75ae16b..3fa2894 100644 --- a/patches/server/0044-Make-book-writing-configurable.patch +++ b/patches/server/0042-Make-book-writing-configurable.patch @@ -22,7 +22,7 @@ you to easily disable books, should you want to preemptively remove this functionality before additional exploits are found. diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 8e67853a7a93fa736c147e8b2df537746dc8e94f..cb3b10cc96c15a4894b3239110ee60f4aa130e05 100644 +index be2e97e4de911ad9570a9b4e9f3c5fafa93f6203..7ed1a93a7ecf993d2ee3825affa61be1d661dfc7 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -193,6 +193,8 @@ import net.minecraft.world.phys.Vec3; @@ -34,7 +34,7 @@ index 8e67853a7a93fa736c147e8b2df537746dc8e94f..cb3b10cc96c15a4894b3239110ee60f4 import org.slf4j.Logger; // CraftBukkit start -@@ -1154,6 +1156,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1123,6 +1125,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @Override public void handleEditBook(ServerboundEditBookPacket packet) { diff --git a/patches/server/0045-Optimize-entity-coordinate-key.patch b/patches/server/0043-Optimize-entity-coordinate-key.patch similarity index 88% rename from patches/server/0045-Optimize-entity-coordinate-key.patch rename to patches/server/0043-Optimize-entity-coordinate-key.patch index 2d47d7a..26301b4 100644 --- a/patches/server/0045-Optimize-entity-coordinate-key.patch +++ b/patches/server/0043-Optimize-entity-coordinate-key.patch @@ -22,10 +22,10 @@ data is already available in the blockPosition struct, so we use that instead of re-doing the casting. diff --git a/src/main/java/io/papermc/paper/util/MCUtil.java b/src/main/java/io/papermc/paper/util/MCUtil.java -index d2ce6f2e78b3a8297a2a0b9752ed8140158e33f7..7287772498685c7ed4ffaeafb3e09aadafde5272 100644 +index 015a6463875b5ae46da0491b358adc568ac9a174..2429e743f8fcaa684dcdc0bd5774d82f0ea7f760 100644 --- a/src/main/java/io/papermc/paper/util/MCUtil.java +++ b/src/main/java/io/papermc/paper/util/MCUtil.java -@@ -213,7 +213,7 @@ public final class MCUtil { +@@ -197,7 +197,7 @@ public final class MCUtil { } public static long getCoordinateKey(final Entity entity) { @@ -35,10 +35,10 @@ index d2ce6f2e78b3a8297a2a0b9752ed8140158e33f7..7287772498685c7ed4ffaeafb3e09aad public static long getCoordinateKey(final ChunkPos pair) { diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 899cf208b8059600b364ae0d64b2a041620c3da3..ec36674769993816b22886d90a2f73e3e548917c 100644 +index 795f7ac6479648fbfc34a3eb2ff954202f27789e..9a8bcf6c11f885a711dff08dfa8f87d9f3deef54 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -311,7 +311,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -315,7 +315,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public double yo; public double zo; private Vec3 position; diff --git a/patches/server/0046-Reduce-in-wall-checks.patch b/patches/server/0044-Reduce-in-wall-checks.patch similarity index 94% rename from patches/server/0046-Reduce-in-wall-checks.patch rename to patches/server/0044-Reduce-in-wall-checks.patch index c2ea798..3f04944 100644 --- a/patches/server/0046-Reduce-in-wall-checks.patch +++ b/patches/server/0044-Reduce-in-wall-checks.patch @@ -28,10 +28,10 @@ but is so much cheaper than the suffocation check that it's worth keeping it. diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 05f9d4c9603247802b279976d56b25cd0cf83d3a..b095a5b4c2390bc3e52f8bb559c621ecb42db2c6 100644 +index 8676206457ec59bf711d3f4a2836ff47fea23bb6..6c0772f4bb5060d5c9649918257838594a582e65 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -425,7 +425,10 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -447,7 +447,10 @@ public abstract class LivingEntity extends Entity implements Attackable { boolean flag = this instanceof net.minecraft.world.entity.player.Player; if (!this.level().isClientSide) { @@ -43,7 +43,7 @@ index 05f9d4c9603247802b279976d56b25cd0cf83d3a..b095a5b4c2390bc3e52f8bb559c621ec this.hurt(this.damageSources().inWall(), 1.0F); } else if (flag && !this.level().getWorldBorder().isWithinBounds(this.getBoundingBox())) { double d0 = this.level().getWorldBorder().getDistanceToBorder(this) + this.level().getWorldBorder().getDamageSafeZone(); -@@ -1428,6 +1431,15 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1405,6 +1408,15 @@ public abstract class LivingEntity extends Entity implements Attackable { return this.getHealth() <= 0.0F; } diff --git a/patches/server/0047-Make-chat-order-verification-configurable.patch b/patches/server/0045-Make-chat-order-verification-configurable.patch similarity index 100% rename from patches/server/0047-Make-chat-order-verification-configurable.patch rename to patches/server/0045-Make-chat-order-verification-configurable.patch diff --git a/patches/server/0048-Make-ender-dragon-respawn-attempt-after-placing-end-.patch b/patches/server/0046-Make-ender-dragon-respawn-attempt-after-placing-end-.patch similarity index 100% rename from patches/server/0048-Make-ender-dragon-respawn-attempt-after-placing-end-.patch rename to patches/server/0046-Make-ender-dragon-respawn-attempt-after-placing-end-.patch diff --git a/patches/server/0049-Make-saving-fireworks-configurable.patch b/patches/server/0047-Make-saving-fireworks-configurable.patch similarity index 89% rename from patches/server/0049-Make-saving-fireworks-configurable.patch rename to patches/server/0047-Make-saving-fireworks-configurable.patch index 8ea7d70..a98e556 100644 --- a/patches/server/0049-Make-saving-fireworks-configurable.patch +++ b/patches/server/0047-Make-saving-fireworks-configurable.patch @@ -20,12 +20,12 @@ launcher can very easily fill a chunk. Prevent saving Fireworks so that chunk unloads will wipe a chunks fireworks in this case. diff --git a/src/main/java/net/minecraft/world/entity/projectile/FireworkRocketEntity.java b/src/main/java/net/minecraft/world/entity/projectile/FireworkRocketEntity.java -index 6671796d292fbc922a94271136f5a7a4bbdedaca..fe06ee24836f4f10e77a36c34c314464203e19d1 100644 +index 09d465947a5720e05c350d455c86002682104079..6c5f67138af166b87e588664b22198cbf3285c73 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/FireworkRocketEntity.java +++ b/src/main/java/net/minecraft/world/entity/projectile/FireworkRocketEntity.java -@@ -348,4 +348,11 @@ public class FireworkRocketEntity extends Projectile implements ItemSupplier { - public static ItemStack getDefaultItem() { - return new ItemStack(Items.FIREWORK_ROCKET); +@@ -358,4 +358,11 @@ public class FireworkRocketEntity extends Projectile implements ItemSupplier { + + return DoubleDoubleImmutablePair.of(d0, d1); } + + // Gale start - EMC - make saving fireworks configurable diff --git a/patches/server/0050-Don-t-trigger-lootable-refresh-for-non-player-intera.patch b/patches/server/0048-Don-t-trigger-lootable-refresh-for-non-player-intera.patch similarity index 92% rename from patches/server/0050-Don-t-trigger-lootable-refresh-for-non-player-intera.patch rename to patches/server/0048-Don-t-trigger-lootable-refresh-for-non-player-intera.patch index 9b47843..5992b49 100644 --- a/patches/server/0050-Don-t-trigger-lootable-refresh-for-non-player-intera.patch +++ b/patches/server/0048-Don-t-trigger-lootable-refresh-for-non-player-intera.patch @@ -13,7 +13,7 @@ As part of: EmpireCraft (https://github.com/starlis/empirecraft) Licensed under: MIT (https://opensource.org/licenses/MIT) diff --git a/src/main/java/net/minecraft/world/RandomizableContainer.java b/src/main/java/net/minecraft/world/RandomizableContainer.java -index feb35fba0c56445ee910dbe1af9b36f21b4ec480..caf46a9b978c0cada8530142e6ccf8bb0f371c1c 100644 +index a9a80f8bc4a6f250fe3c20482c395058f024fabd..fb60f2a86ff387f46995b6aa71b65e1b56527623 100644 --- a/src/main/java/net/minecraft/world/RandomizableContainer.java +++ b/src/main/java/net/minecraft/world/RandomizableContainer.java @@ -81,6 +81,7 @@ public interface RandomizableContainer extends Container { diff --git a/patches/server/0051-Reduce-hopper-item-checks.patch b/patches/server/0049-Reduce-hopper-item-checks.patch similarity index 94% rename from patches/server/0051-Reduce-hopper-item-checks.patch rename to patches/server/0049-Reduce-hopper-item-checks.patch index a43da17..8dcb8f6 100644 --- a/patches/server/0051-Reduce-hopper-item-checks.patch +++ b/patches/server/0049-Reduce-hopper-item-checks.patch @@ -17,10 +17,10 @@ Licensed under: MIT (https://opensource.org/licenses/MIT) Only do an item "suck in" action once per second diff --git a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java -index 8fd3845c4965843be9c37498760d93f1ebdff541..8a5cbe95022a3ae41283f4f884d8b2f7eae0cd34 100644 +index ea0d9335446b20073b9aafb9de453097355db79c..c1bb44fd92ee4f3b900f29e3f9069841ca19fa5d 100644 --- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java -@@ -22,11 +22,13 @@ import net.minecraft.world.entity.EntityType; +@@ -22,12 +22,14 @@ import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.MoverType; import net.minecraft.world.entity.SlotAccess; import net.minecraft.world.entity.TraceableEntity; @@ -30,11 +30,12 @@ index 8fd3845c4965843be9c37498760d93f1ebdff541..8a5cbe95022a3ae41283f4f884d8b2f7 import net.minecraft.world.item.Items; import net.minecraft.world.level.Level; import net.minecraft.world.level.gameevent.GameEvent; + import net.minecraft.world.level.portal.DimensionTransition; +import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; // CraftBukkit start import net.minecraft.server.MinecraftServer; -@@ -234,11 +236,31 @@ public class ItemEntity extends Entity implements TraceableEntity { +@@ -235,11 +237,31 @@ public class ItemEntity extends Entity implements TraceableEntity { } // CraftBukkit end this.discard(EntityRemoveEvent.Cause.DESPAWN); // CraftBukkit - add Bukkit remove cause @@ -66,7 +67,7 @@ index 8fd3845c4965843be9c37498760d93f1ebdff541..8a5cbe95022a3ae41283f4f884d8b2f7 // Spigot start - copied from above @Override public void inactiveTick() { -@@ -258,7 +280,13 @@ public class ItemEntity extends Entity implements TraceableEntity { +@@ -259,7 +281,13 @@ public class ItemEntity extends Entity implements TraceableEntity { } // CraftBukkit end this.discard(EntityRemoveEvent.Cause.DESPAWN); // CraftBukkit - add Bukkit remove cause @@ -119,7 +120,7 @@ index 5f042e294db605827000123252b0df646968f897..e1cc15f28fe8da23b74ff4504c5b2da2 double getLevelY(); diff --git a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java -index 55a5fad40f39b467ba933b2e0778998a54dbb8b2..21a1a880d49db917528d919ef7dd5cabbc8e2568 100644 +index 8310d132006043e93c612890514c4c7f3eb1c74d..59ab63dd7352abc47575daa3e829832a4793ea3f 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java @@ -11,6 +11,7 @@ import net.minecraft.core.NonNullList; @@ -138,7 +139,7 @@ index 55a5fad40f39b467ba933b2e0778998a54dbb8b2..21a1a880d49db917528d919ef7dd5cab import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.HopperMenu; import net.minecraft.world.item.ItemStack; -@@ -589,7 +591,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen +@@ -563,7 +565,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen } else { boolean flag = hopper.isGridAligned() && iblockdata.isCollisionShapeFullBlock(world, blockposition) && !iblockdata.is(BlockTags.DOES_NOT_BLOCK_HOPPERS); @@ -147,7 +148,7 @@ index 55a5fad40f39b467ba933b2e0778998a54dbb8b2..21a1a880d49db917528d919ef7dd5cab Iterator iterator = HopperBlockEntity.getItemsAtAndAbove(world, hopper).iterator(); while (iterator.hasNext()) { -@@ -898,6 +900,31 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen +@@ -872,6 +874,31 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen return first.getCount() < first.getMaxStackSize() && ItemStack.isSameItemSameComponents(first, second); // Paper - Perf: Optimize Hoppers; used to return true for full itemstacks?! } diff --git a/patches/server/0052-Reduce-villager-item-re-pickup.patch b/patches/server/0050-Reduce-villager-item-re-pickup.patch similarity index 100% rename from patches/server/0052-Reduce-villager-item-re-pickup.patch rename to patches/server/0050-Reduce-villager-item-re-pickup.patch diff --git a/patches/server/0053-Variable-entity-wake-up-duration.patch b/patches/server/0051-Variable-entity-wake-up-duration.patch similarity index 97% rename from patches/server/0053-Variable-entity-wake-up-duration.patch rename to patches/server/0051-Variable-entity-wake-up-duration.patch index 534d092..30d24cd 100644 --- a/patches/server/0053-Variable-entity-wake-up-duration.patch +++ b/patches/server/0051-Variable-entity-wake-up-duration.patch @@ -19,7 +19,7 @@ index 28afbf8da166377b295302e6ea7c602da70100b1..f8a561d91686d6df89a7374ca223972e } diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index 4fd7512106eb3aa63001ab4617e499d043fb6057..5ecdc3b51baae26edbcdc76ed3bb0f806ef31555 100644 +index f83c2b35cc279666686be3af558473b5d93bf7cd..86b678aa745e125ceaa271deec00d6290a02d88b 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -38,6 +38,7 @@ import co.aikar.timings.MinecraftTimings; diff --git a/patches/server/0054-Do-not-process-chat-commands-before-player-has-joine.patch b/patches/server/0052-Do-not-process-chat-commands-before-player-has-joine.patch similarity index 82% rename from patches/server/0054-Do-not-process-chat-commands-before-player-has-joine.patch rename to patches/server/0052-Do-not-process-chat-commands-before-player-has-joine.patch index 482c673..eb8856a 100644 --- a/patches/server/0054-Do-not-process-chat-commands-before-player-has-joine.patch +++ b/patches/server/0052-Do-not-process-chat-commands-before-player-has-joine.patch @@ -13,10 +13,10 @@ As part of: EmpireCraft (https://github.com/starlis/empirecraft) Licensed under: MIT (https://opensource.org/licenses/MIT) diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 1f5223c3f152e8d3f21e59f282ccede8c35346c0..a5aefd1224b8cd6957a0a9654075fa06c6a69d99 100644 +index 3d1aff8318620bc87a439e095bc1d06e4dafbba1..79b49aec7c5c80948b8f1c77ca6e48049dae174e 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -292,6 +292,7 @@ public class ServerPlayer extends Player { +@@ -295,6 +295,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple public boolean joining = true; public boolean sentListPacket = false; public boolean supressTrackerForLogin = false; // Paper - Fire PlayerJoinEvent when Player is actually ready @@ -25,11 +25,11 @@ index 1f5223c3f152e8d3f21e59f282ccede8c35346c0..a5aefd1224b8cd6957a0a9654075fa06 public boolean isRealPlayer; // Paper public final com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet cachedSingleHashSet; // Paper diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 94c5da09a691904fbab82c5b5ed5dd94d33b7021..c45e8cb4dd627023c31f8bd87455ed07aa9feb36 100644 +index 7ed1a93a7ecf993d2ee3825affa61be1d661dfc7..bb143cc9bfe8ee0302955ed61c876eace149f9ca 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2340,7 +2340,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl - this.disconnect(Component.translatable("multiplayer.disconnect.illegal_characters"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_CHARACTERS); // Paper +@@ -2284,7 +2284,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl + this.disconnect((Component) Component.translatable("multiplayer.disconnect.illegal_characters"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_CHARACTERS); // Paper } else if (this.player.isRemoved() || this.player.getChatVisibility() == ChatVisiblity.HIDDEN) { // CraftBukkit - dead men tell no tales this.send(new ClientboundSystemChatPacket(Component.translatable("chat.disabled.options").withStyle(ChatFormatting.RED), false)); - } else { @@ -38,7 +38,7 @@ index 94c5da09a691904fbab82c5b5ed5dd94d33b7021..c45e8cb4dd627023c31f8bd87455ed07 // CraftBukkit start if (sync) { diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index a2142930b4d4b05987c90496fb9d733d99040aa0..523f183f2a8b8f97088eab57f9b28e777b93bef0 100644 +index 0d0b07c9199be9ca0d5ac3feb1d44f149ba69283..6aa5713fb0794a56985630c4616afdf5728d98d7 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -350,6 +350,8 @@ public abstract class PlayerList { diff --git a/patches/server/0055-Do-not-log-invalid-statistics.patch b/patches/server/0053-Do-not-log-invalid-statistics.patch similarity index 97% rename from patches/server/0055-Do-not-log-invalid-statistics.patch rename to patches/server/0053-Do-not-log-invalid-statistics.patch index b72dd55..7302698 100644 --- a/patches/server/0055-Do-not-log-invalid-statistics.patch +++ b/patches/server/0053-Do-not-log-invalid-statistics.patch @@ -13,7 +13,7 @@ As part of: EmpireCraft (https://github.com/starlis/empirecraft) Licensed under: MIT (https://opensource.org/licenses/MIT) diff --git a/src/main/java/net/minecraft/stats/ServerStatsCounter.java b/src/main/java/net/minecraft/stats/ServerStatsCounter.java -index f890738d3bb9fb5e70a9d323c6cec97f9948f9cf..8e9f4b1a7f0fe6df4e3d0796cef99db439f25bba 100644 +index fb7342f7a5008a283c3400c6313c637de8210dfa..a45353b8a6dd85c74d3e195f89f75f2509d579ad 100644 --- a/src/main/java/net/minecraft/stats/ServerStatsCounter.java +++ b/src/main/java/net/minecraft/stats/ServerStatsCounter.java @@ -36,6 +36,7 @@ import net.minecraft.server.level.ServerPlayer; diff --git a/patches/server/0056-Do-not-log-empty-message-warnings.patch b/patches/server/0054-Do-not-log-empty-message-warnings.patch similarity index 93% rename from patches/server/0056-Do-not-log-empty-message-warnings.patch rename to patches/server/0054-Do-not-log-empty-message-warnings.patch index 9f26440..f21cf0e 100644 --- a/patches/server/0056-Do-not-log-empty-message-warnings.patch +++ b/patches/server/0054-Do-not-log-empty-message-warnings.patch @@ -7,7 +7,7 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) Gale - https://galemc.org diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 1e1e25ef913d0f3ac2fe2a6e0f1238480680ce61..59b157545b562ea94ffbc42c8174f4c573d79399 100644 +index bb143cc9bfe8ee0302955ed61c876eace149f9ca..d3319dcb15ee727b42d3bc09e06793cf728f1c6b 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -194,6 +194,7 @@ import net.minecraft.world.phys.shapes.BooleanOp; @@ -18,7 +18,7 @@ index 1e1e25ef913d0f3ac2fe2a6e0f1238480680ce61..59b157545b562ea94ffbc42c8174f4c5 import org.galemc.gale.configuration.GaleGlobalConfiguration; import org.slf4j.Logger; -@@ -2498,7 +2499,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2442,7 +2443,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl // CraftBukkit start String s = message.signedContent(); if (s.isEmpty()) { diff --git a/patches/server/0057-Do-not-log-ignored-advancements.patch b/patches/server/0055-Do-not-log-ignored-advancements.patch similarity index 97% rename from patches/server/0057-Do-not-log-ignored-advancements.patch rename to patches/server/0055-Do-not-log-ignored-advancements.patch index 120f1d2..6114584 100644 --- a/patches/server/0057-Do-not-log-ignored-advancements.patch +++ b/patches/server/0055-Do-not-log-ignored-advancements.patch @@ -37,7 +37,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/main/java/net/minecraft/server/PlayerAdvancements.java b/src/main/java/net/minecraft/server/PlayerAdvancements.java -index f655e0ae4a287886d0291cd0089bad2000249d0f..e15409231e56f5bbbfbcd19cea2c7e3fbc612886 100644 +index 9fabf9322acd663c4452b562494e74aa42eb19da..749dbb091af02c2e5922de14fc2743b7649f2928 100644 --- a/src/main/java/net/minecraft/server/PlayerAdvancements.java +++ b/src/main/java/net/minecraft/server/PlayerAdvancements.java @@ -45,6 +45,7 @@ import net.minecraft.server.level.ServerPlayer; diff --git a/patches/server/0058-Do-not-log-setBlock-in-far-chunks.patch b/patches/server/0056-Do-not-log-setBlock-in-far-chunks.patch similarity index 79% rename from patches/server/0058-Do-not-log-setBlock-in-far-chunks.patch rename to patches/server/0056-Do-not-log-setBlock-in-far-chunks.patch index d5cb1b2..2687243 100644 --- a/patches/server/0058-Do-not-log-setBlock-in-far-chunks.patch +++ b/patches/server/0056-Do-not-log-setBlock-in-far-chunks.patch @@ -37,24 +37,16 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/main/java/net/minecraft/server/level/WorldGenRegion.java b/src/main/java/net/minecraft/server/level/WorldGenRegion.java -index 1351423a12c19a01f602a202832372a399e6a867..59b7d9c9a2a0203f8135a9dcdce302bbf0b2d0f4 100644 +index 5a8a33638ceb1d980ffc3e6dd86e7eb11dfd9375..4ec094e06e7707a052f3647871f7d14183e8978f 100644 --- a/src/main/java/net/minecraft/server/level/WorldGenRegion.java +++ b/src/main/java/net/minecraft/server/level/WorldGenRegion.java -@@ -58,6 +58,7 @@ import net.minecraft.world.phys.AABB; - import net.minecraft.world.phys.Vec3; - import net.minecraft.world.ticks.LevelTickAccess; - import net.minecraft.world.ticks.WorldGenTickAccess; -+import org.galemc.gale.configuration.GaleGlobalConfiguration; - import org.slf4j.Logger; - - public class WorldGenRegion implements WorldGenLevel { -@@ -326,6 +327,7 @@ public class WorldGenRegion implements WorldGenLevel { +@@ -336,6 +336,7 @@ public class WorldGenRegion implements WorldGenLevel { return true; } else { // Paper start - Buffer OOB setBlock calls -+ if (GaleGlobalConfiguration.get().logToConsole.setBlockInFarChunk) // Gale - Purpur - do not log setBlock in far chunks ++ if (org.galemc.gale.configuration.GaleGlobalConfiguration.get().logToConsole.setBlockInFarChunk) // Gale - Purpur - do not log setBlock in far chunks if (!hasSetFarWarned) { - Util.logAndPauseIfInIde("Detected setBlock in a far chunk [" + i + ", " + j + "], pos: " + String.valueOf(pos) + ", status: " + String.valueOf(this.generatingStatus) + (this.currentlyGenerating == null ? "" : ", currently generating: " + (String) this.currentlyGenerating.get())); + Util.logAndPauseIfInIde("Detected setBlock in a far chunk [" + i + ", " + j + "], pos: " + String.valueOf(pos) + ", status: " + String.valueOf(this.generatingStep.targetStatus()) + (this.currentlyGenerating == null ? "" : ", currently generating: " + (String) this.currentlyGenerating.get())); hasSetFarWarned = true; diff --git a/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java b/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java index 9c8c283aa88165d862c649b22fd86e61ec8e84d7..281d01126f623d0541b1676bf79bf1dd3020d250 100644 diff --git a/patches/server/0059-Do-not-log-unrecognized-recipes.patch b/patches/server/0057-Do-not-log-unrecognized-recipes.patch similarity index 97% rename from patches/server/0059-Do-not-log-unrecognized-recipes.patch rename to patches/server/0057-Do-not-log-unrecognized-recipes.patch index 6069f05..8ea88bc 100644 --- a/patches/server/0059-Do-not-log-unrecognized-recipes.patch +++ b/patches/server/0057-Do-not-log-unrecognized-recipes.patch @@ -37,7 +37,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/main/java/net/minecraft/stats/ServerRecipeBook.java b/src/main/java/net/minecraft/stats/ServerRecipeBook.java -index 4103ddf16164e3992fef0765d368282572537e29..191ea4a7b4c034c7c370b9b8ef78ddae31b78cbf 100644 +index 8a2584deccbf19de8a18fcfcb9c65318b60afe57..457d774dbfd441abfb108e0a11e675fadcd55092 100644 --- a/src/main/java/net/minecraft/stats/ServerRecipeBook.java +++ b/src/main/java/net/minecraft/stats/ServerRecipeBook.java @@ -18,6 +18,7 @@ import net.minecraft.resources.ResourceLocation; diff --git a/patches/server/0060-Do-not-log-legacy-Material-initialization.patch b/patches/server/0058-Do-not-log-legacy-Material-initialization.patch similarity index 97% rename from patches/server/0060-Do-not-log-legacy-Material-initialization.patch rename to patches/server/0058-Do-not-log-legacy-Material-initialization.patch index 3a3bd67..0d81b62 100644 --- a/patches/server/0060-Do-not-log-legacy-Material-initialization.patch +++ b/patches/server/0058-Do-not-log-legacy-Material-initialization.patch @@ -37,7 +37,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java b/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java -index 62f4835309df2b2deeb799609f9b1b325bf58af3..2885788f0ae37474dfab5f51908e290a5f972206 100644 +index dc591702d1ad41209bb80e8d05f4ca11f20816f2..38a5b11d52ffcd1e3f7ffe8d617e7d3fd93f07c6 100644 --- a/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java +++ b/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java @@ -31,6 +31,7 @@ import org.bukkit.Material; diff --git a/patches/server/0061-Do-not-log-plugin-library-loads.patch b/patches/server/0059-Do-not-log-plugin-library-loads.patch similarity index 100% rename from patches/server/0061-Do-not-log-plugin-library-loads.patch rename to patches/server/0059-Do-not-log-plugin-library-loads.patch diff --git a/patches/server/0062-Do-not-log-expired-message-warnings.patch b/patches/server/0060-Do-not-log-expired-message-warnings.patch similarity index 100% rename from patches/server/0062-Do-not-log-expired-message-warnings.patch rename to patches/server/0060-Do-not-log-expired-message-warnings.patch diff --git a/patches/server/0063-Do-not-log-Not-Secure-marker.patch b/patches/server/0061-Do-not-log-Not-Secure-marker.patch similarity index 94% rename from patches/server/0063-Do-not-log-Not-Secure-marker.patch rename to patches/server/0061-Do-not-log-Not-Secure-marker.patch index 0e3c308..f15ae4f 100644 --- a/patches/server/0063-Do-not-log-Not-Secure-marker.patch +++ b/patches/server/0061-Do-not-log-Not-Secure-marker.patch @@ -7,7 +7,7 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) Gale - https://galemc.org diff --git a/src/main/java/io/papermc/paper/adventure/ChatProcessor.java b/src/main/java/io/papermc/paper/adventure/ChatProcessor.java -index e83f9517b31c5171b8dc75ab63a5bfe654221c84..8b95af95976309f31eb2493049a6a7440c505608 100644 +index 14e412ebf75b0e06ab53a1c8f9dd1be6ad1e2680..f962e82e2c70f328a23dc99193d072f8dd7ad949 100644 --- a/src/main/java/io/papermc/paper/adventure/ChatProcessor.java +++ b/src/main/java/io/papermc/paper/adventure/ChatProcessor.java @@ -44,6 +44,8 @@ import org.bukkit.event.player.PlayerChatEvent; @@ -29,7 +29,7 @@ index e83f9517b31c5171b8dc75ab63a5bfe654221c84..8b95af95976309f31eb2493049a6a744 } diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 523f183f2a8b8f97088eab57f9b28e777b93bef0..6931003ca7808fddccd648a3eb2dc41b38ec97bd 100644 +index 6aa5713fb0794a56985630c4616afdf5728d98d7..e7ca46e90da96354d132a483f2d45a91d121830b 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -102,6 +102,7 @@ import net.minecraft.world.phys.Vec3; @@ -40,7 +40,7 @@ index 523f183f2a8b8f97088eab57f9b28e777b93bef0..6931003ca7808fddccd648a3eb2dc41b import org.slf4j.Logger; // CraftBukkit start -@@ -1432,7 +1433,7 @@ public abstract class PlayerList { +@@ -1372,7 +1373,7 @@ public abstract class PlayerList { // Paper end boolean flag = this.verifyChatTrusted(message); diff --git a/patches/server/0064-Do-not-log-disconnections-with-null-id.patch b/patches/server/0062-Do-not-log-disconnections-with-null-id.patch similarity index 68% rename from patches/server/0064-Do-not-log-disconnections-with-null-id.patch rename to patches/server/0062-Do-not-log-disconnections-with-null-id.patch index 2e27a78..05aa89b 100644 --- a/patches/server/0064-Do-not-log-disconnections-with-null-id.patch +++ b/patches/server/0062-Do-not-log-disconnections-with-null-id.patch @@ -17,10 +17,10 @@ Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) This can help to hide annoying scanning bots from showing up in console. diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -index 765cf12c1558afd9686793b18388fc229c55d2d8..857ea8d6fe72a1ef2094121f49db4a359e9e2080 100644 +index b0f7a378f19b9837c060c891002cd5db756cdae1..22865e638a50397d194fb39b883f73753de1f7f0 100644 --- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -@@ -42,6 +42,7 @@ import net.minecraft.util.CryptException; +@@ -44,6 +44,7 @@ import net.minecraft.util.CryptException; import net.minecraft.util.RandomSource; import net.minecraft.util.StringUtil; import org.apache.commons.lang3.Validate; @@ -28,21 +28,21 @@ index 765cf12c1558afd9686793b18388fc229c55d2d8..857ea8d6fe72a1ef2094121f49db4a35 import org.slf4j.Logger; import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.PacketUtils; -@@ -154,6 +155,14 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, +@@ -141,6 +142,14 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, - @Override - public void onDisconnect(Component reason) { -+ // Gale start - Pufferfish - do not log disconnections with null id -+ if (!GaleGlobalConfiguration.get().logToConsole.nullIdDisconnections && this.authenticatedProfile != null && this.authenticatedProfile.getId() == null) { -+ var reasonString = reason.getString(); -+ if ("Disconnected".equals(reasonString) || Component.translatable("multiplayer.disconnect.generic").getString().equals(reasonString)) { -+ return; + public void disconnect(Component reason) { + try { ++ // Gale start - Pufferfish - do not log disconnections with null id ++ if (!GaleGlobalConfiguration.get().logToConsole.nullIdDisconnections && this.authenticatedProfile != null && this.authenticatedProfile.getId() == null) { ++ var reasonString = reason.getString(); ++ if ("Disconnected".equals(reasonString) || Component.translatable("multiplayer.disconnect.generic").getString().equals(reasonString)) { ++ return; ++ } + } -+ } -+ // Gale end - Pufferfish - do not log disconnections with null id - ServerLoginPacketListenerImpl.LOGGER.info("{} lost connection: {}", this.getUserName(), reason.getString()); - } - ++ // Gale end - Pufferfish - do not log disconnections with null id + ServerLoginPacketListenerImpl.LOGGER.info("Disconnecting {}: {}", this.getUserName(), reason.getString()); + this.connection.send(new ClientboundLoginDisconnectPacket(reason)); + this.connection.disconnect(reason); diff --git a/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java b/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java index 0f5471291c482bd2b8ecc588da74a408563b7312..d95141f43ebbad984db96416623957bd47f3ac1b 100644 --- a/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java diff --git a/patches/server/0065-Do-not-log-run-as-root-warning.patch b/patches/server/0063-Do-not-log-run-as-root-warning.patch similarity index 94% rename from patches/server/0065-Do-not-log-run-as-root-warning.patch rename to patches/server/0063-Do-not-log-run-as-root-warning.patch index 623d745..794dccb 100644 --- a/patches/server/0065-Do-not-log-run-as-root-warning.patch +++ b/patches/server/0063-Do-not-log-run-as-root-warning.patch @@ -41,10 +41,10 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 28412943a1ce919da3c8731a441b5a1b3b893293..005890e25a3f5fe34027239633646a662eba32bb 100644 +index 4fbdd8b1ead384762164c2d13180bfa230c40262..bbf842eee5b67d8211f0af215f9c331c456d864d 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -@@ -192,7 +192,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -201,7 +201,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface } // Paper start - detect running as root diff --git a/patches/server/0066-Do-not-log-offline-mode-warning.patch b/patches/server/0064-Do-not-log-offline-mode-warning.patch similarity index 94% rename from patches/server/0066-Do-not-log-offline-mode-warning.patch rename to patches/server/0064-Do-not-log-offline-mode-warning.patch index 264d9e7..babb148 100644 --- a/patches/server/0066-Do-not-log-offline-mode-warning.patch +++ b/patches/server/0064-Do-not-log-offline-mode-warning.patch @@ -41,10 +41,10 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 4f9fb7c75dc12c8c9d88e18c7c4749cad9545cc6..8c74652ffa2c1263c835381bc27ffdc6d272dbf7 100644 +index bbf842eee5b67d8211f0af215f9c331c456d864d..7ccdc35b40feb48fd737e96e868124fec03d5ef2 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -@@ -303,7 +303,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -312,7 +312,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface String proxyFlavor = (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.velocity.enabled) ? "Velocity" : "BungeeCord"; String proxyLink = (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.velocity.enabled) ? "https://docs.papermc.io/velocity/security" : "http://www.spigotmc.org/wiki/firewall-guide/"; // Paper end - Add Velocity IP Forwarding Support diff --git a/patches/server/0067-Softly-log-invalid-pool-element-errors.patch b/patches/server/0065-Softly-log-invalid-pool-element-errors.patch similarity index 78% rename from patches/server/0067-Softly-log-invalid-pool-element-errors.patch rename to patches/server/0065-Softly-log-invalid-pool-element-errors.patch index c98cd2a..3746ec1 100644 --- a/patches/server/0067-Softly-log-invalid-pool-element-errors.patch +++ b/patches/server/0065-Softly-log-invalid-pool-element-errors.patch @@ -13,14 +13,10 @@ As part of: EmpireCraft (https://github.com/starlis/empirecraft) Licensed under: MIT (https://opensource.org/licenses/MIT) diff --git a/src/main/java/net/minecraft/world/level/levelgen/structure/PoolElementStructurePiece.java b/src/main/java/net/minecraft/world/level/levelgen/structure/PoolElementStructurePiece.java -index 608cfb0db7bb14611f6cdcb55d9701a55d882e9d..64ee66ba5e3340ac10f060d950f3515ac893bd55 100644 +index 0977cd0d65dd1c2dde04d318759458abe452847e..ee5b317e87c4d403b6d7f5ab1d493e446f9278f6 100644 --- a/src/main/java/net/minecraft/world/level/levelgen/structure/PoolElementStructurePiece.java +++ b/src/main/java/net/minecraft/world/level/levelgen/structure/PoolElementStructurePiece.java -@@ -22,10 +22,11 @@ import net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; - import net.minecraft.world.level.levelgen.structure.pools.JigsawJunction; - import net.minecraft.world.level.levelgen.structure.pools.StructurePoolElement; - import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplateManager; -+import org.galemc.gale.configuration.GaleGlobalConfiguration; +@@ -27,7 +27,7 @@ import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemp import org.slf4j.Logger; public class PoolElementStructurePiece extends StructurePiece { @@ -29,15 +25,15 @@ index 608cfb0db7bb14611f6cdcb55d9701a55d882e9d..64ee66ba5e3340ac10f060d950f3515a protected final StructurePoolElement element; protected BlockPos position; private final int groundLevelDelta; -@@ -57,7 +58,7 @@ public class PoolElementStructurePiece extends StructurePiece { +@@ -80,7 +80,7 @@ public class PoolElementStructurePiece extends StructurePiece { DynamicOps dynamicOps = context.registryAccess().createSerializationContext(NbtOps.INSTANCE); - this.element = StructurePoolElement.CODEC - .parse(dynamicOps, nbt.getCompound("pool_element")) + StructurePoolElement.CODEC + .encodeStart(dynamicOps, this.element) - .resultOrPartial(LOGGER::error) -+ .resultOrPartial(GaleGlobalConfiguration.get().logToConsole.invalidPoolElementErrorStringConsumer) // Gale - EMC - softly log invalid pool element errors - .orElseThrow(() -> new IllegalStateException("Invalid pool element found")); - this.rotation = Rotation.valueOf(nbt.getString("rotation")); - this.boundingBox = this.element.getBoundingBox(this.structureTemplateManager, this.position, this.rotation); ++ .resultOrPartial(org.galemc.gale.configuration.GaleGlobalConfiguration.get().logToConsole.invalidPoolElementErrorStringConsumer) // Gale - EMC - softly log invalid pool element errors + .ifPresent(poolElement -> nbt.put("pool_element", poolElement)); + nbt.putString("rotation", this.rotation.name()); + ListTag listTag = new ListTag(); diff --git a/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java b/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java index d95141f43ebbad984db96416623957bd47f3ac1b..ea7f6a826763af8aa10d79e82b9ba99198e31e06 100644 --- a/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java diff --git a/patches/server/0068-Fix-outdated-server-showing-in-ping-before-server-fu.patch b/patches/server/0066-Fix-outdated-server-showing-in-ping-before-server-fu.patch similarity index 94% rename from patches/server/0068-Fix-outdated-server-showing-in-ping-before-server-fu.patch rename to patches/server/0066-Fix-outdated-server-showing-in-ping-before-server-fu.patch index 2893d71..3f58574 100644 --- a/patches/server/0068-Fix-outdated-server-showing-in-ping-before-server-fu.patch +++ b/patches/server/0066-Fix-outdated-server-showing-in-ping-before-server-fu.patch @@ -38,10 +38,10 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/main/java/net/minecraft/server/network/ServerStatusPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerStatusPacketListenerImpl.java -index e5006e7672ba79ed4bcf2c4173c5a9ed4c68395b..cd0971429ae679311269004ffde8743c9ddcef6b 100644 +index 385457c7151f7e636e1ea2e38ef983f4f532b9b5..1df9048cad66afa3706e960d627ee33e52a58541 100644 --- a/src/main/java/net/minecraft/server/network/ServerStatusPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerStatusPacketListenerImpl.java -@@ -153,6 +153,10 @@ public class ServerStatusPacketListenerImpl implements ServerStatusPacketListene +@@ -154,6 +154,10 @@ public class ServerStatusPacketListenerImpl implements ServerStatusPacketListene this.connection.send(new ClientboundStatusResponsePacket(ping)); // CraftBukkit end */ diff --git a/patches/server/0069-Fix-MC-238526.patch b/patches/server/0067-Fix-MC-238526.patch similarity index 96% rename from patches/server/0069-Fix-MC-238526.patch rename to patches/server/0067-Fix-MC-238526.patch index c92e237..6cdea76 100644 --- a/patches/server/0069-Fix-MC-238526.patch +++ b/patches/server/0067-Fix-MC-238526.patch @@ -37,10 +37,10 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java b/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java -index 6f22705072fecbe91196e4966fca2eeec060f120..d7d98386f6458ea00b88acdabb8ba70caf543783 100644 +index c9cabb061ebc9172647304431cc3fb2593dd47ba..68375718c4c9ba46439e49cd82a5267aab150f97 100644 --- a/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java +++ b/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java -@@ -72,6 +72,6 @@ public abstract class WaterAnimal extends PathfinderMob { +@@ -71,6 +71,6 @@ public abstract class WaterAnimal extends PathfinderMob { i = world.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.maximum.or(i); j = world.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.minimum.or(j); // Paper end - Make water animal spawn height configurable diff --git a/patches/server/0070-Fix-cow-rotation-when-shearing-mooshroom.patch b/patches/server/0068-Fix-cow-rotation-when-shearing-mooshroom.patch similarity index 100% rename from patches/server/0070-Fix-cow-rotation-when-shearing-mooshroom.patch rename to patches/server/0068-Fix-cow-rotation-when-shearing-mooshroom.patch diff --git a/patches/server/0071-Fix-MC-121706.patch b/patches/server/0069-Fix-MC-121706.patch similarity index 100% rename from patches/server/0071-Fix-MC-121706.patch rename to patches/server/0069-Fix-MC-121706.patch diff --git a/patches/server/0072-Fix-MC-110386.patch b/patches/server/0070-Fix-MC-110386.patch similarity index 100% rename from patches/server/0072-Fix-MC-110386.patch rename to patches/server/0070-Fix-MC-110386.patch diff --git a/patches/server/0073-Fix-MC-31819.patch b/patches/server/0071-Fix-MC-31819.patch similarity index 93% rename from patches/server/0073-Fix-MC-31819.patch rename to patches/server/0071-Fix-MC-31819.patch index 65c5103..2df439f 100644 --- a/patches/server/0073-Fix-MC-31819.patch +++ b/patches/server/0071-Fix-MC-31819.patch @@ -19,10 +19,10 @@ the displayed hunger bar never goes down. Hunger (or any related value, includin should not go down on peaceful. See https://bugs.mojang.com/browse/MC-31819. diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 72b3e64cf6d184e90a6e2c0d822b83312312d67d..f4f45fa391c36f66abdf1c16c0f3e31f5dda1c1a 100644 +index 0526f4c701b4d945f26c5f382e9efac86cc568fa..e513e17f460927fcffd029bb3b3357ca85aa514d 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -1893,6 +1893,11 @@ public abstract class Player extends LivingEntity { +@@ -1908,6 +1908,11 @@ public abstract class Player extends LivingEntity { } public void causeFoodExhaustion(float f, EntityExhaustionEvent.ExhaustionReason reason) { diff --git a/patches/server/0074-Fix-MC-26304.patch b/patches/server/0072-Fix-MC-26304.patch similarity index 74% rename from patches/server/0074-Fix-MC-26304.patch rename to patches/server/0072-Fix-MC-26304.patch index d751945..fba7d10 100644 --- a/patches/server/0074-Fix-MC-26304.patch +++ b/patches/server/0072-Fix-MC-26304.patch @@ -12,8 +12,21 @@ By: etil2jz <81570777+etil2jz@users.noreply.github.com> As part of: Mirai (https://github.com/etil2jz/Mirai) Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) +diff --git a/src/main/java/net/minecraft/resources/ResourceLocation.java b/src/main/java/net/minecraft/resources/ResourceLocation.java +index 1967c43ee3a12e63365cc40ee6565307e2fd73cf..8e478ce995cb4b3b33da68396ebaea5240800cb2 100644 +--- a/src/main/java/net/minecraft/resources/ResourceLocation.java ++++ b/src/main/java/net/minecraft/resources/ResourceLocation.java +@@ -36,7 +36,7 @@ public final class ResourceLocation implements Comparable { + private final String namespace; + private final String path; + +- private ResourceLocation(String namespace, String path) { ++ private ResourceLocation(String namespace, String path) { // Gale start - Mirai - fix MC-26304 - private -> public + assert isValidNamespace(namespace); + + assert isValidPath(path); diff --git a/src/main/java/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java -index 887957ce1ddc2f32569405642f35df468c08271f..fa78fcbdcada06a772e1e21a58125a849c515a62 100644 +index a2fafef89d5354e2cb02f5672810909950a57777..c785362f145dd9605bc01bd3b8b8118f71404d8f 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java @@ -6,6 +6,7 @@ import net.minecraft.core.BlockPos; @@ -32,16 +45,16 @@ index 887957ce1ddc2f32569405642f35df468c08271f..fa78fcbdcada06a772e1e21a58125a84 private NonNullList items; public int brewTime; private boolean[] lastPotionCount; -@@ -299,6 +301,22 @@ public class BrewingStandBlockEntity extends BaseContainerBlockEntity implements - ContainerHelper.loadAllItems(nbt, this.items, registryLookup); - this.brewTime = nbt.getShort("BrewTime"); +@@ -303,6 +305,22 @@ public class BrewingStandBlockEntity extends BaseContainerBlockEntity implements + } + this.fuel = nbt.getByte("Fuel"); + // Gale start - Mirai - fix MC-26304 + if (this.ingredient == null || this.ingredient == Items.AIR) { + for (String nbtKey : INGREDIENT_NBT_KEYS) { + try { + if (nbt.contains(nbtKey)) { -+ this.ingredient = BuiltInRegistries.ITEM.get(new net.minecraft.resources.ResourceLocation(nbt.getString(nbtKey))); ++ this.ingredient = BuiltInRegistries.ITEM.get(net.minecraft.resources.ResourceLocation.tryParse(nbt.getString(nbtKey))); + if (this.ingredient != null && this.ingredient != Items.AIR) { + break; + } @@ -55,7 +68,7 @@ index 887957ce1ddc2f32569405642f35df468c08271f..fa78fcbdcada06a772e1e21a58125a84 } @Override -@@ -307,6 +325,18 @@ public class BrewingStandBlockEntity extends BaseContainerBlockEntity implements +@@ -311,6 +329,18 @@ public class BrewingStandBlockEntity extends BaseContainerBlockEntity implements nbt.putShort("BrewTime", (short) this.brewTime); ContainerHelper.saveAllItems(nbt, this.items, registryLookup); nbt.putByte("Fuel", (byte) this.fuel); diff --git a/patches/server/0076-Make-arrow-movement-resetting-despawn-counter-config.patch b/patches/server/0073-Make-arrow-movement-resetting-despawn-counter-config.patch similarity index 61% rename from patches/server/0076-Make-arrow-movement-resetting-despawn-counter-config.patch rename to patches/server/0073-Make-arrow-movement-resetting-despawn-counter-config.patch index cd32ce2..e20d083 100644 --- a/patches/server/0076-Make-arrow-movement-resetting-despawn-counter-config.patch +++ b/patches/server/0073-Make-arrow-movement-resetting-despawn-counter-config.patch @@ -42,10 +42,10 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -index 31b8a8bf78d52b5f11b68e780ec09bf78e7bda84..7f99fe3ea54c6b39584a73d1931100193ac09cbd 100644 +index ddf47dab1ab92c45e3eea09239d418a9798ed59e..95ac8f4af849523e25b95b624d59f9f5ae5877b4 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java +++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -@@ -332,7 +332,7 @@ public abstract class AbstractArrow extends Projectile { +@@ -356,7 +356,7 @@ public abstract class AbstractArrow extends Projectile { Vec3 vec3d = this.getDeltaMovement(); this.setDeltaMovement(vec3d.multiply((double) (this.random.nextFloat() * 0.2F), (double) (this.random.nextFloat() * 0.2F), (double) (this.random.nextFloat() * 0.2F))); @@ -54,11 +54,34 @@ index 31b8a8bf78d52b5f11b68e780ec09bf78e7bda84..7f99fe3ea54c6b39584a73d193110019 } @Override +diff --git a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java.rej b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java.rej +new file mode 100644 +index 0000000000000000000000000000000000000000..835eb6436cd0d2b9698abd879c3d04e86d790ea3 +--- /dev/null ++++ b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java.rej +@@ -0,0 +1,9 @@ ++diff a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java (rejected hunks) ++@@ -167,6 +167,7 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity { ++ ++ public static void teleportEntity(Level world, BlockPos pos, BlockState state, Entity entity, TheEndGatewayBlockEntity blockEntity) { ++ if (world instanceof ServerLevel worldserver && !blockEntity.isCoolingDown()) { +++ if (entity.level().galeConfig().gameplayMechanics.fixes.checkCanChangeDimensionsBeforeUseEndGateway && world.galeConfig().gameplayMechanics.fixes.checkCanChangeDimensionsBeforeUseEndGateway && !entity.canChangeDimensions()) return; // Gale - Purpur - end gateway should check if entity can use portal ++ blockEntity.teleportCooldown = 100; ++ BlockPos blockposition1; ++ diff --git a/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java b/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java -index 56bf02a1f9741fc1c05ede0c0c79fea97d46271b..0f205f02ce0553fb1f8db8aa903861102a570708 100644 +index 7f9c5012defeac5ae558e46d8fca6889fb1d0872..0f205f02ce0553fb1f8db8aa903861102a570708 100644 --- a/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java +++ b/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java -@@ -124,6 +124,7 @@ public class GaleWorldConfiguration extends ConfigurationPart { +@@ -100,6 +100,7 @@ public class GaleWorldConfiguration extends ConfigurationPart { + public class Fixes extends ConfigurationPart { + + public boolean keepMooshroomRotationAfterShearing = true; // Gale - Purpur - fix cow rotation when shearing mooshroom ++ public boolean checkCanChangeDimensionsBeforeUseEndGateway = false; // Gale - Purpur - end gateway should check if entity can use portal + + // Gale start - Purpur - fix MC-238526 + @Setting("mc-238526") +@@ -123,6 +124,7 @@ public class GaleWorldConfiguration extends ConfigurationPart { } diff --git a/patches/server/0077-Make-logging-login-locations-configurable.patch b/patches/server/0074-Make-logging-login-locations-configurable.patch similarity index 94% rename from patches/server/0077-Make-logging-login-locations-configurable.patch rename to patches/server/0074-Make-logging-login-locations-configurable.patch index 2c21ff9..c7271ba 100644 --- a/patches/server/0077-Make-logging-login-locations-configurable.patch +++ b/patches/server/0074-Make-logging-login-locations-configurable.patch @@ -13,10 +13,10 @@ As part of: JettPack (https://gitlab.com/Titaniumtown/JettPack) Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 6931003ca7808fddccd648a3eb2dc41b38ec97bd..73115d3afe723faadf487e235e965c392011929c 100644 +index e7ca46e90da96354d132a483f2d45a91d121830b..fa4ca096dfd3afe8868b76a8576f0f2882f139ca 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -489,7 +489,13 @@ public abstract class PlayerList { +@@ -483,7 +483,13 @@ public abstract class PlayerList { scoreboard.addPlayerToTeam(player.getScoreboardName(), collideRuleTeam); } // Paper end - Configurable player collision diff --git a/patches/server/0079-Optimize-sun-burn-tick.patch b/patches/server/0075-Optimize-sun-burn-tick.patch similarity index 88% rename from patches/server/0079-Optimize-sun-burn-tick.patch rename to patches/server/0075-Optimize-sun-burn-tick.patch index a1be0f9..bc00916 100644 --- a/patches/server/0079-Optimize-sun-burn-tick.patch +++ b/patches/server/0075-Optimize-sun-burn-tick.patch @@ -13,10 +13,10 @@ As part of: JettPack (https://gitlab.com/Titaniumtown/JettPack) Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index ec36674769993816b22886d90a2f73e3e548917c..b97253a6b43d4db39c22ae16b7e75bd95fb9d958 100644 +index 9a8bcf6c11f885a711dff08dfa8f87d9f3deef54..a5e51025e6c2d5fea903b7c1d950ba430966d36d 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -310,7 +310,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -314,7 +314,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public double xo; public double yo; public double zo; @@ -25,7 +25,7 @@ index ec36674769993816b22886d90a2f73e3e548917c..b97253a6b43d4db39c22ae16b7e75bd9 public BlockPos blockPosition; // Gale - Pufferfish - optimize entity coordinate key - private -> public private ChunkPos chunkPosition; private Vec3 deltaMovement; -@@ -2072,9 +2072,17 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1927,9 +1927,19 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess /** @deprecated */ @Deprecated public float getLightLevelDependentMagicValue() { @@ -34,7 +34,9 @@ index ec36674769993816b22886d90a2f73e3e548917c..b97253a6b43d4db39c22ae16b7e75bd9 } + // Gale start - JettPack - optimize sun burn tick - allow passing BlockPos to getLightLevelDependentMagicValue -+ /** @deprecated */ ++ /** ++ * @deprecated ++ */ + @Deprecated + public float getLightLevelDependentMagicValue(BlockPos pos) { + return this.level().hasChunkAt(this.getBlockX(), this.getBlockZ()) ? this.level.getLightLevelDependentMagicValue(pos) : 0.0F; @@ -43,14 +45,14 @@ index ec36674769993816b22886d90a2f73e3e548917c..b97253a6b43d4db39c22ae16b7e75bd9 + public void absMoveTo(double x, double y, double z, float yaw, float pitch) { this.absMoveTo(x, y, z); - this.setYRot(yaw % 360.0F); + this.absRotateTo(yaw, pitch); diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index f0196c364934894e6fba98de8d8dcbf09d3644b8..2d91941eb780de588202113700f68cca853eb62b 100644 +index 2a25238dcd741f9a5d16b202902210244d9a1947..316d1ef3975aab5565078dad11a8f4ca8133c836 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -1817,13 +1817,29 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti - return flag; - } +@@ -1724,13 +1724,29 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab + + protected void playAttackSound() {} + // Gale start - JettPack - optimize sun burn tick - cache eye blockpos + private BlockPos cached_eye_blockpos; diff --git a/patches/server/0080-Reduce-lambda-and-Optional-allocation-in-EntityBased.patch b/patches/server/0076-Reduce-lambda-and-Optional-allocation-in-EntityBased.patch similarity index 100% rename from patches/server/0080-Reduce-lambda-and-Optional-allocation-in-EntityBased.patch rename to patches/server/0076-Reduce-lambda-and-Optional-allocation-in-EntityBased.patch diff --git a/patches/server/0081-Replace-game-rules-map-with-optimized-collection.patch b/patches/server/0077-Replace-game-rules-map-with-optimized-collection.patch similarity index 100% rename from patches/server/0081-Replace-game-rules-map-with-optimized-collection.patch rename to patches/server/0077-Replace-game-rules-map-with-optimized-collection.patch diff --git a/patches/server/0082-Replace-class-map-with-optimized-collection.patch b/patches/server/0078-Replace-class-map-with-optimized-collection.patch similarity index 100% rename from patches/server/0082-Replace-class-map-with-optimized-collection.patch rename to patches/server/0078-Replace-class-map-with-optimized-collection.patch diff --git a/patches/server/0083-Replace-throttle-tracker-map-with-optimized-collecti.patch b/patches/server/0079-Replace-throttle-tracker-map-with-optimized-collecti.patch similarity index 81% rename from patches/server/0083-Replace-throttle-tracker-map-with-optimized-collecti.patch rename to patches/server/0079-Replace-throttle-tracker-map-with-optimized-collecti.patch index 33db1ef..9f8231b 100644 --- a/patches/server/0083-Replace-throttle-tracker-map-with-optimized-collecti.patch +++ b/patches/server/0079-Replace-throttle-tracker-map-with-optimized-collecti.patch @@ -33,37 +33,19 @@ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRA IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/main/java/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java -index 45a2683c9489bee6d67a1f3d702c17f2e9dc02e4..8e90f35218e66690359dac35828a1485a77f34c1 100644 +index ddf42645402afefc0f5caebc684b191eef9d6ec2..a1e39d4476e932da3d4e0c363ce22eb5be2b8e6c 100644 --- a/src/main/java/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java -@@ -1,5 +1,7 @@ - package net.minecraft.server.network; - -+import it.unimi.dsi.fastutil.objects.Object2LongMap; -+import it.unimi.dsi.fastutil.objects.Object2LongOpenHashMap; - import net.minecraft.SharedConstants; - import net.minecraft.network.Connection; - import net.minecraft.network.chat.Component; -@@ -14,7 +16,8 @@ import net.minecraft.server.MinecraftServer; - - // CraftBukkit start - import java.net.InetAddress; --import java.util.HashMap; -+import java.util.Iterator; -+import java.util.Map; - // CraftBukkit end - - public class ServerHandshakePacketListenerImpl implements ServerHandshakePacketListener { -@@ -25,7 +28,7 @@ public class ServerHandshakePacketListenerImpl implements ServerHandshakePacketL +@@ -26,7 +26,7 @@ public class ServerHandshakePacketListenerImpl implements ServerHandshakePacketL static final java.util.regex.Pattern PROP_PATTERN = java.util.regex.Pattern.compile("\\w{0,16}"); // Spigot end // CraftBukkit start - add fields - private static final HashMap throttleTracker = new HashMap(); -+ private static final Object2LongOpenHashMap throttleTracker = new Object2LongOpenHashMap<>(); // Gale - Dionysus - replace throttle tracker map with optimized collection ++ private static final it.unimi.dsi.fastutil.objects.Object2LongMap throttleTracker = new it.unimi.dsi.fastutil.objects.Object2LongOpenHashMap<>(); // Gale - Dionysus - replace throttle tracker map with optimized collection private static int throttleCounter = 0; // CraftBukkit end private static final Component IGNORE_STATUS_REASON = Component.translatable("disconnect.ignoring_status_request"); -@@ -86,7 +89,7 @@ public class ServerHandshakePacketListenerImpl implements ServerHandshakePacketL +@@ -87,7 +87,7 @@ public class ServerHandshakePacketListenerImpl implements ServerHandshakePacketL InetAddress address = ((java.net.InetSocketAddress) this.connection.getRemoteAddress()).getAddress(); synchronized (ServerHandshakePacketListenerImpl.throttleTracker) { @@ -72,7 +54,7 @@ index 45a2683c9489bee6d67a1f3d702c17f2e9dc02e4..8e90f35218e66690359dac35828a1485 ServerHandshakePacketListenerImpl.throttleTracker.put(address, currentTime); Component chatmessage = io.papermc.paper.adventure.PaperAdventure.asVanilla(io.papermc.paper.configuration.GlobalConfiguration.get().messages.kick.connectionThrottle); // Paper - Configurable connection throttle kick message this.connection.send(new ClientboundLoginDisconnectPacket(chatmessage)); -@@ -100,13 +103,7 @@ public class ServerHandshakePacketListenerImpl implements ServerHandshakePacketL +@@ -101,13 +101,7 @@ public class ServerHandshakePacketListenerImpl implements ServerHandshakePacketL ServerHandshakePacketListenerImpl.throttleCounter = 0; // Cleanup stale entries diff --git a/patches/server/0084-Avoid-Class-isAssignableFrom-call-in-ClassInstanceMu.patch b/patches/server/0080-Avoid-Class-isAssignableFrom-call-in-ClassInstanceMu.patch similarity index 100% rename from patches/server/0084-Avoid-Class-isAssignableFrom-call-in-ClassInstanceMu.patch rename to patches/server/0080-Avoid-Class-isAssignableFrom-call-in-ClassInstanceMu.patch diff --git a/patches/server/0085-Cache-BlockStatePairKey-hash.patch b/patches/server/0081-Cache-BlockStatePairKey-hash.patch similarity index 90% rename from patches/server/0085-Cache-BlockStatePairKey-hash.patch rename to patches/server/0081-Cache-BlockStatePairKey-hash.patch index 26ffb14..6f84d8f 100644 --- a/patches/server/0085-Cache-BlockStatePairKey-hash.patch +++ b/patches/server/0081-Cache-BlockStatePairKey-hash.patch @@ -13,10 +13,10 @@ As part of: Lithium (https://github.com/CaffeineMC/lithium-fabric) Licensed under: LGPL-3.0 (https://www.gnu.org/licenses/lgpl-3.0.html) 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 cf8b8c8efd1c9c81eb5f02d75bd75875eb66771f..d195687595d021423478d8e339659b2c0ec9c7e0 100644 +index 45704653310efe9cb755a644674b54b8722c2c84..dbfee1647c564e833eb23a3b90ad0f1cb78edfb5 100644 --- a/src/main/java/net/minecraft/world/level/block/Block.java +++ b/src/main/java/net/minecraft/world/level/block/Block.java -@@ -603,11 +603,18 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -600,11 +600,18 @@ public class Block extends BlockBehaviour implements ItemLike { private final BlockState first; private final BlockState second; private final Direction direction; @@ -35,7 +35,7 @@ index cf8b8c8efd1c9c81eb5f02d75bd75875eb66771f..d195687595d021423478d8e339659b2c } public boolean equals(Object object) { -@@ -623,11 +630,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -620,11 +627,7 @@ public class Block extends BlockBehaviour implements ItemLike { } public int hashCode() { diff --git a/patches/server/0086-Cache-CubeVoxelShape-shape-array.patch b/patches/server/0082-Cache-CubeVoxelShape-shape-array.patch similarity index 72% rename from patches/server/0086-Cache-CubeVoxelShape-shape-array.patch rename to patches/server/0082-Cache-CubeVoxelShape-shape-array.patch index cdb083a..ac35f2f 100644 --- a/patches/server/0086-Cache-CubeVoxelShape-shape-array.patch +++ b/patches/server/0082-Cache-CubeVoxelShape-shape-array.patch @@ -13,27 +13,22 @@ As part of: Lithium (https://github.com/CaffeineMC/lithium-fabric) Licensed under: LGPL-3.0 (https://www.gnu.org/licenses/lgpl-3.0.html) diff --git a/src/main/java/net/minecraft/world/phys/shapes/CubeVoxelShape.java b/src/main/java/net/minecraft/world/phys/shapes/CubeVoxelShape.java -index b9af1d14c7815c99273bce8165cf384d669c1a75..93cc8fed22e21f45722f6de30a197b2aaacb1f44 100644 +index d812949c7329ae2696b38dc792fa011ba87decb9..746e9e280eb47356475484eb1f658c0728cd65cf 100644 --- a/src/main/java/net/minecraft/world/phys/shapes/CubeVoxelShape.java +++ b/src/main/java/net/minecraft/world/phys/shapes/CubeVoxelShape.java -@@ -3,8 +3,13 @@ package net.minecraft.world.phys.shapes; - import it.unimi.dsi.fastutil.doubles.DoubleList; - import net.minecraft.core.Direction; +@@ -5,13 +5,24 @@ import net.minecraft.core.Direction; import net.minecraft.util.Mth; -+import org.jetbrains.annotations.NotNull; -+import org.jetbrains.annotations.Nullable; public final class CubeVoxelShape extends VoxelShape { + -+ private @NotNull DoubleList @Nullable [] list; // Gale - Lithium - cache CubeVoxelShape shape array ++ private @org.jetbrains.annotations.NotNull DoubleList @org.jetbrains.annotations.Nullable [] list; // Gale - Lithium - cache CubeVoxelShape shape array + protected CubeVoxelShape(DiscreteVoxelShape voxels) { super(voxels); - this.initCache(); // Paper - optimise collisions -@@ -12,7 +17,15 @@ public final class CubeVoxelShape extends VoxelShape { + } @Override - protected DoubleList getCoords(Direction.Axis axis) { + public DoubleList getCoords(Direction.Axis axis) { - return new CubePointRange(this.shape.getSize(axis)); + // Gale start - Lithium - cache CubeVoxelShape shape array + if (this.list == null) { diff --git a/patches/server/0087-Replace-division-by-multiplication-in-CubePointRange.patch b/patches/server/0083-Replace-division-by-multiplication-in-CubePointRange.patch similarity index 92% rename from patches/server/0087-Replace-division-by-multiplication-in-CubePointRange.patch rename to patches/server/0083-Replace-division-by-multiplication-in-CubePointRange.patch index 1b370c1..8b8bfda 100644 --- a/patches/server/0087-Replace-division-by-multiplication-in-CubePointRange.patch +++ b/patches/server/0083-Replace-division-by-multiplication-in-CubePointRange.patch @@ -13,7 +13,7 @@ As part of: Lithium (https://github.com/CaffeineMC/lithium-fabric) Licensed under: LGPL-3.0 (https://www.gnu.org/licenses/lgpl-3.0.html) diff --git a/src/main/java/net/minecraft/world/phys/shapes/CubePointRange.java b/src/main/java/net/minecraft/world/phys/shapes/CubePointRange.java -index a544db042c8d2ecec8d323770552c4f10ca758a6..e7bffb7f757dbeac255676823de6464329f2f535 100644 +index ad02cdb00360165f6405eb3044bd8320f01a7ef1..0b6f3fca7e7b8f2f7cfa0c8f01068f234888f66d 100644 --- a/src/main/java/net/minecraft/world/phys/shapes/CubePointRange.java +++ b/src/main/java/net/minecraft/world/phys/shapes/CubePointRange.java @@ -4,6 +4,7 @@ import it.unimi.dsi.fastutil.doubles.AbstractDoubleList; @@ -22,7 +22,7 @@ index a544db042c8d2ecec8d323770552c4f10ca758a6..e7bffb7f757dbeac255676823de64643 private final int parts; + private final double scale; // Gale - Lithium - replace division by multiplication in CubePointRange - CubePointRange(int sectionCount) { + public CubePointRange(int sectionCount) { if (sectionCount <= 0) { @@ -11,10 +12,11 @@ public class CubePointRange extends AbstractDoubleList { } else { diff --git a/patches/server/0088-Replace-parts-by-size-in-CubePointRange.patch b/patches/server/0084-Replace-parts-by-size-in-CubePointRange.patch similarity index 91% rename from patches/server/0088-Replace-parts-by-size-in-CubePointRange.patch rename to patches/server/0084-Replace-parts-by-size-in-CubePointRange.patch index 7672615..7467ab0 100644 --- a/patches/server/0088-Replace-parts-by-size-in-CubePointRange.patch +++ b/patches/server/0084-Replace-parts-by-size-in-CubePointRange.patch @@ -7,7 +7,7 @@ License: LGPL-3.0 (https://www.gnu.org/licenses/lgpl-3.0.html) Gale - https://galemc.org diff --git a/src/main/java/net/minecraft/world/phys/shapes/CubePointRange.java b/src/main/java/net/minecraft/world/phys/shapes/CubePointRange.java -index e7bffb7f757dbeac255676823de6464329f2f535..55d4160b6bf9718d475e4bc7cecf048d62e00b82 100644 +index 0b6f3fca7e7b8f2f7cfa0c8f01068f234888f66d..2ac87dfb3d9756c0bf63d5a81470efad5b826371 100644 --- a/src/main/java/net/minecraft/world/phys/shapes/CubePointRange.java +++ b/src/main/java/net/minecraft/world/phys/shapes/CubePointRange.java @@ -3,14 +3,14 @@ package net.minecraft.world.phys.shapes; @@ -18,7 +18,7 @@ index e7bffb7f757dbeac255676823de6464329f2f535..55d4160b6bf9718d475e4bc7cecf048d + private final int size; // Gale - replace parts by size in CubePointRange private final double scale; // Gale - Lithium - replace division by multiplication in CubePointRange - CubePointRange(int sectionCount) { + public CubePointRange(int sectionCount) { if (sectionCount <= 0) { throw new IllegalArgumentException("Need at least 1 part"); } else { diff --git a/patches/server/0089-Check-frozen-ticks-before-landing-block.patch b/patches/server/0085-Check-frozen-ticks-before-landing-block.patch similarity index 81% rename from patches/server/0089-Check-frozen-ticks-before-landing-block.patch rename to patches/server/0085-Check-frozen-ticks-before-landing-block.patch index 64948ad..0dab4c8 100644 --- a/patches/server/0089-Check-frozen-ticks-before-landing-block.patch +++ b/patches/server/0085-Check-frozen-ticks-before-landing-block.patch @@ -13,10 +13,10 @@ As part of: Lithium (https://github.com/CaffeineMC/lithium-fabric) Licensed under: LGPL-3.0 (https://www.gnu.org/licenses/lgpl-3.0.html) diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 70f1aec3e396561b111696b7ddc31ce848702671..4c35356e5a0f5901e640ca0657c0b92d29be766e 100644 +index 6c0772f4bb5060d5c9649918257838594a582e65..b7c02647d7d143e2462057792bafed96648973d7 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -594,11 +594,10 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -565,11 +565,10 @@ public abstract class LivingEntity extends Entity implements Attackable { } protected void tryAddFrost() { @@ -29,9 +29,9 @@ index 70f1aec3e396561b111696b7ddc31ce848702671..4c35356e5a0f5901e640ca0657c0b92d if (attributemodifiable == null) { return; -@@ -608,7 +607,6 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -579,7 +578,6 @@ public abstract class LivingEntity extends Entity implements Attackable { - attributemodifiable.addTransientModifier(new AttributeModifier(LivingEntity.SPEED_MODIFIER_POWDER_SNOW_UUID, "Powder snow slow", (double) f, AttributeModifier.Operation.ADD_VALUE)); + attributemodifiable.addTransientModifier(new AttributeModifier(LivingEntity.SPEED_MODIFIER_POWDER_SNOW_ID, (double) f, AttributeModifier.Operation.ADD_VALUE)); } - } diff --git a/patches/server/0090-Faster-chunk-serialization.patch b/patches/server/0086-Faster-chunk-serialization.patch similarity index 95% rename from patches/server/0090-Faster-chunk-serialization.patch rename to patches/server/0086-Faster-chunk-serialization.patch index 3dbb44c..4e47fd8 100644 --- a/patches/server/0090-Faster-chunk-serialization.patch +++ b/patches/server/0086-Faster-chunk-serialization.patch @@ -214,7 +214,7 @@ index 0000000000000000000000000000000000000000..349618b7f544bf9a30e0796d4d9a2640 + } +} diff --git a/src/main/java/net/minecraft/util/BitStorage.java b/src/main/java/net/minecraft/util/BitStorage.java -index 8bafd5fd7499ba4a04bf706cfd1e156073716e21..b7df9eac4ee23fa489368af82ec9c07dea6ebd75 100644 +index 68648c5a5e3ff079f832092af0f2f801c42d1ede..5a85e499aeb02885cab5ba7d571d6f6ae470bce8 100644 --- a/src/main/java/net/minecraft/util/BitStorage.java +++ b/src/main/java/net/minecraft/util/BitStorage.java @@ -1,6 +1,7 @@ @@ -225,15 +225,15 @@ index 8bafd5fd7499ba4a04bf706cfd1e156073716e21..b7df9eac4ee23fa489368af82ec9c07d public interface BitStorage { int getAndSet(int index, int value); -@@ -31,4 +32,6 @@ public interface BitStorage { +@@ -20,4 +21,6 @@ public interface BitStorage { + void unpack(int[] out); - } - // Paper end + BitStorage copy(); + + void compact(Palette srcPalette, Palette dstPalette, short[] out); // Gale - Lithium - faster chunk serialization } diff --git a/src/main/java/net/minecraft/util/SimpleBitStorage.java b/src/main/java/net/minecraft/util/SimpleBitStorage.java -index 8d7d763bf51cac556057645e6169c9447993189b..7846273b7e3519ad276373d8a2066856473b9e69 100644 +index 9f438d9c6eb05e43d24e4af68188a3d4c46a938c..0af2e2cc59db228e01afa880f83c2024dade4ff0 100644 --- a/src/main/java/net/minecraft/util/SimpleBitStorage.java +++ b/src/main/java/net/minecraft/util/SimpleBitStorage.java @@ -2,6 +2,7 @@ package net.minecraft.util; @@ -244,7 +244,7 @@ index 8d7d763bf51cac556057645e6169c9447993189b..7846273b7e3519ad276373d8a2066856 import org.apache.commons.lang3.Validate; public class SimpleBitStorage implements BitStorage { -@@ -389,4 +390,45 @@ public class SimpleBitStorage implements BitStorage { +@@ -367,4 +368,45 @@ public class SimpleBitStorage implements BitStorage { super(message); } } @@ -291,23 +291,15 @@ index 8d7d763bf51cac556057645e6169c9447993189b..7846273b7e3519ad276373d8a2066856 + } diff --git a/src/main/java/net/minecraft/util/ZeroBitStorage.java b/src/main/java/net/minecraft/util/ZeroBitStorage.java -index f1b8e746fea603ebadcef7aff1b83677fea32137..5ca2190235bbc13448f716f33e294503fbce1ebe 100644 +index 50040c497a819cd1229042ab3cb057d34a32cacc..64f906110a6cea49db69377e8869bda7c841f1d5 100644 --- a/src/main/java/net/minecraft/util/ZeroBitStorage.java +++ b/src/main/java/net/minecraft/util/ZeroBitStorage.java -@@ -2,6 +2,7 @@ package net.minecraft.util; - - import java.util.Arrays; - import java.util.function.IntConsumer; -+import net.minecraft.world.level.chunk.Palette; - - import me.titaniumtown.ArrayConstants; - -@@ -72,4 +73,6 @@ public class ZeroBitStorage implements BitStorage { +@@ -62,4 +62,6 @@ public class ZeroBitStorage implements BitStorage { public BitStorage copy() { return this; } + -+ @Override public void compact(Palette srcPalette, Palette dstPalette, short[] out) {} // Gale - Lithium - faster chunk serialization ++ @Override public void compact(net.minecraft.world.level.chunk.Palette srcPalette, net.minecraft.world.level.chunk.Palette dstPalette, short[] out) {} // Gale - Lithium - faster chunk serialization } diff --git a/src/main/java/net/minecraft/world/level/chunk/PaletteResize.java b/src/main/java/net/minecraft/world/level/chunk/PaletteResize.java index acae3eb30e0689048937f479dc3070f0688abdad..4b79f0474a9013dd4fdb68c6363ca1942ba8b007 100644 @@ -321,7 +313,7 @@ index acae3eb30e0689048937f479dc3070f0688abdad..4b79f0474a9013dd4fdb68c6363ca194 int onResize(int newBits, T object); } diff --git a/src/main/java/net/minecraft/world/level/chunk/PalettedContainer.java b/src/main/java/net/minecraft/world/level/chunk/PalettedContainer.java -index 81368bf186365878db2e1ed305bb7bf36c26f61f..6402665ae8cc8664921ae0298e8b6fa4c31d8b23 100644 +index 926c81a25180d508d662eb3fa35f771636164694..82ad713eede4bca015a5b4b1d5fd9b02f0e75a47 100644 --- a/src/main/java/net/minecraft/world/level/chunk/PalettedContainer.java +++ b/src/main/java/net/minecraft/world/level/chunk/PalettedContainer.java @@ -23,8 +23,25 @@ import net.minecraft.util.Mth; diff --git a/patches/server/0091-Update-boss-bar-within-tick.patch b/patches/server/0087-Update-boss-bar-within-tick.patch similarity index 91% rename from patches/server/0091-Update-boss-bar-within-tick.patch rename to patches/server/0087-Update-boss-bar-within-tick.patch index ec71aa1..2ae331a 100644 --- a/patches/server/0091-Update-boss-bar-within-tick.patch +++ b/patches/server/0087-Update-boss-bar-within-tick.patch @@ -13,10 +13,10 @@ As part of: Lithium (https://github.com/CaffeineMC/lithium-fabric) Licensed under: LGPL-3.0 (https://www.gnu.org/licenses/lgpl-3.0.html) diff --git a/src/main/java/net/minecraft/world/entity/raid/Raid.java b/src/main/java/net/minecraft/world/entity/raid/Raid.java -index fdff9788eaf663be79214b2ca491f0f0444f6136..774da40408225b0961b4dea50c4358a03d58b2ff 100644 +index dcbef04bbaab988096bf416163264833e84d1967..5c0e5803284bfc82c2dd8bba9ded0ba7aac4962a 100644 --- a/src/main/java/net/minecraft/world/entity/raid/Raid.java +++ b/src/main/java/net/minecraft/world/entity/raid/Raid.java -@@ -115,6 +115,7 @@ public class Raid { +@@ -112,6 +112,7 @@ public class Raid { private static final org.bukkit.craftbukkit.persistence.CraftPersistentDataTypeRegistry PDC_TYPE_REGISTRY = new org.bukkit.craftbukkit.persistence.CraftPersistentDataTypeRegistry(); public final org.bukkit.craftbukkit.persistence.CraftPersistentDataContainer persistentDataContainer = new org.bukkit.craftbukkit.persistence.CraftPersistentDataContainer(PDC_TYPE_REGISTRY); // Paper end @@ -24,7 +24,7 @@ index fdff9788eaf663be79214b2ca491f0f0444f6136..774da40408225b0961b4dea50c4358a0 public Raid(int id, ServerLevel world, BlockPos pos) { this.raidEvent = new ServerBossEvent(Raid.RAID_NAME_COMPONENT, BossEvent.BossBarColor.RED, BossEvent.BossBarOverlay.NOTCHED_10); -@@ -294,6 +295,12 @@ public class Raid { +@@ -291,6 +292,12 @@ public class Raid { } public void tick() { @@ -37,7 +37,7 @@ index fdff9788eaf663be79214b2ca491f0f0444f6136..774da40408225b0961b4dea50c4358a0 if (!this.isStopped()) { if (this.status == Raid.RaidStatus.ONGOING) { boolean flag = this.active; -@@ -664,6 +671,12 @@ public class Raid { +@@ -661,6 +668,12 @@ public class Raid { } public void updateBossbar() { diff --git a/patches/server/0093-Cache-world-generator-sea-level.patch b/patches/server/0088-Cache-world-generator-sea-level.patch similarity index 90% rename from patches/server/0093-Cache-world-generator-sea-level.patch rename to patches/server/0088-Cache-world-generator-sea-level.patch index 9151222..b66aba3 100644 --- a/patches/server/0093-Cache-world-generator-sea-level.patch +++ b/patches/server/0088-Cache-world-generator-sea-level.patch @@ -13,10 +13,10 @@ As part of: Lithium (https://github.com/CaffeineMC/lithium-fabric) Licensed under: LGPL-3.0 (https://www.gnu.org/licenses/lgpl-3.0.html) diff --git a/src/main/java/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java b/src/main/java/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java -index 8ce870a5341a61fbbaf42021ef7f7f615a6a3e09..0b8c15b079f9b57876692e272b3535cfb125829b 100644 +index 68be0d51aa64b5d917fb53dbbbdf8966d4f4abd8..c991da3d975e07f3e1e59d5b2e91ed629ea608e6 100644 --- a/src/main/java/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java +++ b/src/main/java/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java -@@ -62,12 +62,17 @@ public final class NoiseBasedChunkGenerator extends ChunkGenerator { +@@ -61,12 +61,17 @@ public final class NoiseBasedChunkGenerator extends ChunkGenerator { private static final BlockState AIR = Blocks.AIR.defaultBlockState(); public final Holder settings; private final Supplier globalFluidPicker; @@ -35,7 +35,7 @@ index 8ce870a5341a61fbbaf42021ef7f7f615a6a3e09..0b8c15b079f9b57876692e272b3535cf }); } -@@ -394,7 +399,7 @@ public final class NoiseBasedChunkGenerator extends ChunkGenerator { +@@ -409,7 +414,7 @@ public final class NoiseBasedChunkGenerator extends ChunkGenerator { @Override public int getSeaLevel() { diff --git a/patches/server/0094-Skip-secondary-POI-sensor-if-absent.patch b/patches/server/0089-Skip-secondary-POI-sensor-if-absent.patch similarity index 100% rename from patches/server/0094-Skip-secondary-POI-sensor-if-absent.patch rename to patches/server/0089-Skip-secondary-POI-sensor-if-absent.patch diff --git a/patches/server/0096-Skip-entity-move-if-movement-is-zero.patch b/patches/server/0090-Skip-entity-move-if-movement-is-zero.patch similarity index 80% rename from patches/server/0096-Skip-entity-move-if-movement-is-zero.patch rename to patches/server/0090-Skip-entity-move-if-movement-is-zero.patch index 9875f11..7b2c3ba 100644 --- a/patches/server/0096-Skip-entity-move-if-movement-is-zero.patch +++ b/patches/server/0090-Skip-entity-move-if-movement-is-zero.patch @@ -13,10 +13,10 @@ As part of: VMP (https://github.com/RelativityMC/VMP-fabric) Licensed under: MIT (https://opensource.org/licenses/MIT) diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index b97253a6b43d4db39c22ae16b7e75bd95fb9d958..23350a4046a4071ef87f65b7341572a2bff0e8eb 100644 +index a5e51025e6c2d5fea903b7c1d950ba430966d36d..db0be6ca1ae9c78b8143a7f6a13889d68a0afe38 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -319,6 +319,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -323,6 +323,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public float yRotO; public float xRotO; private AABB bb; @@ -24,8 +24,8 @@ index b97253a6b43d4db39c22ae16b7e75bd95fb9d958..23350a4046a4071ef87f65b7341572a2 public boolean onGround; public boolean horizontalCollision; public boolean verticalCollision; -@@ -1129,6 +1130,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - // Paper end - detailed watchdog information +@@ -1033,6 +1034,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess + } public void move(MoverType movementType, Vec3 movement) { + // Gale start - VMP - skip entity move if movement is zero @@ -34,9 +34,9 @@ index b97253a6b43d4db39c22ae16b7e75bd95fb9d958..23350a4046a4071ef87f65b7341572a2 + } + // Gale end - VMP - skip entity move if movement is zero final Vec3 originalMovement = movement; // Paper - Expose pre-collision velocity - // Paper start - detailed watchdog information - io.papermc.paper.util.TickThread.ensureTickThread("Cannot move an entity off-main"); -@@ -4145,6 +4151,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess + if (this.noPhysics) { + this.setPos(this.getX() + movement.x, this.getY() + movement.y, this.getZ() + movement.z); +@@ -3954,6 +3960,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public final void setBoundingBox(AABB boundingBox) { diff --git a/patches/server/0097-Store-mob-counts-in-an-array.patch b/patches/server/0091-Store-mob-counts-in-an-array.patch similarity index 94% rename from patches/server/0097-Store-mob-counts-in-an-array.patch rename to patches/server/0091-Store-mob-counts-in-an-array.patch index 8948cf9..fb3ca29 100644 --- a/patches/server/0097-Store-mob-counts-in-an-array.patch +++ b/patches/server/0091-Store-mob-counts-in-an-array.patch @@ -13,7 +13,7 @@ As part of: VMP (https://github.com/RelativityMC/VMP-fabric) Licensed under: MIT (https://opensource.org/licenses/MIT) diff --git a/src/main/java/net/minecraft/world/level/LocalMobCapCalculator.java b/src/main/java/net/minecraft/world/level/LocalMobCapCalculator.java -index 09199c574169057ae6e52ee7df277c03fa6ba5c2..3f0c84cf120e71259adc726579b2a23b3c56abbe 100644 +index 2039b16e5e9bc0797b3f31081d221bb8b34a4dc7..ceab64ea37f69c254680a8bdd6d2a596d94cb7dc 100644 --- a/src/main/java/net/minecraft/world/level/LocalMobCapCalculator.java +++ b/src/main/java/net/minecraft/world/level/LocalMobCapCalculator.java @@ -42,14 +42,14 @@ public class LocalMobCapCalculator { diff --git a/patches/server/0098-Use-linked-map-for-entity-trackers.patch b/patches/server/0092-Use-linked-map-for-entity-trackers.patch similarity index 60% rename from patches/server/0098-Use-linked-map-for-entity-trackers.patch rename to patches/server/0092-Use-linked-map-for-entity-trackers.patch index 162563e..52d095e 100644 --- a/patches/server/0098-Use-linked-map-for-entity-trackers.patch +++ b/patches/server/0092-Use-linked-map-for-entity-trackers.patch @@ -13,23 +13,15 @@ As part of: VMP (https://github.com/RelativityMC/VMP-fabric) Licensed under: MIT (https://opensource.org/licenses/MIT) diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index aaff62e2706b67772684193a9d05ebda1ff9e343..a2c5b824a3126f0c7970550f509db9407c66ee28 100644 +index aa6927ad7ea10b64693a069202366a051183e878..b8bcba9380cbcc08ac7ebed170c58b091691777e 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -13,6 +13,7 @@ import com.mojang.datafixers.DataFixer; - import com.mojang.logging.LogUtils; - import com.mojang.serialization.DataResult; - import com.mojang.serialization.JsonOps; -+import it.unimi.dsi.fastutil.ints.Int2ObjectLinkedOpenHashMap; - import it.unimi.dsi.fastutil.ints.Int2ObjectMap; - import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; - import it.unimi.dsi.fastutil.longs.Long2ByteMap; -@@ -253,7 +254,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider - // Paper - rewrite chunk system +@@ -228,7 +228,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider + this.toDrop = new LongOpenHashSet(); this.tickingGenerated = new AtomicInteger(); this.playerMap = new PlayerMap(); - this.entityMap = new Int2ObjectOpenHashMap(); -+ this.entityMap = new Int2ObjectLinkedOpenHashMap(); // Gale - VMP - use linked map for entity trackers - provides faster iteration ++ this.entityMap = new it.unimi.dsi.fastutil.ints.Int2ObjectLinkedOpenHashMap(); // Gale - VMP - use linked map for entity trackers - provides faster iteration this.chunkTypeCache = new Long2ByteOpenHashMap(); this.chunkSaveCooldowns = new Long2LongOpenHashMap(); - this.unloadQueue = Queues.newConcurrentLinkedQueue(); + // Paper - rewrite chunk system diff --git a/patches/server/0099-Optimize-noise-generation.patch b/patches/server/0093-Optimize-noise-generation.patch similarity index 100% rename from patches/server/0099-Optimize-noise-generation.patch rename to patches/server/0093-Optimize-noise-generation.patch diff --git a/patches/server/0100-Optimize-sheep-offspring-color.patch b/patches/server/0094-Optimize-sheep-offspring-color.patch similarity index 63% rename from patches/server/0100-Optimize-sheep-offspring-color.patch rename to patches/server/0094-Optimize-sheep-offspring-color.patch index 2f0c27b..5f087e5 100644 --- a/patches/server/0100-Optimize-sheep-offspring-color.patch +++ b/patches/server/0094-Optimize-sheep-offspring-color.patch @@ -46,52 +46,89 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/main/java/net/minecraft/world/entity/animal/Sheep.java b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -index 3ce86f952a18cae7fda1903916903b31a63a40b4..0dfc2ccd8f454d0252542312661f65f41a6209ab 100644 +index 38ac2759894660be1ee7ba59b0bd1270158e9232..eccb524111cec32ed55722817529e6ab992d381d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java +++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -@@ -421,7 +421,59 @@ public class Sheep extends Animal implements Shearable { +@@ -419,7 +419,96 @@ public class Sheep extends Animal implements Shearable { return super.finalizeSpawn(world, difficulty, spawnReason, entityData); } + // Gale start - carpet-fixes - optimize sheep offspring color + private static DyeColor properDye(DyeColor firstColor, DyeColor secondColor) { + if (firstColor.equals(secondColor)) return firstColor; -+ switch(firstColor) { ++ switch (firstColor) { + case WHITE -> { -+ switch(secondColor) { -+ case BLUE -> {return DyeColor.LIGHT_BLUE;} -+ case GRAY -> {return DyeColor.LIGHT_GRAY;} -+ case BLACK -> {return DyeColor.GRAY;} -+ case GREEN -> {return DyeColor.LIME;} -+ case RED -> {return DyeColor.PINK;} ++ switch (secondColor) { ++ case BLUE -> { ++ return DyeColor.LIGHT_BLUE; ++ } ++ case GRAY -> { ++ return DyeColor.LIGHT_GRAY; ++ } ++ case BLACK -> { ++ return DyeColor.GRAY; ++ } ++ case GREEN -> { ++ return DyeColor.LIME; ++ } ++ case RED -> { ++ return DyeColor.PINK; ++ } + } + } + case BLUE -> { -+ switch(secondColor) { -+ case WHITE -> {return DyeColor.LIGHT_BLUE;} -+ case GREEN -> {return DyeColor.CYAN;} -+ case RED -> {return DyeColor.PURPLE;} ++ switch (secondColor) { ++ case WHITE -> { ++ return DyeColor.LIGHT_BLUE; ++ } ++ case GREEN -> { ++ return DyeColor.CYAN; ++ } ++ case RED -> { ++ return DyeColor.PURPLE; ++ } + } + } + case RED -> { -+ switch(secondColor) { -+ case YELLOW -> {return DyeColor.ORANGE;} -+ case WHITE -> {return DyeColor.PINK;} -+ case BLUE -> {return DyeColor.PURPLE;} ++ switch (secondColor) { ++ case YELLOW -> { ++ return DyeColor.ORANGE; ++ } ++ case WHITE -> { ++ return DyeColor.PINK; ++ } ++ case BLUE -> { ++ return DyeColor.PURPLE; ++ } + } + } + case GREEN -> { -+ switch(secondColor) { -+ case BLUE -> {return DyeColor.CYAN;} -+ case WHITE -> {return DyeColor.LIME;} ++ switch (secondColor) { ++ case BLUE -> { ++ return DyeColor.CYAN; ++ } ++ case WHITE -> { ++ return DyeColor.LIME; ++ } + } + } -+ case YELLOW -> {if (secondColor.equals(DyeColor.RED)) return DyeColor.ORANGE;} -+ case PURPLE -> {if (secondColor.equals(DyeColor.PINK)) return DyeColor.MAGENTA;} -+ case PINK -> {if (secondColor.equals(DyeColor.PURPLE)) return DyeColor.MAGENTA;} -+ case GRAY -> {if (secondColor.equals(DyeColor.WHITE)) return DyeColor.LIGHT_GRAY;} -+ case BLACK -> {if (secondColor.equals(DyeColor.WHITE)) return DyeColor.GRAY;} ++ case YELLOW -> { ++ if (secondColor.equals(DyeColor.RED)) return DyeColor.ORANGE; ++ } ++ case PURPLE -> { ++ if (secondColor.equals(DyeColor.PINK)) return DyeColor.MAGENTA; ++ } ++ case PINK -> { ++ if (secondColor.equals(DyeColor.PURPLE)) return DyeColor.MAGENTA; ++ } ++ case GRAY -> { ++ if (secondColor.equals(DyeColor.WHITE)) return DyeColor.LIGHT_GRAY; ++ } ++ case BLACK -> { ++ if (secondColor.equals(DyeColor.WHITE)) return DyeColor.GRAY; ++ } + } ++ + return null; + } + // Gale end - carpet-fixes - optimize sheep offspring color @@ -99,16 +136,16 @@ index 3ce86f952a18cae7fda1903916903b31a63a40b4..0dfc2ccd8f454d0252542312661f65f4 private DyeColor getOffspringColor(Animal firstParent, Animal secondParent) { + // Gale start - carpet-fixes - optimize sheep offspring color + if (firstParent.level() != null && firstParent.level().galeConfig().smallOptimizations.useOptimizedSheepOffspringColor) { -+ DyeColor firstColor = ((Sheep)firstParent).getColor(); -+ DyeColor secondColor = ((Sheep)secondParent).getColor(); -+ DyeColor col = properDye(firstColor,secondColor); ++ DyeColor firstColor = ((Sheep) firstParent).getColor(); ++ DyeColor secondColor = ((Sheep) secondParent).getColor(); ++ DyeColor col = properDye(firstColor, secondColor); + if (col == null) col = this.level().random.nextBoolean() ? firstColor : secondColor; + return col; + } + // Gale end - carpet-fixes - optimize sheep offspring color DyeColor enumcolor = ((Sheep) firstParent).getColor(); DyeColor enumcolor1 = ((Sheep) secondParent).getColor(); - CraftingContainer inventorycrafting = Sheep.makeContainer(enumcolor, enumcolor1); + CraftingInput craftinginput = Sheep.makeCraftInput(enumcolor, enumcolor1); diff --git a/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java b/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java index 0f205f02ce0553fb1f8db8aa903861102a570708..19115238d0fd845a788446d88d9ec9a52762c367 100644 --- a/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java diff --git a/patches/server/0101-Hide-flames-on-entities-with-fire-resistance.patch b/patches/server/0095-Hide-flames-on-entities-with-fire-resistance.patch similarity index 94% rename from patches/server/0101-Hide-flames-on-entities-with-fire-resistance.patch rename to patches/server/0095-Hide-flames-on-entities-with-fire-resistance.patch index c02d04c..1b87439 100644 --- a/patches/server/0101-Hide-flames-on-entities-with-fire-resistance.patch +++ b/patches/server/0095-Hide-flames-on-entities-with-fire-resistance.patch @@ -13,10 +13,10 @@ As part of: Slice (https://github.com/Cryptite/Slice) Licensed under: MIT (https://opensource.org/licenses/MIT) diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 23350a4046a4071ef87f65b7341572a2bff0e8eb..4f8bd45ac7278f06d9af82d6d3e0882cfc830929 100644 +index db0be6ca1ae9c78b8143a7f6a13889d68a0afe38..4dd79b1595406dfd93b2dd6e2ef56f7bf4db65c6 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -934,7 +934,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -864,7 +864,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.checkBelowWorld(); if (!this.level().isClientSide) { diff --git a/patches/server/0102-Skip-cloning-advancement-criteria.patch b/patches/server/0096-Skip-cloning-advancement-criteria.patch similarity index 93% rename from patches/server/0102-Skip-cloning-advancement-criteria.patch rename to patches/server/0096-Skip-cloning-advancement-criteria.patch index dc88196..dd18333 100644 --- a/patches/server/0102-Skip-cloning-advancement-criteria.patch +++ b/patches/server/0096-Skip-cloning-advancement-criteria.patch @@ -13,7 +13,7 @@ As part of: Mirai (https://github.com/etil2jz/Mirai) Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) diff --git a/src/main/java/net/minecraft/advancements/Advancement.java b/src/main/java/net/minecraft/advancements/Advancement.java -index 6d04be3a75df1f847389b985c9b1c0330c9e2415..fd7057487e4c86ff584ceb30c08b26b0fde5caad 100644 +index fb4b7652c386fa10783d71899615723a958ffd56..8045b17eed344e4bcdd02adba1d63904b6562cde 100644 --- a/src/main/java/net/minecraft/advancements/Advancement.java +++ b/src/main/java/net/minecraft/advancements/Advancement.java @@ -60,7 +60,7 @@ public record Advancement( diff --git a/patches/server/0103-Reduce-block-destruction-packet-allocations.patch b/patches/server/0097-Reduce-block-destruction-packet-allocations.patch similarity index 86% rename from patches/server/0103-Reduce-block-destruction-packet-allocations.patch rename to patches/server/0097-Reduce-block-destruction-packet-allocations.patch index a811bab..f7223e6 100644 --- a/patches/server/0103-Reduce-block-destruction-packet-allocations.patch +++ b/patches/server/0097-Reduce-block-destruction-packet-allocations.patch @@ -13,10 +13,10 @@ As part of: SportPaper (https://github.com/Electroid/SportPaper) Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 44424717623aa45c00dc69b23fc9741117650de3..cf51f108753a19e3ab97a6df3e5cecaa4d39f293 100644 +index e01481a889877ba898a8af9a13e4f83c842a18c6..9e663983f3f9f73d49ebf8b7d77f995e14440ce4 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1743,7 +1743,17 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1483,7 +1483,17 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @Override public void destroyBlockProgress(int entityId, BlockPos pos, int progress) { @@ -35,7 +35,7 @@ index 44424717623aa45c00dc69b23fc9741117650de3..cf51f108753a19e3ab97a6df3e5cecaa // CraftBukkit start Player entityhuman = null; -@@ -1777,7 +1787,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1517,7 +1527,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. // CraftBukkit end if (d0 * d0 + d1 * d1 + d2 * d2 < 1024.0D) { diff --git a/patches/server/0104-Spread-out-sending-all-player-info.patch b/patches/server/0098-Spread-out-sending-all-player-info.patch similarity index 91% rename from patches/server/0104-Spread-out-sending-all-player-info.patch rename to patches/server/0098-Spread-out-sending-all-player-info.patch index 1e8cf3a..521b934 100644 --- a/patches/server/0104-Spread-out-sending-all-player-info.patch +++ b/patches/server/0098-Spread-out-sending-all-player-info.patch @@ -37,7 +37,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index d502cc7221851e92b6f9d1522d33e9817ff18f6f..a4e813aeae443aecf78515d3759b2a65fd14f8ea 100644 +index fa4ca096dfd3afe8868b76a8576f0f2882f139ca..44990dfc60126bf6bb88679dfbebb09d3ca1473a 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -13,6 +13,8 @@ import java.net.SocketAddress; @@ -49,7 +49,7 @@ index d502cc7221851e92b6f9d1522d33e9817ff18f6f..a4e813aeae443aecf78515d3759b2a65 import java.util.Collection; import java.util.EnumSet; import java.util.Iterator; -@@ -136,10 +138,11 @@ public abstract class PlayerList { +@@ -134,10 +136,11 @@ public abstract class PlayerList { public static final Component CHAT_FILTERED_FULL = Component.translatable("chat.filtered_full"); public static final Component DUPLICATE_LOGIN_DISCONNECT_MESSAGE = Component.translatable("multiplayer.disconnect.duplicate_login"); private static final Logger LOGGER = LogUtils.getLogger(); @@ -62,7 +62,7 @@ index d502cc7221851e92b6f9d1522d33e9817ff18f6f..a4e813aeae443aecf78515d3759b2a65 private final Map playersByUUID = Maps.newHashMap(); private final UserBanList bans; private final IpBanList ipBans; -@@ -330,6 +333,7 @@ public abstract class PlayerList { +@@ -328,6 +331,7 @@ public abstract class PlayerList { // entityplayer.connection.send(ClientboundPlayerInfoUpdatePacket.createPlayerInitializing(this.players)); // CraftBukkit - replaced with loop below this.players.add(player); @@ -70,7 +70,7 @@ index d502cc7221851e92b6f9d1522d33e9817ff18f6f..a4e813aeae443aecf78515d3759b2a65 this.playersByName.put(player.getScoreboardName().toLowerCase(java.util.Locale.ROOT), player); // Spigot this.playersByUUID.put(player.getUUID(), player); // this.broadcastAll(ClientboundPlayerInfoUpdatePacket.createPlayerInitializing(List.of(entityplayer))); // CraftBukkit - replaced with loop below -@@ -669,6 +673,7 @@ public abstract class PlayerList { +@@ -660,6 +664,7 @@ public abstract class PlayerList { entityplayer.retireScheduler(); // Paper - Folia schedulers entityplayer.getAdvancements().stopListening(); this.players.remove(entityplayer); @@ -78,23 +78,23 @@ index d502cc7221851e92b6f9d1522d33e9817ff18f6f..a4e813aeae443aecf78515d3759b2a65 this.playersByName.remove(entityplayer.getScoreboardName().toLowerCase(java.util.Locale.ROOT)); // Spigot this.server.getCustomBossEvents().onPlayerDisconnect(entityplayer); UUID uuid = entityplayer.getUUID(); -@@ -831,6 +836,7 @@ public abstract class PlayerList { - // Paper end - Expand PlayerRespawnEvent +@@ -816,6 +821,7 @@ public abstract class PlayerList { + public ServerPlayer respawn(ServerPlayer entityplayer, boolean flag, Entity.RemovalReason entity_removalreason, RespawnReason reason, Location location) { entityplayer.stopRiding(); // CraftBukkit this.players.remove(entityplayer); + this.removeFromSendAllPlayerInfoBuckets(entityplayer); // Gale - Purpur - spread out sending all player info this.playersByName.remove(entityplayer.getScoreboardName().toLowerCase(java.util.Locale.ROOT)); // Spigot - entityplayer.serverLevel().removePlayerImmediately(entityplayer, Entity.RemovalReason.DISCARDED); - BlockPos blockposition = entityplayer.getRespawnPosition(); -@@ -967,6 +973,7 @@ public abstract class PlayerList { + entityplayer.serverLevel().removePlayerImmediately(entityplayer, entity_removalreason); + /* CraftBukkit start +@@ -897,6 +903,7 @@ public abstract class PlayerList { if (!entityplayer.connection.isDisconnected()) { - worldserver1.addRespawnedPlayer(entityplayer1); + worldserver.addRespawnedPlayer(entityplayer1); this.players.add(entityplayer1); + this.addToSendAllPlayerInfoBuckets(entityplayer1); // Gale - Purpur - spread out sending all player info this.playersByName.put(entityplayer1.getScoreboardName().toLowerCase(java.util.Locale.ROOT), entityplayer1); // Spigot this.playersByUUID.put(entityplayer1.getUUID(), entityplayer1); } -@@ -1025,20 +1032,55 @@ public abstract class PlayerList { +@@ -975,20 +982,55 @@ public abstract class PlayerList { this.sendPlayerPermissionLevel(player, i, recalculatePermissions); // Paper - avoid recalculating permissions if possible } @@ -157,10 +157,10 @@ index d502cc7221851e92b6f9d1522d33e9817ff18f6f..a4e813aeae443aecf78515d3759b2a65 } diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index f4f45fa391c36f66abdf1c16c0f3e31f5dda1c1a..82d3fdc8fb10724c40015349b0ddc60143dc86b2 100644 +index e513e17f460927fcffd029bb3b3357ca85aa514d..f136510042db4c40a486b2ee3ed7e91a90bd9424 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -38,6 +38,7 @@ import net.minecraft.network.syncher.SynchedEntityData; +@@ -39,6 +39,7 @@ import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; @@ -168,7 +168,7 @@ index f4f45fa391c36f66abdf1c16c0f3e31f5dda1c1a..82d3fdc8fb10724c40015349b0ddc601 import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; -@@ -206,12 +207,15 @@ public abstract class Player extends LivingEntity { +@@ -207,12 +208,15 @@ public abstract class Player extends LivingEntity { } // CraftBukkit end diff --git a/patches/server/0105-Optimize-player-list-for-sending-player-info.patch b/patches/server/0099-Optimize-player-list-for-sending-player-info.patch similarity index 95% rename from patches/server/0105-Optimize-player-list-for-sending-player-info.patch rename to patches/server/0099-Optimize-player-list-for-sending-player-info.patch index 0a2aeae..6ee6252 100644 --- a/patches/server/0105-Optimize-player-list-for-sending-player-info.patch +++ b/patches/server/0099-Optimize-player-list-for-sending-player-info.patch @@ -37,10 +37,10 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index a4e813aeae443aecf78515d3759b2a65fd14f8ea..4eff57762a83b6e60fd5ad6cd71dcecf786b10d1 100644 +index 44990dfc60126bf6bb88679dfbebb09d3ca1473a..98efc69c911dd7cdce6c945d1bfebbefc0bbd154 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1068,14 +1068,18 @@ public abstract class PlayerList { +@@ -1018,14 +1018,18 @@ public abstract class PlayerList { // Gale start - Purpur - spread out sending all player info ServerPlayer[] sendAllPlayerInfoBucket = this.sendAllPlayerInfoBuckets[this.sendAllPlayerInfoIn]; if (sendAllPlayerInfoBucket != null) { diff --git a/patches/server/0106-Skip-PlayerCommandSendEvent-if-there-are-no-listener.patch b/patches/server/0100-Skip-PlayerCommandSendEvent-if-there-are-no-listener.patch similarity index 93% rename from patches/server/0106-Skip-PlayerCommandSendEvent-if-there-are-no-listener.patch rename to patches/server/0100-Skip-PlayerCommandSendEvent-if-there-are-no-listener.patch index 72ac6b6..0ccb7bf 100644 --- a/patches/server/0106-Skip-PlayerCommandSendEvent-if-there-are-no-listener.patch +++ b/patches/server/0100-Skip-PlayerCommandSendEvent-if-there-are-no-listener.patch @@ -37,10 +37,10 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index ad590059cee0ec44f9799c3a6bc8cc0d00b5e172..11d6d060068985884338ab61d2f98d55a202afd8 100644 +index d0327f3e230c6e79f74e51c926f089e55a01bf59..7b9ee0e0316279a74ef15317450446550e0a50a4 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -513,6 +513,7 @@ public class Commands { +@@ -511,6 +511,7 @@ public class Commands { private void runSync(ServerPlayer player, Collection bukkit, RootCommandNode rootcommandnode) { // Paper end - Perf: Async command map building new com.destroystokyo.paper.event.brigadier.AsyncPlayerSendCommandsEvent(player.getBukkitEntity(), (RootCommandNode) rootcommandnode, false).callEvent(); // Paper - Brigadier API @@ -48,7 +48,7 @@ index ad590059cee0ec44f9799c3a6bc8cc0d00b5e172..11d6d060068985884338ab61d2f98d55 PlayerCommandSendEvent event = new PlayerCommandSendEvent(player.getBukkitEntity(), new LinkedHashSet<>(bukkit)); event.getPlayer().getServer().getPluginManager().callEvent(event); -@@ -523,6 +524,7 @@ public class Commands { +@@ -521,6 +522,7 @@ public class Commands { } } // CraftBukkit end diff --git a/patches/server/0107-Send-multiple-keep-alive-packets.patch b/patches/server/0101-Send-multiple-keep-alive-packets.patch similarity index 91% rename from patches/server/0107-Send-multiple-keep-alive-packets.patch rename to patches/server/0101-Send-multiple-keep-alive-packets.patch index 6eb5266..b348277 100644 --- a/patches/server/0107-Send-multiple-keep-alive-packets.patch +++ b/patches/server/0101-Send-multiple-keep-alive-packets.patch @@ -37,7 +37,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -index 652ae75254d78fff02d68cbb747eaee4c3f35a1a..2a7de95242c80e2df86ef11538a315664617d3f0 100644 +index 8757a6ac609d463f94846d66fe04f50e859e7ce8..a720a05c47b2137a07515461960603cc5c939d16 100644 --- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java @@ -4,6 +4,9 @@ import com.mojang.authlib.GameProfile; @@ -50,7 +50,7 @@ index 652ae75254d78fff02d68cbb747eaee4c3f35a1a..2a7de95242c80e2df86ef11538a31566 import net.minecraft.ChatFormatting; import net.minecraft.CrashReport; import net.minecraft.CrashReportCategory; -@@ -30,6 +33,7 @@ import net.minecraft.server.level.ClientInformation; +@@ -31,6 +34,7 @@ import net.minecraft.server.level.ClientInformation; import net.minecraft.server.level.ServerPlayer; import net.minecraft.util.VisibleForDebug; import net.minecraft.util.thread.BlockableEventLoop; @@ -58,7 +58,7 @@ index 652ae75254d78fff02d68cbb747eaee4c3f35a1a..2a7de95242c80e2df86ef11538a31566 import org.slf4j.Logger; // CraftBukkit start -@@ -73,10 +77,14 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -74,10 +78,14 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack private long keepAliveChallenge; private long closedListenerTime; private boolean closed = false; @@ -71,10 +71,10 @@ index 652ae75254d78fff02d68cbb747eaee4c3f35a1a..2a7de95242c80e2df86ef11538a31566 + private static final long KEEPALIVE_LIMIT_IN_SECONDS = Long.getLong("paper.playerconnection.keepalive", 30); // Paper - provide property to set keepalive limit + private static final long KEEPALIVE_LIMIT = KEEPALIVE_LIMIT_IN_SECONDS * 1000; + // Gale end - Purpur - send multiple keep-alive packets - protected static final ResourceLocation MINECRAFT_BRAND = new ResourceLocation("brand"); // Paper - Brand support + protected static final ResourceLocation MINECRAFT_BRAND = ResourceLocation.withDefaultNamespace("brand"); // Paper - Brand support public ServerCommonPacketListenerImpl(MinecraftServer minecraftserver, Connection networkmanager, CommonListenerCookie commonlistenercookie, ServerPlayer player) { // CraftBukkit -@@ -124,6 +132,16 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -125,6 +133,16 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack @Override public void handleKeepAlive(ServerboundKeepAlivePacket packet) { //PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); // CraftBukkit // Paper - handle ServerboundKeepAlivePacket async @@ -91,7 +91,7 @@ index 652ae75254d78fff02d68cbb747eaee4c3f35a1a..2a7de95242c80e2df86ef11538a31566 if (this.keepAlivePending && packet.getId() == this.keepAliveChallenge) { int i = (int) (Util.getMillis() - this.keepAliveTime); -@@ -136,6 +154,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -137,6 +155,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack }); // Paper end - This needs to be handled on the main thread for plugins } @@ -99,7 +99,7 @@ index 652ae75254d78fff02d68cbb747eaee4c3f35a1a..2a7de95242c80e2df86ef11538a31566 } -@@ -251,6 +270,21 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -252,6 +271,21 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack long currentTime = Util.getMillis(); long elapsedTime = currentTime - this.keepAliveTime; @@ -120,8 +120,8 @@ index 652ae75254d78fff02d68cbb747eaee4c3f35a1a..2a7de95242c80e2df86ef11538a31566 + // Gale end - Purpur - send multiple keep-alive packets if (!this.isSingleplayerOwner() && elapsedTime >= 15000L) { // Paper - use vanilla's 15000L between keep alive packets if (this.keepAlivePending && !this.processedDisconnect && elapsedTime >= KEEPALIVE_LIMIT) { // Paper - check keepalive limit, don't fire if already disconnected - this.disconnect(ServerCommonPacketListenerImpl.TIMEOUT_DISCONNECTION_MESSAGE, org.bukkit.event.player.PlayerKickEvent.Cause.TIMEOUT); // Paper - kick event cause -@@ -261,6 +295,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack + this.disconnect(ServerCommonPacketListenerImpl.TIMEOUT_DISCONNECTION_MESSAGE, PlayerKickEvent.Cause.TIMEOUT); // Paper - kick event cause +@@ -262,6 +296,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack this.send(new ClientboundKeepAlivePacket(this.keepAliveChallenge)); } } @@ -130,7 +130,7 @@ index 652ae75254d78fff02d68cbb747eaee4c3f35a1a..2a7de95242c80e2df86ef11538a31566 } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 71fd17e8e1aea7ac54d910e330c5eb0edaf8b07a..31cd9c04b06fa691305c078e3c428a9e0d717ecf 100644 +index d3319dcb15ee727b42d3bc09e06793cf728f1c6b..9dcbc2439e21a37793e8134e0715836fb88d9f78 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -9,6 +9,8 @@ import com.mojang.brigadier.suggestion.Suggestions; @@ -142,7 +142,7 @@ index 71fd17e8e1aea7ac54d910e330c5eb0edaf8b07a..31cd9c04b06fa691305c078e3c428a9e import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import it.unimi.dsi.fastutil.objects.ObjectIterator; import java.net.SocketAddress; -@@ -3467,6 +3469,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -3412,6 +3414,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } @Override diff --git a/patches/server/0108-Make-slow-login-timeout-configurable.patch b/patches/server/0102-Make-slow-login-timeout-configurable.patch similarity index 92% rename from patches/server/0108-Make-slow-login-timeout-configurable.patch rename to patches/server/0102-Make-slow-login-timeout-configurable.patch index e0fa0d5..d933731 100644 --- a/patches/server/0108-Make-slow-login-timeout-configurable.patch +++ b/patches/server/0102-Make-slow-login-timeout-configurable.patch @@ -7,10 +7,10 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) Gale - https://galemc.org diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -index 0588e43e7607b10f66db6d0b615141250031699a..056bfdaa4d9a12b9442dfa76c8094dc7e26febe9 100644 +index 22865e638a50397d194fb39b883f73753de1f7f0..00920e9124336908d17d6725f90e18407e43cdba 100644 --- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -@@ -121,7 +121,10 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, +@@ -122,7 +122,10 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, this.finishLoginAndWaitForClient(this.authenticatedProfile); } diff --git a/patches/server/0109-Load-portal-destination-chunk-before-entity-teleport.patch b/patches/server/0103-Load-portal-destination-chunk-before-entity-teleport.patch similarity index 64% rename from patches/server/0109-Load-portal-destination-chunk-before-entity-teleport.patch rename to patches/server/0103-Load-portal-destination-chunk-before-entity-teleport.patch index 058d28c..f3c4d0b 100644 --- a/patches/server/0109-Load-portal-destination-chunk-before-entity-teleport.patch +++ b/patches/server/0103-Load-portal-destination-chunk-before-entity-teleport.patch @@ -13,23 +13,25 @@ As part of: MultiPaper (https://github.com/MultiPaper/MultiPaper) Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 4f8bd45ac7278f06d9af82d6d3e0882cfc830929..bd93d51b6a62b5f4d9e90290da27c73ec5ddcb06 100644 +index 4dd79b1595406dfd93b2dd6e2ef56f7bf4db65c6..e22174b5c5927fca637167e4a752c415a613821a 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3764,6 +3764,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - Entity entity = this.getType().create(worldserver); +@@ -3829,7 +3829,15 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - if (entity != null) { -+ // Gale start - MultiPaper - load portal destination chunk before entity teleport -+ if (entity.level.galeConfig().gameplayMechanics.technical.loadPortalDestinationChunkBeforeEntityTeleport) { -+ BlockPos pos = BlockPos.containing(position); -+ worldserver.getChunkSource().addRegionTicket(TicketType.PORTAL, new ChunkPos(pos), 1, pos); -+ worldserver.getChunkAt(pos); -+ } -+ // Gale end - MultiPaper - load portal destination chunk before entity teleport - entity.restoreFrom(this); - entity.moveTo(position.x, position.y, position.z, yaw, pitch); // Paper - EntityPortalExitEvent - entity.setDeltaMovement(velocity); // Paper - EntityPortalExitEvent + if (entity == null) { + return false; ++ // Gale start - MultiPaper - load portal destination chunk before entity teleport ++ } else { ++ if (entity.level.galeConfig().gameplayMechanics.technical.loadPortalDestinationChunkBeforeEntityTeleport) { ++ BlockPos pos = BlockPos.containing(position); ++ world.getChunkSource().addRegionTicket(TicketType.PORTAL, new ChunkPos(pos), 1, pos); ++ world.getChunkAt(pos); ++ } + } ++ // Gale end - MultiPaper - load portal destination chunk before entity teleport + + entity.restoreFrom(this); + entity.moveTo(destX, destY, destZ, yaw, f2); diff --git a/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java b/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java index 5d499e77800466210473e36b2355873807b9f86a..50202c41535f823240e9e8fd5348e3d474814c1b 100644 --- a/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java diff --git a/patches/server/0110-Don-t-load-chunks-to-spawn-phantoms.patch b/patches/server/0104-Don-t-load-chunks-to-spawn-phantoms.patch similarity index 100% rename from patches/server/0110-Don-t-load-chunks-to-spawn-phantoms.patch rename to patches/server/0104-Don-t-load-chunks-to-spawn-phantoms.patch diff --git a/patches/server/0111-Don-t-load-chunks-to-activate-climbing-entities.patch b/patches/server/0105-Don-t-load-chunks-to-activate-climbing-entities.patch similarity index 93% rename from patches/server/0111-Don-t-load-chunks-to-activate-climbing-entities.patch rename to patches/server/0105-Don-t-load-chunks-to-activate-climbing-entities.patch index 168c61b..694d13a 100644 --- a/patches/server/0111-Don-t-load-chunks-to-activate-climbing-entities.patch +++ b/patches/server/0105-Don-t-load-chunks-to-activate-climbing-entities.patch @@ -7,10 +7,10 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) Gale - https://galemc.org diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 02d03e0931d9e1b1f21cd8b6602a213d627dc122..1e9a42cfe203a6947201977165664194e05d4ae4 100644 +index e22174b5c5927fca637167e4a752c415a613821a..9c781d585d3ec7e42c036f8ee4e1a38a64ee8a55 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4686,6 +4686,16 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4477,6 +4477,16 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return this.inBlockState; } @@ -28,10 +28,10 @@ index 02d03e0931d9e1b1f21cd8b6602a213d627dc122..1e9a42cfe203a6947201977165664194 return this.chunkPosition; } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index f2dafed01b2a54adb5f40f24a3c3366ec362eeff..302c7e14456413dddf5a4ab7efedcd8a737a475b 100644 +index b7c02647d7d143e2462057792bafed96648973d7..909ec5647acf1d499eb99fd7339d8416cc370e25 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2048,19 +2048,43 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2042,19 +2042,43 @@ public abstract class LivingEntity extends Entity implements Attackable { public boolean onClimbableCached() { if (!this.blockPosition().equals(this.lastClimbingPosition)) { diff --git a/patches/server/0112-Broadcast-crit-animations-as-the-entity-being-critte.patch b/patches/server/0106-Broadcast-crit-animations-as-the-entity-being-critte.patch similarity index 93% rename from patches/server/0112-Broadcast-crit-animations-as-the-entity-being-critte.patch rename to patches/server/0106-Broadcast-crit-animations-as-the-entity-being-critte.patch index fa5658e..a1c2791 100644 --- a/patches/server/0112-Broadcast-crit-animations-as-the-entity-being-critte.patch +++ b/patches/server/0106-Broadcast-crit-animations-as-the-entity-being-critte.patch @@ -13,10 +13,10 @@ As part of: MultiPaper (https://github.com/MultiPaper/MultiPaper) Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index f4249ec6ea3afbc9976d292724d4fd1a42c95feb..47357cb475fcb834992f13a5e70cf0f3f1c76993 100644 +index 79b49aec7c5c80948b8f1c77ca6e48049dae174e..a70317f5b5cf0fc5ab80782e6f22e76d3716b749 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2113,12 +2113,18 @@ public class ServerPlayer extends Player { +@@ -2148,12 +2148,18 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @Override public void crit(Entity target) { diff --git a/patches/server/0113-Ignore-null-legacy-structure-data.patch b/patches/server/0107-Ignore-null-legacy-structure-data.patch similarity index 100% rename from patches/server/0113-Ignore-null-legacy-structure-data.patch rename to patches/server/0107-Ignore-null-legacy-structure-data.patch diff --git a/patches/server/0114-Skip-unnecessary-mob-spawning-computations.patch b/patches/server/0108-Skip-unnecessary-mob-spawning-computations.patch similarity index 72% rename from patches/server/0114-Skip-unnecessary-mob-spawning-computations.patch rename to patches/server/0108-Skip-unnecessary-mob-spawning-computations.patch index 7d2414d..fbc467b 100644 --- a/patches/server/0114-Skip-unnecessary-mob-spawning-computations.patch +++ b/patches/server/0108-Skip-unnecessary-mob-spawning-computations.patch @@ -13,10 +13,10 @@ As part of: MultiPaper (https://github.com/MultiPaper/MultiPaper) Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index b96ff2f3889a7bee948019810b6a835645ea12bc..94689992b4d159ab996e00ae20afa8fef0e84db2 100644 +index a65c844d9dc715f75849e5cb665250dfa036af08..0ca299ab0859a9bb0060539d692d3e77f228dc5d 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -@@ -497,11 +497,16 @@ public class ServerChunkCache extends ChunkSource { +@@ -485,11 +485,16 @@ public class ServerChunkCache extends ChunkSource { this.level.resetIceAndSnowTick(); // Gale - Airplane - optimize random calls in chunk ticking - reset ice & snow tick random if (this.level.tickRateManager().runsNormally()) { @@ -34,7 +34,7 @@ index b96ff2f3889a7bee948019810b6a835645ea12bc..94689992b4d159ab996e00ae20afa8fe if ((this.spawnFriendlies || this.spawnEnemies) && this.level.paperConfig().entities.spawning.perPlayerMobSpawns) { // don't count mobs when animals and monsters are disabled // re-set mob counts for (ServerPlayer player : this.level.players) { -@@ -525,7 +530,11 @@ public class ServerChunkCache extends ChunkSource { +@@ -513,7 +518,11 @@ public class ServerChunkCache extends ChunkSource { this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings this.lastSpawnState = spawnercreature_d; @@ -45,18 +45,18 @@ index b96ff2f3889a7bee948019810b6a835645ea12bc..94689992b4d159ab996e00ae20afa8fe + } + // Gale end - MultiPaper - skip unnecessary mob spawning computations - // Paper start - optimise chunk tick iteration - ChunkMap playerChunkMap = this.chunkMap; -@@ -613,7 +622,7 @@ public class ServerChunkCache extends ChunkSource { - if (tick && chunk1.chunkStatus.isOrAfter(net.minecraft.server.level.FullChunkStatus.ENTITY_TICKING)) { - // Paper end - optimise chunk tick iteration + Util.shuffle(list, this.level.random); + // Paper start - PlayerNaturallySpawnCreaturesEvent +@@ -536,7 +545,7 @@ public class ServerChunkCache extends ChunkSource { + + if (this.level.isNaturalSpawningAllowed(chunkcoordintpair) && this.chunkMap.anyPlayerCloseEnoughForSpawning(chunkcoordintpair)) { chunk1.incrementInhabitedTime(j); -- if (spawn && flag && (this.spawnEnemies || this.spawnFriendlies) && this.level.getWorldBorder().isWithinBounds(chunkcoordintpair)) { // Spigot // Paper - optimise chunk tick iteration -+ if (spawn && flagAndHasNaturalSpawn && (this.spawnEnemies || this.spawnFriendlies) && this.level.getWorldBorder().isWithinBounds(chunkcoordintpair)) { // Spigot // Paper - optimise chunk tick iteration // Gale - MultiPaper - skip unnecessary mob spawning computations +- if (flag && (this.spawnEnemies || this.spawnFriendlies) && this.level.getWorldBorder().isWithinBounds(chunkcoordintpair) && this.chunkMap.anyPlayerCloseEnoughForSpawning(chunkcoordintpair, true)) { // Spigot ++ if (flagAndHasNaturalSpawn && (this.spawnEnemies || this.spawnFriendlies) && this.level.getWorldBorder().isWithinBounds(chunkcoordintpair) && this.chunkMap.anyPlayerCloseEnoughForSpawning(chunkcoordintpair, true)) { // Spigot // Gale - MultiPaper - skip unnecessary mob spawning computations NaturalSpawner.spawnForChunk(this.level, chunk1, spawnercreature_d, this.spawnFriendlies, this.spawnEnemies, flag1); } -@@ -659,6 +668,20 @@ public class ServerChunkCache extends ChunkSource { +@@ -562,6 +571,20 @@ public class ServerChunkCache extends ChunkSource { } } @@ -75,5 +75,5 @@ index b96ff2f3889a7bee948019810b6a835645ea12bc..94689992b4d159ab996e00ae20afa8fe + // Gale end - MultiPaper - skip unnecessary mob spawning computations + private void getFullChunk(long pos, Consumer chunkConsumer) { - ChunkHolder playerchunk = this.getVisibleChunkIfPresent(pos); - + // Paper start - rewrite chunk system + final LevelChunk fullChunk = this.getChunkNow(ca.spottedleaf.moonrise.common.util.CoordinateUtils.getChunkX(pos), ca.spottedleaf.moonrise.common.util.CoordinateUtils.getChunkZ(pos)); diff --git a/patches/server/0115-Prevent-entities-random-strolling-into-non-ticking-c.patch b/patches/server/0109-Prevent-entities-random-strolling-into-non-ticking-c.patch similarity index 100% rename from patches/server/0115-Prevent-entities-random-strolling-into-non-ticking-c.patch rename to patches/server/0109-Prevent-entities-random-strolling-into-non-ticking-c.patch diff --git a/patches/server/0116-Do-not-place-player-in-world-if-kicked-before-being-.patch b/patches/server/0110-Do-not-place-player-in-world-if-kicked-before-being-.patch similarity index 84% rename from patches/server/0116-Do-not-place-player-in-world-if-kicked-before-being-.patch rename to patches/server/0110-Do-not-place-player-in-world-if-kicked-before-being-.patch index 039e015..9f38198 100644 --- a/patches/server/0116-Do-not-place-player-in-world-if-kicked-before-being-.patch +++ b/patches/server/0110-Do-not-place-player-in-world-if-kicked-before-being-.patch @@ -14,11 +14,11 @@ As part of: MultiPaper (https://github.com/MultiPaper/MultiPaper) Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index e37c9320083334680e7ccdd12e875feb78f29414..0e570a7320eb6c65cb5d43fd7912d17a54b64eb3 100644 +index 98efc69c911dd7cdce6c945d1bfebbefc0bbd154..5b8687da643ec355d7c0218f763e6f77223c4246 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -277,6 +277,13 @@ public abstract class PlayerList { - org.spigotmc.event.player.PlayerSpawnLocationEvent ev = new com.destroystokyo.paper.event.player.PlayerInitialSpawnEvent(spawnPlayer, spawnPlayer.getLocation()); // Paper use our duplicate event +@@ -275,6 +275,13 @@ public abstract class PlayerList { + org.spigotmc.event.player.PlayerSpawnLocationEvent ev = new org.spigotmc.event.player.PlayerSpawnLocationEvent(spawnPlayer, spawnPlayer.getLocation()); this.cserver.getPluginManager().callEvent(ev); + // Gale start - MultiPaper - do not place player in world if kicked before being spawned in diff --git a/patches/server/0117-CraftBukkit-UUID-to-world-map.patch b/patches/server/0111-CraftBukkit-UUID-to-world-map.patch similarity index 89% rename from patches/server/0117-CraftBukkit-UUID-to-world-map.patch rename to patches/server/0111-CraftBukkit-UUID-to-world-map.patch index 7141e8d..372a360 100644 --- a/patches/server/0117-CraftBukkit-UUID-to-world-map.patch +++ b/patches/server/0111-CraftBukkit-UUID-to-world-map.patch @@ -13,7 +13,7 @@ As part of: MultiPaper (https://github.com/MultiPaper/MultiPaper) Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index d1757b96dc4d27605ed1d0819c4b6246152ae1da..845e9e48c3d5c99a4e6c05d5486baafb5fc5e16c 100644 +index e466142e52fe29505384bf5371a54b0976ebd7fe..345ed802752639a490378bdb7fe6088f9b42f6a1 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -41,6 +41,9 @@ import java.util.logging.Logger; @@ -26,7 +26,7 @@ index d1757b96dc4d27605ed1d0819c4b6246152ae1da..845e9e48c3d5c99a4e6c05d5486baafb import net.minecraft.advancements.AdvancementHolder; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; -@@ -280,6 +283,7 @@ public final class CraftServer implements Server { +@@ -281,6 +284,7 @@ public final class CraftServer implements Server { protected final DedicatedServer console; protected final DedicatedPlayerList playerList; private final Map worlds = new LinkedHashMap(); @@ -34,7 +34,7 @@ index d1757b96dc4d27605ed1d0819c4b6246152ae1da..845e9e48c3d5c99a4e6c05d5486baafb // private final Map, Registry> registries = new HashMap<>(); // Paper - replace with RegistryAccess private YamlConfiguration configuration; private YamlConfiguration commandsConfiguration; -@@ -1474,6 +1478,7 @@ public final class CraftServer implements Server { +@@ -1478,6 +1482,7 @@ public final class CraftServer implements Server { this.getLogger().log(Level.SEVERE, null, ex); } @@ -42,7 +42,7 @@ index d1757b96dc4d27605ed1d0819c4b6246152ae1da..845e9e48c3d5c99a4e6c05d5486baafb this.worlds.remove(world.getName().toLowerCase(Locale.ROOT)); this.console.removeLevel(handle); return true; -@@ -1492,12 +1497,7 @@ public final class CraftServer implements Server { +@@ -1496,12 +1501,7 @@ public final class CraftServer implements Server { @Override public World getWorld(UUID uid) { @@ -56,7 +56,7 @@ index d1757b96dc4d27605ed1d0819c4b6246152ae1da..845e9e48c3d5c99a4e6c05d5486baafb } // Paper start -@@ -1515,6 +1515,7 @@ public final class CraftServer implements Server { +@@ -1519,6 +1519,7 @@ public final class CraftServer implements Server { System.out.println("World " + world.getName() + " is a duplicate of another world and has been prevented from loading. Please delete the uid.dat file from " + world.getName() + "'s world directory if you want to be able to load the duplicate world."); return; } diff --git a/patches/server/0118-Global-EULA-file.patch b/patches/server/0112-Global-EULA-file.patch similarity index 95% rename from patches/server/0118-Global-EULA-file.patch rename to patches/server/0112-Global-EULA-file.patch index 53170b3..05db88f 100644 --- a/patches/server/0118-Global-EULA-file.patch +++ b/patches/server/0112-Global-EULA-file.patch @@ -23,10 +23,10 @@ The above copyright notice and this permission notice shall be included in all c THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/main/java/net/minecraft/server/Eula.java b/src/main/java/net/minecraft/server/Eula.java -index 6538f4771c825ca23e449eba7a42d90a72d31c19..dbb424d63485f3e88b5606a92f1c12c9ff948cf9 100644 +index 4f12ee62a381f87419c72f12a7c155a7b403d207..f8d6f9b165929961d23bc18a6044973405c1d633 100644 --- a/src/main/java/net/minecraft/server/Eula.java +++ b/src/main/java/net/minecraft/server/Eula.java -@@ -16,13 +16,30 @@ public class Eula { +@@ -17,13 +17,30 @@ public class Eula { public Eula(Path eulaFile) { this.file = eulaFile; @@ -59,7 +59,7 @@ index 6538f4771c825ca23e449eba7a42d90a72d31c19..dbb424d63485f3e88b5606a92f1c12c9 Properties properties = new Properties(); properties.load(inputStream); var3 = Boolean.parseBoolean(properties.getProperty("eula", "false")); -@@ -30,8 +47,10 @@ public class Eula { +@@ -31,8 +48,10 @@ public class Eula { return var3; } catch (Exception var6) { diff --git a/patches/server/0119-Specific-interval-TPS-API.patch b/patches/server/0113-Specific-interval-TPS-API.patch similarity index 88% rename from patches/server/0119-Specific-interval-TPS-API.patch rename to patches/server/0113-Specific-interval-TPS-API.patch index f1a2b47..dd999ba 100644 --- a/patches/server/0119-Specific-interval-TPS-API.patch +++ b/patches/server/0113-Specific-interval-TPS-API.patch @@ -7,10 +7,10 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) Gale - https://galemc.org diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 845e9e48c3d5c99a4e6c05d5486baafb5fc5e16c..4213c71f2f2edd88583b5620145d55e670080c4d 100644 +index 345ed802752639a490378bdb7fe6088f9b42f6a1..25228533084ffd9d9c82fecea8722ea6c1ee4bd3 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -3105,6 +3105,24 @@ public final class CraftServer implements Server { +@@ -3030,6 +3030,24 @@ public final class CraftServer implements Server { }; } diff --git a/patches/server/0120-5-second-TPS-average.patch b/patches/server/0114-5-second-TPS-average.patch similarity index 95% rename from patches/server/0120-5-second-TPS-average.patch rename to patches/server/0114-5-second-TPS-average.patch index ac28b2c..ac9d7b3 100644 --- a/patches/server/0120-5-second-TPS-average.patch +++ b/patches/server/0114-5-second-TPS-average.patch @@ -59,10 +59,10 @@ index 039a86034928a5eb7aaa2d7ca76a7bddcca346bd..7c32c60100cf2bd109eb8762efa856c1 } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 83e8cca6181129a48a83bd1630b8ffa8aa96d7cc..be2d97e1b28a45d0dff0b528559a075078ab9bf2 100644 +index d91e6fc1949778ddda073afeee9d1850f49633ca..5415cc96c9acba64b1f26b76726226fb2756c908 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1062,6 +1062,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 1e-6 || oldDeltaMovement.z < -1e-6 || oldDeltaMovement.z > 1e-6) { -+ // Gale end - skip negligible planar movement multiplication ++ // Gale end - skip negligible planar movement multiplication float f = this.getBlockSpeedFactor(); - this.setDeltaMovement(this.getDeltaMovement().multiply((double) f, 1.0D, (double) f)); -+ // Gale start - skip negligible planar movement multiplication -+ if (f < 1 - 1e-6 || f > 1 + 1e-6) { -+ this.setDeltaMovement(oldDeltaMovement.multiply((double) f, 1.0D, (double) f)); -+ } ++ // Gale start - skip negligible planar movement multiplication ++ if (f < 1 - 1e-6 || f > 1 + 1e-6) { ++ this.setDeltaMovement(oldDeltaMovement.multiply((double) f, 1.0D, (double) f)); ++ } + } + // Gale end - skip negligible planar movement multiplication - // Paper start - remove expensive streams from here - boolean noneMatch = true; - AABB fireSearchBox = this.getBoundingBox().deflate(1.0E-6D); + if (this.level().getBlockStatesIfLoaded(this.getBoundingBox().deflate(1.0E-6D)).noneMatch((iblockdata2) -> { + return iblockdata2.is(BlockTags.FIRE) || iblockdata2.is(Blocks.LAVA); + })) { diff --git a/patches/server/0127-Optimize-matching-item-checks.patch b/patches/server/0121-Optimize-matching-item-checks.patch similarity index 88% rename from patches/server/0127-Optimize-matching-item-checks.patch rename to patches/server/0121-Optimize-matching-item-checks.patch index 785e95e..15da831 100644 --- a/patches/server/0127-Optimize-matching-item-checks.patch +++ b/patches/server/0121-Optimize-matching-item-checks.patch @@ -7,10 +7,10 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) Gale - https://galemc.org diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index c7b3634c0565e7d750dca854414c94592ddc2b4e..2f0b817dd11bc9a043e4ea60268135b3aff18e44 100644 +index 312b57b4ef340935f4335989ce1d6a4b8b61532c..39368883e050a3bcecd0e2ded22f6c36e7dde0a6 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -839,7 +839,7 @@ public final class ItemStack implements DataComponentHolder { +@@ -849,7 +849,7 @@ public final class ItemStack implements DataComponentHolder { } public static boolean matches(ItemStack left, ItemStack right) { @@ -19,7 +19,7 @@ index c7b3634c0565e7d750dca854414c94592ddc2b4e..2f0b817dd11bc9a043e4ea60268135b3 } /** @deprecated */ -@@ -859,11 +859,11 @@ public final class ItemStack implements DataComponentHolder { +@@ -869,11 +869,11 @@ public final class ItemStack implements DataComponentHolder { } public static boolean isSameItem(ItemStack left, ItemStack right) { diff --git a/patches/server/0128-Pre-compute-VarLong-sizes.patch b/patches/server/0122-Pre-compute-VarLong-sizes.patch similarity index 100% rename from patches/server/0128-Pre-compute-VarLong-sizes.patch rename to patches/server/0122-Pre-compute-VarLong-sizes.patch diff --git a/patches/server/0129-Optimize-VarInt-write-and-VarLong-write.patch b/patches/server/0123-Optimize-VarInt-write-and-VarLong-write.patch similarity index 100% rename from patches/server/0129-Optimize-VarInt-write-and-VarLong-write.patch rename to patches/server/0123-Optimize-VarInt-write-and-VarLong-write.patch diff --git a/patches/server/0130-Reduce-RandomSource-instances.patch b/patches/server/0124-Reduce-RandomSource-instances.patch similarity index 89% rename from patches/server/0130-Reduce-RandomSource-instances.patch rename to patches/server/0124-Reduce-RandomSource-instances.patch index 7e2ee79..826714c 100644 --- a/patches/server/0130-Reduce-RandomSource-instances.patch +++ b/patches/server/0124-Reduce-RandomSource-instances.patch @@ -26,10 +26,10 @@ index b47a8a082170bcb630c4354be7c77a4cac71d105..b49e3f2cdc1fa5ff3723fae452404664 double d1 = (double) (center.y - maxRange); double d2 = (double) (center.x + maxRange); diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 47357cb475fcb834992f13a5e70cf0f3f1c76993..9be1ba758cc3cac54501c39c05ea057dedeae610 100644 +index a70317f5b5cf0fc5ab80782e6f22e76d3716b749..96cedc5d9fb7b88f2807e3db227940ea5ab57925 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -480,7 +480,7 @@ public class ServerPlayer extends Player { +@@ -467,7 +467,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple long l = k * k; int i1 = l > 2147483647L ? Integer.MAX_VALUE : (int) l; int j1 = this.getCoprime(i1); @@ -38,7 +38,7 @@ index 47357cb475fcb834992f13a5e70cf0f3f1c76993..9be1ba758cc3cac54501c39c05ea057d for (int l1 = 0; l1 < i1; ++l1) { int i2 = (k1 + j1 * l1) % i1; -@@ -517,7 +517,7 @@ public class ServerPlayer extends Player { +@@ -506,7 +506,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple long l = k * k; int i1 = l > 2147483647L ? Integer.MAX_VALUE : (int) l; int j1 = this.getCoprime(i1); @@ -61,12 +61,12 @@ index 0e0867d7add9a024bbe9471f8ff92bbb25996a3d..94ffa65fa99c4c713936f7004d9f46ac } diff --git a/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java b/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java -index 882de08963c72614a3d26cd917916e42b7136042..68fa6351f12c4e9de4029b89c15263e54b0f5f53 100644 +index 1223c5d23d0ea6aed068bdf0f5725e2ad49fc82c..5df85ba4904a6b4b69ab584e9f30d34c68925a5c 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java +++ b/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java -@@ -87,7 +87,7 @@ public class FishingHook extends Projectile { +@@ -88,7 +88,7 @@ public class FishingHook extends Projectile { - private FishingHook(EntityType type, Level world, int luckOfTheSeaLevel, int lureLevel) { + private FishingHook(EntityType type, Level world, int luckBonus, int waitTimeReductionTicks) { super(type, world); - this.syncronizedRandom = RandomSource.create(); + this.syncronizedRandom = world.random; // Gale - Patina - reduce RandomSource instances @@ -74,10 +74,10 @@ index 882de08963c72614a3d26cd917916e42b7136042..68fa6351f12c4e9de4029b89c15263e5 this.currentState = FishingHook.FishHookState.FLYING; this.noCulling = true; diff --git a/src/main/java/net/minecraft/world/entity/raid/Raid.java b/src/main/java/net/minecraft/world/entity/raid/Raid.java -index 774da40408225b0961b4dea50c4358a03d58b2ff..928d7895b2ba415ae8cd6b49a981f38eba6893ac 100644 +index 5c0e5803284bfc82c2dd8bba9ded0ba7aac4962a..2cc37e5734233954710c4ef55bf3b2918f2026d5 100644 --- a/src/main/java/net/minecraft/world/entity/raid/Raid.java +++ b/src/main/java/net/minecraft/world/entity/raid/Raid.java -@@ -119,7 +119,7 @@ public class Raid { +@@ -116,7 +116,7 @@ public class Raid { public Raid(int id, ServerLevel world, BlockPos pos) { this.raidEvent = new ServerBossEvent(Raid.RAID_NAME_COMPONENT, BossEvent.BossBarColor.RED, BossEvent.BossBarOverlay.NOTCHED_10); @@ -86,7 +86,7 @@ index 774da40408225b0961b4dea50c4358a03d58b2ff..928d7895b2ba415ae8cd6b49a981f38e this.waveSpawnPos = Optional.empty(); this.id = id; this.level = world; -@@ -133,7 +133,7 @@ public class Raid { +@@ -130,7 +130,7 @@ public class Raid { public Raid(ServerLevel world, CompoundTag nbt) { this.raidEvent = new ServerBossEvent(Raid.RAID_NAME_COMPONENT, BossEvent.BossBarColor.RED, BossEvent.BossBarOverlay.NOTCHED_10); @@ -96,10 +96,10 @@ index 774da40408225b0961b4dea50c4358a03d58b2ff..928d7895b2ba415ae8cd6b49a981f38e this.level = world; this.id = nbt.getInt("Id"); diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index 0772060d96c4fc9dfaf84081be6ccae9fdee7aa5..eb152f9ab41fc7b7219f9be26b574d61506c55d5 100644 +index 807964a19ac15717715c9a92aeefadbeb5875681..26d5440007db5c820405e4184ededb1ffabf2934 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -93,7 +93,7 @@ public class Explosion { +@@ -94,7 +94,7 @@ public class Explosion { } public Explosion(Level world, @Nullable Entity entity, @Nullable DamageSource damageSource, @Nullable ExplosionDamageCalculator behavior, double x, double y, double z, float power, boolean createFire, Explosion.BlockInteraction destructionType, ParticleOptions particle, ParticleOptions emitterParticle, Holder soundEvent) { @@ -109,10 +109,10 @@ index 0772060d96c4fc9dfaf84081be6ccae9fdee7aa5..eb152f9ab41fc7b7219f9be26b574d61 this.hitPlayers = Maps.newHashMap(); this.level = world; diff --git a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java -index a39409ba38b28d160aa1abe70a1dd1c5a633c08d..3a3182544ca338e81edfa64fd116092775ca0c6c 100644 +index 89df488afeffd0c060d2d0e7fae16daf978bd192..ec0dc7dc5b5c0690a592006f29513f0e80123f8a 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java -@@ -349,7 +349,7 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity { +@@ -268,7 +268,7 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity { } private static void spawnGatewayPortal(ServerLevel world, BlockPos pos, EndGatewayConfiguration config) { diff --git a/patches/server/0132-Reduce-skull-ItemStack-lookups-for-reduced-visibilit.patch b/patches/server/0125-Reduce-skull-ItemStack-lookups-for-reduced-visibilit.patch similarity index 93% rename from patches/server/0132-Reduce-skull-ItemStack-lookups-for-reduced-visibilit.patch rename to patches/server/0125-Reduce-skull-ItemStack-lookups-for-reduced-visibilit.patch index e5311e5..aeb9677 100644 --- a/patches/server/0132-Reduce-skull-ItemStack-lookups-for-reduced-visibilit.patch +++ b/patches/server/0125-Reduce-skull-ItemStack-lookups-for-reduced-visibilit.patch @@ -18,10 +18,10 @@ this patch is focused around the sensors used for ai delete the line of sight cache less often and use a faster nearby comparison diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 5ff0232c18bae1f9e149c3d065f89350de8e6d12..d688c41ccfec36ab1715f4ae70fbd1adde3525a8 100644 +index 909ec5647acf1d499eb99fd7339d8416cc370e25..755d7fd3e42ca3657e95e213d46dfc6311fd80a5 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1054,10 +1054,9 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1029,10 +1029,9 @@ public abstract class LivingEntity extends Entity implements Attackable { } if (entity != null) { diff --git a/patches/server/0133-Initialize-line-of-sight-cache-with-low-capacity.patch b/patches/server/0126-Initialize-line-of-sight-cache-with-low-capacity.patch similarity index 100% rename from patches/server/0133-Initialize-line-of-sight-cache-with-low-capacity.patch rename to patches/server/0126-Initialize-line-of-sight-cache-with-low-capacity.patch diff --git a/patches/server/0134-Reduce-line-of-sight-updates-and-cache-lookups.patch b/patches/server/0127-Reduce-line-of-sight-updates-and-cache-lookups.patch similarity index 97% rename from patches/server/0134-Reduce-line-of-sight-updates-and-cache-lookups.patch rename to patches/server/0127-Reduce-line-of-sight-updates-and-cache-lookups.patch index 4577f56..acfa35e 100644 --- a/patches/server/0134-Reduce-line-of-sight-updates-and-cache-lookups.patch +++ b/patches/server/0127-Reduce-line-of-sight-updates-and-cache-lookups.patch @@ -115,10 +115,10 @@ index 57472cb54e9fd83e980e3c57f28d6e6643f422e8..ce50852a9b18679a80e9393e8d904935 return bl; } diff --git a/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java b/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java -index abb8ff945b13c2cf4926a2f047d0e8dd074cea8f..b4cca06a583fbb7918237de256f43ee61fd8ec6c 100644 +index c3df5278231e13c43e9ea0804d95bf0542f2560a..9b82eb1cc56e3151ecbd526bb1064ab7ef32186b 100644 --- a/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java +++ b/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java -@@ -34,6 +34,7 @@ public class GaleGlobalConfiguration extends ConfigurationPart { +@@ -33,6 +33,7 @@ public class GaleGlobalConfiguration extends ConfigurationPart { public class ReducedIntervals extends ConfigurationPart { public int increaseTimeStatistics = 20; // Gale - Hydrinity - increase time statistics in intervals diff --git a/patches/server/0135-Server-thread-priority-environment-variable.patch b/patches/server/0128-Server-thread-priority-environment-variable.patch similarity index 78% rename from patches/server/0135-Server-thread-priority-environment-variable.patch rename to patches/server/0128-Server-thread-priority-environment-variable.patch index 2b432f5..2f4b61c 100644 --- a/patches/server/0135-Server-thread-priority-environment-variable.patch +++ b/patches/server/0128-Server-thread-priority-environment-variable.patch @@ -7,19 +7,19 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) Gale - https://galemc.org diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 7c646f8376677f92a021c115bcfaf8d582f1eb0a..33f06c2cdc8727529b2547e1cb3cb15266be2602 100644 +index 0a2100378080d6ec76522428b354b4fa47cdff7a..4b3a689042ed0244c85d84beb21feb00ab13265a 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -185,6 +185,8 @@ import co.aikar.timings.MinecraftTimings; // Paper +@@ -191,6 +191,8 @@ import co.aikar.timings.MinecraftTimings; // Paper - public abstract class MinecraftServer extends ReentrantBlockableEventLoop implements ServerInfo, CommandSource, AutoCloseable { + public abstract class MinecraftServer extends ReentrantBlockableEventLoop implements ServerInfo, ChunkIOErrorReporter, CommandSource, AutoCloseable, ca.spottedleaf.moonrise.patches.chunk_system.server.ChunkSystemMinecraftServer { // Paper - rewrite chunk system + public static final int SERVER_THREAD_PRIORITY = Integer.getInteger("gale.thread.priority.server", -1); // Gale - server thread priority environment variable + private static MinecraftServer SERVER; // Paper public static final Logger LOGGER = LogUtils.getLogger(); public static final net.kyori.adventure.text.logger.slf4j.ComponentLogger COMPONENT_LOGGER = net.kyori.adventure.text.logger.slf4j.ComponentLogger.logger(LOGGER.getName()); // Paper -@@ -318,6 +320,11 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop. diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 858ae75ac17612b5856361a7a9a462b1b900efb0..b96ff2f3889a7bee948019810b6a835645ea12bc 100644 +index 4d12a8972007377b6541143e9a29b78b825cff68..a65c844d9dc715f75849e5cb665250dfa036af08 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -@@ -495,6 +495,7 @@ public class ServerChunkCache extends ChunkSource { - - // Paper - optimise chunk tick iteration +@@ -483,6 +483,7 @@ public class ServerChunkCache extends ChunkSource { + } + } + this.level.resetIceAndSnowTick(); // Gale - Airplane - optimize random calls in chunk ticking - reset ice & snow tick random if (this.level.tickRateManager().runsNormally()) { this.level.timings.countNaturalMobs.startTiming(); // Paper - timings int k = this.distanceManager.getNaturalSpawnChunkCount(); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 76b6cb6015c8d8ad1aca34bfe8ea4f20468f57fb..da218c526740244d633b63b537539cb59e505fe7 100644 +index e018f5686406b58e09c9b62a9bcd4982c8aed905..896eedb9fc2cf99ccba0342993036fd00d19782a 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -963,6 +963,8 @@ public class ServerLevel extends Level implements WorldGenLevel { - private final BlockPos.MutableBlockPos chunkTickMutablePosition = new BlockPos.MutableBlockPos(); - // Paper end +@@ -777,13 +777,15 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. + }); + } + private int currentIceAndSnowTick = 0; protected void resetIceAndSnowTick() { this.currentIceAndSnowTick = this.randomTickRandom.nextInt(16); } // Gale - Airplane - optimize random calls in chunk ticking + public void tickChunk(LevelChunk chunk, int randomTickSpeed) { ChunkPos chunkcoordintpair = chunk.getPos(); boolean flag = this.isRaining(); -@@ -970,7 +972,7 @@ public class ServerLevel extends Level implements WorldGenLevel { + int j = chunkcoordintpair.getMinBlockX(); int k = chunkcoordintpair.getMinBlockZ(); - final BlockPos.MutableBlockPos blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change - if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && this.random.nextInt(this.spigotConfig.thunderChance) == 0) { // Spigot // Paper - Option to disable thunder -+ if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && /*this.random.nextInt(this.spigotConfig.thunderChance) == 0 &&*/ chunk.shouldDoLightning(this.random)) { // Spigot // Paper - Option to disable thunder // Gale - Airplane - optimize random calls in chunk ticking - replace random with shouldDoLightning - blockposition.set(this.findLightningTargetAround(this.getBlockRandomPos(j, 0, k, 15))); // Paper ++ if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && /*this.random.nextInt(this.spigotConfig.thunderChance) == 0*/ chunk.shouldDoLightning(this.random)) { // Spigot // Paper - Option to disable thunder // Gale - Airplane - optimize random calls in chunk ticking - replace random with shouldDoLightning + BlockPos blockposition = this.findLightningTargetAround(this.getBlockRandomPos(j, 0, k, 15)); if (this.isRainingAt(blockposition)) { -@@ -998,7 +1000,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -811,7 +813,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } } @@ -93,14 +92,14 @@ index 76b6cb6015c8d8ad1aca34bfe8ea4f20468f57fb..da218c526740244d633b63b537539cb5 + if (!this.paperConfig().environment.disableIceAndSnow && (this.currentIceAndSnowTick++ & 15) == 0) { // Paper - Option to disable ice and snow // Gale - Airplane - optimize random calls in chunk ticking - optimize further random ticking for (int l = 0; l < randomTickSpeed; ++l) { if (this.random.nextInt(48) == 0) { - // Paper start + this.tickPrecipitation(this.getBlockRandomPos(j, 0, k, 15)); diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index b38cdfdd3681b4f0fe537d4100b14bd017331118..35147d7a6649708c2b068065eb44831f40c3ab8e 100644 +index 715a39cf1d075e0ef7f32c9066714a21b46f64b0..60356b1c7afd23e43861f6ddc7ac9a7ad3dde4e2 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -87,6 +87,18 @@ public class LevelChunk extends ChunkAccess { +@@ -85,6 +85,18 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p + private final LevelChunkTicks blockTicks; private final LevelChunkTicks fluidTicks; - public volatile FullChunkStatus chunkStatus = FullChunkStatus.INACCESSIBLE; // Paper - rewrite chunk system + // Gale start - Airplane - optimize random calls in chunk ticking - instead of using a random every time the chunk is ticked, define when lightning strikes preemptively + private int lightningTick; @@ -117,7 +116,7 @@ index b38cdfdd3681b4f0fe537d4100b14bd017331118..35147d7a6649708c2b068065eb44831f public LevelChunk(Level world, ChunkPos pos) { this(world, pos, UpgradeData.EMPTY, new LevelChunkTicks<>(), new LevelChunkTicks<>(), 0L, (LevelChunkSection[]) null, (LevelChunk.PostLoadProcessor) null, (BlendingData) null); } -@@ -110,6 +122,7 @@ public class LevelChunk extends ChunkAccess { +@@ -108,6 +120,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p this.postLoad = entityLoader; this.blockTicks = blockTickScheduler; this.fluidTicks = fluidTickScheduler; diff --git a/patches/server/0033-Improve-container-checking-with-a-bitset.patch b/patches/work/server/0033-Improve-container-checking-with-a-bitset.patch similarity index 100% rename from patches/server/0033-Improve-container-checking-with-a-bitset.patch rename to patches/work/server/0033-Improve-container-checking-with-a-bitset.patch diff --git a/patches/server/0037-Use-ThreadUnsafeRandom-for-mob-spawning.patch b/patches/work/server/0035-Use-ThreadUnsafeRandom-for-mob-spawning.patch similarity index 100% rename from patches/server/0037-Use-ThreadUnsafeRandom-for-mob-spawning.patch rename to patches/work/server/0035-Use-ThreadUnsafeRandom-for-mob-spawning.patch diff --git a/patches/server/0041-Remove-lambda-from-ticking-guard.patch b/patches/work/server/0039-Remove-lambda-from-ticking-guard.patch similarity index 88% rename from patches/server/0041-Remove-lambda-from-ticking-guard.patch rename to patches/work/server/0039-Remove-lambda-from-ticking-guard.patch index f5f6875..dd99204 100644 --- a/patches/server/0041-Remove-lambda-from-ticking-guard.patch +++ b/patches/work/server/0039-Remove-lambda-from-ticking-guard.patch @@ -31,10 +31,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 820836ca964f7785099eb685b7cb1757ac61c12b..4bb9e099b647a6a524395d9e5393ef6f2fdc9153 100644 +index 896eedb9fc2cf99ccba0342993036fd00d19782a..e01481a889877ba898a8af9a13e4f83c842a18c6 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -900,7 +900,20 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -717,7 +717,20 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. entity.stopRiding(); } @@ -57,16 +57,15 @@ index 820836ca964f7785099eb685b7cb1757ac61c12b..4bb9e099b647a6a524395d9e5393ef6f } } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index e5c640b4353d2fb09ebb2e7d498f704cc9a6acfa..88ccc42e3768db0a11962a880ca14fe9847c0cdb 100644 +index 13b38b21d0425527e1a83e655e6be4bd6c5c2a02..8f167de456e2c2d09a0ee565894491b29eaabc2c 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1317,13 +1317,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -996,12 +996,12 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl + public void guardEntityTick(Consumer tickConsumer, T entity) { try { tickConsumer.accept(entity); - MinecraftServer.getServer().executeMidTickTasks(); // Paper - execute chunk tasks mid tick - } catch (Throwable throwable) { + } catch (Throwable throwable) { // Gale - Airplane - remove lambda from ticking guard - diff on change ServerLevel#tick - if (throwable instanceof ThreadDeath) throw throwable; // Paper // Paper start - Prevent block entity and entity crashes final String msg = String.format("Entity threw exception at %s:%s,%s,%s", entity.level().getWorld().getName(), entity.getX(), entity.getY(), entity.getZ()); MinecraftServer.LOGGER.error(msg, throwable); diff --git a/patches/server/0075-End-gateway-should-check-if-entity-can-use-portal.patch b/patches/work/server/0075-End-gateway-should-check-if-entity-can-use-portal.patch similarity index 100% rename from patches/server/0075-End-gateway-should-check-if-entity-can-use-portal.patch rename to patches/work/server/0075-End-gateway-should-check-if-entity-can-use-portal.patch diff --git a/patches/server/0078-Reduce-array-allocations.patch b/patches/work/server/0078-Reduce-array-allocations.patch similarity index 100% rename from patches/server/0078-Reduce-array-allocations.patch rename to patches/work/server/0078-Reduce-array-allocations.patch diff --git a/patches/server/0092-Optimize-world-generation-chunk-and-block-access.patch b/patches/work/server/0092-Optimize-world-generation-chunk-and-block-access.patch similarity index 100% rename from patches/server/0092-Optimize-world-generation-chunk-and-block-access.patch rename to patches/work/server/0092-Optimize-world-generation-chunk-and-block-access.patch diff --git a/patches/server/0095-Optimize-villager-data-storage.patch b/patches/work/server/0095-Optimize-villager-data-storage.patch similarity index 100% rename from patches/server/0095-Optimize-villager-data-storage.patch rename to patches/work/server/0095-Optimize-villager-data-storage.patch diff --git a/patches/server/0131-Add-xor-shift-random.patch b/patches/work/server/0131-Add-xor-shift-random.patch similarity index 100% rename from patches/server/0131-Add-xor-shift-random.patch rename to patches/work/server/0131-Add-xor-shift-random.patch