mirror of
https://github.com/PaperMC/Paper.git
synced 2025-07-27 18:22:03 -07:00
Start working on 1.20
This commit is contained in:
README.mdbuild.gradle.ktsgradle.properties
patches
api
Actually-mark-mc-experimental-API-as-such.patchAdd-FastUtil-to-Bukkit.patchAdventure.patchBuild-system-changes.patchConvert-project-to-Gradle.patchFix-upstream-javadocs.patchPaper-Plugins.patchReplace-ItemFlag.HIDE_POTION_EFFECTS.patchUse-ASM-for-event-executors.patchfix-Instruments.patch
server
Build-system-changes.patchCB-fixes.patchMC-Dev-fixes.patchMC-Utils.patchPaper-config-files.patchRemap-fixes.patchSetup-Gradle-project.patchTest-changes.patch
unapplied
server
API-for-creating-command-sender-which-forwards-feedb.patchAPI-to-get-a-BlockState-without-a-snapshot.patchAbility-to-apply-mending-to-XP-API.patchAbility-to-change-PlayerProfile-in-AsyncPreLoginEven.patchAbility-to-control-player-s-insomnia-and-phantoms.patchAbility-to-get-Tile-Entities-from-a-chunk-without-sn.patchAdd-API-for-item-entity-health.patchAdd-API-for-quit-reason.patchAdd-API-for-resetting-a-single-score.patchAdd-API-methods-to-control-if-armour-stands-can-move.patchAdd-APIs-to-replace-OfflinePlayer-getLastPlayed.patchAdd-Adventure-message-to-PlayerAdvancementDoneEvent.patchAdd-Alternate-Current-redstone-implementation.patchAdd-ArmorStand-Item-Meta.patchAdd-BeaconEffectEvent.patchAdd-BellRevealRaiderEvent.patchAdd-BellRingEvent.patchAdd-Block-isValidTool.patchAdd-BlockBreakBlockEvent.patchAdd-BlockLockCheckEvent.patchAdd-Channel-initialization-listeners.patchAdd-CompostItemEvent-and-EntityCompostItemEvent.patchAdd-Debug-Entities-option-to-debug-dupe-uuid-issues.patchAdd-Destroy-Speed-API.patchAdd-Early-Warning-Feature-to-WatchDog.patchAdd-ElderGuardianAppearanceEvent.patchAdd-Entity-Body-Yaw-API.patchAdd-EntityBlockStorage-clearEntities.patchAdd-EntityDyeEvent-and-CollarColorable-interface.patchAdd-EntityFertilizeEggEvent.patchAdd-EntityInsideBlockEvent.patchAdd-EntityLoadCrossbowEvent.patchAdd-EntityPortalReadyEvent.patchAdd-EntityZapEvent.patchAdd-GameEvent-tags.patchAdd-Heightmap-API.patchAdd-ItemFactory-getSpawnEgg-API.patchAdd-LivingEntity-clearActiveItem.patchAdd-LivingEntity-getTargetEntity.patchAdd-Mob-Experience-reward-API.patchAdd-Mob-lookAt-API.patchAdd-More-Creeper-API.patchAdd-Moving-Piston-API.patchAdd-NamespacedKey-biome-methods.patchAdd-OBSTRUCTED-reason-to-BedEnterResult.patchAdd-PhantomPreSpawnEvent.patchAdd-Player-Warden-Warning-API.patchAdd-Player-getFishHook.patchAdd-PlayerArmorChangeEvent.patchAdd-PlayerAttackEntityCooldownResetEvent.patchAdd-PlayerConnectionCloseEvent.patchAdd-PlayerInitialSpawnEvent.patchAdd-PlayerInventorySlotChangeEvent.patchAdd-PlayerItemCooldownEvent.patchAdd-PlayerItemFrameChangeEvent.patchAdd-PlayerJumpEvent.patchAdd-PlayerKickEvent-causes.patchAdd-PlayerSetSpawnEvent.patchAdd-PlayerShearBlockEvent.patchAdd-PlayerStopUsingItemEvent.patchAdd-PlayerTradeEvent-and-PlayerPurchaseEvent.patchAdd-PlayerUseUnknownEntityEvent.patchAdd-Plugin-Tickets-to-API-Chunk-Methods.patchAdd-PrePlayerAttackEntityEvent.patchAdd-PrepareResultEvent.patchAdd-ProjectileCollideEvent.patchAdd-PufferFishStateChangeEvent.patchAdd-Raw-Byte-Entity-Serialization.patchAdd-Raw-Byte-ItemStack-Serialization.patchAdd-Shearable-API.patchAdd-Sneaking-API-for-Entities.patchAdd-StructuresLocateEvent.patchAdd-System.out-err-catcher.patchAdd-TNTPrimeEvent.patchAdd-TameableDeathMessageEvent.patchAdd-ThrownEggHatchEvent.patchAdd-TickThread.patchAdd-Unix-domain-socket-support.patchAdd-UnknownCommandEvent.patchAdd-Velocity-IP-Forwarding-Support.patchAdd-Wandering-Trader-spawn-rate-config-options.patchAdd-WardenAngerChangeEvent.patchAdd-World-Util-Methods.patchAdd-a-bunch-of-missing-forceDrop-toggles.patchAdd-a-consumer-parameter-to-ProjectileSource-launchP.patchAdd-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patchAdd-ability-to-configure-frosted_ice-properties.patchAdd-additional-open-container-api-to-HumanEntity.patchAdd-and-implement-PlayerRecipeBookClickEvent.patchAdd-back-EntityPortalExitEvent.patchAdd-basic-Datapack-API.patchAdd-bypass-host-check.patchAdd-cause-to-Weather-ThunderChangeEvents.patchAdd-command-line-option-to-load-extra-plugin-jars-no.patchAdd-config-for-mobs-immune-to-default-effects.patchAdd-config-option-for-logging-player-ip-addresses.patchAdd-config-option-for-spider-worldborder-climbing.patchAdd-config-option-for-worlds-affected-by-time-cmd.patchAdd-config-to-disable-ender-dragon-legacy-check.patchAdd-configurable-despawn-distances-for-living-entiti.patchAdd-configurable-height-for-slime-spawn.patchAdd-configurable-portal-search-radius.patchAdd-configuration-option-to-prevent-player-names-fro.patchAdd-critical-damage-API.patchAdd-debug-for-sync-chunk-loads.patchAdd-dropLeash-variable-to-EntityUnleashEvent.patchAdd-entity-knockback-API.patchAdd-entity-liquid-API.patchAdd-environment-variable-to-disable-server-gui.patchAdd-exception-reporting-event.patchAdd-exploded-block-state-to-BlockExplodeEvent.patchAdd-fast-alternative-constructor-for-Rotations.patchAdd-fire-tick-delay-option.patchAdd-getDrops-to-BlockState.patchAdd-getMainThreadExecutor-to-BukkitScheduler.patchAdd-getOfflinePlayerIfCached-String.patchAdd-handshake-event-to-allow-plugins-to-handle-clien.patchAdd-ignore-discounts-API.patchAdd-isCollidable-methods-to-various-places.patchAdd-methods-for-working-with-arrows-stuck-in-living-.patchAdd-methods-to-find-targets-for-lightning-strikes.patchAdd-methods-to-get-translation-keys.patchAdd-missing-BlockFadeEvents.patchAdd-missing-SpigotConfig-logCommands-check.patchAdd-missing-Validate-calls-to-CraftServer-getSpawnLi.patchAdd-missing-block-data-mins-and-maxes.patchAdd-missing-important-BlockStateListPopulator-method.patchAdd-missing-structure-set-seed-configs.patchAdd-missing-team-sidebar-display-slots.patchAdd-moon-phase-API.patchAdd-more-Campfire-API.patchAdd-more-Evoker-API.patchAdd-more-LimitedRegion-API.patchAdd-more-WanderingTrader-API.patchAdd-more-Witch-API.patchAdd-more-Zombie-API.patchAdd-more-advancement-API.patchAdd-new-overload-to-PersistentDataContainer-has.patchAdd-openSign-method-to-HumanEntity.patchAdd-option-for-console-having-all-permissions.patchAdd-option-for-strict-advancement-dimension-checks.patchAdd-option-to-allow-iron-golems-to-spawn-in-air.patchAdd-option-to-disable-pillager-patrols.patchAdd-option-to-fix-items-merging-through-walls.patchAdd-option-to-make-parrots-stay-on-shoulders-despite.patchAdd-option-to-nerf-pigmen-from-nether-portals.patchAdd-option-to-prevent-players-from-moving-into-unloa.patchAdd-packet-limiter-config.patchAdd-paper-dumplisteners-command.patchAdd-paper-mobcaps-and-paper-playermobcaps.patchAdd-permission-for-command-blocks.patchAdd-phantom-creative-and-insomniac-controls.patchAdd-playPickupItemAnimation-to-LivingEntity.patchAdd-player-health-update-API.patchAdd-pre-unbreaking-amount-to-PlayerItemDamageEvent.patchAdd-raw-address-to-AsyncPlayerPreLoginEvent.patchAdd-ray-tracing-methods-to-LivingEntity.patchAdd-recipe-to-cook-events.patchAdd-root-admin-user-detection.patchAdd-sendOpLevel-API.patchAdd-server-name-parameter.patchAdd-setMaxPlayers-API.patchAdd-setPlayerProfile-API-for-Skulls.patchAdd-setting-for-proxy-online-mode-status.patchAdd-some-minimal-debug-information-to-chat-packet-er.patchAdd-source-to-PlayerExpChangeEvent.patchAdd-sun-related-API.patchAdd-support-for-Proxy-Protocol.patchAdd-support-for-hex-color-codes-in-console.patchAdd-tick-times-API-and-mspt-command.patchAdd-toggle-for-always-placing-the-dragon-egg.patchAdd-transient-modifier-API.patchAdd-various-missing-EntityDropItemEvent-calls.patchAdd-velocity-warnings.patchAdd-version-history-to-version-command.patchAdd-villager-reputation-API.patchAdd-worldborder-events.patchAdd-zombie-targets-turtle-egg-config.patchAdded-EntityDamageItemEvent.patchAdded-EntityToggleSitEvent.patchAdded-PlayerBedFailEnterEvent.patchAdded-PlayerDeepSleepEvent.patchAdded-PlayerLecternPageChangeEvent.patchAdded-PlayerLoomPatternSelectEvent.patchAdded-PlayerStonecutterRecipeSelectEvent.patchAdded-ServerResourcesReloadedEvent.patchAdded-WorldGameRuleChangeEvent.patchAdded-byte-array-serialization-deserialization-for-P.patchAdded-firing-of-PlayerChangeBeaconEffectEvent.patchAdded-getHostname-to-AsyncPlayerPreLoginEvent.patchAdded-missing-default-perms-for-commands.patchAdded-world-settings-for-mobs-picking-up-loot.patchAdditional-Block-Material-API-s.patchAdds-PlayerArmSwingEvent.patchAdventure.patchAll-chunks-are-slime-spawn-chunks-toggle.patchAllow-Reloading-of-Command-Aliases.patchAllow-Reloading-of-Custom-Permissions.patchAllow-Saving-of-Oversized-Chunks.patchAllow-adding-items-to-BlockDropItemEvent.patchAllow-changing-bed-s-occupied-property.patchAllow-chests-to-be-placed-with-NBT-data.patchAllow-controlled-flushing-for-network-manager.patchAllow-delegation-to-vanilla-chunk-gen.patchAllow-disabling-armour-stand-ticking.patchAllow-disabling-mob-spawner-spawn-egg-transformation.patchAllow-for-toggling-of-spawn-chunks.patchAllow-nerfed-mobs-to-jump-and-take-water-damage.patchAllow-skipping-writing-of-comments-to-server.propert.patchAllow-spawning-Item-entities-with-World.spawnEntity.patchAllow-specifying-a-custom-authentication-servers-dow.patchAllow-to-change-the-podium-for-the-EnderDragon.patchAllow-using-signs-inside-spawn-protection.patchAlways-allow-item-changing-in-Fireball.patchAlways-parse-protochunk-light-sources-unless-it-is-m.patchAlways-tick-falling-blocks.patchAnti-Xray.patchAnvilDamageEvent.patchAsync-GameProfileCache-saving.patchAsync-command-map-building.patchAsyncTabCompleteEvent.patchAttempt-to-recalculate-regionfile-header-if-it-is-co.patchAttributes-API-for-item-defaults.patchAvoid-Lazy-Initialization-for-Enum-Fields.patchAvoid-blocking-on-Network-Manager-creation.patchAvoid-error-bubbling-up-when-item-stack-is-empty-in-.patchBasic-PlayerProfile-API.patchBe-a-bit-more-informative-in-maxHealth-exception.patchBeacon-API-custom-effect-ranges.patchBees-get-gravity-in-void.-Fixes-MC-167279.patchBlock-Enderpearl-Travel-Exploit.patchBlock-Entity-remove-from-being-called-on-Players.patchBlock-Ticking-API.patchBlock-player-logins-during-server-shutdown.patchBlockDestroyEvent.patchBook-Size-Limits.patchBound-Treasure-Maps-to-World-Border.patchBrand-support.patchBreak-redstone-on-top-of-trap-doors-early.patchBreak-up-and-make-tab-spam-limits-configurable.patchBucketable-API.patchBuffer-OOB-setBlock-calls.patchBuffer-joins-to-world.patchCache-DataFixerUpper-Rewrite-Rules-on-demand.patchCache-block-data-strings.patchCache-burn-durations.patchCache-user-authenticator-threads.patchCall-BlockPhysicsEvent-more-often.patchCall-PaperServerListPingEvent-for-legacy-pings.patchCall-WhitelistToggleEvent-when-whitelist-is-toggled.patchCall-player-spectator-target-events-and-improve-impl.patchCap-Entity-Collisions.patchCatch-JsonParseException-in-Entity-and-TE-names.patchChange-EnderEye-target-without-changing-other-things.patchCheck-Drowned-for-Villager-Aggression-Config.patchCheck-online-mode-before-converting-and-renaming-pla.patchCheck-requirement-before-suggesting-root-nodes.patchChunk-Save-Reattempt.patchClean-up-duplicated-GameProfile-Properties.patchClear-bucket-NBT-after-dispense.patchClimbing-should-not-bypass-cramming-gamerule.patchCollision-API.patchCollision-option-for-requiring-a-player-participant.patchComplete-resource-pack-API.patchConfig-option-for-Piglins-guarding-chests.patchConfigurable-Alternative-LootPool-Luck-Formula.patchConfigurable-Cartographer-Treasure-Maps.patchConfigurable-Chunk-Inhabited-Time.patchConfigurable-Disabling-Cat-Chest-Detection.patchConfigurable-Grass-Spread-Tick-Rate.patchConfigurable-Keep-Spawn-Loaded-range-per-world.patchConfigurable-Non-Player-Arrow-Despawn-Rate.patchConfigurable-Player-Collision.patchConfigurable-RCON-IP-address.patchConfigurable-baby-zombie-movement-speed.patchConfigurable-cactus-bamboo-and-reed-growth-heights.patchConfigurable-chance-of-villager-zombie-infection.patchConfigurable-chat-thread-limit.patchConfigurable-connection-throttle-kick-message.patchConfigurable-container-update-tick-rate.patchConfigurable-door-breaking-difficulty.patchConfigurable-end-credits.patchConfigurable-feature-seeds.patchConfigurable-fishing-time-ranges.patchConfigurable-flying-kick-messages.patchConfigurable-inter-world-teleportation-safety.patchConfigurable-item-frame-map-cursor-update-interval.patchConfigurable-max-block-light-for-monster-spawning.patchConfigurable-max-leash-distance.patchConfigurable-mob-spawner-tick-rate.patchConfigurable-packet-in-spam-threshold.patchConfigurable-projectile-relative-velocity.patchConfigurable-sculk-sensor-listener-range.patchConfigurable-spawn-chances-for-skeleton-horses.patchConfigurable-speed-for-water-flowing-over-lava.patchConfigurable-sprint-interruption-on-attack.patchConfigurable-top-of-nether-void-damage.patchConsolidate-flush-calls-for-entity-tracker-packets.patchConvert-legacy-attributes-in-Item-Meta.patchCorrectly-handle-ArmorStand-invisibility.patchCorrectly-handle-interactions-with-items-on-cooldown.patchCorrectly-shrink-items-during-EntityResurrectEvent.patchCreate-HoverEvent-from-ItemStack-Entity.patchCustom-Chat-Completion-Suggestions-API.patchCustom-Potion-Mixes.patchCustom-replacement-for-eaten-items.patchCustom-table-implementation-for-blockstate-state-loo.patchDead-Player-s-shouldn-t-be-able-to-move.patchDefault-loading-permissions.yml-before-plugins.patchDeobfuscate-stacktraces-in-log-messages-crash-report.patchDetail-more-information-in-watchdog-dumps.patchDetect-headless-JREs.patchDisable-Explicit-Network-Manager-Flushing.patchDisable-Scoreboards-for-non-players-by-default.patchDisable-allowListing-before-received-from-client.patchDisable-component-selector-resolving-in-books-by-def.patchDisable-explosion-knockback.patchDisable-ice-and-snow.patchDisable-spigot-tick-limiters.patchDisable-thunder.patchDistance-manager-tick-timings.patchDo-not-accept-invalid-client-settings.patchDo-not-allow-bees-to-load-chunks-for-beehives.patchDo-not-crash-from-invalid-ingredient-lists-in-Villag.patchDo-not-let-armorstands-drown.patchDo-not-let-the-server-load-chunks-from-newer-version.patchDo-not-load-chunks-for-Pathfinding.patchDo-not-run-close-logic-for-inventories-on-chunk-unlo.patchDo-not-run-raytrace-logic-for-AIR.patchDo-not-submit-profile-lookups-to-worldgen-threads.patchDo-not-sync-load-chunk-for-dynamic-game-event-listen.patchDolphin-API.patchDon-t-allow-digging-into-unloaded-chunks.patchDon-t-allow-entities-to-ride-themselves-572.patchDon-t-allow-vehicle-movement-from-players-while-tele.patchDon-t-apply-cramming-damage-to-players.patchDon-t-broadcast-messages-to-command-blocks.patchDon-t-call-getItemMeta-on-hasItemMeta.patchDon-t-check-ConvertSigns-boolean-every-sign-save.patchDon-t-check-chunk-for-portal-on-world-gen-entity-add.patchDon-t-crash-if-player-is-attempted-to-be-removed-fro.patchDon-t-fire-BlockFade-on-worldgen-threads.patchDon-t-ignore-result-of-PlayerEditBookEvent.patchDon-t-load-Chunks-from-Hoppers-and-other-things.patchDon-t-log-debug-logging-being-disabled.patchDon-t-lookup-fluid-state-when-raytracing.patchDon-t-lookup-game-profiles-that-have-no-UUID-and-no-.patchDon-t-move-existing-players-to-world-spawn.patchDon-t-nest-if-we-don-t-need-to-when-cerealising-text.patchDon-t-print-component-in-resource-pack-rejection-mes.patchDon-t-read-neighbour-chunk-data-off-disk-when-conver.patchDon-t-require-FACING-data.patchDon-t-respond-to-ServerboundCommandSuggestionPacket-.patchDon-t-run-entity-collision-code-if-not-needed.patchDon-t-save-empty-scoreboard-teams-to-scoreboard.dat.patchDon-t-sleep-after-profile-lookups-if-not-needed.patchDon-t-tick-dead-players.patchDon-t-tick-markers.patchDon-t-use-level-random-in-entity-constructors.patchDont-resent-entity-on-art-update.patchDont-send-unnecessary-sign-update.patchDrop-carried-item-when-player-has-disconnected.patchDrop-falling-block-and-tnt-entities-at-the-specified.patchDuplicate-UUID-Resolve-Option.patchEigencraft-redstone-implementation.patchElder-Guardian-appearance-API.patchEmpty-commands-shall-not-be-dispatched.patchEnderDragon-Events.patchEnderman.teleportRandomly.patchEndermanAttackPlayerEvent.patchEndermanEscapeEvent.patchEnforce-Sync-Player-Saves.patchEnhance-console-tab-completions-for-brigadier-comman.patchEnsure-Entity-AABB-s-are-never-invalid.patchEnsure-EntityRaider-respects-game-and-entity-rules-f.patchEnsure-commands-are-not-ran-async.patchEnsure-disconnect-for-book-edit-is-called-on-main.patchEnsure-entity-passenger-world-matches-ridden-entity.patchEnsure-safe-gateway-teleport.patchEnsure-valid-vehicle-status.patchEntity-Activation-Range-2.0.patchEntity-AddTo-RemoveFrom-World-Events.patchEntity-Jump-API.patchEntity-Origin-API.patchEntity-fromMobSpawner.patchEntity-getEntitySpawnReason.patchEntity-isTicking.patchEntity-load-save-limit-per-chunk.patchEntity-powdered-snow-API.patchEntityMoveEvent.patchEntityPathfindEvent.patchEntityPickupItemEvent-fixes.patchEntityRegainHealthEvent-isFastRegen-API.patchExecute-chunk-tasks-fairly-for-worlds-while-waiting-.patchExecute-chunk-tasks-mid-tick.patchExpand-Explosions-API.patchExpand-PlayerItemMendEvent.patchExpand-World.spawnParticle-API-and-add-Builder.patchExpand-world-key-API.patchExperienceOrbMergeEvent.patchExperienceOrbs-API-for-Reason-Source-Triggering-play.patchExpose-LivingEntity-hurt-direction.patchExpose-MinecraftServer-isRunning.patchExpose-Tracked-Players.patchExpose-attack-cooldown-methods-for-Player.patchExpose-client-protocol-version-and-virtual-host.patchExpose-furnace-minecart-push-values.patchExpose-game-version.patchExpose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patchExpose-pre-collision-moving-velocity-to-VehicleBlock.patchExpose-protocol-version.patchExpose-server-CommandMap.patchExpose-the-Entity-Counter-to-allow-plugins-to-use-va.patchExpose-the-internal-current-tick.patchExpose-vanilla-BiomeProvider-from-WorldInfo.patchExpose-world-spawn-angle.patchExtend-Player-Interact-cancellation.patchExtend-block-drop-capture-to-capture-all-items-added.patchFallingBlock-auto-expire-setting.patchFaster-redstone-torch-rapid-clock-removal.patchFill-Profile-Property-Events.patchFilter-bad-tile-entity-nbt-data-from-falling-blocks.patchFire-CauldronLevelChange-on-initial-fill.patchFire-EntityChangeBlockEvent-in-more-places.patchFire-event-on-GS4-query.patchFirework-API-s.patchFix-AdvancementDataPlayer-leak-due-from-quitting-ear.patchFix-Bee-flower-NPE.patchFix-Bukkit-NamespacedKey-shenanigans.patchFix-CB-call-to-changed-postToMainThread-method.patchFix-CCE-for-SplashPotion-and-LingeringPotion-spawnin.patchFix-Cancelling-BlockPlaceEvent-triggering-physics.patchFix-ChunkSnapshot-isSectionEmpty-int-and-optimize-Pa.patchFix-CocaoDecorator-causing-a-crash-when-trying-to-ge.patchFix-Concurrency-issue-in-ShufflingList.patchFix-CraftCriteria-defaults-map.patchFix-CraftEntity-hashCode.patchFix-CraftPotionBrewer-cache.patchFix-CraftScheduler-runTaskTimerAsynchronously-Plugin.patchFix-CraftSound-backwards-compatibility.patchFix-CraftTeam-null-check.patchFix-Custom-Shapeless-Custom-Crafting-Recipes.patchFix-DamageCause-for-Falling-Blocks.patchFix-EndDragonFight-killed-statuses-should-be-false-f.patchFix-Entity-Position-Desync.patchFix-Entity-Teleportation-and-cancel-velocity-if-tele.patchFix-EntityArgument-suggestion-permissions-to-align-w.patchFix-EntityCombustEvent-cancellation-cant-fully-preve.patchFix-FurnaceInventory-for-smokers-and-blast-furnaces.patchFix-GameProfileCache-concurrency.patchFix-HumanEntity-drop-not-updating-the-client-inv.patchFix-Longstanding-Broken-behavior-of-PlayerJoinEvent.patchFix-MC-117075-TE-Unload-Lag-Spike.patchFix-MC-157464-Prevent-sleeping-villagers-moving-towa.patchFix-MC-158900.patchFix-MapLike-Codec-missing-key-selector.patchFix-NBT-pieces-overriding-a-block-entity-during-worl.patchFix-NBT-type-issues.patchFix-NPE-for-BlockDataMeta-getBlockData.patchFix-NPE-on-Allay-stopDancing-while-not-dancing.patchFix-Not-a-string-Map-Conversion-spam.patchFix-NotePlayEvent.patchFix-OfflinePlayer-getBedSpawnLocation.patchFix-Old-Sign-Conversion.patchFix-Per-World-Difficulty-Remembering-Difficulty.patchFix-Player-spawnParticle-x-y-z-precision-loss.patchFix-PlayerBucketEmptyEvent-result-itemstack.patchFix-PlayerDropItemEvent-using-wrong-item.patchFix-PlayerItemConsumeEvent-cancelling-properly.patchFix-PotionEffect-ignores-icon-flag.patchFix-SPIGOT-5824-Bukkit-world-container-is-not-used.patchFix-SPIGOT-5885-Unable-to-disable-advancements.patchFix-SPIGOT-5989.patchFix-SpawnChangeEvent-not-firing-for-all-use-cases.patchFix-SpawnEggMeta-get-setSpawnedType.patchFix-Spigot-Config-not-using-commands.spam-exclusions.patchFix-Spigot-growth-modifiers.patchFix-SpongeAbsortEvent-handling.patchFix-StructureGrowEvent-species-for-RED_MUSHROOM.patchFix-World-isChunkGenerated-calls.patchFix-a-bunch-of-vanilla-bugs.patchFix-a-couple-of-upstream-bed-issues.patchFix-advancement-triggers-for-entity-damage.patchFix-anchor-respawn-acting-as-a-bed-respawn-from-the-.patchFix-and-optimise-world-force-upgrading.patchFix-api-checking-banned-ips.patchFix-arrows-never-despawning-MC-125757.patchFix-async-entity-add-due-to-fungus-trees.patchFix-beehives-generating-from-using-bonemeal.patchFix-bees-aging-inside-hives.patchFix-block-place-logic.patchFix-cancelled-powdered-snow-bucket-placement.patchFix-cancelling-ProjectileHitEvent-for-piercing-arrow.patchFix-certain-inventories-returning-null-Locations.patchFix-chiseled-bookshelf-and-jukebox-setItem-with-air.patchFix-client-lag-on-advancement-loading.patchFix-commands-from-signs-not-firing-command-events.patchFix-concurrenct-access-to-lookups-field-in-RegistryO.patchFix-crash-relating-to-bad-recipes-in-furnace-like-ti.patchFix-curing-zombie-villager-discount-exploit.patchFix-custom-piglin-loved-items.patchFix-dangerous-end-portal-logic.patchFix-demo-flag-not-enabling-demo-mode.patchFix-deop-kicking-non-whitelisted-player-when-white-l.patchFix-destroying-beehive-without-any-players-nearby-th.patchFix-entity-type-tags-suggestions-in-selectors.patchFix-exploit-that-allowed-colored-signs-to-be-created.patchFix-falling-block-spawn-methods.patchFix-for-large-move-vectors-crashing-server.patchFix-force-opening-enchantment-tables.patchFix-harming-potion-dupe.patchFix-hex-colors-not-working-in-some-kick-messages.patchFix-inconsistencies-in-dispense-events-regarding-sta.patchFix-incorrect-message-for-outdated-client.patchFix-incosistency-issue-with-empty-map-items-in-CB.patchFix-interact-event-not-being-called-in-adventure.patchFix-invulnerable-end-crystals.patchFix-issues-with-mob-conversion.patchFix-item-locations-dropped-from-campfires.patchFix-items-not-falling-correctly.patchFix-items-vanishing-through-end-portal.patchFix-lag-from-explosions-processing-dead-entities.patchFix-last-firework-in-stack-not-having-effects-when-d.patchFix-merchant-inventory-not-closing-on-entity-removal.patchFix-missing-chunks-due-to-integer-overflow.patchFix-nerfed-slime-when-splitting.patchFix-new-block-data-for-EntityChangeBlockEvent.patchFix-numerous-item-duplication-issues-and-teleport-is.patchFix-piston-physics-inconsistency-MC-188840.patchFix-player-kick-on-shutdown.patchFix-plugin-loggers-on-server-shutdown.patchFix-potions-splash-events.patchFix-regex-mistake-in-CB-NBT-int-deserialization.patchFix-removing-recipes-from-RecipeIterator.patchFix-return-value-of-Block-applyBoneMeal-always-being.patchFix-sand-duping.patchFix-saving-in-unloadWorld.patchFix-setPatternColor-on-tropical-fish-bucket-meta.patchFix-slime-spawners-not-spawning-outside-slime-chunks.patchFix-some-rails-connecting-improperly.patchFix-sounds-when-item-frames-are-modified-MC-123450.patchFix-sticky-pistons-and-BlockPistonRetractEvent.patchFix-suggest-command-message-for-brigadier-syntax-exc.patchFix-swamp-hut-cat-generation-deadlock.patchFix-test-not-bootstrapping.patchFix-text-display-error-on-spawn.patchFix-this-stupid-bullshit.patchFix-tripwire-state-inconsistency.patchFix-upstreams-block-state-factories.patchFix-villager-boat-exploit.patchFix-villager-trading-demand-MC-163962.patchFix-xp-reward-for-baby-zombies.patchFixed-TileEntityBell-memory-leak.patchFixes-and-additions-to-the-SpawnReason-API.patchFixes-kick-event-leave-message-not-being-sent.patchFlag-to-disable-the-channel-limit.patchFlat-bedrock-generator-settings.patchFlying-Fall-Damage.patchForce-close-world-loading-screen.patchForward-CraftEntity-in-teleport-command.patchFreeze-Tick-Lock-API.patchFriction-API.patchFurnace-RecipesUsed-API.patchFurther-improve-server-tick-loop.patchGet-entity-default-attributes.patchGoat-ram-API.patchGuard-against-invalid-entity-positions.patchGuard-against-serializing-mismatching-chunk-coordina.patchHandle-Item-Meta-Inconsistencies.patchHandle-Large-Packets-disconnecting-client.patchHandle-Oversized-Tile-Entities-in-chunks.patchHandle-plugin-prefixes-using-Log4J-configuration.patchHide-sync-chunk-writes-behind-flag.patchHide-unnecessary-itemmeta-from-clients.patchHighly-optimise-single-and-multi-AABB-VoxelShapes-an.patchHonor-EntityAgeable.ageLock.patchHook-into-CB-plugin-rewrites.patchIgnore-impossible-spawn-tick.patchImplement-API-to-expose-exact-interaction-point.patchImplement-API-to-get-Material-from-Boats-and-Minecar.patchImplement-BlockPreDispenseEvent.patchImplement-Brigadier-Mojang-API.patchImplement-CraftBlockSoundGroup.patchImplement-EntityKnockbackByEntityEvent-and-EntityPus.patchImplement-EntityTeleportEndGatewayEvent.patchImplement-Expanded-ArmorStand-API.patchImplement-Mob-Goal-API.patchImplement-Paper-VersionChecker.patchImplement-Player-Client-Options-API.patchImplement-PlayerFlowerPotManipulateEvent.patchImplement-PlayerLocaleChangeEvent.patchImplement-PlayerPostRespawnEvent.patchImplement-TargetHitEvent.patchImplement-World.getEntity-UUID-API.patchImplement-alternative-item-despawn-rate.patchImplement-an-API-for-CanPlaceOn-and-CanDestroy-NBT-v.patchImplement-enchantWithLevels-API.patchImplement-ensureServerConversions-API.patchImplement-extended-PaperServerListPingEvent.patchImplement-furnace-cook-speed-multiplier-API.patchImplement-getComputedBiome-API.patchImplement-getI18NDisplayName.patchImplement-methods-to-convert-between-Component-and-B.patchImplement-regenerateChunk.patchImplemented-BlockFailedDispenseEvent.patchImprove-Arrow-API.patchImprove-Block-breakNaturally-API.patchImprove-BlockPosition-inlining.patchImprove-EntityShootBowEvent.patchImprove-Legacy-Component-serialization-size.patchImprove-Log4J-Configuration-Plugin-Loggers.patchImprove-Maps-in-item-frames-performance-and-bug-fixe.patchImprove-PortalEvents.patchImprove-Server-Thread-Pool-and-Thread-Priorities.patchImprove-ServerGUI.patchImprove-and-expand-AsyncCatcher.patchImprove-boat-collision-performance.patchImprove-death-events.patchImprove-fix-EntityTargetLivingEntityEvent.patchImprove-inlining-for-some-hot-BlockBehavior-and-Flui.patchImprove-logging-and-errors.patchImprove-scoreboard-entries.patchImprove-the-Saddle-API-for-Horses.patchImproved-Async-Task-Scheduler.patchImproved-Watchdog-Support.patchIncrease-Light-Queue-Size.patchInline-shift-direction-fields.patchIntroduce-beacon-activation-deactivation-events.patchInventory-close.patchInventory-getHolder-method-without-block-snapshot.patchInventory-removeItemAnySlot.patchInventoryCloseEvent-Reason-API.patchItem-Rarity-API.patchItem-canEntityPickup.patchItem-no-age-no-player-pickup.patchItemStack-damage-API.patchItemStack-getMaxItemUseDuration.patchItemStack-repair-check-API.patchKick-on-main-for-illegal-chat.patchLag-compensate-eating.patchLazily-track-plugin-scoreboards-by-default.patchLeft-handed-API.patchLimit-Client-Sign-length-more.patchLimit-item-frame-cursors-on-maps.patchLimit-pet-look-distance.patchLimit-recipe-packets.patchLine-Of-Sight-Changes.patchLivingEntity-Hand-Raised-Item-Use-API.patchLivingEntity-setKiller.patchLoad-effect-amplifiers-greater-than-127-correctly.patchLootTable-API-Replenishable-Lootables-Feature.patchMC-145656-Fix-Follow-Range-Initial-Target.patchMC-4-Fix-item-position-desync.patchMC-50319-Check-other-worlds-for-shooter-of-projectil.patchMake-CraftWorld-loadChunk-int-int-false-load-unconve.patchMake-EntityUnleashEvent-cancellable.patchMake-hoppers-respect-inventory-max-stack-size.patchMake-item-validations-configurable.patchMake-legacy-ping-handler-more-reliable.patchMake-schedule-command-per-world.patchMake-shield-blocking-delay-configurable.patchMake-some-itemstacks-nonnull.patchMake-sure-inlined-getChunkAt-has-inlined-logic-for-l.patchMake-the-GUI-graph-fancier.patchMake-the-default-permission-message-configurable.patchMake-water-animal-spawn-height-configurable.patchManually-inline-methods-in-BlockPosition.patchMaps-shouldn-t-load-chunks.patchMerchant-getRecipes-should-return-an-immutable-list.patchMissing-Entity-Behavior-API.patchMissing-eating-regain-reason.patchMissing-effect-cause.patchMitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patchMob-Pathfinding-API.patchMob-Spawner-API-Enhancements.patchMore-CommandBlock-API.patchMore-Enchantment-API.patchMore-Lidded-Block-API.patchMore-PotionEffectType-API.patchMore-Projectile-API.patchMore-Teleport-API.patchMore-World-API.patchMore-accurate-isInOpenWater-impl.patchMore-lightning-API.patchMore-vanilla-friendly-methods-to-update-trades.patchMove-player-to-spawn-point-if-spawn-in-unloaded-worl.patchMove-range-check-for-block-placing-up.patchMulti-Block-Change-API-Implementation.patchMultiple-Entries-with-Scoreboards.patchName-craft-scheduler-threads-according-to-the-plugin.patchNameable-Banner-API.patchOcelot-despawns-should-honor-nametags-and-leash.patchOnly-count-Natural-Spawned-mobs-towards-natural-spaw.patchOnly-process-BlockPhysicsEvent-if-a-plugin-has-a-lis.patchOnly-refresh-abilities-if-needed.patchOnly-send-global-sounds-to-same-world-if-limiting-ra.patchOnly-write-chunk-data-to-disk-if-it-serializes-witho.patchOprimise-map-impl-for-tracked-players.patchOptimise-BlockSoil-nearby-water-lookup.patchOptimise-BlockState-s-hashCode-equals.patchOptimise-Chunk-getFluid.patchOptimise-EntityGetter-getPlayerByUUID.patchOptimise-chunk-tick-iteration.patchOptimise-collision-checking-in-player-move-packet-ha.patchOptimise-general-POI-access.patchOptimise-getChunkAt-calls-for-loaded-chunks.patchOptimise-getType-calls.patchOptimise-nearby-player-lookups.patchOptimise-non-flush-packet-sending.patchOptimise-random-block-ticking.patchOptimise-recalcBlockCounts-for-empty-sections.patchOptimize-Biome-Mob-Lookups-for-Mob-Spawning.patchOptimize-Bit-Operations-by-inlining.patchOptimize-BlockPosition-helper-methods.patchOptimize-Captured-TileEntity-Lookup.patchOptimize-Collision-to-not-load-chunks.patchOptimize-CraftBlockData-Creation.patchOptimize-DataBits.patchOptimize-Dynamic-get-Missing-Keys.patchOptimize-GoalSelector-Goal.Flag-Set-operations.patchOptimize-HashMapPalette.patchOptimize-Hoppers.patchOptimize-ItemStack.isEmpty.patchOptimize-MappedRegistry.patchOptimize-Network-Manager-and-add-advanced-packet-sup.patchOptimize-NetworkManager-Exception-Handling.patchOptimize-Pathfinder-Remove-Streams-Optimized-collect.patchOptimize-Pathfinding.patchOptimize-Voxel-Shape-Merging.patchOptimize-World-Time-Updates.patchOptimize-World.isLoaded-BlockPosition-Z.patchOptimize-anyPlayerCloseEnoughForSpawning-to-use-dist.patchOptimize-brigadier-child-sorting-performance.patchOptimize-call-to-getFluid-for-explosions.patchOptimize-entity-tracker-passenger-checks.patchOptimize-explosions.patchOptimize-indirect-passenger-iteration.patchOptimize-isInWorldBounds-and-getBlockState-for-inlin.patchOption-for-maximum-exp-value-when-merging-orbs.patchOption-to-have-default-CustomSpawners-in-custom-worl.patchOption-to-prevent-NBT-copy-in-smithing-recipes.patchOption-to-prevent-armor-stands-from-doing-entity-loo.patchOption-to-use-vanilla-per-world-scoreboard-coloring-.patchOptional-TNT-doesn-t-move-in-water.patchPaper-Metrics.patchPaper-Plugins.patchPaper-command.patchPaper-dumpitem-command.patchPass-ServerLevel-for-gamerule-callbacks.patchPillager-patrol-spawn-settings-and-per-player-option.patchPlayer-Chunk-Load-Unload-Events.patchPlayer-Entity-Tracking-Events.patchPlayer-Tab-List-and-Title-APIs.patchPlayer-affects-spawning-API.patchPlayer-elytra-boost-API.patchPlayer.setPlayerProfile-API.patchPlayerAdvancementCriterionGrantEvent.patchPlayerAttemptPickupItemEvent.patchPlayerDeathEvent-getItemsToKeep.patchPlayerDeathEvent-shouldDropExperience.patchPlayerElytraBoostEvent.patchPlayerLaunchProjectileEvent.patchPlayerNaturallySpawnCreaturesEvent.patchPlayerPickupExperienceEvent.patchPlayerPickupItemEvent-setFlyAtPlayer.patchPlayerReadyArrowEvent.patchPlayerTeleportEndGatewayEvent.patchPortalCreateEvent-needs-to-know-its-entity.patchPotential-bed-API.patchPreCreatureSpawnEvent.patchPreSpawnerSpawnEvent.patchPreserve-overstacked-loot.patchPrevent-AFK-kick-while-watching-end-credits.patchPrevent-ContainerOpenersCounter-openCount-from-going.patchPrevent-Double-PlayerChunkMap-adds-crashing-server.patchPrevent-Enderman-from-loading-chunks.patchPrevent-Frosted-Ice-from-loading-holding-chunks.patchPrevent-GameEvents-being-fired-from-unloaded-chunks.patchPrevent-Mob-AI-Rules-from-Loading-Chunks.patchPrevent-Pathfinding-out-of-World-Border.patchPrevent-bees-loading-chunks-checking-hive-position.patchPrevent-causing-expired-keys-from-impacting-new-join.patchPrevent-chunk-loading-from-Fluid-Flowing.patchPrevent-compass-from-loading-chunks.patchPrevent-consuming-the-wrong-itemstack.patchPrevent-empty-items-from-being-added-to-world.patchPrevent-entity-loading-causing-async-lookups.patchPrevent-excessive-velocity-through-repeated-crits.patchPrevent-grindstones-from-overstacking-items.patchPrevent-headless-pistons-from-being-created.patchPrevent-logins-from-being-processed-when-the-player-.patchPrevent-mob-spawning-from-loading-generating-chunks.patchPrevent-opening-inventories-when-frozen.patchPrevent-position-desync-in-playerconnection-causing-.patchPrevent-rayTrace-from-loading-chunks.patchPrevent-sending-oversized-item-data-in-equipment-and.patchPrevent-softlocked-end-exit-portal-generation.patchPrevent-sync-chunk-loads-when-villagers-try-to-find-.patchPrevent-teleporting-dead-entities.patchPrevent-tile-entity-and-entity-crashes.patchPrevent-tile-entity-copies-loading-chunks.patchPrint-Error-details-when-failing-to-save-player-data.patchProfile-Lookup-Events.patchProfileWhitelistVerifyEvent.patchProperly-fix-item-duplication-bug.patchProperly-handle-async-calls-to-restart-the-server.patchProperly-resend-entities.patchProtect-Bedrock-and-End-Portal-Frames-from-being-des.patchProvide-E-TE-Chunk-count-stat-methods.patchPut-world-into-worldlist-before-initing-the-world.patchRangedEntity-API.patchRate-options-and-timings-for-sensors-and-behaviors.patchReduce-Either-Optional-allocation.patchReduce-MutableInt-allocations-from-light-engine.patchReduce-allocation-of-Vec3D-by-entity-tracker.patchReduce-blockpos-allocation-from-pathfinding.patchReduce-memory-footprint-of-NBTTagCompound.patchReduce-worldgen-thread-worker-count-for-low-core-cou.patchRefresh-ProjectileSource-for-projectiles.patchRefresh-player-inventory-when-cancelling-PlayerInter.patchRemote-Connections-shouldn-t-hold-up-shutdown.patchRemove-CraftItemStack-setAmount-null-assignment.patchRemove-CraftScheduler-Async-Task-Debugger.patchRemove-Metadata-on-reload.patchRemove-ProjectileHitEvent-call-when-fireballs-dead.patchRemove-client-side-code-using-deprecated-for-removal.patchRemove-garbage-Java-version-check.patchRemove-invalid-signature-login-stacktrace.patchRemove-some-streams-from-structures.patchRemove-stale-POIs.patchRemove-streams-for-villager-AI.patchRemove-streams-from-SensorNearest.patchRemove-streams-from-classes-related-villager-gossip.patchRemove-unnecessary-itemmeta-handling.patchRemove-unnecessary-onTrackingStart-during-navigation.patchReset-Ender-Crystals-on-Dragon-Spawn.patchReset-placed-block-on-exception.patchReset-players-airTicks-on-respawn.patchReset-shield-blocking-on-dimension-change.patchReset-spawner-timer-when-spawner-event-is-cancelled.patchRestore-custom-InventoryHolder-support.patchRestore-vanilla-default-mob-spawn-range-and-water-an.patchRetain-block-place-order-when-capturing-blockstates.patchReturn-chat-component-with-empty-text-instead-of-thr.patchRewrite-LogEvents-to-contain-the-source-jars-in-stac.patchRewrite-chunk-system.patchRewrite-dataconverter-system.patchSanitise-RegionFileCache-and-make-configurable.patchSanitize-ResourceLocation-error-logging.patchSanitize-Sent-BlockEntity-NBT.patchSend-attack-SoundEffects-only-to-players-who-can-see.patchSend-block-entities-after-destroy-prediction.patchSend-empty-commands-if-tab-completion-is-disabled.patchSend-full-pos-packets-for-hard-colliding-entities.patchServer-Tick-Events.patchSet-area-affect-cloud-rotation.patchSet-cap-on-JDK-per-thread-native-byte-buffer-cache.patchSet-position-before-player-sending-on-dimension-chan.patchSet-spigots-verbose-world-setting-to-false-by-def.patchShoulder-Entities-Release-API.patchShow-Paper-in-client-crashes-server-lists-and-Mojang.patchShow-blockstate-location-if-we-failed-to-read-it.patchSignificantly-improve-performance-of-the-end-generat.patchSkeletonHorse-Additions.patchSlime-Pathfinder-Events.patchSpawn-player-in-correct-world-on-login.patchStarlight.patchStinger-API.patchStop-copy-on-write-operations-for-updating-light-dat.patchStop-large-look-changes-from-crashing-the-server.patchString-based-Action-Bar-API.patchSupport-components-in-ItemMeta.patchSupport-old-UUID-format-for-NBT.patchSync-offhand-slot-in-menus.patchSynchronize-PalettedContainer-instead-of-ThreadingDe.patchSystem-property-for-disabling-watchdoge.patchTODO-Registry-Modification-API.patchTameable-getOwnerUniqueId-API.patchThread-Safe-Vanilla-Command-permission-checking.patchThrow-exception-on-world-create-while-being-ticked.patchThrow-proper-exception-on-empty-JsonList-file.patchTime-scoreboard-search.patchTimings-v2.patchToggle-for-removing-existing-dragon.patchToggleable-player-crits-helps-mitigate-hacked-client.patchTrack-projectile-source-for-fireworks-from-dispenser.patchTracking-Range-Improvements.patchTreat-sequence-violations-like-they-should-be.patchTrigger-bee_nest_destroyed-trigger-in-the-correct-pl.patchTurtle-API.patchUnset-Ignited-flag-on-cancel-of-Explosion-Event.patchUpdate-head-rotation-in-missing-places.patchUpdate-itemstack-legacy-name-and-lore.patchUpdate-the-flag-when-a-captured-block-state-is-outda.patchUse-AsyncAppender-to-keep-logging-IO-off-main-thread.patchUse-ConcurrentHashMap-in-JsonList.patchUse-TerminalConsoleAppender-for-console-improvements.patchUse-UserCache-for-player-heads.patchUse-Vanilla-Minecart-Speeds.patchUse-Velocity-compression-and-cipher-natives.patchUse-a-CHM-for-StructureTemplate.Pallete-cache.patchUse-a-Queue-for-Queueing-Commands.patchUse-a-Shared-Random-for-Entities.patchUse-array-for-gamerule-storage.patchUse-distance-map-to-optimise-entity-tracker.patchUse-getChunkIfLoadedImmediately-in-places.patchUse-seed-based-lookup-for-Treasure-Maps-Fixes-lag-fr.patchUse-single-player-info-update-packet-on-join.patchUse-thread-safe-random-in-ServerLoginPacketListenerI.patchUse-username-instead-of-display-name-in-PlayerList-g.patchValidate-PickItem-Packet-and-kick-for-invalid.patchValidate-tripwire-hook-placement-before-update.patchValidate-usernames.patchVanilla-command-permission-fixes.patchVanillaCommandWrapper-didnt-account-for-entity-sende.patchVanished-players-don-t-have-rights.patchVex-get-setSummoner-API.patchVillager-Restocks-API.patchVillager-resetOffers.patchWait-for-Async-Tasks-during-shutdown.patchWarn-on-plugins-accessing-faraway-chunks.patchWin-Screen-API.patchWitchConsumePotionEvent.patchWitchReadyPotionEvent.patchWitchThrowPotionEvent.patchWorkaround-for-client-lag-spikes-MC-162253.patchWorkaround-for-vehicle-tracking-issue-on-disconnect.patchWorldCreator-keepSpawnLoaded.patchZombie-API-breaking-doors.patchadd-DragonEggFormEvent.patchadd-RespawnFlags-to-PlayerRespawnEvent.patchadd-consumeFuel-to-FurnaceBurnEvent.patchadd-get-set-drop-chance-to-EntityEquipment.patchadd-hand-to-BlockMultiPlaceEvent.patchadd-isDeeplySleeping-to-HumanEntity.patchadd-more-information-to-Entity.toString.patchadd-per-world-spawn-limits.patchadded-PlayerNameEntityEvent.patchadded-option-to-disable-pathfinding-updates-on-block.patchadditions-to-PlayerGameModeChangeEvent.patchcache-resource-keys.patchcheck-global-player-list-where-appropriate.patchconfig-for-disabling-entity-tag-tags.patchcopy-TESign-isEditable-from-snapshots.patchdon-t-attempt-to-teleport-dead-entities.patchdon-t-go-below-0-for-pickupDelay-breaks-picking-up-i.patchensure-reset-EnderDragon-boss-event-name.patchfix-Instruments.patchfix-Jigsaw-block-kicking-user.patchfix-MC-252817-green-map-markers-do-not-disappear.patchfix-PigZombieAngerEvent-cancellation.patchfix-PlayerItemHeldEvent-firing-twice.patchfix-converting-txt-to-json-file.patchfix-dead-slime-setSize-invincibility.patchfix-player-loottables-running-when-mob-loot-gamerule.patchfix-powder-snow-cauldrons-not-turning-to-water.patchfix-various-menus-with-empty-level-accesses.patchfixed-entity-vehicle-collision-event-not-called.patchforce-entity-dismount-during-teleportation.patchforced-whitelist-use-configurable-kick-message.patchgetPlayerUniqueId-API.patchhandle-NaN-health-absorb-values-and-repair-bad-data.patchhandle-ServerboundKeepAlivePacket-async.patchimplement-optional-per-player-mob-spawns.patchincremental-chunk-and-player-saving.patchliving-entity-allow-attribute-registration.patchmisc-debugging-dumps.patchoffset-item-frame-ticking.patchoptimized-dirt-and-snow-spreading.patchprevent-unintended-light-block-manipulation.patchprovide-a-configurable-option-to-disable-creeper-lin.patchremove-duplicate-animate-packet-for-records.patchremove-null-possibility-for-getServer-singleton.patchrevert-serverside-behavior-of-keepalives.patchstop-firing-pressure-plate-EntityInteractEvent-for-i.patchuse-BlockFormEvent-for-mud-converting-into-clay.patchuse-CB-BlockState-implementations-for-captured-block.patch
work
@@ -38,7 +38,7 @@ How To (Plugin Developers)
|
||||
<dependency>
|
||||
<groupId>io.papermc.paper</groupId>
|
||||
<artifactId>paper-api</artifactId>
|
||||
<version>1.19.4-R0.1-SNAPSHOT</version>
|
||||
<version>1.20-R0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
```
|
||||
@@ -54,7 +54,7 @@ repositories {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compileOnly("io.papermc.paper:paper-api:1.19.4-R0.1-SNAPSHOT")
|
||||
compileOnly("io.papermc.paper:paper-api:1.20-R0.1-SNAPSHOT")
|
||||
}
|
||||
|
||||
java {
|
||||
|
@@ -61,7 +61,7 @@ repositories {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
paramMappings("net.fabricmc:yarn:1.19.4+build.1:mergedv2")
|
||||
paramMappings("net.fabricmc:yarn:1.20+build.1:mergedv2")
|
||||
remapper("net.fabricmc:tiny-remapper:0.8.6:fat")
|
||||
decompiler("net.minecraftforge:forgeflower:2.0.627.2")
|
||||
spigotDecompiler("io.papermc:patched-spigot-fernflower:0.1+build.6")
|
||||
@@ -133,7 +133,7 @@ allprojects {
|
||||
|
||||
tasks.collectAtsFromPatches {
|
||||
// Uncomment while updating for a new Minecraft version
|
||||
// extraPatchDir.set(layout.projectDirectory.dir("patches/unapplied/server"))
|
||||
extraPatchDir.set(layout.projectDirectory.dir("patches/unapplied/server"))
|
||||
}
|
||||
|
||||
tasks.register("printMinecraftVersion") {
|
||||
|
@@ -1,6 +1,6 @@
|
||||
group=io.papermc.paper
|
||||
version=1.19.4-R0.1-SNAPSHOT
|
||||
mcVersion=1.19.4
|
||||
version=1.20-R0.1-SNAPSHOT
|
||||
mcVersion=1.20
|
||||
|
||||
org.gradle.caching=true
|
||||
org.gradle.parallel=true
|
||||
|
@@ -135,11 +135,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
+ @MinecraftExperimental // Paper
|
||||
+ @ApiStatus.Experimental // Paper
|
||||
BLOCK_BAMBOO_WOOD_FENCE_GATE_OPEN("block.bamboo_wood_fence_gate.open"),
|
||||
@MinecraftExperimental
|
||||
@ApiStatus.Experimental
|
||||
@@ -0,0 +0,0 @@ public enum Sound implements Keyed, net.kyori.adventure.sound.Sound.Type { // Pa
|
||||
@MinecraftExperimental
|
||||
@ApiStatus.Experimental
|
||||
BLOCK_BAMBOO_WOOD_HANGING_SIGN_BREAK("block.bamboo_wood_hanging_sign.break"),
|
||||
BLOCK_BAMBOO_WOOD_HANGING_SIGN_FALL("block.bamboo_wood_hanging_sign.fall"),
|
||||
BLOCK_BAMBOO_WOOD_HANGING_SIGN_HIT("block.bamboo_wood_hanging_sign.hit"),
|
||||
BLOCK_BAMBOO_WOOD_HANGING_SIGN_PLACE("block.bamboo_wood_hanging_sign.place"),
|
||||
BLOCK_BAMBOO_WOOD_HANGING_SIGN_STEP("block.bamboo_wood_hanging_sign.step"),
|
||||
+ @MinecraftExperimental // Paper
|
||||
+ @ApiStatus.Experimental // Paper
|
||||
@@ -209,44 +208,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
BLOCK_NOTE_BLOCK_IMITATE_ZOMBIE("block.note_block.imitate.zombie"),
|
||||
BLOCK_NOTE_BLOCK_IRON_XYLOPHONE("block.note_block.iron_xylophone"),
|
||||
BLOCK_NOTE_BLOCK_PLING("block.note_block.pling"),
|
||||
@@ -0,0 +0,0 @@ public enum Sound implements Keyed, net.kyori.adventure.sound.Sound.Type { // Pa
|
||||
ENTITY_BOAT_PADDLE_LAND("entity.boat.paddle_land"),
|
||||
ENTITY_BOAT_PADDLE_WATER("entity.boat.paddle_water"),
|
||||
@MinecraftExperimental
|
||||
+ @ApiStatus.Experimental // Paper
|
||||
ENTITY_CAMEL_AMBIENT("entity.camel.ambient"),
|
||||
@MinecraftExperimental
|
||||
+ @ApiStatus.Experimental // Paper
|
||||
ENTITY_CAMEL_DASH("entity.camel.dash"),
|
||||
@MinecraftExperimental
|
||||
+ @ApiStatus.Experimental // Paper
|
||||
ENTITY_CAMEL_DASH_READY("entity.camel.dash_ready"),
|
||||
@MinecraftExperimental
|
||||
+ @ApiStatus.Experimental // Paper
|
||||
ENTITY_CAMEL_DEATH("entity.camel.death"),
|
||||
@MinecraftExperimental
|
||||
+ @ApiStatus.Experimental // Paper
|
||||
ENTITY_CAMEL_EAT("entity.camel.eat"),
|
||||
@MinecraftExperimental
|
||||
+ @ApiStatus.Experimental // Paper
|
||||
ENTITY_CAMEL_HURT("entity.camel.hurt"),
|
||||
@MinecraftExperimental
|
||||
+ @ApiStatus.Experimental // Paper
|
||||
ENTITY_CAMEL_SADDLE("entity.camel.saddle"),
|
||||
@MinecraftExperimental
|
||||
+ @ApiStatus.Experimental // Paper
|
||||
ENTITY_CAMEL_SIT("entity.camel.sit"),
|
||||
@MinecraftExperimental
|
||||
+ @ApiStatus.Experimental // Paper
|
||||
ENTITY_CAMEL_STAND("entity.camel.stand"),
|
||||
@MinecraftExperimental
|
||||
+ @ApiStatus.Experimental // Paper
|
||||
ENTITY_CAMEL_STEP("entity.camel.step"),
|
||||
@MinecraftExperimental
|
||||
+ @ApiStatus.Experimental // Paper
|
||||
ENTITY_CAMEL_STEP_SAND("entity.camel.step_sand"),
|
||||
ENTITY_CAT_AMBIENT("entity.cat.ambient"),
|
||||
ENTITY_CAT_BEG_FOR_FOOD("entity.cat.beg_for_food"),
|
||||
diff --git a/src/main/java/org/bukkit/Tag.java b/src/main/java/org/bukkit/Tag.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/org/bukkit/Tag.java
|
||||
|
@@ -16,4 +16,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
+ api("it.unimi.dsi:fastutil:8.5.6")
|
||||
// Paper end
|
||||
|
||||
compileOnly("org.apache.maven:maven-resolver-provider:3.8.5")
|
||||
compileOnly("org.apache.maven:maven-resolver-provider:3.9.2")
|
||||
|
@@ -27,6 +27,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
+ extendsFrom(apiAndDocs)
|
||||
+}
|
||||
+
|
||||
val annotationsVersion = "24.0.1"
|
||||
|
||||
dependencies {
|
||||
// api dependencies are listed transitively to API consumers
|
||||
api("com.google.guava:guava:31.1-jre")
|
||||
@@ -49,11 +51,11 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
+ apiAndDocs("net.kyori:adventure-text-logger-slf4j")
|
||||
// Paper end
|
||||
|
||||
compileOnly("org.apache.maven:maven-resolver-provider:3.8.5")
|
||||
compileOnly("org.apache.maven:maven-resolver-provider:3.9.2")
|
||||
@@ -0,0 +0,0 @@ tasks.withType<Javadoc> {
|
||||
"https://guava.dev/releases/31.1-jre/api/docs/",
|
||||
"https://javadoc.io/doc/org.yaml/snakeyaml/1.33/",
|
||||
"https://javadoc.io/doc/org.jetbrains/annotations/23.0.0/", // Paper - we don't want Java 5 annotations
|
||||
"https://javadoc.io/doc/org.jetbrains/annotations/$annotationsVersion/", // Paper - we don't want Java 5 annotations
|
||||
- "https://javadoc.io/doc/net.md-5/bungeecord-chat/1.16-R0.4/",
|
||||
+ // Paper start
|
||||
+ //"https://javadoc.io/doc/net.md-5/bungeecord-chat/1.16-R0.4/", // don't link to bungee chat
|
||||
@@ -1542,7 +1544,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
+ * Gets all the lines of text currently on the {@link Side#FRONT} of this sign.
|
||||
+ *
|
||||
+ * @return List of components containing each line of text
|
||||
+ * @see #getSide(Side)
|
||||
+ * @deprecated A sign may have multiple writable sides now. Use {@link Sign#getSide(Side)} and {@link SignSide#lines()}.
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ public java.util.List<net.kyori.adventure.text.Component> lines();
|
||||
@@ -1555,9 +1557,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
+ * @param index Line number to get the text from, starting at 0
|
||||
+ * @throws IndexOutOfBoundsException Thrown when the line does not exist
|
||||
+ * @return Text on the given line
|
||||
+ * @see #getSide(Side)
|
||||
+ * @deprecated A sign may have multiple writable sides now. Use {@link #getSide(Side)} and {@link SignSide#line(int)}.
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ @Deprecated
|
||||
+ public net.kyori.adventure.text.Component line(int index) throws IndexOutOfBoundsException;
|
||||
+
|
||||
+ /**
|
||||
@@ -1569,49 +1572,46 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
+ * @param index Line number to set the text at, starting from 0
|
||||
+ * @param line New text to set at the specified index
|
||||
+ * @throws IndexOutOfBoundsException If the index is out of the range 0..3
|
||||
+ * @see #getSide(Side)
|
||||
+ * @deprecated A sign may have multiple writable sides now. Use {@link #getSide(Side)} and {@link SignSide#line(int, net.kyori.adventure.text.Component)}.
|
||||
+ */
|
||||
+ @Deprecated
|
||||
+ public void line(int index, net.kyori.adventure.text.@NotNull Component line) throws IndexOutOfBoundsException;
|
||||
+ // Paper end
|
||||
|
||||
/**
|
||||
* Gets all the lines of text currently on the {@link Side#FRONT} of this sign.
|
||||
@@ -0,0 +0,0 @@ public interface Sign extends TileState, Colorable {
|
||||
* @see #getSide(Side)
|
||||
*
|
||||
* @return Array of Strings containing each line of text
|
||||
- * @deprecated A sign may have multiple writable sides now. Use {@link Sign#getSide(Side)} and {@link SignSide#getLines()}.
|
||||
+ * @deprecated A sign may have multiple writable sides now. Use {@link Sign#getSide(Side)} and {@link SignSide#lines()}.
|
||||
*/
|
||||
@Deprecated
|
||||
@NotNull
|
||||
+ @Deprecated // Paper
|
||||
public String[] getLines();
|
||||
|
||||
/**
|
||||
@@ -0,0 +0,0 @@ public interface Sign extends TileState, Colorable {
|
||||
* @param index Line number to get the text from, starting at 0
|
||||
* @return Text on the given line
|
||||
* @throws IndexOutOfBoundsException Thrown when the line does not exist
|
||||
* @see #getSide(Side)
|
||||
+ * @deprecated in favour of {@link #line(int)}
|
||||
- * @deprecated A sign may have multiple writable sides now. Use {@link #getSide(Side)} and {@link SignSide#getLine(int)}.
|
||||
+ * @deprecated A sign may have multiple writable sides now. Use {@link #getSide(Side)} and {@link SignSide#line(int)}.
|
||||
*/
|
||||
@Deprecated
|
||||
@NotNull
|
||||
+ @Deprecated // Paper
|
||||
public String getLine(int index) throws IndexOutOfBoundsException;
|
||||
|
||||
/**
|
||||
@@ -0,0 +0,0 @@ public interface Sign extends TileState, Colorable {
|
||||
* @param index Line number to set the text at, starting from 0
|
||||
* @param line New text to set at the specified index
|
||||
* @throws IndexOutOfBoundsException If the index is out of the range 0..3
|
||||
* @see #getSide(Side)
|
||||
+ * @deprecated in favour of {@link #line(int, net.kyori.adventure.text.Component)}
|
||||
- * @deprecated A sign may have multiple writable sides now. Use {@link #getSide(Side)} and {@link SignSide#setLine(int, String)}.
|
||||
+ * @deprecated A sign may have multiple writable sides now. Use {@link #getSide(Side)} and {@link SignSide#line(int, net.kyori.adventure.text.Component)}.
|
||||
*/
|
||||
+ @Deprecated // Paper
|
||||
@Deprecated
|
||||
public void setLine(int index, @NotNull String line) throws IndexOutOfBoundsException;
|
||||
|
||||
/**
|
||||
diff --git a/src/main/java/org/bukkit/block/sign/SignSide.java b/src/main/java/org/bukkit/block/sign/SignSide.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/org/bukkit/block/sign/SignSide.java
|
||||
+++ b/src/main/java/org/bukkit/block/sign/SignSide.java
|
||||
@@ -0,0 +0,0 @@ import org.jetbrains.annotations.NotNull;
|
||||
* Represents a side of a sign.
|
||||
*/
|
||||
@Experimental
|
||||
public interface SignSide extends Colorable {
|
||||
+ // Paper start
|
||||
+ /**
|
||||
|
@@ -18,13 +18,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
+ }
|
||||
+ // Paper end
|
||||
|
||||
compileOnly("org.apache.maven:maven-resolver-provider:3.8.5")
|
||||
compileOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.7.3")
|
||||
compileOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.7.3")
|
||||
compileOnly("org.apache.maven:maven-resolver-provider:3.9.2")
|
||||
compileOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.10")
|
||||
compileOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.10")
|
||||
+ compileOnly("com.google.code.findbugs:jsr305:1.3.9") // Paper
|
||||
|
||||
- val annotations = "org.jetbrains:annotations-java5:23.0.0"
|
||||
+ val annotations = "org.jetbrains:annotations:23.0.0" // Paper - we don't want Java 5 annotations...
|
||||
- val annotations = "org.jetbrains:annotations-java5:$annotationsVersion"
|
||||
+ val annotations = "org.jetbrains:annotations:$annotationsVersion" // Paper - we don't want Java 5 annotations...
|
||||
compileOnly(annotations)
|
||||
testCompileOnly(annotations)
|
||||
|
||||
@@ -41,8 +41,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
options.links(
|
||||
"https://guava.dev/releases/31.1-jre/api/docs/",
|
||||
"https://javadoc.io/doc/org.yaml/snakeyaml/1.33/",
|
||||
- "https://javadoc.io/doc/org.jetbrains/annotations-java5/23.0.0/",
|
||||
+ "https://javadoc.io/doc/org.jetbrains/annotations/23.0.0/", // Paper - we don't want Java 5 annotations
|
||||
- "https://javadoc.io/doc/org.jetbrains/annotations-java5/$annotationsVersion/",
|
||||
+ "https://javadoc.io/doc/org.jetbrains/annotations/$annotationsVersion/", // Paper - we don't want Java 5 annotations
|
||||
"https://javadoc.io/doc/net.md-5/bungeecord-chat/1.16-R0.4/",
|
||||
)
|
||||
options.tags("apiNote:a:API Note:")
|
||||
|
@@ -41,6 +41,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
+ withJavadocJar()
|
||||
+}
|
||||
+
|
||||
+val annotationsVersion = "24.0.1"
|
||||
+
|
||||
+dependencies {
|
||||
+ // api dependencies are listed transitively to API consumers
|
||||
+ api("com.google.guava:guava:31.1-jre")
|
||||
@@ -49,11 +51,11 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
+ api("org.yaml:snakeyaml:1.33")
|
||||
+ api("org.joml:joml:1.10.5")
|
||||
+
|
||||
+ compileOnly("org.apache.maven:maven-resolver-provider:3.8.5")
|
||||
+ compileOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.7.3")
|
||||
+ compileOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.7.3")
|
||||
+ compileOnly("org.apache.maven:maven-resolver-provider:3.9.2")
|
||||
+ compileOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.10")
|
||||
+ compileOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.10")
|
||||
+
|
||||
+ val annotations = "org.jetbrains:annotations-java5:23.0.0"
|
||||
+ val annotations = "org.jetbrains:annotations-java5:$annotationsVersion"
|
||||
+ compileOnly(annotations)
|
||||
+ testCompileOnly(annotations)
|
||||
+
|
||||
@@ -98,7 +100,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
+ options.links(
|
||||
+ "https://guava.dev/releases/31.1-jre/api/docs/",
|
||||
+ "https://javadoc.io/doc/org.yaml/snakeyaml/1.33/",
|
||||
+ "https://javadoc.io/doc/org.jetbrains/annotations-java5/23.0.0/",
|
||||
+ "https://javadoc.io/doc/org.jetbrains/annotations-java5/$annotationsVersion/",
|
||||
+ "https://javadoc.io/doc/net.md-5/bungeecord-chat/1.16-R0.4/",
|
||||
+ )
|
||||
+ options.tags("apiNote:a:API Note:")
|
||||
@@ -127,7 +129,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
-
|
||||
- <groupId>org.spigotmc</groupId>
|
||||
- <artifactId>spigot-api</artifactId>
|
||||
- <version>1.19.4-R0.1-SNAPSHOT</version>
|
||||
- <version>1.20-R0.1-SNAPSHOT</version>
|
||||
- <packaging>jar</packaging>
|
||||
-
|
||||
- <name>Spigot-API</name>
|
||||
@@ -184,33 +186,33 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
- <dependency>
|
||||
- <groupId>org.yaml</groupId>
|
||||
- <artifactId>snakeyaml</artifactId>
|
||||
- <version>1.33</version>
|
||||
- <version>2.0</version>
|
||||
- <scope>compile</scope>
|
||||
- </dependency>
|
||||
- <!-- not part of the API proper -->
|
||||
- <dependency>
|
||||
- <groupId>org.apache.maven</groupId>
|
||||
- <artifactId>maven-resolver-provider</artifactId>
|
||||
- <version>3.8.5</version>
|
||||
- <version>3.9.2</version>
|
||||
- <scope>provided</scope>
|
||||
- </dependency>
|
||||
- <dependency>
|
||||
- <groupId>org.apache.maven.resolver</groupId>
|
||||
- <artifactId>maven-resolver-connector-basic</artifactId>
|
||||
- <version>1.7.3</version>
|
||||
- <version>1.9.10</version>
|
||||
- <scope>provided</scope>
|
||||
- </dependency>
|
||||
- <dependency>
|
||||
- <groupId>org.apache.maven.resolver</groupId>
|
||||
- <artifactId>maven-resolver-transport-http</artifactId>
|
||||
- <version>1.7.3</version>
|
||||
- <version>1.9.10</version>
|
||||
- <scope>provided</scope>
|
||||
- </dependency>
|
||||
- <!-- annotations -->
|
||||
- <dependency>
|
||||
- <groupId>org.jetbrains</groupId>
|
||||
- <artifactId>annotations-java5</artifactId>
|
||||
- <version>23.0.0</version>
|
||||
- <version>24.0.1</version>
|
||||
- <scope>provided</scope>
|
||||
- </dependency>
|
||||
- <!-- testing -->
|
||||
@@ -229,7 +231,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
- <dependency>
|
||||
- <groupId>org.ow2.asm</groupId>
|
||||
- <artifactId>asm-tree</artifactId>
|
||||
- <version>9.4</version>
|
||||
- <version>9.5</version>
|
||||
- <scope>test</scope>
|
||||
- </dependency>
|
||||
- </dependencies>
|
||||
@@ -317,7 +319,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
- <links>
|
||||
- <link>https://guava.dev/releases/31.1-jre/api/docs/</link>
|
||||
- <link>https://javadoc.io/doc/org.yaml/snakeyaml/1.33/</link>
|
||||
- <link>https://javadoc.io/doc/org.jetbrains/annotations-java5/23.0.0/</link>
|
||||
- <link>https://javadoc.io/doc/org.jetbrains/annotations-java5/24.0.1/</link>
|
||||
- <link>https://javadoc.io/doc/net.md-5/bungeecord-chat/1.16-R0.4/</link>
|
||||
- </links>
|
||||
- <tags>
|
||||
@@ -343,7 +345,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
- <plugin>
|
||||
- <groupId>org.apache.maven.plugins</groupId>
|
||||
- <artifactId>maven-checkstyle-plugin</artifactId>
|
||||
- <version>3.2.1</version>
|
||||
- <version>3.3.0</version>
|
||||
- <executions>
|
||||
- <execution>
|
||||
- <phase>process-classes</phase>
|
||||
|
@@ -988,8 +988,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
- * Setting to show/hide armor trim from leather armor.
|
||||
+ * Setting to show/hide armor trim from armor.
|
||||
*/
|
||||
@MinecraftExperimental
|
||||
@ApiStatus.Experimental
|
||||
HIDE_ARMOR_TRIM;
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/inventory/PlayerInventory.java b/src/main/java/org/bukkit/inventory/PlayerInventory.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/org/bukkit/inventory/PlayerInventory.java
|
||||
|
@@ -12,10 +12,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
implementation("org.ow2.asm:asm-commons:9.4")
|
||||
// Paper end
|
||||
|
||||
- compileOnly("org.apache.maven:maven-resolver-provider:3.8.5")
|
||||
+ api("org.apache.maven:maven-resolver-provider:3.8.5") // Paper, expose
|
||||
compileOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.7.3")
|
||||
compileOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.7.3")
|
||||
- compileOnly("org.apache.maven:maven-resolver-provider:3.9.2")
|
||||
+ api("org.apache.maven:maven-resolver-provider:3.9.2")
|
||||
compileOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.10")
|
||||
compileOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.10")
|
||||
compileOnly("com.google.code.findbugs:jsr305:1.3.9") // Paper
|
||||
diff --git a/src/main/java/io/papermc/paper/plugin/PermissionManager.java b/src/main/java/io/papermc/paper/plugin/PermissionManager.java
|
||||
new file mode 100644
|
||||
|
@@ -19,8 +19,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
/**
|
||||
* Setting to show/hide dyes from colored leather armor.
|
||||
@@ -0,0 +0,0 @@ public enum ItemFlag {
|
||||
@MinecraftExperimental
|
||||
@ApiStatus.Experimental
|
||||
* Setting to show/hide armor trim from armor.
|
||||
*/
|
||||
HIDE_ARMOR_TRIM;
|
||||
+ // Paper start
|
||||
+ /**
|
||||
|
@@ -18,7 +18,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
+ implementation("org.ow2.asm:asm-commons:9.4")
|
||||
// Paper end
|
||||
|
||||
compileOnly("org.apache.maven:maven-resolver-provider:3.8.5")
|
||||
compileOnly("org.apache.maven:maven-resolver-provider:3.9.2")
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/event/executor/MethodHandleEventExecutor.java b/src/main/java/com/destroystokyo/paper/event/executor/MethodHandleEventExecutor.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
|
||||
|
@@ -29,51 +29,39 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
*/
|
||||
STICKS(0x3),
|
||||
@@ -0,0 +0,0 @@ public enum Instrument {
|
||||
/**
|
||||
* Zombie is normally played when a Zombie Head is on top of the note block.
|
||||
*/
|
||||
@MinecraftExperimental
|
||||
@ApiStatus.Experimental
|
||||
- ZOMBIE,
|
||||
+ ZOMBIE(0x10), // Paper
|
||||
/**
|
||||
* Skeleton is normally played when a Skeleton Head is on top of the note block.
|
||||
*/
|
||||
@MinecraftExperimental
|
||||
@ApiStatus.Experimental
|
||||
- SKELETON,
|
||||
+ SKELETON(0x11), // Paper
|
||||
/**
|
||||
* Creeper is normally played when a Creeper Head is on top of the note block.
|
||||
*/
|
||||
@MinecraftExperimental
|
||||
@ApiStatus.Experimental
|
||||
- CREEPER,
|
||||
+ CREEPER(0x12), // Paper
|
||||
/**
|
||||
* Dragon is normally played when a Dragon Head is on top of the note block.
|
||||
*/
|
||||
@MinecraftExperimental
|
||||
@ApiStatus.Experimental
|
||||
- DRAGON,
|
||||
+ DRAGON(0x13), // Paper
|
||||
/**
|
||||
* Wither Skeleton is normally played when a Wither Skeleton Head is on top of the note block.
|
||||
*/
|
||||
@MinecraftExperimental
|
||||
@ApiStatus.Experimental
|
||||
- WITHER_SKELETON,
|
||||
+ WITHER_SKELETON(0x14), // Paper
|
||||
/**
|
||||
* Piglin is normally played when a Piglin Head is on top of the note block.
|
||||
*/
|
||||
@MinecraftExperimental
|
||||
@ApiStatus.Experimental
|
||||
- PIGLIN,
|
||||
+ PIGLIN(0x15), // Paper
|
||||
/**
|
||||
* Custom Sound is normally played when a Player Head with the required data is on top of the note block.
|
||||
*/
|
||||
@MinecraftExperimental
|
||||
@ApiStatus.Experimental
|
||||
- CUSTOM_HEAD;
|
||||
+ CUSTOM_HEAD(0x16); // Paper
|
||||
|
||||
|
@@ -19,8 +19,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
implementation("org.ow2.asm:asm:9.4")
|
||||
+ implementation("org.ow2.asm:asm-commons:9.4") // Paper - ASM event executor generation
|
||||
implementation("commons-lang:commons-lang:2.6")
|
||||
runtimeOnly("org.xerial:sqlite-jdbc:3.41.2.2")
|
||||
runtimeOnly("com.mysql:mysql-connector-j:8.0.32")
|
||||
runtimeOnly("org.xerial:sqlite-jdbc:3.42.0.0")
|
||||
runtimeOnly("com.mysql:mysql-connector-j:8.0.33")
|
||||
@@ -0,0 +0,0 @@ dependencies {
|
||||
|
||||
testImplementation("junit:junit:4.13.2")
|
||||
@@ -78,7 +78,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
+ Date buildDate = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z").parse(Main.class.getPackage().getImplementationVendor()); // Paper
|
||||
|
||||
Calendar deadline = Calendar.getInstance();
|
||||
deadline.add(Calendar.DAY_OF_YEAR, -21);
|
||||
deadline.add(Calendar.DAY_OF_YEAR, -3);
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
|
||||
|
@@ -54,7 +54,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
@Override
|
||||
- protected void actuallyHurt(DamageSource source, float amount) {
|
||||
+ protected boolean damageEntity0(DamageSource source, float amount) { // Paper - fix CB method rename issue
|
||||
this.standUpPanic();
|
||||
this.standUpInstantly();
|
||||
- super.actuallyHurt(source, amount);
|
||||
+ return super.damageEntity0(source, amount); // Paper - fix CB method rename issue
|
||||
}
|
||||
@@ -89,14 +89,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
@@ -0,0 +0,0 @@ public final class CraftServer implements Server {
|
||||
Validate.notNull(key, "NamespacedKey cannot be null");
|
||||
|
||||
LootTables registry = this.getServer().getLootTables();
|
||||
- return new CraftLootTable(key, registry.get(CraftNamespacedKey.toMinecraft(key)));
|
||||
LootDataManager registry = this.getServer().getLootData();
|
||||
- return new CraftLootTable(key, registry.getLootTable(CraftNamespacedKey.toMinecraft(key)));
|
||||
+ // Paper start - honor method contract
|
||||
+ final ResourceLocation lootTableKey = CraftNamespacedKey.toMinecraft(key);
|
||||
+ if (!registry.getIds().contains(lootTableKey)) {
|
||||
+ if (registry.getLootTable(lootTableKey) == net.minecraft.world.level.storage.loot.LootTable.EMPTY) {
|
||||
+ return null;
|
||||
+ }
|
||||
+ return new CraftLootTable(key, registry.get(lootTableKey));
|
||||
+ return new CraftLootTable(key, registry.getLootTable(lootTableKey));
|
||||
+ // Paper end
|
||||
}
|
||||
|
||||
|
@@ -139,12 +139,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
@@ -0,0 +0,0 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Rider
|
||||
@Override
|
||||
protected void customServerAiStep() {
|
||||
this.level.getProfiler().push("camelBrain");
|
||||
this.level().getProfiler().push("camelBrain");
|
||||
- Brain<?> brain = this.getBrain();
|
||||
+ Brain<Camel> brain = (Brain<Camel>) this.getBrain(); // Paper - decompile fix
|
||||
brain.tick((ServerLevel)this.level, this);
|
||||
this.level.getProfiler().pop();
|
||||
this.level.getProfiler().push("camelActivityUpdate");
|
||||
brain.tick((ServerLevel)this.level(), this);
|
||||
this.level().getProfiler().pop();
|
||||
this.level().getProfiler().push("camelActivityUpdate");
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
|
||||
|
@@ -5559,7 +5559,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
--- a/src/main/java/net/minecraft/server/level/ChunkHolder.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ChunkHolder.java
|
||||
@@ -0,0 +0,0 @@ public class ChunkHolder {
|
||||
private static final int BLOCKS_BEFORE_RESEND_FUDGE = 64;
|
||||
private static final List<ChunkStatus> CHUNK_STATUSES = ChunkStatus.getStatusList();
|
||||
private final AtomicReferenceArray<CompletableFuture<Either<ChunkAccess, ChunkHolder.ChunkLoadingFailure>>> futures;
|
||||
private final LevelHeightAccessor levelHeightAccessor;
|
||||
- private volatile CompletableFuture<Either<LevelChunk, ChunkHolder.ChunkLoadingFailure>> fullChunkFuture;
|
||||
@@ -5572,7 +5572,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
@Nullable
|
||||
private final DebugBuffer<ChunkHolder.ChunkSaveDebug> chunkToSaveHistory;
|
||||
@@ -0,0 +0,0 @@ public class ChunkHolder {
|
||||
private boolean resendLight;
|
||||
private boolean wasAccessibleSinceLastSave;
|
||||
private CompletableFuture<Void> pendingFullStateConfirmation;
|
||||
|
||||
+ private final ChunkMap chunkMap; // Paper
|
||||
@@ -5615,7 +5615,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
public LevelChunk getFullChunkNow() {
|
||||
// Note: We use the oldTicketLevel for isLoaded checks.
|
||||
@@ -0,0 +0,0 @@ public class ChunkHolder {
|
||||
return ChunkHolder.getStatus(this.ticketLevel).isOrAfter(leastStatus) ? this.getFutureIfPresentUnchecked(leastStatus) : ChunkHolder.UNLOADED_CHUNK_FUTURE;
|
||||
return ChunkLevel.generationStatus(this.ticketLevel).isOrAfter(leastStatus) ? this.getFutureIfPresentUnchecked(leastStatus) : ChunkHolder.UNLOADED_CHUNK_FUTURE;
|
||||
}
|
||||
|
||||
- public CompletableFuture<Either<LevelChunk, ChunkHolder.ChunkLoadingFailure>> getTickingChunkFuture() {
|
||||
@@ -5680,7 +5680,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
}
|
||||
|
||||
@@ -0,0 +0,0 @@ public class ChunkHolder {
|
||||
return ChunkHolder.getFullChunkStatus(this.ticketLevel);
|
||||
return ChunkLevel.fullStatus(this.ticketLevel);
|
||||
}
|
||||
|
||||
- public ChunkPos getPos() {
|
||||
@@ -5699,7 +5699,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
if (!flag2 && flag3) {
|
||||
+ int expectCreateCount = ++this.fullChunkCreateCount; // Paper
|
||||
this.fullChunkFuture = chunkStorage.prepareAccessibleChunk(this);
|
||||
this.scheduleFullChunkPromotion(chunkStorage, this.fullChunkFuture, executor, ChunkHolder.FullChunkStatus.BORDER);
|
||||
this.scheduleFullChunkPromotion(chunkStorage, this.fullChunkFuture, executor, FullChunkStatus.FULL);
|
||||
+ // Paper start - cache ticking ready status
|
||||
+ this.fullChunkFuture.thenAccept(either -> {
|
||||
+ final Optional<LevelChunk> left = either.left();
|
||||
@@ -5724,11 +5724,11 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
+ this.isFullChunkReady = false; // Paper - cache ticking ready status
|
||||
}
|
||||
|
||||
boolean flag4 = playerchunk_state.isOrAfter(ChunkHolder.FullChunkStatus.TICKING);
|
||||
boolean flag4 = fullchunkstatus.isOrAfter(FullChunkStatus.BLOCK_TICKING);
|
||||
@@ -0,0 +0,0 @@ public class ChunkHolder {
|
||||
if (!flag4 && flag5) {
|
||||
this.tickingChunkFuture = chunkStorage.prepareTickingChunk(this);
|
||||
this.scheduleFullChunkPromotion(chunkStorage, this.tickingChunkFuture, executor, ChunkHolder.FullChunkStatus.TICKING);
|
||||
this.scheduleFullChunkPromotion(chunkStorage, this.tickingChunkFuture, executor, FullChunkStatus.BLOCK_TICKING);
|
||||
+ // Paper start - cache ticking ready status
|
||||
+ this.tickingChunkFuture.thenAccept(either -> {
|
||||
+ either.ifLeft(chunk -> {
|
||||
@@ -5754,8 +5754,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
|
||||
@@ -0,0 +0,0 @@ public class ChunkHolder {
|
||||
|
||||
this.entityTickingChunkFuture = chunkStorage.prepareEntityTickingChunk(this.pos);
|
||||
this.scheduleFullChunkPromotion(chunkStorage, this.entityTickingChunkFuture, executor, ChunkHolder.FullChunkStatus.ENTITY_TICKING);
|
||||
this.entityTickingChunkFuture = chunkStorage.prepareEntityTickingChunk(this);
|
||||
this.scheduleFullChunkPromotion(chunkStorage, this.entityTickingChunkFuture, executor, FullChunkStatus.ENTITY_TICKING);
|
||||
+ // Paper start - cache ticking ready status
|
||||
+ this.entityTickingChunkFuture.thenAccept(either -> {
|
||||
+ either.ifLeft(chunk -> {
|
||||
@@ -5885,13 +5885,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
+ public final int getEffectiveViewDistance() {
|
||||
+ // TODO this needs to be checked on update
|
||||
+ // Mojang currently sets it to +1 of the configured view distance. So subtract one to get the one we really want.
|
||||
+ return this.viewDistance - 1;
|
||||
+ //TODO check if +0 is correct now
|
||||
+ return this.viewDistance;
|
||||
+ }
|
||||
+ // Paper end
|
||||
+
|
||||
private CompletableFuture<Either<List<ChunkAccess>, ChunkHolder.ChunkLoadingFailure>> getChunkRangeFuture(ChunkPos centerChunk, int margin, IntFunction<ChunkStatus> distanceToStatus) {
|
||||
List<CompletableFuture<Either<ChunkAccess, ChunkHolder.ChunkLoadingFailure>>> list = new ArrayList();
|
||||
List<ChunkHolder> list1 = new ArrayList();
|
||||
private CompletableFuture<Either<List<ChunkAccess>, ChunkHolder.ChunkLoadingFailure>> getChunkRangeFuture(ChunkHolder centerChunk, int margin, IntFunction<ChunkStatus> distanceToStatus) {
|
||||
if (margin == 0) {
|
||||
ChunkStatus chunkstatus = (ChunkStatus) distanceToStatus.apply(0);
|
||||
@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
||||
};
|
||||
|
||||
@@ -5990,7 +5991,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
||||
|
||||
this.viewDistance = j;
|
||||
this.distanceManager.updatePlayerTickets(this.viewDistance + 1);
|
||||
this.distanceManager.updatePlayerTickets(this.viewDistance);
|
||||
- ObjectIterator objectiterator = this.updatingChunkMap.values().iterator();
|
||||
+ Iterator objectiterator = io.papermc.paper.chunk.system.ChunkSystem.getUpdatingChunkHolders(this.level).iterator(); // Paper
|
||||
|
||||
@@ -6525,7 +6526,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
+ // Paper end
|
||||
+
|
||||
// Add env and gen to constructor, IWorldDataServer -> WorldDataServer
|
||||
public ServerLevel(MinecraftServer minecraftserver, Executor executor, LevelStorageSource.LevelStorageAccess convertable_conversionsession, PrimaryLevelData iworlddataserver, ResourceKey<Level> resourcekey, LevelStem worlddimension, ChunkProgressListener worldloadlistener, boolean flag, long i, List<CustomSpawner> list, boolean flag1, org.bukkit.World.Environment env, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider) {
|
||||
public ServerLevel(MinecraftServer minecraftserver, Executor executor, LevelStorageSource.LevelStorageAccess convertable_conversionsession, PrimaryLevelData iworlddataserver, ResourceKey<Level> resourcekey, LevelStem worlddimension, ChunkProgressListener worldloadlistener, boolean flag, long i, List<CustomSpawner> list, boolean flag1, @Nullable RandomSequences randomsequences, org.bukkit.World.Environment env, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider) {
|
||||
// IRegistryCustom.Dimension iregistrycustom_dimension = minecraftserver.registryAccess(); // CraftBukkit - decompile error
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
@@ -6603,7 +6604,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
+ player.isRealPlayer = true; // Paper
|
||||
GameProfile gameprofile = player.getGameProfile();
|
||||
GameProfileCache usercache = this.server.getProfileCache();
|
||||
Optional<GameProfile> optional = usercache.get(gameprofile.getId());
|
||||
String s;
|
||||
diff --git a/src/main/java/net/minecraft/util/thread/BlockableEventLoop.java b/src/main/java/net/minecraft/util/thread/BlockableEventLoop.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/util/thread/BlockableEventLoop.java
|
||||
@@ -6673,7 +6674,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
+ public org.bukkit.craftbukkit.entity.CraftCreature getBukkitCreature() { return (org.bukkit.craftbukkit.entity.CraftCreature) super.getBukkitEntity(); } // Paper
|
||||
+
|
||||
public float getWalkTargetValue(BlockPos pos) {
|
||||
return this.getWalkTargetValue(pos, this.level);
|
||||
return this.getWalkTargetValue(pos, this.level());
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/Monster.java b/src/main/java/net/minecraft/world/entity/monster/Monster.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
@@ -6921,14 +6922,15 @@ diff --git a/src/main/java/net/minecraft/world/level/LevelReader.java b/src/main
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/LevelReader.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/LevelReader.java
|
||||
@@ -0,0 +0,0 @@ import net.minecraft.world.level.levelgen.Heightmap;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
|
||||
public interface LevelReader extends BlockAndTintGetter, CollisionGetter, BiomeManager.NoiseBiomeSource {
|
||||
+ @Nullable ChunkAccess getChunkIfLoadedImmediately(int x, int z); // Paper - ifLoaded api (we need this since current impl blocks if the chunk is loading)
|
||||
@@ -0,0 +0,0 @@ public interface LevelReader extends BlockAndTintGetter, CollisionGetter, Signal
|
||||
@Nullable
|
||||
ChunkAccess getChunk(int chunkX, int chunkZ, ChunkStatus leastStatus, boolean create);
|
||||
|
||||
+ @Nullable ChunkAccess getChunkIfLoadedImmediately(int x, int z); // Paper - ifLoaded api (we need this since current impl blocks if the chunk is loading)
|
||||
+
|
||||
/** @deprecated */
|
||||
@Deprecated
|
||||
boolean hasChunk(int chunkX, int chunkZ);
|
||||
diff --git a/src/main/java/net/minecraft/world/level/PathNavigationRegion.java b/src/main/java/net/minecraft/world/level/PathNavigationRegion.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/PathNavigationRegion.java
|
||||
@@ -6994,8 +6996,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
+ private final int lightEmission; public final int getEmittedLight() { return this.lightEmission; } // Paper - OBFHELPER
|
||||
+ private final boolean useShapeForLightOcclusion; public final boolean isTransparentOnSomeFaces() { return this.useShapeForLightOcclusion; } // Paper - OBFHELPER
|
||||
private final boolean isAir;
|
||||
private final Material material;
|
||||
private final MaterialColor materialColor;
|
||||
private final boolean ignitedByLava;
|
||||
/** @deprecated */
|
||||
@@ -0,0 +0,0 @@ public abstract class BlockBehaviour implements FeatureElement {
|
||||
private final MapColor mapColor;
|
||||
public final float destroySpeed;
|
||||
private final boolean requiresCorrectToolForDrops;
|
||||
- private final boolean canOcclude;
|
||||
@@ -7004,7 +7008,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
private final BlockBehaviour.StatePredicate isSuffocating;
|
||||
private final BlockBehaviour.StatePredicate isViewBlocking;
|
||||
@@ -0,0 +0,0 @@ public abstract class BlockBehaviour implements FeatureElement {
|
||||
this.spawnParticlesOnBreak = blockbase_info.spawnParticlesOnBreak;
|
||||
}
|
||||
}
|
||||
|
||||
+ // Paper start
|
||||
@@ -7022,8 +7026,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
}
|
||||
+ this.shapeExceedsCube = this.cache == null || this.cache.largeCollisionShape; // Paper - moved from actual method to here
|
||||
|
||||
this.legacySolid = this.calculateSolid();
|
||||
}
|
||||
|
||||
@@ -0,0 +0,0 @@ public abstract class BlockBehaviour implements FeatureElement {
|
||||
return this.getBlock().getOcclusionShape(this.asState(), world, pos);
|
||||
}
|
||||
@@ -7051,7 +7055,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
@@ -0,0 +0,0 @@ public abstract class ChunkAccess implements BlockGetter, BiomeManager.NoiseBiom
|
||||
// CraftBukkit end
|
||||
|
||||
public ChunkAccess(ChunkPos pos, UpgradeData upgradeData, LevelHeightAccessor heightLimitView, Registry<Biome> biome, long inhabitedTime, @Nullable LevelChunkSection[] sectionArrayInitializer, @Nullable BlendingData blendingData) {
|
||||
public ChunkAccess(ChunkPos pos, UpgradeData upgradeData, LevelHeightAccessor heightLimitView, Registry<Biome> biomeRegistry, long inhabitedTime, @Nullable LevelChunkSection[] sectionArray, @Nullable BlendingData blendingData) {
|
||||
- this.chunkPos = pos;
|
||||
+ this.locX = pos.x; this.locZ = pos.z; // Paper - reduce need for field lookups
|
||||
+ this.chunkPos = pos; this.coordinateKey = ChunkPos.asLong(locX, locZ); // Paper - cache long key
|
||||
@@ -7062,14 +7066,6 @@ diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
|
||||
@@ -0,0 +0,0 @@ import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraft.network.protocol.game.ClientboundLevelChunkPacketData;
|
||||
import net.minecraft.server.level.ChunkHolder;
|
||||
+import net.minecraft.server.level.ServerChunkCache;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.util.profiling.ProfilerFiller;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
@@ -0,0 +0,0 @@ public class LevelChunk extends ChunkAccess {
|
||||
public boolean needsDecoration;
|
||||
// CraftBukkit end
|
||||
@@ -7214,7 +7210,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
+ // Paper start - neighbour cache
|
||||
+ int chunkX = this.chunkPos.x;
|
||||
+ int chunkZ = this.chunkPos.z;
|
||||
+ ServerChunkCache chunkProvider = this.level.getChunkSource();
|
||||
+ net.minecraft.server.level.ServerChunkCache chunkProvider = this.level.getChunkSource();
|
||||
+ for (int dx = -NEIGHBOUR_CACHE_RADIUS; dx <= NEIGHBOUR_CACHE_RADIUS; ++dx) {
|
||||
+ for (int dz = -NEIGHBOUR_CACHE_RADIUS; dz <= NEIGHBOUR_CACHE_RADIUS; ++dz) {
|
||||
+ LevelChunk neighbour = chunkProvider.getChunkAtIfLoadedMainThreadNoCache(chunkX + dx, chunkZ + dz);
|
||||
@@ -7241,7 +7237,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
+ // Paper start - neighbour cache
|
||||
+ int chunkX = this.chunkPos.x;
|
||||
+ int chunkZ = this.chunkPos.z;
|
||||
+ ServerChunkCache chunkProvider = this.level.getChunkSource();
|
||||
+ net.minecraft.server.level.ServerChunkCache chunkProvider = this.level.getChunkSource();
|
||||
+ for (int dx = -NEIGHBOUR_CACHE_RADIUS; dx <= NEIGHBOUR_CACHE_RADIUS; ++dx) {
|
||||
+ for (int dz = -NEIGHBOUR_CACHE_RADIUS; dz <= NEIGHBOUR_CACHE_RADIUS; ++dz) {
|
||||
+ LevelChunk neighbour = chunkProvider.getChunkAtIfLoadedMainThreadNoCache(chunkX + dx, chunkZ + dz);
|
||||
|
@@ -23,8 +23,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
testImplementation("org.mockito:mockito-core:4.9.0") // Paper - switch to mockito
|
||||
+ implementation("org.spongepowered:configurate-yaml:4.1.2") // Paper - config files
|
||||
implementation("commons-lang:commons-lang:2.6")
|
||||
runtimeOnly("org.xerial:sqlite-jdbc:3.41.2.2")
|
||||
runtimeOnly("com.mysql:mysql-connector-j:8.0.32")
|
||||
runtimeOnly("org.xerial:sqlite-jdbc:3.42.0.0")
|
||||
runtimeOnly("com.mysql:mysql-connector-j:8.0.33")
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
|
||||
@@ -4468,16 +4468,16 @@ diff --git a/src/main/java/net/minecraft/server/Services.java b/src/main/java/ne
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/server/Services.java
|
||||
+++ b/src/main/java/net/minecraft/server/Services.java
|
||||
@@ -0,0 +0,0 @@ import java.io.File;
|
||||
@@ -0,0 +0,0 @@ import javax.annotation.Nullable;
|
||||
import net.minecraft.server.players.GameProfileCache;
|
||||
import net.minecraft.util.SignatureValidator;
|
||||
|
||||
-public record Services(MinecraftSessionService sessionService, SignatureValidator serviceSignatureValidator, GameProfileRepository profileRepository, GameProfileCache profileCache) {
|
||||
-public record Services(MinecraftSessionService sessionService, ServicesKeySet servicesKeySet, GameProfileRepository profileRepository, GameProfileCache profileCache) {
|
||||
+// Paper start
|
||||
+public record Services(MinecraftSessionService sessionService, SignatureValidator serviceSignatureValidator, GameProfileRepository profileRepository, GameProfileCache profileCache, @javax.annotation.Nullable io.papermc.paper.configuration.PaperConfigurations paperConfigurations) {
|
||||
+public record Services(MinecraftSessionService sessionService, ServicesKeySet servicesKeySet, GameProfileRepository profileRepository, GameProfileCache profileCache, @javax.annotation.Nullable io.papermc.paper.configuration.PaperConfigurations paperConfigurations) {
|
||||
+
|
||||
+ public Services(MinecraftSessionService sessionService, SignatureValidator signatureValidator, GameProfileRepository profileRepository, GameProfileCache profileCache) {
|
||||
+ this(sessionService, signatureValidator, profileRepository, profileCache, null);
|
||||
+ public Services(MinecraftSessionService sessionService, ServicesKeySet servicesKeySet, GameProfileRepository profileRepository, GameProfileCache profileCache) {
|
||||
+ this(sessionService, servicesKeySet, profileRepository, profileCache, null);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
@@ -4492,16 +4492,16 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
MinecraftSessionService minecraftSessionService = authenticationService.createMinecraftSessionService();
|
||||
GameProfileRepository gameProfileRepository = authenticationService.createProfileRepository();
|
||||
GameProfileCache gameProfileCache = new GameProfileCache(gameProfileRepository, new File(rootDirectory, "usercache.json"));
|
||||
SignatureValidator signatureValidator = SignatureValidator.from(authenticationService.getServicesKey());
|
||||
- return new Services(minecraftSessionService, signatureValidator, gameProfileRepository, gameProfileCache);
|
||||
- return new Services(minecraftSessionService, authenticationService.getServicesKeySet(), gameProfileRepository, gameProfileCache);
|
||||
+ // Paper start
|
||||
+ final java.nio.file.Path legacyConfigPath = ((File) optionSet.valueOf("paper-settings")).toPath();
|
||||
+ final java.nio.file.Path configDirPath = ((File) optionSet.valueOf("paper-settings-directory")).toPath();
|
||||
+ io.papermc.paper.configuration.PaperConfigurations paperConfigurations = io.papermc.paper.configuration.PaperConfigurations.setup(legacyConfigPath, configDirPath, rootDirectory.toPath(), (File) optionSet.valueOf("spigot-settings"));
|
||||
+ return new Services(minecraftSessionService, signatureValidator, gameProfileRepository, gameProfileCache, paperConfigurations);
|
||||
+ return new Services(minecraftSessionService, authenticationService.getServicesKeySet(), gameProfileRepository, gameProfileCache, paperConfigurations);
|
||||
+ // Paper end
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||
|
@@ -48,7 +48,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
@@ -0,0 +0,0 @@ public class BehaviorUtils {
|
||||
|
||||
return optional.map((uuid) -> {
|
||||
return ((ServerLevel) entity.level).getEntity(uuid);
|
||||
return ((ServerLevel) entity.level()).getEntity(uuid);
|
||||
- }).map((entity) -> {
|
||||
+ }).map((entity1) -> { // Paper - remap fix
|
||||
LivingEntity entityliving1;
|
||||
|
@@ -48,12 +48,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
+ }
|
||||
+ implementation("org.ow2.asm:asm:9.4")
|
||||
+ implementation("commons-lang:commons-lang:2.6")
|
||||
+ runtimeOnly("org.xerial:sqlite-jdbc:3.41.2.2")
|
||||
+ runtimeOnly("com.mysql:mysql-connector-j:8.0.32")
|
||||
+ runtimeOnly("org.xerial:sqlite-jdbc:3.42.0.0")
|
||||
+ runtimeOnly("com.mysql:mysql-connector-j:8.0.33")
|
||||
+
|
||||
+ runtimeOnly("org.apache.maven:maven-resolver-provider:3.8.5")
|
||||
+ runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.7.3")
|
||||
+ runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.7.3")
|
||||
+ runtimeOnly("org.apache.maven:maven-resolver-provider:3.9.2")
|
||||
+ runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.10")
|
||||
+ runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.10")
|
||||
+
|
||||
+ testImplementation("junit:junit:4.13.2")
|
||||
+ testImplementation("org.hamcrest:hamcrest-library:1.3")
|
||||
@@ -181,7 +181,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
- <groupId>org.spigotmc</groupId>
|
||||
- <artifactId>spigot</artifactId>
|
||||
- <packaging>jar</packaging>
|
||||
- <version>1.19.4-R0.1-SNAPSHOT</version>
|
||||
- <version>1.20-R0.1-SNAPSHOT</version>
|
||||
- <name>Spigot</name>
|
||||
- <url>https://www.spigotmc.org/</url>
|
||||
-
|
||||
@@ -197,7 +197,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
- <api.version>unknown</api.version>
|
||||
- <bt.name>git</bt.name>
|
||||
- <minecraft_version>1_19_R3</minecraft_version>
|
||||
- <minecraft_version>1_20_R1</minecraft_version>
|
||||
- <maven.compiler.source>17</maven.compiler.source>
|
||||
- <maven.compiler.target>17</maven.compiler.target>
|
||||
- </properties>
|
||||
@@ -251,19 +251,19 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
- <dependency>
|
||||
- <groupId>com.mojang</groupId>
|
||||
- <artifactId>authlib</artifactId>
|
||||
- <version>3.17.30</version>
|
||||
- <version>4.0.43</version>
|
||||
- <scope>compile</scope>
|
||||
- </dependency>
|
||||
- <dependency>
|
||||
- <groupId>com.mojang</groupId>
|
||||
- <artifactId>brigadier</artifactId>
|
||||
- <version>1.0.18</version>
|
||||
- <version>1.1.8</version>
|
||||
- <scope>compile</scope>
|
||||
- </dependency>
|
||||
- <dependency>
|
||||
- <groupId>com.mojang</groupId>
|
||||
- <artifactId>datafixerupper</artifactId>
|
||||
- <version>6.0.6</version>
|
||||
- <version>6.0.8</version>
|
||||
- <scope>compile</scope>
|
||||
- </dependency>
|
||||
- <dependency>
|
||||
@@ -405,39 +405,39 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
- <dependency>
|
||||
- <groupId>org.xerial</groupId>
|
||||
- <artifactId>sqlite-jdbc</artifactId>
|
||||
- <version>3.41.2.2</version>
|
||||
- <version>3.42.0.0</version>
|
||||
- <scope>runtime</scope>
|
||||
- </dependency>
|
||||
- <dependency>
|
||||
- <groupId>com.mysql</groupId>
|
||||
- <artifactId>mysql-connector-j</artifactId>
|
||||
- <version>8.0.32</version>
|
||||
- <version>8.0.33</version>
|
||||
- <scope>runtime</scope>
|
||||
- </dependency>
|
||||
- <!-- add these back in as they are not exposed by the API -->
|
||||
- <dependency>
|
||||
- <groupId>org.apache.maven</groupId>
|
||||
- <artifactId>maven-resolver-provider</artifactId>
|
||||
- <version>3.8.5</version>
|
||||
- <version>3.9.2</version>
|
||||
- <scope>runtime</scope>
|
||||
- </dependency>
|
||||
- <dependency>
|
||||
- <groupId>org.apache.maven.resolver</groupId>
|
||||
- <artifactId>maven-resolver-connector-basic</artifactId>
|
||||
- <version>1.7.3</version>
|
||||
- <version>1.9.10</version>
|
||||
- <scope>runtime</scope>
|
||||
- </dependency>
|
||||
- <dependency>
|
||||
- <groupId>org.apache.maven.resolver</groupId>
|
||||
- <artifactId>maven-resolver-transport-http</artifactId>
|
||||
- <version>1.7.3</version>
|
||||
- <version>1.9.10</version>
|
||||
- <scope>runtime</scope>
|
||||
- </dependency>
|
||||
- <!-- annotations -->
|
||||
- <dependency>
|
||||
- <groupId>org.jetbrains</groupId>
|
||||
- <artifactId>annotations-java5</artifactId>
|
||||
- <version>23.0.0</version>
|
||||
- <version>24.0.1</version>
|
||||
- <scope>provided</scope>
|
||||
- </dependency>
|
||||
- <!-- testing -->
|
||||
@@ -578,7 +578,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
- <plugin>
|
||||
- <groupId>net.md-5</groupId>
|
||||
- <artifactId>specialsource-maven-plugin</artifactId>
|
||||
- <version>1.2.4</version>
|
||||
- <version>1.2.5</version>
|
||||
- <executions>
|
||||
- <execution>
|
||||
- <phase>package</phase>
|
||||
@@ -623,7 +623,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
- <plugin>
|
||||
- <groupId>org.apache.maven.plugins</groupId>
|
||||
- <artifactId>maven-assembly-plugin</artifactId>
|
||||
- <version>3.5.0</version>
|
||||
- <version>3.6.0</version>
|
||||
- <executions>
|
||||
- <execution>
|
||||
- <phase>package</phase>
|
||||
@@ -668,7 +668,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
- <plugin>
|
||||
- <groupId>org.apache.maven.plugins</groupId>
|
||||
- <artifactId>maven-surefire-plugin</artifactId>
|
||||
- <version>3.0.0</version>
|
||||
- <version>3.1.0</version>
|
||||
- <configuration>
|
||||
- <workingDirectory>${basedir}/target/test-server</workingDirectory>
|
||||
- <excludes>
|
||||
@@ -697,7 +697,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
- <plugin>
|
||||
- <groupId>org.apache.maven.plugins</groupId>
|
||||
- <artifactId>maven-checkstyle-plugin</artifactId>
|
||||
- <version>3.2.1</version>
|
||||
- <version>3.3.0</version>
|
||||
- <executions>
|
||||
- <execution>
|
||||
- <phase>test-compile</phase>
|
||||
|
@@ -14,8 +14,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
implementation("org.ow2.asm:asm-commons:9.4") // Paper - ASM event executor generation
|
||||
+ testImplementation("org.mockito:mockito-core:4.9.0") // Paper - switch to mockito
|
||||
implementation("commons-lang:commons-lang:2.6")
|
||||
runtimeOnly("org.xerial:sqlite-jdbc:3.41.2.2")
|
||||
runtimeOnly("com.mysql:mysql-connector-j:8.0.32")
|
||||
runtimeOnly("org.xerial:sqlite-jdbc:3.42.0.0")
|
||||
runtimeOnly("com.mysql:mysql-connector-j:8.0.33")
|
||||
diff --git a/src/test/java/io/papermc/paper/testing/DummyServer.java b/src/test/java/io/papermc/paper/testing/DummyServer.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
|
||||
@@ -74,7 +74,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
+
|
||||
+ when(dummyServer.getLootTable(any(NamespacedKey.class))).thenAnswer(invocation -> {
|
||||
+ final NamespacedKey key = invocation.getArgument(0, NamespacedKey.class);
|
||||
+ return new org.bukkit.craftbukkit.CraftLootTable(key, AbstractTestingBase.DATA_PACK.getLootTables().get(CraftNamespacedKey.toMinecraft(key)));
|
||||
+ return new org.bukkit.craftbukkit.CraftLootTable(key, AbstractTestingBase.DATA_PACK.getLootData().getLootTable(CraftNamespacedKey.toMinecraft(key)));
|
||||
+ });
|
||||
+
|
||||
+ when(dummyServer.getRegistry(any())).thenAnswer(invocation -> {
|
||||
@@ -240,7 +240,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
- @Override
|
||||
- public Object handle(DummyServer server, Object[] args) {
|
||||
- NamespacedKey key = (NamespacedKey) args[0];
|
||||
- return new CraftLootTable(key, AbstractTestingBase.DATA_PACK.getLootTables().get(CraftNamespacedKey.toMinecraft(key)));
|
||||
- return new CraftLootTable(key, AbstractTestingBase.DATA_PACK.getLootData().getLootTable(CraftNamespacedKey.toMinecraft(key)));
|
||||
- }
|
||||
- }
|
||||
- );
|
||||
|
0
patches/server/Add-Player-getFishHook.patch → patches/unapplied/server/Add-Player-getFishHook.patch
0
patches/server/Add-Player-getFishHook.patch → patches/unapplied/server/Add-Player-getFishHook.patch
0
patches/server/Add-PrepareResultEvent.patch → patches/unapplied/server/Add-PrepareResultEvent.patch
0
patches/server/Add-PrepareResultEvent.patch → patches/unapplied/server/Add-PrepareResultEvent.patch
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user