From 951043246e95b95f42e993a66d7b8e7919fc515c Mon Sep 17 00:00:00 2001 From: Bjarne Koll <git@lynxplay.dev> Date: Thu, 24 Oct 2024 10:42:29 +0200 Subject: [PATCH] Patches, patches, patches --- .../API-for-updating-recipes-on-clients.patch | 0 .../API-for-an-entity-s-scoreboard-name.patch | 0 .../Add-BlockFace-to-BlockDamageEvent.patch | 0 .../server/Add-Listing-API-for-Player.patch | 9 +++-- .../Add-option-to-disable-block-updates.patch | 34 ++++++++-------- .../server/Add-whitelist-events.patch | 0 .../server/Bandaid-fix-for-Effect.patch | 0 .../server/Cache-map-ids-on-item-frames.patch | 0 .../Call-missing-BlockDispenseEvent.patch | 2 +- ...nfigurable-Region-Compression-Format.patch | 0 ...ntity-tracking-range-by-Y-coordinate.patch | 0 ...place-methods-with-old-StructureType.patch | 0 ...nd-water-fluid-explosion-resistance-.patch | 0 ...d-chunks-for-supporting-block-checks.patch | 0 ...te-namespaced-commands-if-send-names.patch | 0 .../server/Expand-Pose-API.patch | 2 +- ...enceOrb-should-call-EntitySpawnEvent.patch | 0 ...-entity-death-event-for-ender-dragon.patch | 3 +- .../server/Fix-BanList-API.patch | 0 .../server/Fix-NPE-on-Boat-getStatus.patch | 2 +- ...permission-levels-for-command-blocks.patch | 0 ...x-custom-statistic-criteria-creation.patch | 0 ...ix-possible-NPE-on-painting-creation.patch | 0 ...ation-when-spawning-display-entities.patch | 0 ...Folia-scheduler-and-owned-region-API.patch | 16 ++++---- .../Implement-PlayerFailMoveEvent.patch | 8 ++-- ...st-throw-both-Spread-and-Grow-Events.patch | 0 .../server/More-Sign-Block-API.patch | 2 +- .../Only-capture-actual-tree-growth.patch | 40 ++++++++++--------- ...ase-allay-memory-on-non-item-targets.patch | 0 ...Timer-for-Wandering-Traders-spawned-.patch | 4 +- ...ck-item-frames-if-players-can-see-it.patch | 0 .../Optimize-player-lookups-for-beacons.patch | 0 ...y-handle-BlockBreakEvent-isDropItems.patch | 0 ...ata-neighbour-ticks-outside-of-range.patch | 0 ...eData-on-more-entities-when-spawning.patch | 8 ++-- .../server/SculkCatalyst-bloom-API.patch | 0 .../Use-correct-seed-on-api-world-load.patch | 2 +- ...urce-for-mushroom-block-spread-event.patch | 0 .../fix-item-meta-for-tadpole-buckets.patch | 0 40 files changed, 67 insertions(+), 65 deletions(-) rename patches/{unapplied/server => later}/API-for-updating-recipes-on-clients.patch (100%) rename patches/{unapplied => }/server/API-for-an-entity-s-scoreboard-name.patch (100%) rename patches/{unapplied => }/server/Add-BlockFace-to-BlockDamageEvent.patch (100%) rename patches/{unapplied => }/server/Add-Listing-API-for-Player.patch (97%) rename patches/{unapplied => }/server/Add-option-to-disable-block-updates.patch (89%) rename patches/{unapplied => }/server/Add-whitelist-events.patch (100%) rename patches/{unapplied => }/server/Bandaid-fix-for-Effect.patch (100%) rename patches/{unapplied => }/server/Cache-map-ids-on-item-frames.patch (100%) rename patches/{unapplied => }/server/Call-missing-BlockDispenseEvent.patch (98%) rename patches/{unapplied => }/server/Configurable-Region-Compression-Format.patch (100%) rename patches/{unapplied => }/server/Configurable-entity-tracking-range-by-Y-coordinate.patch (100%) rename patches/{unapplied => }/server/Deprecate-and-replace-methods-with-old-StructureType.patch (100%) rename patches/{unapplied => }/server/Determine-lava-and-water-fluid-explosion-resistance-.patch (100%) rename patches/{unapplied => }/server/Don-t-load-chunks-for-supporting-block-checks.patch (100%) rename patches/{unapplied => }/server/Don-t-tab-complete-namespaced-commands-if-send-names.patch (100%) rename patches/{unapplied => }/server/Expand-Pose-API.patch (97%) rename patches/{unapplied => }/server/ExperienceOrb-should-call-EntitySpawnEvent.patch (100%) rename patches/{unapplied => }/server/Fire-entity-death-event-for-ender-dragon.patch (97%) rename patches/{unapplied => }/server/Fix-BanList-API.patch (100%) rename patches/{unapplied => }/server/Fix-NPE-on-Boat-getStatus.patch (94%) rename patches/{unapplied => }/server/Fix-cmd-permission-levels-for-command-blocks.patch (100%) rename patches/{unapplied => }/server/Fix-custom-statistic-criteria-creation.patch (100%) rename patches/{unapplied => }/server/Fix-possible-NPE-on-painting-creation.patch (100%) rename patches/{unapplied => }/server/Fix-rotation-when-spawning-display-entities.patch (100%) rename patches/{unapplied => }/server/Folia-scheduler-and-owned-region-API.patch (99%) rename patches/{unapplied => }/server/Implement-PlayerFailMoveEvent.patch (93%) rename patches/{unapplied => }/server/Make-Amethyst-throw-both-Spread-and-Grow-Events.patch (100%) rename patches/{unapplied => }/server/More-Sign-Block-API.patch (98%) rename patches/{unapplied => }/server/Only-capture-actual-tree-growth.patch (90%) rename patches/{unapplied => }/server/Only-erase-allay-memory-on-non-item-targets.patch (100%) rename patches/{unapplied => }/server/Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch (86%) rename patches/{unapplied => }/server/Only-tick-item-frames-if-players-can-see-it.patch (100%) rename patches/{unapplied => }/server/Optimize-player-lookups-for-beacons.patch (100%) rename patches/{unapplied => }/server/Properly-handle-BlockBreakEvent-isDropItems.patch (100%) rename patches/{unapplied => }/server/Remove-UpgradeData-neighbour-ticks-outside-of-range.patch (100%) rename patches/{unapplied => }/server/Respect-randomizeData-on-more-entities-when-spawning.patch (90%) rename patches/{unapplied => }/server/SculkCatalyst-bloom-API.patch (100%) rename patches/{unapplied => }/server/Use-correct-seed-on-api-world-load.patch (94%) rename patches/{unapplied => }/server/Use-correct-source-for-mushroom-block-spread-event.patch (100%) rename patches/{unapplied => }/server/fix-item-meta-for-tadpole-buckets.patch (100%) diff --git a/patches/unapplied/server/API-for-updating-recipes-on-clients.patch b/patches/later/API-for-updating-recipes-on-clients.patch similarity index 100% rename from patches/unapplied/server/API-for-updating-recipes-on-clients.patch rename to patches/later/API-for-updating-recipes-on-clients.patch diff --git a/patches/unapplied/server/API-for-an-entity-s-scoreboard-name.patch b/patches/server/API-for-an-entity-s-scoreboard-name.patch similarity index 100% rename from patches/unapplied/server/API-for-an-entity-s-scoreboard-name.patch rename to patches/server/API-for-an-entity-s-scoreboard-name.patch diff --git a/patches/unapplied/server/Add-BlockFace-to-BlockDamageEvent.patch b/patches/server/Add-BlockFace-to-BlockDamageEvent.patch similarity index 100% rename from patches/unapplied/server/Add-BlockFace-to-BlockDamageEvent.patch rename to patches/server/Add-BlockFace-to-BlockDamageEvent.patch diff --git a/patches/unapplied/server/Add-Listing-API-for-Player.patch b/patches/server/Add-Listing-API-for-Player.patch similarity index 97% rename from patches/unapplied/server/Add-Listing-API-for-Player.patch rename to patches/server/Add-Listing-API-for-Player.patch index 59ef0cade3..8f4b1b7085 100644 --- a/patches/unapplied/server/Add-Listing-API-for-Player.patch +++ b/patches/server/Add-Listing-API-for-Player.patch @@ -59,23 +59,26 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @Nullable RemoteChatSession.Data chatSession ) { Entry(ServerPlayer player) { -+ // Paper start - Add Listing API for Player ++ // Paper start - Add Listing API for Player + this(player, true); + } + Entry(ServerPlayer player, boolean listed) { this( ++ // Paper end - Add Listing API for Player player.getUUID(), player.getGameProfile(), - true, -+ listed, ++ listed, // Paper - Add Listing API for Player player.connection.latency(), player.gameMode.getGameModeForPlayer(), player.getTabListDisplayName(), +@@ -0,0 +0,0 @@ public class ClientboundPlayerInfoUpdatePacket implements Packet<ClientGamePacke Optionull.map(player.getChatSession(), RemoteChatSession::asData) ); } ++ // Paper start - Add Listing API for Player + Entry(UUID profileId, boolean listed) { -+ this(profileId, null, listed, 0, GameType.DEFAULT_MODE, null, null); ++ this(profileId, null, listed, 0, GameType.DEFAULT_MODE, null, 0, null); + } + // Paper end - Add Listing API for Player } diff --git a/patches/unapplied/server/Add-option-to-disable-block-updates.patch b/patches/server/Add-option-to-disable-block-updates.patch similarity index 89% rename from patches/unapplied/server/Add-option-to-disable-block-updates.patch rename to patches/server/Add-option-to-disable-block-updates.patch index c2f2e36ba2..d7f28a4a93 100644 --- a/patches/unapplied/server/Add-option-to-disable-block-updates.patch +++ b/patches/server/Add-option-to-disable-block-updates.patch @@ -17,13 +17,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } @@ -0,0 +0,0 @@ public class ChorusPlantBlock extends PipeBlock { - - @Override - protected BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { + BlockState neighborState, + RandomSource random + ) { + if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableChorusPlantUpdates) return state; // Paper - add option to disable block updates if (!state.canSurvive(world, pos)) { - world.scheduleTick(pos, this, 1); - return super.updateShape(state, direction, neighborState, world, pos, neighborPos); + tickView.scheduleTick(pos, this, 1); + return super.updateShape(state, world, tickView, pos, direction, neighborPos, neighborState, random); @@ -0,0 +0,0 @@ public class ChorusPlantBlock extends PipeBlock { @Override @@ -53,13 +53,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 BlockPos blockPos = ctx.getClickedPos(); return this.defaultBlockState() @@ -0,0 +0,0 @@ public class HugeMushroomBlock extends Block { - - @Override - protected BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { + BlockState neighborState, + RandomSource random + ) { + if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableMushroomBlockUpdates) return state; // Paper - add option to disable block updates return neighborState.is(this) ? state.setValue(PROPERTY_BY_DIRECTION.get(direction), Boolean.valueOf(false)) - : super.updateShape(state, direction, neighborState, world, pos, neighborPos); + : super.updateShape(state, world, tickView, pos, direction, neighborPos, neighborState, random); @@ -0,0 +0,0 @@ public class HugeMushroomBlock extends Block { @Override @@ -89,23 +89,23 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } @Override - protected BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { + protected BlockState updateShape(BlockState state, LevelReader world, ScheduledTickAccess tickView, BlockPos pos, Direction direction, BlockPos neighborPos, BlockState neighborState, RandomSource random) { + if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableNoteblockUpdates) return state; // Paper - prevent noteblock instrument from updating boolean flag = direction.getAxis() == Direction.Axis.Y; - return flag ? this.setInstrument(world, pos, state) : super.updateShape(state, direction, neighborState, world, pos, neighborPos); + return flag ? this.setInstrument(world, pos, state) : super.updateShape(state, world, tickView, pos, direction, neighborPos, neighborState, random); @@ -0,0 +0,0 @@ public class NoteBlock extends Block { @Override - protected void neighborChanged(BlockState state, Level world, BlockPos pos, Block sourceBlock, BlockPos sourcePos, boolean notify) { + protected void neighborChanged(BlockState state, Level world, BlockPos pos, Block sourceBlock, @Nullable Orientation wireOrientation, boolean notify) { + if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableNoteblockUpdates) return; // Paper - prevent noteblock powered-state from updating boolean flag1 = world.hasNeighborSignal(pos); if (flag1 != (Boolean) state.getValue(NoteBlock.POWERED)) { @@ -0,0 +0,0 @@ public class NoteBlock extends Block { - if (world.isClientSide) { - return InteractionResult.SUCCESS; - } else { + @Override + protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) { + if (!world.isClientSide) { - state = (BlockState) state.cycle(NoteBlock.NOTE); + if (!io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableNoteblockUpdates) state = (BlockState) state.cycle(NoteBlock.NOTE); // Paper - prevent noteblock note from updating world.setBlock(pos, state, 3); @@ -126,9 +126,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public class TripWireBlock extends Block { @Override - protected BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { + protected BlockState updateShape(BlockState state, LevelReader world, ScheduledTickAccess tickView, BlockPos pos, Direction direction, BlockPos neighborPos, BlockState neighborState, RandomSource random) { + if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableTripwireUpdates) return state; // Paper - prevent tripwire from updating - return direction.getAxis().isHorizontal() ? (BlockState) state.setValue((Property) TripWireBlock.PROPERTY_BY_DIRECTION.get(direction), this.shouldConnectTo(neighborState, direction)) : super.updateShape(state, direction, neighborState, world, pos, neighborPos); + return direction.getAxis().isHorizontal() ? (BlockState) state.setValue((Property) TripWireBlock.PROPERTY_BY_DIRECTION.get(direction), this.shouldConnectTo(neighborState, direction)) : super.updateShape(state, world, tickView, pos, direction, neighborPos, neighborState, random); } @Override diff --git a/patches/unapplied/server/Add-whitelist-events.patch b/patches/server/Add-whitelist-events.patch similarity index 100% rename from patches/unapplied/server/Add-whitelist-events.patch rename to patches/server/Add-whitelist-events.patch diff --git a/patches/unapplied/server/Bandaid-fix-for-Effect.patch b/patches/server/Bandaid-fix-for-Effect.patch similarity index 100% rename from patches/unapplied/server/Bandaid-fix-for-Effect.patch rename to patches/server/Bandaid-fix-for-Effect.patch diff --git a/patches/unapplied/server/Cache-map-ids-on-item-frames.patch b/patches/server/Cache-map-ids-on-item-frames.patch similarity index 100% rename from patches/unapplied/server/Cache-map-ids-on-item-frames.patch rename to patches/server/Cache-map-ids-on-item-frames.patch diff --git a/patches/unapplied/server/Call-missing-BlockDispenseEvent.patch b/patches/server/Call-missing-BlockDispenseEvent.patch similarity index 98% rename from patches/unapplied/server/Call-missing-BlockDispenseEvent.patch rename to patches/server/Call-missing-BlockDispenseEvent.patch index 177d9db68a..ff5a9b3127 100644 --- a/patches/unapplied/server/Call-missing-BlockDispenseEvent.patch +++ b/patches/server/Call-missing-BlockDispenseEvent.patch @@ -53,7 +53,7 @@ diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -0,0 +0,0 @@ public class CraftEventFactory { +@@ -0,0 +0,0 @@ populateFields(victim, event); // Paper - make cancellable } // Paper end diff --git a/patches/unapplied/server/Configurable-Region-Compression-Format.patch b/patches/server/Configurable-Region-Compression-Format.patch similarity index 100% rename from patches/unapplied/server/Configurable-Region-Compression-Format.patch rename to patches/server/Configurable-Region-Compression-Format.patch diff --git a/patches/unapplied/server/Configurable-entity-tracking-range-by-Y-coordinate.patch b/patches/server/Configurable-entity-tracking-range-by-Y-coordinate.patch similarity index 100% rename from patches/unapplied/server/Configurable-entity-tracking-range-by-Y-coordinate.patch rename to patches/server/Configurable-entity-tracking-range-by-Y-coordinate.patch diff --git a/patches/unapplied/server/Deprecate-and-replace-methods-with-old-StructureType.patch b/patches/server/Deprecate-and-replace-methods-with-old-StructureType.patch similarity index 100% rename from patches/unapplied/server/Deprecate-and-replace-methods-with-old-StructureType.patch rename to patches/server/Deprecate-and-replace-methods-with-old-StructureType.patch diff --git a/patches/unapplied/server/Determine-lava-and-water-fluid-explosion-resistance-.patch b/patches/server/Determine-lava-and-water-fluid-explosion-resistance-.patch similarity index 100% rename from patches/unapplied/server/Determine-lava-and-water-fluid-explosion-resistance-.patch rename to patches/server/Determine-lava-and-water-fluid-explosion-resistance-.patch diff --git a/patches/unapplied/server/Don-t-load-chunks-for-supporting-block-checks.patch b/patches/server/Don-t-load-chunks-for-supporting-block-checks.patch similarity index 100% rename from patches/unapplied/server/Don-t-load-chunks-for-supporting-block-checks.patch rename to patches/server/Don-t-load-chunks-for-supporting-block-checks.patch diff --git a/patches/unapplied/server/Don-t-tab-complete-namespaced-commands-if-send-names.patch b/patches/server/Don-t-tab-complete-namespaced-commands-if-send-names.patch similarity index 100% rename from patches/unapplied/server/Don-t-tab-complete-namespaced-commands-if-send-names.patch rename to patches/server/Don-t-tab-complete-namespaced-commands-if-send-names.patch diff --git a/patches/unapplied/server/Expand-Pose-API.patch b/patches/server/Expand-Pose-API.patch similarity index 97% rename from patches/unapplied/server/Expand-Pose-API.patch rename to patches/server/Expand-Pose-API.patch index c6854463e5..9959804ebe 100644 --- a/patches/unapplied/server/Expand-Pose-API.patch +++ b/patches/server/Expand-Pose-API.patch @@ -17,7 +17,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public void setOrigin(@javax.annotation.Nonnull Location location) { this.origin = location.toVector(); @@ -0,0 +0,0 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - public void onClientRemoval() {} + public void onRemoval(Entity.RemovalReason reason) {} public void setPose(net.minecraft.world.entity.Pose pose) { + if (this.fixedPose) return; // Paper - Expand Pose API diff --git a/patches/unapplied/server/ExperienceOrb-should-call-EntitySpawnEvent.patch b/patches/server/ExperienceOrb-should-call-EntitySpawnEvent.patch similarity index 100% rename from patches/unapplied/server/ExperienceOrb-should-call-EntitySpawnEvent.patch rename to patches/server/ExperienceOrb-should-call-EntitySpawnEvent.patch diff --git a/patches/unapplied/server/Fire-entity-death-event-for-ender-dragon.patch b/patches/server/Fire-entity-death-event-for-ender-dragon.patch similarity index 97% rename from patches/unapplied/server/Fire-entity-death-event-for-ender-dragon.patch rename to patches/server/Fire-entity-death-event-for-ender-dragon.patch index 198dd78fda..06cab728c7 100644 --- a/patches/unapplied/server/Fire-entity-death-event-for-ender-dragon.patch +++ b/patches/server/Fire-entity-death-event-for-ender-dragon.patch @@ -11,7 +11,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public class EnderDragon extends Mob implements Enemy { @Override - public void kill() { + public void kill(ServerLevel world) { + // Paper start - Fire entity death event + this.silentDeath = true; + org.bukkit.event.entity.EntityDeathEvent deathEvent = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityDeathEvent(this, this.damageSources().genericKill()); @@ -20,7 +20,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + return; + } + // Paper end - Fire entity death event -+ this.remove(Entity.RemovalReason.KILLED, EntityRemoveEvent.Cause.DEATH); // CraftBukkit - add Bukkit remove cause this.gameEvent(GameEvent.ENTITY_DIE); if (this.dragonFight != null) { diff --git a/patches/unapplied/server/Fix-BanList-API.patch b/patches/server/Fix-BanList-API.patch similarity index 100% rename from patches/unapplied/server/Fix-BanList-API.patch rename to patches/server/Fix-BanList-API.patch diff --git a/patches/unapplied/server/Fix-NPE-on-Boat-getStatus.patch b/patches/server/Fix-NPE-on-Boat-getStatus.patch similarity index 94% rename from patches/unapplied/server/Fix-NPE-on-Boat-getStatus.patch rename to patches/server/Fix-NPE-on-Boat-getStatus.patch index 6fc79a2d2c..fa701d1ca6 100644 --- a/patches/unapplied/server/Fix-NPE-on-Boat-getStatus.patch +++ b/patches/server/Fix-NPE-on-Boat-getStatus.patch @@ -12,7 +12,7 @@ diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java b/src/ma index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java -@@ -0,0 +0,0 @@ public class CraftBoat extends CraftVehicle implements Boat { +@@ -0,0 +0,0 @@ public abstract class CraftBoat extends CraftVehicle implements Boat { @Override public Status getStatus() { diff --git a/patches/unapplied/server/Fix-cmd-permission-levels-for-command-blocks.patch b/patches/server/Fix-cmd-permission-levels-for-command-blocks.patch similarity index 100% rename from patches/unapplied/server/Fix-cmd-permission-levels-for-command-blocks.patch rename to patches/server/Fix-cmd-permission-levels-for-command-blocks.patch diff --git a/patches/unapplied/server/Fix-custom-statistic-criteria-creation.patch b/patches/server/Fix-custom-statistic-criteria-creation.patch similarity index 100% rename from patches/unapplied/server/Fix-custom-statistic-criteria-creation.patch rename to patches/server/Fix-custom-statistic-criteria-creation.patch diff --git a/patches/unapplied/server/Fix-possible-NPE-on-painting-creation.patch b/patches/server/Fix-possible-NPE-on-painting-creation.patch similarity index 100% rename from patches/unapplied/server/Fix-possible-NPE-on-painting-creation.patch rename to patches/server/Fix-possible-NPE-on-painting-creation.patch diff --git a/patches/unapplied/server/Fix-rotation-when-spawning-display-entities.patch b/patches/server/Fix-rotation-when-spawning-display-entities.patch similarity index 100% rename from patches/unapplied/server/Fix-rotation-when-spawning-display-entities.patch rename to patches/server/Fix-rotation-when-spawning-display-entities.patch diff --git a/patches/unapplied/server/Folia-scheduler-and-owned-region-API.patch b/patches/server/Folia-scheduler-and-owned-region-API.patch similarity index 99% rename from patches/unapplied/server/Folia-scheduler-and-owned-region-API.patch rename to patches/server/Folia-scheduler-and-owned-region-API.patch index 1e35e43f6d..d818ef5573 100644 --- a/patches/unapplied/server/Folia-scheduler-and-owned-region-API.patch +++ b/patches/server/Folia-scheduler-and-owned-region-API.patch @@ -1153,7 +1153,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -0,0 +0,0 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa MinecraftTimings.bukkitSchedulerTimer.startTiming(); // Spigot // Paper - this.server.getScheduler().mainThreadHeartbeat(this.tickCount); // CraftBukkit + this.server.getScheduler().mainThreadHeartbeat(); // CraftBukkit MinecraftTimings.bukkitSchedulerTimer.stopTiming(); // Spigot // Paper + // Paper start - Folia scheduler API + ((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) Bukkit.getGlobalRegionScheduler()).tick(); @@ -1170,15 +1170,15 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + }); + // Paper end - Folia scheduler API io.papermc.paper.adventure.providers.ClickCallbackProviderImpl.CALLBACK_MANAGER.handleQueue(this.tickCount); // Paper - this.profiler.push("commandFunctions"); + gameprofilerfiller.push("commandFunctions"); MinecraftTimings.commandFunctionsTimer.startTiming(); // Spigot // Paper diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -0,0 +0,0 @@ public abstract class PlayerList { + } - entityplayer.unRide(); worldserver.removePlayerImmediately(entityplayer, Entity.RemovalReason.UNLOADED_WITH_PLAYER); + entityplayer.retireScheduler(); // Paper - Folia schedulers entityplayer.getAdvancements().stopListening(); @@ -1203,16 +1203,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } return this.bukkitEntity; } - + // Paper start + public CraftEntity getBukkitEntityRaw() { + return this.bukkitEntity; + } + // Paper end -+ - @Override - public CommandSender getBukkitSender(CommandSourceStack wrapper) { - return this.getBukkitEntity(); + + // CraftBukkit - SPIGOT-6907: re-implement LivingEntity#setMaximumAir() + public int getDefaultMaxAirSupply() { @@ -0,0 +0,0 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public final void setRemoved(Entity.RemovalReason entity_removalreason, EntityRemoveEvent.Cause cause) { CraftEventFactory.callEntityRemoveEvent(this, cause); @@ -1222,9 +1220,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.removalReason = entity_removalreason; } @@ -0,0 +0,0 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - this.getPassengers().forEach(Entity::stopRiding); this.levelCallback.onRemove(entity_removalreason); + this.onRemoval(entity_removalreason); + // Paper start - Folia schedulers + if (!(this instanceof ServerPlayer) && entity_removalreason != RemovalReason.CHANGED_DIMENSION && !alreadyRemoved) { + // Players need to be special cased, because they are regularly removed from the world diff --git a/patches/unapplied/server/Implement-PlayerFailMoveEvent.patch b/patches/server/Implement-PlayerFailMoveEvent.patch similarity index 93% rename from patches/unapplied/server/Implement-PlayerFailMoveEvent.patch rename to patches/server/Implement-PlayerFailMoveEvent.patch index 502f67d71d..a5a3b04ce1 100644 --- a/patches/unapplied/server/Implement-PlayerFailMoveEvent.patch +++ b/patches/server/Implement-PlayerFailMoveEvent.patch @@ -23,13 +23,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } // Paper start - Prevent moving into unloaded chunks if (this.player.level().paperConfig().chunks.preventMovingIntoUnloadedChunks && (this.player.getX() != toX || this.player.getZ() != toZ) && !worldserver.areChunksLoadedForMove(this.player.getBoundingBox().expandTowards(new Vec3(toX, toY, toZ).subtract(this.player.position())))) { -- this.internalTeleport(this.player.getX(), this.player.getY(), this.player.getZ(), this.player.getYRot(), this.player.getXRot(), Collections.emptySet()); +- this.internalTeleport(PositionMoveRotation.of(this.player), Collections.emptySet()); - return; + // Paper start - Add fail move event + io.papermc.paper.event.player.PlayerFailMoveEvent event = fireFailMove(io.papermc.paper.event.player.PlayerFailMoveEvent.FailReason.MOVED_INTO_UNLOADED_CHUNK, + toX, toY, toZ, toYaw, toPitch, false); + if (!event.isAllowed()) { -+ this.internalTeleport(this.player.getX(), this.player.getY(), this.player.getZ(), this.player.getYRot(), this.player.getXRot(), Collections.emptySet()); ++ this.internalTeleport(PositionMoveRotation.of(this.player), Collections.emptySet()); + return; + } + // Paper end - Add fail move event @@ -38,7 +38,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl - if (d10 - d9 > Math.max(f2, Math.pow((double) (org.spigotmc.SpigotConfig.movedTooQuicklyMultiplier * (float) i * speed), 2)) && !this.isSingleplayerOwner()) { + if (d10 - d9 > Math.max(f2, Math.pow((double) (org.spigotmc.SpigotConfig.movedTooQuicklyMultiplier * (float) i * speed), 2))) { // CraftBukkit end - ServerGamePacketListenerImpl.LOGGER.warn("{} moved too quickly! {},{},{}", new Object[]{this.player.getName().getString(), d6, d7, d8}); - this.teleport(this.player.getX(), this.player.getY(), this.player.getZ(), this.player.getYRot(), this.player.getXRot()); @@ -88,7 +88,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + } + if (teleportBack) { + // Paper end - Add fail move event - this.internalTeleport(d3, d4, d5, f, f1, Collections.emptySet()); // CraftBukkit - SPIGOT-1807: Don't call teleport event, when the client thinks the player is falling, because the chunks are not loaded on the client yet. + this.internalTeleport(d3, d4, d5, f, f1); // CraftBukkit - SPIGOT-1807: Don't call teleport event, when the client thinks the player is falling, because the chunks are not loaded on the client yet. this.player.doCheckFallDamage(this.player.getX() - d3, this.player.getY() - d4, this.player.getZ() - d5, packet.isOnGround()); } else { @@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl diff --git a/patches/unapplied/server/Make-Amethyst-throw-both-Spread-and-Grow-Events.patch b/patches/server/Make-Amethyst-throw-both-Spread-and-Grow-Events.patch similarity index 100% rename from patches/unapplied/server/Make-Amethyst-throw-both-Spread-and-Grow-Events.patch rename to patches/server/Make-Amethyst-throw-both-Spread-and-Grow-Events.patch diff --git a/patches/unapplied/server/More-Sign-Block-API.patch b/patches/server/More-Sign-Block-API.patch similarity index 98% rename from patches/unapplied/server/More-Sign-Block-API.patch rename to patches/server/More-Sign-Block-API.patch index 29a5484edf..72d585ceb7 100644 --- a/patches/unapplied/server/More-Sign-Block-API.patch +++ b/patches/server/More-Sign-Block-API.patch @@ -9,7 +9,7 @@ diff --git a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntit index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java -@@ -0,0 +0,0 @@ public class SignBlockEntity extends BlockEntity implements CommandSource { // C +@@ -0,0 +0,0 @@ public class SignBlockEntity extends BlockEntity { } public boolean isFacingFrontText(net.minecraft.world.entity.player.Player player) { diff --git a/patches/unapplied/server/Only-capture-actual-tree-growth.patch b/patches/server/Only-capture-actual-tree-growth.patch similarity index 90% rename from patches/unapplied/server/Only-capture-actual-tree-growth.patch rename to patches/server/Only-capture-actual-tree-growth.patch index e1e9ac18cc..b189b31c37 100644 --- a/patches/unapplied/server/Only-capture-actual-tree-growth.patch +++ b/patches/server/Only-capture-actual-tree-growth.patch @@ -16,6 +16,27 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } } } +diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/net/minecraft/server/level/ServerLevel.java ++++ b/src/main/java/net/minecraft/server/level/ServerLevel.java +@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe + return range <= 0 ? 64.0 * 64.0 : range * range; // 64 is taken from default in ServerLevel#levelEvent + } + // Paper end - respect global sound events gamerule ++ // Paper start - notify observers even if grow failed ++ public void checkCapturedTreeStateForObserverNotify(final BlockPos pos, final org.bukkit.craftbukkit.block.CraftBlockState craftBlockState) { ++ // notify observers if the block state is the same and the Y level equals the original y level (for mega trees) ++ // blocks at the same Y level with the same state can be assumed to be saplings which trigger observers regardless of if the ++ // tree grew or not ++ if (craftBlockState.getPosition().getY() == pos.getY() && this.getBlockState(craftBlockState.getPosition()) == craftBlockState.getHandle()) { ++ this.notifyAndUpdatePhysics(craftBlockState.getPosition(), null, craftBlockState.getHandle(), craftBlockState.getHandle(), craftBlockState.getHandle(), craftBlockState.getFlag(), 512); ++ } ++ } ++ // Paper end - notify observers even if grow failed + + @Override + public CrashReportCategory fillReportDetails(CrashReport report) { diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java @@ -28,25 +49,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } entityhuman.awardStat(Stats.ITEM_USED.get(item)); // SPIGOT-7236 - award stat } -diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 ---- a/src/main/java/net/minecraft/world/level/Level.java -+++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -0,0 +0,0 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - return range <= 0 ? 64.0 * 64.0 : range * range; // 64 is taken from default in ServerLevel#levelEvent - } - // Paper end - respect global sound events gamerule -+ // Paper start - notify observers even if grow failed -+ public void checkCapturedTreeStateForObserverNotify(final BlockPos pos, final CraftBlockState craftBlockState) { -+ // notify observers if the block state is the same and the Y level equals the original y level (for mega trees) -+ // blocks at the same Y level with the same state can be assumed to be saplings which trigger observers regardless of if the -+ // tree grew or not -+ if (craftBlockState.getPosition().getY() == pos.getY() && this.getBlockState(craftBlockState.getPosition()) == craftBlockState.getHandle()) { -+ this.notifyAndUpdatePhysics(craftBlockState.getPosition(), null, craftBlockState.getHandle(), craftBlockState.getHandle(), craftBlockState.getHandle(), craftBlockState.getFlag(), 512); -+ } -+ } -+ // Paper end - notify observers even if grow failed - } diff --git a/src/main/java/net/minecraft/world/level/block/SaplingBlock.java b/src/main/java/net/minecraft/world/level/block/SaplingBlock.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/world/level/block/SaplingBlock.java diff --git a/patches/unapplied/server/Only-erase-allay-memory-on-non-item-targets.patch b/patches/server/Only-erase-allay-memory-on-non-item-targets.patch similarity index 100% rename from patches/unapplied/server/Only-erase-allay-memory-on-non-item-targets.patch rename to patches/server/Only-erase-allay-memory-on-non-item-targets.patch diff --git a/patches/unapplied/server/Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch b/patches/server/Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch similarity index 86% rename from patches/unapplied/server/Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch rename to patches/server/Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch index 66c61bdc91..dae75bbe37 100644 --- a/patches/unapplied/server/Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch +++ b/patches/server/Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch @@ -26,8 +26,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 return false; } -- WanderingTrader entityvillagertrader = (WanderingTrader) EntityType.WANDERING_TRADER.spawn(world, blockposition2, MobSpawnType.EVENT, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.NATURAL); // CraftBukkit -+ WanderingTrader entityvillagertrader = (WanderingTrader) EntityType.WANDERING_TRADER.spawn(world, trader -> trader.setDespawnDelay(48000), blockposition2, MobSpawnType.EVENT, false, false, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.NATURAL); // CraftBukkit // Paper - set despawnTimer before spawn events called +- WanderingTrader entityvillagertrader = (WanderingTrader) EntityType.WANDERING_TRADER.spawn(world, blockposition2, EntitySpawnReason.EVENT, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.NATURAL); // CraftBukkit ++ WanderingTrader entityvillagertrader = (WanderingTrader) EntityType.WANDERING_TRADER.spawn(world, trader -> trader.setDespawnDelay(48000), blockposition2, EntitySpawnReason.EVENT, false, false, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.NATURAL); // CraftBu // Paper - set despawnTimer before spawn events calledkkit if (entityvillagertrader != null) { for (int i = 0; i < 2; ++i) { diff --git a/patches/unapplied/server/Only-tick-item-frames-if-players-can-see-it.patch b/patches/server/Only-tick-item-frames-if-players-can-see-it.patch similarity index 100% rename from patches/unapplied/server/Only-tick-item-frames-if-players-can-see-it.patch rename to patches/server/Only-tick-item-frames-if-players-can-see-it.patch diff --git a/patches/unapplied/server/Optimize-player-lookups-for-beacons.patch b/patches/server/Optimize-player-lookups-for-beacons.patch similarity index 100% rename from patches/unapplied/server/Optimize-player-lookups-for-beacons.patch rename to patches/server/Optimize-player-lookups-for-beacons.patch diff --git a/patches/unapplied/server/Properly-handle-BlockBreakEvent-isDropItems.patch b/patches/server/Properly-handle-BlockBreakEvent-isDropItems.patch similarity index 100% rename from patches/unapplied/server/Properly-handle-BlockBreakEvent-isDropItems.patch rename to patches/server/Properly-handle-BlockBreakEvent-isDropItems.patch diff --git a/patches/unapplied/server/Remove-UpgradeData-neighbour-ticks-outside-of-range.patch b/patches/server/Remove-UpgradeData-neighbour-ticks-outside-of-range.patch similarity index 100% rename from patches/unapplied/server/Remove-UpgradeData-neighbour-ticks-outside-of-range.patch rename to patches/server/Remove-UpgradeData-neighbour-ticks-outside-of-range.patch diff --git a/patches/unapplied/server/Respect-randomizeData-on-more-entities-when-spawning.patch b/patches/server/Respect-randomizeData-on-more-entities-when-spawning.patch similarity index 90% rename from patches/unapplied/server/Respect-randomizeData-on-more-entities-when-spawning.patch rename to patches/server/Respect-randomizeData-on-more-entities-when-spawning.patch index 2172922f80..71b2e8b3f3 100644 --- a/patches/unapplied/server/Respect-randomizeData-on-more-entities-when-spawning.patch +++ b/patches/server/Respect-randomizeData-on-more-entities-when-spawning.patch @@ -39,9 +39,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + combine(combine(spawnData -> new net.minecraft.world.entity.ExperienceOrb(spawnData.minecraftWorld(), spawnData.x(), spawnData.y(), spawnData.z(), 0, org.bukkit.entity.ExperienceOrb.SpawnReason.CUSTOM, null, null), CLEAR_MOVE_IF_NOT_RANDOMIZED), (spawnData, experienceOrb) -> { if (!spawnData.randomizeData()) { experienceOrb.setYRot(0); } }) // Paper - respect randomizeData )); register(new EntityTypeData<>(EntityType.AREA_EFFECT_CLOUD, AreaEffectCloud.class, CraftAreaEffectCloud::new, createAndMove(net.minecraft.world.entity.EntityType.AREA_EFFECT_CLOUD))); // Paper - set area effect cloud rotation - register(new EntityTypeData<>(EntityType.EGG, Egg.class, CraftEgg::new, spawnData -> new ThrownEgg(spawnData.minecraftWorld(), spawnData.x(), spawnData.y(), spawnData.z()))); + register(new EntityTypeData<>(EntityType.EGG, Egg.class, CraftEgg::new, spawnData -> new ThrownEgg(spawnData.minecraftWorld(), spawnData.x(), spawnData.y(), spawnData.z(), new net.minecraft.world.item.ItemStack(Items.EGG)))); @@ -0,0 +0,0 @@ public final class CraftEntityTypes { - entity.setItem(CraftItemStack.asNMSCopy(new ItemStack(Material.SPLASH_POTION, 1))); + net.minecraft.world.entity.projectile.ThrownPotion entity = new net.minecraft.world.entity.projectile.ThrownPotion(spawnData.minecraftWorld(), spawnData.x(), spawnData.y(), spawnData.z(), new net.minecraft.world.item.ItemStack(Items.SPLASH_POTION)); return entity; })); - register(new EntityTypeData<>(EntityType.TNT, TNTPrimed.class, CraftTNTPrimed::new, spawnData -> new PrimedTnt(spawnData.minecraftWorld(), spawnData.x(), spawnData.y(), spawnData.z(), null))); @@ -64,5 +64,5 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + })); + // Paper end - respect randomizeData register(new EntityTypeData<>(EntityType.EVOKER_FANGS, EvokerFangs.class, CraftEvokerFangs::new, spawnData -> new net.minecraft.world.entity.projectile.EvokerFangs(spawnData.minecraftWorld(), spawnData.x(), spawnData.y(), spawnData.z(), (float) Math.toRadians(spawnData.yaw()), 0, null))); - register(new EntityTypeData<>(EntityType.COMMAND_BLOCK_MINECART, CommandMinecart.class, CraftMinecartCommand::new, spawnData -> new MinecartCommandBlock(spawnData.minecraftWorld(), spawnData.x(), spawnData.y(), spawnData.z()))); - register(new EntityTypeData<>(EntityType.MINECART, RideableMinecart.class, CraftMinecartRideable::new, spawnData -> new Minecart(spawnData.minecraftWorld(), spawnData.x(), spawnData.y(), spawnData.z()))); + register(new EntityTypeData<>(EntityType.COMMAND_BLOCK_MINECART, CommandMinecart.class, CraftMinecartCommand::new, createMinecart(net.minecraft.world.entity.EntityType.COMMAND_BLOCK_MINECART))); + register(new EntityTypeData<>(EntityType.MINECART, RideableMinecart.class, CraftMinecartRideable::new, createMinecart(net.minecraft.world.entity.EntityType.MINECART))); diff --git a/patches/unapplied/server/SculkCatalyst-bloom-API.patch b/patches/server/SculkCatalyst-bloom-API.patch similarity index 100% rename from patches/unapplied/server/SculkCatalyst-bloom-API.patch rename to patches/server/SculkCatalyst-bloom-API.patch diff --git a/patches/unapplied/server/Use-correct-seed-on-api-world-load.patch b/patches/server/Use-correct-seed-on-api-world-load.patch similarity index 94% rename from patches/unapplied/server/Use-correct-seed-on-api-world-load.patch rename to patches/server/Use-correct-seed-on-api-world-load.patch index 7d025e98a5..281c833ba6 100644 --- a/patches/unapplied/server/Use-correct-seed-on-api-world-load.patch +++ b/patches/server/Use-correct-seed-on-api-world-load.patch @@ -15,5 +15,5 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 - long j = BiomeManager.obfuscateSeed(creator.seed()); + long j = BiomeManager.obfuscateSeed(worlddata.worldGenOptions().seed()); // Paper - use world seed List<CustomSpawner> list = ImmutableList.of(new PhantomSpawner(), new PatrolSpawner(), new CatSpawner(), new VillageSiege(), new WanderingTraderSpawner(worlddata)); - LevelStem worlddimension = iregistry.get(actualDimension); + LevelStem worlddimension = iregistry.getValue(actualDimension); diff --git a/patches/unapplied/server/Use-correct-source-for-mushroom-block-spread-event.patch b/patches/server/Use-correct-source-for-mushroom-block-spread-event.patch similarity index 100% rename from patches/unapplied/server/Use-correct-source-for-mushroom-block-spread-event.patch rename to patches/server/Use-correct-source-for-mushroom-block-spread-event.patch diff --git a/patches/unapplied/server/fix-item-meta-for-tadpole-buckets.patch b/patches/server/fix-item-meta-for-tadpole-buckets.patch similarity index 100% rename from patches/unapplied/server/fix-item-meta-for-tadpole-buckets.patch rename to patches/server/fix-item-meta-for-tadpole-buckets.patch