From b95d4b28b806ace2d61e9fe0bb13cede4a5e8847 Mon Sep 17 00:00:00 2001 From: Jake Potrebic Date: Sat, 19 Nov 2022 15:53:20 -0800 Subject: [PATCH] Moving ATs from the at file to individual patches (#8573) --- CONTRIBUTING.md | 31 ++ build-data/dev-imports.txt | 1 - build-data/paper.at | 348 ------------------ build.gradle.kts | 7 +- ...332-Add-ItemFactory-getSpawnEgg-API.patch} | 2 +- patches/server/0004-Paper-config-files.patch | 11 +- patches/server/0008-MC-Utils.patch | 33 +- patches/server/0014-Starlight.patch | 8 +- .../server/0016-Rewrite-chunk-system.patch | 36 +- .../0048-Add-PlayerInitialSpawnEvent.patch | 5 +- ...0082-Add-PlayerUseUnknownEntityEvent.patch | 4 +- .../0089-Configurable-RCON-IP-address.patch | 3 + ...-API-Replenishable-Lootables-Feature.patch | 5 + patches/server/0123-Firework-API-s.patch | 2 + ...ke-parrots-stay-on-shoulders-despite.patch | 7 +- .../server/0142-Basic-PlayerProfile-API.patch | 14 +- .../server/0152-LivingEntity-setKiller.patch | 2 + ...0-Ability-to-apply-mending-to-XP-API.patch | 4 + .../0183-Player.setPlayerProfile-API.patch | 3 + ...0194-Block-Enderpearl-Travel-Exploit.patch | 8 +- .../0209-Improve-EntityShootBowEvent.patch | 5 +- ...32-Implement-Expanded-ArmorStand-API.patch | 3 + .../server/0255-Improve-death-events.patch | 8 +- patches/server/0257-Mob-Pathfinding-API.patch | 5 + patches/server/0269-Add-sun-related-API.patch | 4 +- patches/server/0270-Turtle-API.patch | 7 + patches/server/0273-Add-more-Witch-API.patch | 2 + ...er-Thread-Pool-and-Thread-Priorities.patch | 3 + ...store-custom-InventoryHolder-support.patch | 8 +- patches/server/0288-Add-more-Zombie-API.patch | 4 +- .../0290-Add-PlayerConnectionCloseEvent.patch | 5 + ...0310-PlayerDeathEvent-getItemsToKeep.patch | 5 +- .../0313-Mob-Spawner-API-Enhancements.patch | 5 +- ...0329-Flat-bedrock-generator-settings.patch | 14 + .../0344-Entity-Activation-Range-2.0.patch | 16 +- ...move-existing-players-to-world-spawn.patch | 5 +- ...oalSelector-Goal.Flag-Set-operations.patch | 4 +- ...-Implement-Player-Client-Options-API.patch | 2 + ...g-Broken-behavior-of-PlayerJoinEvent.patch | 7 +- .../server/0392-Villager-Restocks-API.patch | 2 + .../server/0400-Implement-Mob-Goal-API.patch | 8 +- .../0401-Add-villager-reputation-API.patch | 5 +- .../server/0445-Add-entity-liquid-API.patch | 3 + ...2-Eigencraft-redstone-implementation.patch | 6 +- patches/server/0476-Add-more-Evoker-API.patch | 3 + ...-Add-methods-to-get-translation-keys.patch | 4 + patches/server/0515-More-lightning-API.patch | 3 + .../0538-Zombie-API-breaking-doors.patch | 2 + ...onfigurable-door-breaking-difficulty.patch | 6 +- patches/server/0591-Item-Rarity-API.patch | 2 + .../0618-Add-more-WanderingTrader-API.patch | 4 +- .../server/0629-More-Enchantment-API.patch | 2 + ...x-and-optimise-world-force-upgrading.patch | 3 + .../0655-Missing-Entity-Behavior-API.patch | 30 +- ...d-missing-team-sidebar-display-slots.patch | 4 + ...o-find-targets-for-lightning-strikes.patch | 4 +- .../0692-Get-entity-default-attributes.patch | 23 +- ...695-Add-ItemFactory-getSpawnEgg-API.patch} | 6 +- ...Collidable-methods-to-various-places.patch | 2 + ...702-Vanilla-command-permission-fixes.patch | 3 + ...-Fix-upstreams-block-state-factories.patch | 3 + ...removing-recipes-from-RecipeIterator.patch | 2 + ...llow-delegation-to-vanilla-chunk-gen.patch | 4 +- .../0779-Entity-powdered-snow-API.patch | 2 + .../0780-Add-API-for-item-entity-health.patch | 2 + patches/server/0800-Fix-NotePlayEvent.patch | 2 + ...igurable-sculk-sensor-listener-range.patch | 2 + ...0821-Fix-falling-block-spawn-methods.patch | 3 + ...rojectileHitEvent-for-piercing-arrow.patch | 3 + patches/server/0824-More-Projectile-API.patch | 12 + ...0830-Implement-enchantWithLevels-API.patch | 6 +- patches/server/0882-More-Teleport-API.patch | 4 +- 72 files changed, 368 insertions(+), 448 deletions(-) rename patches/api/{0332-Add-ItemFactory-getMonsterEgg-API.patch => 0332-Add-ItemFactory-getSpawnEgg-API.patch} (95%) rename patches/server/{0695-Add-ItemFactory-getMonsterEgg-API.patch => 0695-Add-ItemFactory-getSpawnEgg-API.patch} (86%) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index fe49361763..fb0ca036dd 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -236,6 +236,37 @@ There are exceptions, especially in Spigot-related files - When in doubt or the code around your change is in a clearly different style, use the same style as the surrounding code. +## Access Transformers +Sometimes, vanilla or CraftBukkit code already contains a field, method, or type you want to access +but the visibility is too low (e.g. a private field in an entity class). Paper can use access transformers +to change the visibility or remove the final modifier from fields, methods, and classes. Inside the `build-data/paper.at` +file, you can add ATs that are applied when you `./gradlew applyPatches`. You can read about the format of ATs +[here](https://mcforge.readthedocs.io/en/latest/advanced/accesstransformers/#access-modifiers). + +### Important +ATs should be included in the patch file which requires them within the commit message. Do not commit any changes to the +`build-data/paper.at` file, just use it to initially change the visibility of members until you have finalized what you +need. Then, in the commit message for the patch which requires the ATs, add a header at the bottom of the commit message +before any co-authors. It should look like the following after you `./gradlew rebuildPatches`. +``` +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jake Potrebic +Date: Wed, 8 Jun 2022 22:20:16 -0700 +Subject: [PATCH] Paper config files + +This patch adds Paper configuration files. +Access transformers for this patch are below, but before the co-authors. + +== AT == +public org.spigotmc.SpigotWorldConfig getBoolean(Ljava/lang/String;Z)Z +public net.minecraft.world.level.NaturalSpawner SPAWNING_CATEGORIES + +Co-authored-by: Jason Penilla <11360596+jpenilla@users.noreply.github.com> + +diff --git a/build.gradle.kts b/build.gradle.kts +... +``` + ## Patch Notes When submitting patches to Paper, we may ask you to add notes to the patch diff --git a/build-data/dev-imports.txt b/build-data/dev-imports.txt index 286aeeaaa9..b818b96e27 100644 --- a/build-data/dev-imports.txt +++ b/build-data/dev-imports.txt @@ -8,4 +8,3 @@ # To import classes from the vanilla Minecraft jar use `minecraft` as the artifactId: # minecraft net.minecraft.world.level.entity.LevelEntityGetterAdapter # minecraft net/minecraft/world/level/entity/LevelEntityGetter.java - diff --git a/build-data/paper.at b/build-data/paper.at index c7312d8e58..1c79532b5a 100644 --- a/build-data/paper.at +++ b/build-data/paper.at @@ -12,351 +12,3 @@ public net.minecraft.server.MinecraftServer doRunTask(Lnet/minecraft/server/Tick # AT remap issue? todo 1.18 public net.minecraft.world.level.dimension.end.EndDragonFight findExitPortal()Lnet/minecraft/world/level/block/state/pattern/BlockPattern$BlockPatternMatch; public net.minecraft.nbt.TagParser readArrayTag()Lnet/minecraft/nbt/Tag; - -# Paper config files -public org.spigotmc.SpigotWorldConfig getBoolean(Ljava/lang/String;Z)Z -public org.spigotmc.SpigotWorldConfig getDouble(Ljava/lang/String;)D -public org.spigotmc.SpigotWorldConfig getDouble(Ljava/lang/String;D)D -public org.spigotmc.SpigotWorldConfig getInt(Ljava/lang/String;)I -public org.spigotmc.SpigotWorldConfig getInt(Ljava/lang/String;I)I -public org.spigotmc.SpigotWorldConfig getList(Ljava/lang/String;Ljava/lang/Object;)Ljava/util/List; -public org.spigotmc.SpigotWorldConfig getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; - -# MC Utils -public net.minecraft.server.level.ServerChunkCache mainThread -public net.minecraft.server.level.ServerLevel chunkSource -public org.bukkit.craftbukkit.inventory.CraftItemStack handle - -# Add PlayerInitialSpawnEvent -public net.minecraft.world.entity.Entity setRot(FF)V - -# Add PlayerUseUnknownEntityEvent -public net.minecraft.network.protocol.game.ServerboundInteractPacket$ActionType - -# Configurable RCON IP address -public net.minecraft.server.dedicated.Settings getStringRaw(Ljava/lang/String;)Ljava/lang/String; - -# Mob Spawner API Enhancements -public net.minecraft.world.level.BaseSpawner isNearPlayer(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;)Z -public net.minecraft.world.level.BaseSpawner delay(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;)V - -# LootTable API -public org.bukkit.craftbukkit.block.CraftBlockEntityState getTileEntity()Lnet/minecraft/world/level/block/entity/BlockEntity; -public org.bukkit.craftbukkit.block.CraftLootable setLootTable(Lorg/bukkit/loot/LootTable;J)V -public org.bukkit.craftbukkit.entity.CraftMinecartContainer setLootTable(Lorg/bukkit/loot/LootTable;J)V - -# Firework API -public net.minecraft.world.entity.projectile.FireworkRocketEntity attachedToEntity - -# Add option to make parrots stay -public net.minecraft.world.entity.player.Player removeEntitiesOnShoulder()V - -# LivingEntity setkiller -public net.minecraft.world.entity.LivingEntity lastHurtByPlayerTime - -# Fix client rendering skulls -public net.minecraft.world.item.ItemStack tag - -# Async chunk io -public net.minecraft.server.level.ChunkMap structureManager -public net.minecraft.server.level.ChunkMap overworldDataStorage -public net.minecraft.server.level.ChunkMap getUpdatingChunkIfPresent(J)Lnet/minecraft/server/level/ChunkHolder; -public net.minecraft.server.level.ChunkMap getVisibleChunkIfPresent(J)Lnet/minecraft/server/level/ChunkHolder; -public net.minecraft.server.level.ServerChunkCache mainThreadProcessor -public-f net.minecraft.world.level.chunk.storage.RegionFileStorage -public net.minecraft.world.level.chunk.storage.RegionFileStorage getFile(Lnet/minecraft/world/level/ChunkPos;Z)Lnet/minecraft/world/level/chunk/storage/RegionFile; -public net.minecraft.world.level.chunk.storage.SectionStorage dirty -public net.minecraft.util.thread.BlockableEventLoop runAllTasks()V -public net.minecraft.server.level.ChunkMap getPoiManager()Lnet/minecraft/world/entity/ai/village/poi/PoiManager; - -# Improve death events -public net.minecraft.world.entity.LivingEntity getDeathSound()Lnet/minecraft/sounds/SoundEvent; -public net.minecraft.world.entity.LivingEntity getSoundVolume()F - -# Add sun related api -public net.minecraft.world.entity.Mob isSunBurnTick()Z - -# Turtle API -public net.minecraft.world.entity.animal.Turtle getHomePos()Lnet/minecraft/core/BlockPos; -public net.minecraft.world.entity.animal.Turtle setHasEgg(Z)V -public net.minecraft.world.entity.animal.Turtle isGoingHome()Z -public net.minecraft.world.entity.animal.Turtle setGoingHome(Z)V -public net.minecraft.world.entity.animal.Turtle isTravelling()Z -public net.minecraft.world.entity.animal.Turtle setTravelling(Z)V - -# Call player spectator target event -public net.minecraft.server.network.ServerGamePacketListenerImpl updateBookPages(Ljava/util/List;Ljava/util/function/UnaryOperator;Lnet/minecraft/world/item/ItemStack;ILnet/minecraft/world/item/ItemStack;)V - -# Improve Server THread Pool -public net.minecraft.Util onThreadException(Ljava/lang/Thread;Ljava/lang/Throwable;)V - -# Add more zombie API -public net.minecraft.world.entity.monster.Zombie isSunSensitive()Z - -# Add PlayerConnectionCloseEvent -public net.minecraft.server.network.ServerLoginPacketListenerImpl$State -public net.minecraft.server.network.ServerLoginPacketListenerImpl state -public net.minecraft.server.network.ServerLoginPacketListenerImpl gameProfile - -# Entity Activation Range 2.0 -public net.minecraft.world.entity.Entity isInsidePortal -public net.minecraft.world.entity.Mob leashHolder -public net.minecraft.world.entity.LivingEntity jumping - -# No-Tick view distance -public net.minecraft.server.level.ChunkHolder broadcast(Lnet/minecraft/network/protocol/Packet;Z)V -public net.minecraft.server.level.ChunkMap setViewDistance(I)V -public net.minecraft.server.level.ChunkMap readChunk(Lnet/minecraft/world/level/ChunkPos;)Lnet/minecraft/nbt/CompoundTag; -public net.minecraft.server.level.ChunkMap playerLoadedChunk(Lnet/minecraft/server/level/ServerPlayer;[Lnet/minecraft/network/protocol/Packet;Lnet/minecraft/world/level/chunk/LevelChunk;)V -public net.minecraft.server.level.ChunkMap mainThreadMailbox # todo one of these doesn't belong here - -# Optimise TickListServer -public net.minecraft.world.level.ServerTickList saveTickList(Ljava/util/function/Function;Ljava/lang/Iterable;J)Lnet/minecraft/nbt/ListTag; -public net.minecraft.world.level.chunk.storage.EntityStorage level - -# Don't move existing players to world spawn -public net.minecraft.server.level.ServerPlayer fudgeSpawnLocation(Lnet/minecraft/server/level/ServerLevel;)V - -# Implement Player Client Options API -public net.minecraft.world.entity.player.Player DATA_PLAYER_MODE_CUSTOMISATION - -# Fix Longstanding Broken behavior -public net.minecraft.server.level.ChunkMap addEntity(Lnet/minecraft/world/entity/Entity;)V - -# Load Chunks for Login Async -public net.minecraft.server.level.ServerChunkCache runDistanceManagerUpdates()Z -public net.minecraft.server.level.ServerChunkCache$MainThreadExecutor # todo doesn't belong here but oh well - -# Implement MobGoalApi -public net.minecraft.world.entity.ai.goal.GoalSelector availableGoals - -# Add villager reputation API -public net.minecraft.world.entity.ai.gossip.GossipContainer$EntityGossips -public net.minecraft.world.entity.ai.gossip.GossipContainer$EntityGossips ()V - -# Add entity liquid API -public net.minecraft.world.entity.Entity isInRain()Z -public net.minecraft.world.entity.Entity isInBubbleColumn()Z - -# Allow delegation to vanilla chunk gen -public org.bukkit.craftbukkit.generator.CustomChunkGenerator delegate - -# Optimize redstone algorithm -public net.minecraft.world.level.block.RedStoneWireBlock shouldSignal - -# Add more Evoker API -public net.minecraft.world.entity.monster.Evoker setWololoTarget(Lnet/minecraft/world/entity/animal/Sheep;)V -public net.minecraft.world.entity.monster.Evoker getWololoTarget()Lnet/minecraft/world/entity/animal/Sheep; - -# More lightning API -public net.minecraft.world.entity.LightningBolt life -public net.minecraft.world.entity.LightningBolt flashes - -# Configurable door breaking difficulty -public net.minecraft.world.entity.monster.Vindicator DOOR_BREAKING_PREDICATE -public net.minecraft.world.entity.monster.Zombie DOOR_BREAKING_PREDICATE - -# Optimize sending packets to nearby locations (sounds/effects) -public net.minecraft.server.level.ServerLevel players - -# Item Rarity API -public net.minecraft.world.item.Item rarity - -# More Enchantment API -public net.minecraft.world.item.enchantment.Enchantment slots - -# Fix and optimise world force upgrading -public net.minecraft.util.worldupdate.WorldUpgrader REGEX - -# More Lidded Block API -public net.minecraft.world.level.block.entity.EnderChestBlockEntity openersCounter - -# Improve EntityShootBowEvent -public net.minecraft.world.entity.projectile.AbstractArrow getPickupItem()Lnet.minecraft.world.item.ItemStack; - -# Implement Expanded ArmorStand API -public net.minecraft.world.entity.decoration.ArmorStand isDisabled(Lnet/minecraft/world/entity/EquipmentSlot;)Z - -# Chunk debug command -public net.minecraft.server.level.ChunkMap entitiesInLevel -public net.minecraft.server.level.ServerLevel players - -# Chunk priority urgency system -public net.minecraft.server.level.ChunkMap$ChunkDistanceManager - - -# Chunk debug command -public net.minecraft.server.level.Ticket createdTick -public net.minecraft.server.level.ServerChunkCache CHUNK_STATUSES -public net.minecraft.server.level.ChunkHolder pos - -# Incremental chunk saving -public net.minecraft.world.level.entity.PersistentEntitySectionManager storeChunkSections(JLjava/util/function/Consumer;)Z - -# Mending XP API -public net.minecraft.world.entity.ExperienceOrb durabilityToXp(I)I -public net.minecraft.world.entity.ExperienceOrb xpToDurability(I)I - -# Implement an API for CanPlaceOn and CanDestroy NBT values -public net.minecraft.commands.arguments.blocks.BlockStateParser id - -# Villager Restock API -public net.minecraft.world.entity.npc.Villager numberOfRestocksToday - -# Mob Pathfinding API -public net.minecraft.world.entity.ai.navigation.PathNavigation pathFinder -public net.minecraft.world.level.pathfinder.PathFinder nodeEvaluator -public net.minecraft.world.level.pathfinder.Path nodes - -# Add more Witch API -public net.minecraft.world.entity.monster.Witch usingTime - -# PlayerDeathEvent#getItemsToKeep -public net.minecraft.world.entity.player.Inventory compartments - -# Missing Entity Behavior API -public net.minecraft.world.entity.animal.Fox isDefending()Z -public net.minecraft.world.entity.animal.Fox setDefending(Z)V -public net.minecraft.world.entity.animal.Fox isFaceplanted()Z -public net.minecraft.world.entity.animal.Fox setFaceplanted(Z)V -public net.minecraft.world.entity.animal.Panda getEatCounter()I -public net.minecraft.world.entity.animal.Panda setEatCounter(I)V -public net.minecraft.world.entity.animal.Bee isRolling()Z -public net.minecraft.world.entity.animal.Bee setRolling(Z)V -public net.minecraft.world.entity.animal.Bee numCropsGrownSincePollination -public net.minecraft.world.entity.animal.Bee ticksWithoutNectarSinceExitingHive -public net.minecraft.world.entity.monster.piglin.Piglin isChargingCrossbow()Z -public net.minecraft.world.entity.monster.Vex hasLimitedLife -public net.minecraft.world.entity.monster.Vex limitedLifeTicks -public net.minecraft.world.entity.npc.WanderingTrader wanderTarget -public net.minecraft.world.entity.animal.MushroomCow effect -public net.minecraft.world.entity.animal.MushroomCow effectDuration -public net.minecraft.world.entity.ambient.Bat targetPosition -public net.minecraft.world.entity.monster.Ravager attackTick -public net.minecraft.world.entity.monster.Ravager stunnedTick -public net.minecraft.world.entity.monster.Ravager roarTick -public net.minecraft.world.entity.vehicle.MinecartTNT fuse -public net.minecraft.world.entity.monster.Endermite life -public net.minecraft.world.entity.vehicle.MinecartHopper cooldownTime -public net.minecraft.world.entity.projectile.AbstractArrow soundEvent -public net.minecraft.world.entity.monster.Phantom anchorPoint - - -# Cook speed multipler API -public net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity recipeType - -# Add methods to get translation keys -public org.bukkit.craftbukkit.inventory.CraftMetaFirework -public org.bukkit.craftbukkit.inventory.CraftMetaFirework getNBT(Lorg/bukkit/FireworkEffect$Type;)I - -# Vanilla command permission fixes -public-f com.mojang.brigadier.tree.CommandNode requirement - -# Block Enderpearl Travel Exploit -public net.minecraft.world.entity.projectile.Projectile cachedOwner -public net.minecraft.world.entity.projectile.Projectile ownerUUID - -# Add missing display slots -public org.bukkit.craftbukkit.scoreboard.CraftScoreboardTranslations -public org.bukkit.craftbukkit.scoreboard.CraftScoreboardTranslations toBukkitSlot(I)Lorg/bukkit/scoreboard/DisplaySlot; -public org.bukkit.craftbukkit.scoreboard.CraftScoreboardTranslations fromBukkitSlot(Lorg/bukkit/scoreboard/DisplaySlot;)I - -# Add methods to find targets for lightning strikes -public net.minecraft.server.level.ServerLevel findLightningRod(Lnet/minecraft/core/BlockPos;)Ljava/util/Optional; - -# Improve CraftBlockStates -public net.minecraft.world.level.block.entity.BlockEntityType validBlocks - -# Default entity attributes -public net.minecraft.world.entity.ai.attributes.AttributeSupplier instances - -# Add ItemFactory#getSpawnEgg API -public net.minecraft.world.item.SpawnEggItem BY_ID - -# Zombie API - breaking doors -public net.minecraft.world.entity.monster.Zombie supportsBreakDoorGoal()Z - -# Add Material#hasCollision -public net.minecraft.world.level.block.state.BlockBehaviour hasCollision - -# add per world spawn limits -public net.minecraft.world.level.NaturalSpawner SPAWNING_CATEGORIES - -# Optimize isValidLocation -public net.minecraft.world.level.chunk.LevelChunkSection states - -# Player Profile API -public-f net.minecraft.world.entity.player.Player gameProfile -public org.bukkit.craftbukkit.profile.CraftProfileProperty -public org.bukkit.craftbukkit.profile.CraftPlayerTextures -public org.bukkit.craftbukkit.profile.CraftPlayerTextures copyFrom(Lorg/bukkit/profile/PlayerTextures;)V -public org.bukkit.craftbukkit.profile.CraftPlayerTextures rebuildPropertyIfDirty()V -public org.bukkit.craftbukkit.profile.CraftPlayerProfile getProperty(Ljava/lang/String;)Lcom/mojang/authlib/properties/Property; -public org.bukkit.craftbukkit.profile.CraftPlayerProfile setProperty(Ljava/lang/String;Lcom/mojang/authlib/properties/Property;)V -public org.bukkit.craftbukkit.profile.CraftPlayerProfile toString(Lcom/mojang/authlib/properties/PropertyMap;)Ljava/lang/String; -public org.bukkit.craftbukkit.profile.CraftPlayerProfile equals(Lcom/mojang/authlib/properties/PropertyMap;Lcom/mojang/authlib/properties/PropertyMap;)Z -public org.bukkit.craftbukkit.profile.CraftPlayerProfile hashCode(Lcom/mojang/authlib/properties/PropertyMap;)I - -# Flat bedrock generator settings -public net.minecraft.world.level.levelgen.SurfaceRules$Condition -public net.minecraft.world.level.levelgen.SurfaceRules$Context -public net.minecraft.world.level.levelgen.SurfaceRules$Context blockX -public net.minecraft.world.level.levelgen.SurfaceRules$Context blockY -public net.minecraft.world.level.levelgen.SurfaceRules$Context blockZ -public net.minecraft.world.level.levelgen.SurfaceRules$Context context -public net.minecraft.world.level.levelgen.SurfaceRules$Context randomState -public net.minecraft.world.level.levelgen.SurfaceRules$LazyYCondition -public net.minecraft.world.level.levelgen.SurfaceRules$LazyCondition -public net.minecraft.world.level.levelgen.SurfaceRules$VerticalGradientConditionSource -public net.minecraft.world.level.levelgen.SurfaceRules$SurfaceRule -public net.minecraft.world.level.levelgen.SurfaceSystem getOrCreateRandomFactory(Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/world/level/levelgen/PositionalRandomFactory; - -# Fix removing recipes -public net.minecraft.world.item.crafting.RecipeManager byName - -# Entity powdered snow API -public net.minecraft.world.entity.monster.Skeleton inPowderSnowTime - -# Add health methods for item entities -public net.minecraft.world.entity.item.ItemEntity health - -# Fix riding distance statistics -public net.minecraft.world.entity.player.Player checkRidingStatistics(DDD)V - -# Fix NotePlayEvent -public org.bukkit.craftbukkit.block.data.CraftBlockData toNMS(Ljava/lang/Enum;Ljava/lang/Class;)Ljava/lang/Enum; - -# Stronghold seed configuration -public-f net.minecraft.world.level.chunk.ChunkGenerator strongholdSeed - -# More Sculk Sensor API -public-f net.minecraft.world.level.gameevent.vibrations.VibrationListener listenerRange - -# Fix custom inventory holders -public-f net.minecraft.world.inventory.AbstractContainerMenu dataSlots -public-f net.minecraft.world.inventory.AbstractContainerMenu remoteDataSlots - -# Fix falling block spawn methods -public net.minecraft.world.entity.item.FallingBlockEntity (Lnet/minecraft/world/level/Level;DDDLnet/minecraft/world/level/block/state/BlockState;)V - -# Fix cancelling ProjectileHitEvent for piercing arrows -protected net.minecraft.world.entity.projectile.Projectile hitCancelled - -# Expose firework item directly + manually setting flight ticks -public net.minecraft.world.entity.projectile.FireworkRocketEntity life - -# More Projectile API -public net.minecraft.world.entity.projectile.FishingHook timeUntilLured -public net.minecraft.world.entity.projectile.ShulkerBullet targetDeltaX -public net.minecraft.world.entity.projectile.ShulkerBullet targetDeltaY -public net.minecraft.world.entity.projectile.ShulkerBullet targetDeltaZ -public net.minecraft.world.entity.projectile.ShulkerBullet currentMoveDirection -public net.minecraft.world.entity.projectile.ShulkerBullet flightSteps -public net.minecraft.world.entity.projectile.AbstractArrow soundEvent -public net.minecraft.world.entity.projectile.ThrownTrident dealtDamage -public net.minecraft.world.entity.projectile.Projectile hasBeenShot -public net.minecraft.world.entity.projectile.Projectile leftOwner - -# Teleport API -public net.minecraft.server.network.ServerGamePacketListenerImpl internalTeleport(DDDFFLjava/util/Set;Z)V - diff --git a/build.gradle.kts b/build.gradle.kts index 29281eb7c8..4984b4b877 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,7 +5,7 @@ plugins { java `maven-publish` id("com.github.johnrengelman.shadow") version "7.1.2" apply false - id("io.papermc.paperweight.core") version "1.3.9" + id("io.papermc.paperweight.core") version "1.3.11" } allprojects { @@ -131,6 +131,11 @@ allprojects { } } +tasks.collectAtsFromPatches { + // Uncomment while updating for a new Minecraft version + // extraPatchDir.set(layout.projectDirectory.dir("patches/unapplied/server")) +} + tasks.register("printMinecraftVersion") { doLast { println(providers.gradleProperty("mcVersion").get().trim()) diff --git a/patches/api/0332-Add-ItemFactory-getMonsterEgg-API.patch b/patches/api/0332-Add-ItemFactory-getSpawnEgg-API.patch similarity index 95% rename from patches/api/0332-Add-ItemFactory-getMonsterEgg-API.patch rename to patches/api/0332-Add-ItemFactory-getSpawnEgg-API.patch index 972e376f18..54fbf45e4b 100644 --- a/patches/api/0332-Add-ItemFactory-getMonsterEgg-API.patch +++ b/patches/api/0332-Add-ItemFactory-getSpawnEgg-API.patch @@ -1,7 +1,7 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Thu, 14 Oct 2021 12:09:28 -0500 -Subject: [PATCH] Add ItemFactory#getMonsterEgg API +Subject: [PATCH] Add ItemFactory#getSpawnEgg API diff --git a/src/main/java/org/bukkit/inventory/ItemFactory.java b/src/main/java/org/bukkit/inventory/ItemFactory.java diff --git a/patches/server/0004-Paper-config-files.patch b/patches/server/0004-Paper-config-files.patch index 10b62d097e..237526d8b3 100644 --- a/patches/server/0004-Paper-config-files.patch +++ b/patches/server/0004-Paper-config-files.patch @@ -3,6 +3,15 @@ From: Jake Potrebic Date: Wed, 8 Jun 2022 22:20:16 -0700 Subject: [PATCH] Paper config files +== AT == +public org.spigotmc.SpigotWorldConfig getBoolean(Ljava/lang/String;Z)Z +public org.spigotmc.SpigotWorldConfig getDouble(Ljava/lang/String;)D +public org.spigotmc.SpigotWorldConfig getDouble(Ljava/lang/String;D)D +public org.spigotmc.SpigotWorldConfig getInt(Ljava/lang/String;)I +public org.spigotmc.SpigotWorldConfig getInt(Ljava/lang/String;I)I +public org.spigotmc.SpigotWorldConfig getList(Ljava/lang/String;Ljava/lang/Object;)Ljava/util/List; +public org.spigotmc.SpigotWorldConfig getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +public net.minecraft.world.level.NaturalSpawner SPAWNING_CATEGORIES diff --git a/build.gradle.kts b/build.gradle.kts index 5d8a84341ab5be52b5c37737e3f82590f06f6073..cfdb20447e6ad3efcdee8889712f77931773beaf 100644 @@ -4401,7 +4410,7 @@ index 7c35fb22df0bca2c2ca885a872ee42d6073d852f..26fc8127024d7b81ffe5c1c81b8ef8a6 } // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 0029d8e349ee0766aae3ab53fb374759b1f28e72..bbdde701a16480b0b4b29e8fb6b5b5d987db0ce3 100644 +index 4dae642adcc148bc101a0783c74454709f3243a4..61f1da79bbd0428c4d99f62974c06183230864b6 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -227,7 +227,7 @@ public class ServerLevel extends Level implements WorldGenLevel { diff --git a/patches/server/0008-MC-Utils.patch b/patches/server/0008-MC-Utils.patch index 3f7ecbecda..37b08320b2 100644 --- a/patches/server/0008-MC-Utils.patch +++ b/patches/server/0008-MC-Utils.patch @@ -3,6 +3,13 @@ From: Aikar Date: Mon, 28 Mar 2016 20:55:47 -0400 Subject: [PATCH] MC Utils +== AT == +public net.minecraft.server.level.ServerChunkCache mainThread +public net.minecraft.server.level.ServerLevel chunkSource +public org.bukkit.craftbukkit.inventory.CraftItemStack handle +public net.minecraft.server.level.ChunkMap getVisibleChunkIfPresent(J)Lnet/minecraft/server/level/ChunkHolder; +public net.minecraft.server.level.ServerChunkCache mainThreadProcessor +public net.minecraft.server.level.ServerChunkCache$MainThreadExecutor diff --git a/src/main/java/com/destroystokyo/paper/util/concurrent/WeakSeqLock.java b/src/main/java/com/destroystokyo/paper/util/concurrent/WeakSeqLock.java new file mode 100644 @@ -5786,7 +5793,7 @@ index f902b1f7062fc2c81e0ce43e8b8599192469e57c..74d1ae0104e8d0795df50f00317fd860 + // Paper end } diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 91a9b9ff0d7821a2261e7137fb1b3989ba096b88..5095519f9bd009a4d5af49d5b42c5795114411a2 100644 +index 26b8096e073d8aa386c9c11ee4a81c7e46b6e1f8..8c6ca0acde4cb266a844a1670296ac327e3382dc 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -63,6 +63,7 @@ import net.minecraft.network.protocol.game.ClientboundSetChunkCacheCenterPacket; @@ -6044,7 +6051,7 @@ index 91a9b9ff0d7821a2261e7137fb1b3989ba096b88..5095519f9bd009a4d5af49d5b42c5795 @Override @@ -1467,7 +1547,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider - public class ChunkDistanceManager extends DistanceManager { + private class ChunkDistanceManager extends DistanceManager { protected ChunkDistanceManager(Executor workerExecutor, Executor mainThreadExecutor) { - super(workerExecutor, mainThreadExecutor); @@ -6098,7 +6105,7 @@ index 6c98676827ceb6999f340fa2b06a0b3e1cb4cae2..fbe62a31ab199d83a1db0a4e0b1a8138 while (objectiterator.hasNext()) { diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index ce88976db29b9e9524dbe45b16721ef90afb692b..359de6697ec69f68fe79a691c7306d4c0e42fd58 100644 +index c682a90eea94cc55ac2ccdb49612e915fbffc512..85238e1bcb2a7ac8f824f10409ee5a4bc7e6c002 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java @@ -50,6 +50,7 @@ import net.minecraft.world.level.storage.LevelStorageSource; @@ -6106,7 +6113,7 @@ index ce88976db29b9e9524dbe45b16721ef90afb692b..359de6697ec69f68fe79a691c7306d4c public class ServerChunkCache extends ChunkSource { + public static final org.slf4j.Logger LOGGER = com.mojang.logging.LogUtils.getLogger(); // Paper - public static final List CHUNK_STATUSES = ChunkStatus.getStatusList(); + private static final List CHUNK_STATUSES = ChunkStatus.getStatusList(); private final DistanceManager distanceManager; final ServerLevel level; @@ -68,6 +69,231 @@ public class ServerChunkCache extends ChunkSource { @@ -6405,7 +6412,7 @@ index ce88976db29b9e9524dbe45b16721ef90afb692b..359de6697ec69f68fe79a691c7306d4c ChunkHolder playerchunk = this.getVisibleChunkIfPresent(pos); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index aa396df025115c7fd866cbc63a44c2c17abfde84..6e2cd39d4ca7466bbb480d0d9331f644ccda62cd 100644 +index a3c602f1a1b2dbc6bbb32bffa8745dc71cf20872..f5ed23104c781098e64850b32963d13c1a611b96 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -168,6 +168,7 @@ import org.bukkit.event.weather.LightningStrikeEvent; @@ -6516,7 +6523,7 @@ index aa396df025115c7fd866cbc63a44c2c17abfde84..6e2cd39d4ca7466bbb480d0d9331f644 public ServerLevel(MinecraftServer minecraftserver, Executor executor, LevelStorageSource.LevelStorageAccess convertable_conversionsession, PrimaryLevelData iworlddataserver, ResourceKey resourcekey, LevelStem worlddimension, ChunkProgressListener worldloadlistener, boolean flag, long i, List list, boolean flag1, org.bukkit.World.Environment env, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider) { // Holder holder = worlddimension.typeHolder(); // 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 e2ed77972fcec43fef5f3af044479849f78901a9..bdad7b404067ab65d85d1628db9009896a43a052 100644 +index 76eaa034d85d7a02ab6e094161b65fcd3dff71ef..c20f7eb3ee60fce38be2c817278ecaac8982b279 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -243,6 +243,9 @@ public class ServerPlayer extends Player { @@ -6582,7 +6589,7 @@ index 96ab71f72b43758b86f8990a74a238ad68e10890..32d6e4b194c3c4eca7009059f8d18589 public BlockState getBlockState(BlockPos pos) { return this.getChunk(SectionPos.blockToSectionCoord(pos.getX()), SectionPos.blockToSectionCoord(pos.getZ())).getBlockState(pos); diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 6987bee4bf2c1f3d47ffdd5329f6c0c63a2962a5..474843e57028ade5ef36ac5cda4924dbd95f6fe4 100644 +index 346cacb7627db45d2cc64ab841643af7e974cacb..efbfa3f82bd19bfe09a483306d97464e1782a0ab 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -175,6 +175,7 @@ public abstract class PlayerList { @@ -6594,7 +6601,7 @@ index 6987bee4bf2c1f3d47ffdd5329f6c0c63a2962a5..474843e57028ade5ef36ac5cda4924db GameProfileCache usercache = this.server.getProfileCache(); Optional optional = usercache.get(gameprofile.getId()); diff --git a/src/main/java/net/minecraft/util/thread/BlockableEventLoop.java b/src/main/java/net/minecraft/util/thread/BlockableEventLoop.java -index 288fdbef407d11ab430d5d7026dfad148c3c1065..6fefa619299d3202158490630d62c16aef71e831 100644 +index 337e0a7b3c14e1b1a28744920e0dc0a69e0c5a87..f5829ae484d93b547a5437b85a9621346384a11b 100644 --- a/src/main/java/net/minecraft/util/thread/BlockableEventLoop.java +++ b/src/main/java/net/minecraft/util/thread/BlockableEventLoop.java @@ -78,6 +78,13 @@ public abstract class BlockableEventLoop implements Profiler @@ -6640,7 +6647,7 @@ index 9001040060383cff5a51028d652315467c7d51ec..e283e8383a52c74cebd16fa7642a5e39 @Override public float getBukkitYaw() { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 9eaf96ca2300a839e4990d1447a3d8903d0c2b02..2a0f65134c8ffdbcce3af606db02693eaa4ee471 100644 +index e0131e85b3f2d72d1c6ae64214099b4f67bf5de5..c3357f65d3c5cec3446326b8a68750ee2cc27b9a 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -242,6 +242,7 @@ public abstract class Mob extends LivingEntity { @@ -6677,7 +6684,7 @@ index a0b5895abc88d297045e05f25bb09527991d43f0..6e0bd0eab0b06a4ac3042496bbb91292 super(type, world); this.xpReward = 5; diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index b32f699740680b792990fa70b230ee5f07f2149b..e937186aaf819a77c80beeb9e08413a1f781c13a 100644 +index cd677153ade91dd56d000fbc2dfc8be0e332a00d..1b83577ec8e78e20051f20a336e5cf3e7836c079 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -751,6 +751,25 @@ public final class ItemStack { @@ -7045,7 +7052,7 @@ index d484aaae8614e78fdb984b26304b1de8b649e4bd..fabc7df600c89b01d97a76eb0b1206a3 this.levelHeightAccessor = heightLimitView; this.sections = new LevelChunkSection[heightLimitView.getSectionsCount()]; diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index e518e8e417f2eee43ff0847c24b6858054e7c9a9..bcd0287d99eeba2b3534b4a298dc4b79b293ec58 100644 +index b7cb72023dc09a2a39400f457e25417acbd3a7c0..41dda06ac8d9adc263936bc417d35b62a8801565 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java @@ -25,6 +25,7 @@ import net.minecraft.nbt.CompoundTag; @@ -7243,7 +7250,7 @@ index e518e8e417f2eee43ff0847c24b6858054e7c9a9..bcd0287d99eeba2b3534b4a298dc4b79 @Override diff --git a/src/main/java/net/minecraft/world/level/chunk/ProtoChunk.java b/src/main/java/net/minecraft/world/level/chunk/ProtoChunk.java -index 9668a960dbd3b4ff3c0635df2fb7cc1af289d235..603111a52346f678aba0fd66b010d8f3026fce40 100644 +index cb4e43177a735442fa2adda8640263bca8cdcb64..92a64c49b1c7227a5b34488ea15d3d8adb0f9c80 100644 --- a/src/main/java/net/minecraft/world/level/chunk/ProtoChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/ProtoChunk.java @@ -74,6 +74,18 @@ public class ProtoChunk extends ChunkAccess { @@ -7266,7 +7273,7 @@ index 9668a960dbd3b4ff3c0635df2fb7cc1af289d235..603111a52346f678aba0fd66b010d8f3 public BlockState getBlockState(BlockPos pos) { int i = pos.getY(); diff --git a/src/main/java/net/minecraft/world/level/entity/PersistentEntitySectionManager.java b/src/main/java/net/minecraft/world/level/entity/PersistentEntitySectionManager.java -index dfd1afc57664dd18c11f8a2547616074ccc55690..21e1d86bd287c5e90db43c9c0247d6b7ee1425ae 100644 +index f66369ddaeab5c5ac643c0979dac3ed21337ff71..038abf2ac104ceecaab11b10d466ea69ec86623e 100644 --- a/src/main/java/net/minecraft/world/level/entity/PersistentEntitySectionManager.java +++ b/src/main/java/net/minecraft/world/level/entity/PersistentEntitySectionManager.java @@ -90,6 +90,18 @@ public class PersistentEntitySectionManager implements A diff --git a/patches/server/0014-Starlight.patch b/patches/server/0014-Starlight.patch index 85767b58f9..94568e6b0b 100644 --- a/patches/server/0014-Starlight.patch +++ b/patches/server/0014-Starlight.patch @@ -5,6 +5,10 @@ Subject: [PATCH] Starlight See https://github.com/PaperMC/Starlight +== AT == +public net.minecraft.server.level.ChunkHolder broadcast(Lnet/minecraft/network/protocol/Packet;Z)V +public net.minecraft.world.level.chunk.LevelChunkSection states + diff --git a/src/main/java/ca/spottedleaf/starlight/common/light/BlockStarLightEngine.java b/src/main/java/ca/spottedleaf/starlight/common/light/BlockStarLightEngine.java new file mode 100644 index 0000000000000000000000000000000000000000..4a04eb6449d33d3f15c354b2ac98198f4ac12758 @@ -4481,11 +4485,11 @@ index 74d1ae0104e8d0795df50f00317fd860de4f112e..a7feddc31da0870faa3d32a7108282e9 private final DebugBuffer chunkToSaveHistory; public int oldTicketLevel; diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 8f34cb94edc994732e86ce57d67e4581251e3e92..1fa6d7ba1c04f9f4773f9303cc220d75415a56fb 100644 +index 44f12777f115ca4d465bc603e1e23932e102efb2..4f8346d25187153ce9c9b61b897a65bd2ed62e65 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -128,7 +128,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider - public final LongSet entitiesInLevel; + private final LongSet entitiesInLevel; public final ServerLevel level; private final ThreadedLevelLightEngine lightEngine; - private final BlockableEventLoop mainThreadExecutor; diff --git a/patches/server/0016-Rewrite-chunk-system.patch b/patches/server/0016-Rewrite-chunk-system.patch index 2e9ba3c092..498079771b 100644 --- a/patches/server/0016-Rewrite-chunk-system.patch +++ b/patches/server/0016-Rewrite-chunk-system.patch @@ -3,6 +3,12 @@ From: Spottedleaf Date: Thu, 11 Mar 2021 02:32:30 -0800 Subject: [PATCH] Rewrite chunk system +== AT == +public net.minecraft.server.level.ChunkMap setViewDistance(I)V +public net.minecraft.server.level.ChunkHolder pos +public net.minecraft.server.level.ChunkMap overworldDataStorage +public-f net.minecraft.world.level.chunk.storage.RegionFileStorage +public net.minecraft.server.level.ChunkMap getPoiManager()Lnet/minecraft/world/entity/ai/village/poi/PoiManager; diff --git a/src/main/java/ca/spottedleaf/starlight/common/light/StarLightInterface.java b/src/main/java/ca/spottedleaf/starlight/common/light/StarLightInterface.java index 9a5fa60cb8156fe254a123e237d957ccb82f7195..0f7d36933e34e1d1b9dd27d8b0c35ff883818526 100644 @@ -11838,7 +11844,7 @@ index 0000000000000000000000000000000000000000..a6fb7ae77d7cad2243e28a33718e4631 + +} diff --git a/src/main/java/io/papermc/paper/util/MCUtil.java b/src/main/java/io/papermc/paper/util/MCUtil.java -index 9798a1010120125039cbf226a0e3679cc92f92c7..3a0e4934af1f1c711e55ed6f439241364b7448f4 100644 +index 9798a1010120125039cbf226a0e3679cc92f92c7..cf3e083c2ada3275a52c303de16a62576696e83f 100644 --- a/src/main/java/io/papermc/paper/util/MCUtil.java +++ b/src/main/java/io/papermc/paper/util/MCUtil.java @@ -1,16 +1,29 @@ @@ -11939,7 +11945,7 @@ index 9798a1010120125039cbf226a0e3679cc92f92c7..3a0e4934af1f1c711e55ed6f43924136 + JsonObject worldData = new JsonObject(); + + ServerLevel world = ((org.bukkit.craftbukkit.CraftWorld)bukkitWorld).getHandle(); -+ List players = world.players; ++ List players = world.players(); + + worldData.addProperty("is-loaded", loadedWorlds.contains(bukkitWorld)); + worldData.addProperty("name", world.getWorld().getName()); @@ -13526,7 +13532,7 @@ index a7feddc31da0870faa3d32a7108282e9e9143180..2ba3bb4e5670ece798a8882801a856d8 // Paper end } diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 1fa6d7ba1c04f9f4773f9303cc220d75415a56fb..82f5316ee44edd64f23178edc9b47f3be8dc39ca 100644 +index 4f8346d25187153ce9c9b61b897a65bd2ed62e65..f69a4df520760fe9e849eb61512f410b82d7a034 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -122,10 +122,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @@ -13536,7 +13542,7 @@ index 1fa6d7ba1c04f9f4773f9303cc220d75415a56fb..82f5316ee44edd64f23178edc9b47f3b - public final Long2ObjectLinkedOpenHashMap updatingChunkMap = new Long2ObjectLinkedOpenHashMap(); - public volatile Long2ObjectLinkedOpenHashMap visibleChunkMap; - private final Long2ObjectLinkedOpenHashMap pendingUnloads; -- public final LongSet entitiesInLevel; +- private final LongSet entitiesInLevel; + // Paper - rewrite chunk system public final ServerLevel level; private final ThreadedLevelLightEngine lightEngine; @@ -13550,7 +13556,7 @@ index 1fa6d7ba1c04f9f4773f9303cc220d75415a56fb..82f5316ee44edd64f23178edc9b47f3b private boolean modified; - private final ChunkTaskPriorityQueueSorter queueSorter; - private final ProcessorHandle> worldgenMailbox; -- public final ProcessorHandle> mainThreadMailbox; +- private final ProcessorHandle> mainThreadMailbox; + // Paper - rewrite chunk system public final ChunkProgressListener progressListener; private final ChunkStatusUpdateListener chunkStatusListener; @@ -13658,7 +13664,7 @@ index 1fa6d7ba1c04f9f4773f9303cc220d75415a56fb..82f5316ee44edd64f23178edc9b47f3b @@ -327,20 +302,22 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @Nullable - public ChunkHolder getUpdatingChunkIfPresent(long pos) { + protected ChunkHolder getUpdatingChunkIfPresent(long pos) { - return (ChunkHolder) this.updatingChunkMap.get(pos); + // Paper start - rewrite chunk system + io.papermc.paper.chunk.system.scheduling.NewChunkHolder holder = this.level.chunkTaskScheduler.chunkHolderManager.getChunkHolder(pos); @@ -15007,7 +15013,7 @@ index d38ad1b1eee92a6dbd2b79b4fcdb8959cdb4007d..ffa1e457decf8502c3283352bf5be94d + */ // Paper - rewrite chunk system } diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 203bca8839a9c1c0fd8171d3a17d0a55086f20a1..39d96933e2d922e377df866367057f1991471c8d 100644 +index 0bf02ffba51e0dda6d01972c3f8c834c42d72512..e63c655a9c65f0408c3d025ee4619a7923685b3c 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java @@ -366,7 +366,7 @@ public class ServerChunkCache extends ChunkSource { @@ -15221,7 +15227,7 @@ index 203bca8839a9c1c0fd8171d3a17d0a55086f20a1..39d96933e2d922e377df866367057f19 @@ -587,15 +603,7 @@ public class ServerChunkCache extends ChunkSource { } - public boolean runDistanceManagerUpdates() { + boolean runDistanceManagerUpdates() { - boolean flag = this.distanceManager.runAllUpdates(this.chunkMap); - boolean flag1 = this.chunkMap.promoteChunkMap(); - @@ -15321,7 +15327,7 @@ index 203bca8839a9c1c0fd8171d3a17d0a55086f20a1..39d96933e2d922e377df866367057f19 } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index b24b68aad942401815548fa49b968a7bf1f7939d..c5cc5e2c235b46f15d120b6aa5f71410d535a486 100644 +index 3049d732ce3df71a4755ee9160d4f3fae052d1b6..0d49f73d779b9e44c20ba923d5390acdb4bc81d4 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -190,7 +190,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -15824,14 +15830,14 @@ index 275b7f7dd36a2073a3eb9f89f4c832839e5aa9af..660693c6dc0ef86f4013df980b6d0c11 public void setTaskPerBatch(int taskBatchSize) { diff --git a/src/main/java/net/minecraft/server/level/Ticket.java b/src/main/java/net/minecraft/server/level/Ticket.java -index ffc43e5d3d0563c9e9c171064511b2c65ddf67e1..768a2667f950a635a562fa8a0c75b31a3ae9190e 100644 +index b346fa94b23d81da7da073f71dd12e672e0f079c..768a2667f950a635a562fa8a0c75b31a3ae9190e 100644 --- a/src/main/java/net/minecraft/server/level/Ticket.java +++ b/src/main/java/net/minecraft/server/level/Ticket.java @@ -6,9 +6,12 @@ public final class Ticket implements Comparable> { private final TicketType type; private final int ticketLevel; public final T key; -- public long createdTick; +- private long createdTick; + // Paper start - rewrite chunk system + public final long removalTick; @@ -15918,7 +15924,7 @@ index 32d6e4b194c3c4eca7009059f8d185896b5ae556..51d3150e732f95be13f5f54d994dab1f + // Paper end } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 50f95d25d95dd4fd57c42d026919061ebdf4bb55..651424daeaf8305810fb36c5fe6cfcbc62a86ff6 100644 +index 2f2d92bfda1713c7454e73cb2d2e77f69184a2d4..1742efe86fe2017e58513f9a63e4b63579327f04 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -784,6 +784,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @@ -17510,7 +17516,7 @@ index 8ba1c073387fa21a20bd42a873ec3cc314eae64e..45cec71b3b2f9444d7be7e5bf9fab166 while (objectiterator.hasNext()) { diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/SectionStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/SectionStorage.java -index a0b61647e5a7e5989aed52522bc9a43bc487421c..27f766fc72d779cff1b5a88a79961aa7ef91b11f 100644 +index 5631345dee84001be1053fbf92def683be7a97f5..c396076bfb1d41cc0f8248d6f3aa4fc3f7d1c998 100644 --- a/src/main/java/net/minecraft/world/level/chunk/storage/SectionStorage.java +++ b/src/main/java/net/minecraft/world/level/chunk/storage/SectionStorage.java @@ -34,27 +34,28 @@ import net.minecraft.world.level.ChunkPos; @@ -17524,7 +17530,7 @@ index a0b61647e5a7e5989aed52522bc9a43bc487421c..27f766fc72d779cff1b5a88a79961aa7 - private final IOWorker worker; + // Paper - remove mojang I/O thread private final Long2ObjectMap> storage = new Long2ObjectOpenHashMap<>(); - public final LongLinkedOpenHashSet dirty = new LongLinkedOpenHashSet(); + private final LongLinkedOpenHashSet dirty = new LongLinkedOpenHashSet(); private final Function> codec; private final Function factory; private final DataFixer fixerUpper; @@ -18079,7 +18085,7 @@ index d5e6123622f6bbc4c3b8b91be7f9ba8e5c1c22d8..6708c2c88251f4e5f623cd785c14b2d3 return this.getHandle().getGameProfile(); } diff --git a/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java b/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java -index 19b938f9b86552034c2a0e4af40e342a17f56504..382879562a808290cc4dd59dcd5022c6c22fb169 100644 +index f1a7f306fa6091462e984e2e3c77604db6434028..23b1725679d195380a902a3b03c6b6ad3aaede19 100644 --- a/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java +++ b/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java @@ -256,7 +256,7 @@ public class CustomChunkGenerator extends InternalChunkGenerator { diff --git a/patches/server/0048-Add-PlayerInitialSpawnEvent.patch b/patches/server/0048-Add-PlayerInitialSpawnEvent.patch index 40ba8bc5da..e6d179d22c 100644 --- a/patches/server/0048-Add-PlayerInitialSpawnEvent.patch +++ b/patches/server/0048-Add-PlayerInitialSpawnEvent.patch @@ -8,8 +8,11 @@ For modifying a player's initial spawn location as they join the server This is a duplicate API from spigot, so use our duplicate subclass and improve setPosition to use raw +== AT == +public net.minecraft.world.entity.Entity setRot(FF)V + diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 3235d6f98794709a53208e20ef33f2164725be48..dfb53366a0b36b6a4cc43c66837f98fc372c6d2e 100644 +index e56635fe18e6264c8813834d3eb435ea6e4fffc9..1357b444cf2efbd7f6a1918709b9743d230f1fd5 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -223,7 +223,7 @@ public abstract class PlayerList { diff --git a/patches/server/0082-Add-PlayerUseUnknownEntityEvent.patch b/patches/server/0082-Add-PlayerUseUnknownEntityEvent.patch index fb434cc940..65c61e8d27 100644 --- a/patches/server/0082-Add-PlayerUseUnknownEntityEvent.patch +++ b/patches/server/0082-Add-PlayerUseUnknownEntityEvent.patch @@ -3,6 +3,8 @@ From: Jedediah Smith Date: Sat, 2 Apr 2016 05:09:16 -0400 Subject: [PATCH] Add PlayerUseUnknownEntityEvent +== AT == +public net.minecraft.network.protocol.game.ServerboundInteractPacket$ActionType diff --git a/src/main/java/net/minecraft/network/protocol/game/ServerboundInteractPacket.java b/src/main/java/net/minecraft/network/protocol/game/ServerboundInteractPacket.java index 8834ed411a7db86b4d2b88183a1315317107d719..c45b5ab6776f3ac79f856c3a6467c510e20db25a 100644 @@ -20,7 +22,7 @@ index 8834ed411a7db86b4d2b88183a1315317107d719..c45b5ab6776f3ac79f856c3a6467c510 static final ServerboundInteractPacket.Action ATTACK_ACTION = new ServerboundInteractPacket.Action() { @Override diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 9f0a5b950a022aa2a3d3d60837fdb9023f041a9b..b86f742c4a7500f0bb241d5c07a077aa1be1c7e5 100644 +index 2f8a25e95dac5f61b5cc592200dbf6d76c00f5cd..5189a74fd224e50b7a0ca8df91aa06a57e7f1c02 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2644,8 +2644,37 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic diff --git a/patches/server/0089-Configurable-RCON-IP-address.patch b/patches/server/0089-Configurable-RCON-IP-address.patch index fa6341c5b8..df8934d585 100644 --- a/patches/server/0089-Configurable-RCON-IP-address.patch +++ b/patches/server/0089-Configurable-RCON-IP-address.patch @@ -5,6 +5,9 @@ Subject: [PATCH] Configurable RCON IP address For servers with multiple IP's, ability to bind to a specific interface. +== AT == +public net.minecraft.server.dedicated.Settings getStringRaw(Ljava/lang/String;)Ljava/lang/String; + diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java index efa2dd7947f68aaec479d835f2b1e60d16254ae1..1e01277448a3cf2b2045b54b182166a66c822e20 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java diff --git a/patches/server/0094-LootTable-API-Replenishable-Lootables-Feature.patch b/patches/server/0094-LootTable-API-Replenishable-Lootables-Feature.patch index bea608329e..4e31eff9f9 100644 --- a/patches/server/0094-LootTable-API-Replenishable-Lootables-Feature.patch +++ b/patches/server/0094-LootTable-API-Replenishable-Lootables-Feature.patch @@ -10,6 +10,11 @@ can automatically replenish after a given time. This feature is good for long term worlds so that newer players do not suffer with "Every chest has been looted" +== AT == +public org.bukkit.craftbukkit.block.CraftBlockEntityState getTileEntity()Lnet/minecraft/world/level/block/entity/BlockEntity; +public org.bukkit.craftbukkit.block.CraftLootable setLootTable(Lorg/bukkit/loot/LootTable;J)V +public org.bukkit.craftbukkit.entity.CraftMinecartContainer setLootTable(Lorg/bukkit/loot/LootTable;J)V + diff --git a/src/main/java/com/destroystokyo/paper/loottable/PaperContainerEntityLootableInventory.java b/src/main/java/com/destroystokyo/paper/loottable/PaperContainerEntityLootableInventory.java new file mode 100644 index 0000000000000000000000000000000000000000..88e32ed64f90bfd277dac84ba4bd84f0d943f5f8 diff --git a/patches/server/0123-Firework-API-s.patch b/patches/server/0123-Firework-API-s.patch index ebac775a19..e34f57affe 100644 --- a/patches/server/0123-Firework-API-s.patch +++ b/patches/server/0123-Firework-API-s.patch @@ -3,6 +3,8 @@ From: Aikar Date: Wed, 28 Dec 2016 07:18:33 +0100 Subject: [PATCH] Firework API's +== AT == +public net.minecraft.world.entity.projectile.FireworkRocketEntity attachedToEntity diff --git a/src/main/java/net/minecraft/world/entity/projectile/FireworkRocketEntity.java b/src/main/java/net/minecraft/world/entity/projectile/FireworkRocketEntity.java index ba13507263d78d34eb8d3038c437229c0469d476..61252ef8a79bac0ea2d3d231ec6b12166f39d072 100644 diff --git a/patches/server/0133-Add-option-to-make-parrots-stay-on-shoulders-despite.patch b/patches/server/0133-Add-option-to-make-parrots-stay-on-shoulders-despite.patch index 05b0e00728..eeb2705be0 100644 --- a/patches/server/0133-Add-option-to-make-parrots-stay-on-shoulders-despite.patch +++ b/patches/server/0133-Add-option-to-make-parrots-stay-on-shoulders-despite.patch @@ -10,8 +10,11 @@ I suspect Mojang may switch to this behavior before full release. To be converted into a Paper-API event at some point in the future? +== AT == +public net.minecraft.world.entity.player.Player removeEntitiesOnShoulder()V + diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 9df3561fca35b1649de1545e924bd96ec5f80089..f8955429ec4cfe778de77a7db5fef624c20e4318 100644 +index 6282cebfa3786c9ac72fcebeee1b8c4cdf5d7238..5a8008b507b93768526184ddaca170bccb67f92a 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2464,6 +2464,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @@ -29,7 +32,7 @@ index 9df3561fca35b1649de1545e924bd96ec5f80089..f8955429ec4cfe778de77a7db5fef624 case RELEASE_SHIFT_KEY: this.player.setShiftKeyDown(false); diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 1e3ac1d2cb5adf4c0fa3b703f2ecdc32cd8ce240..07a8abb714a9dfd470ab0486c336e3b58ea927a1 100644 +index d0ba75522bcbc6d09e3cc562b27d8cbbe1d7d5ac..b66dda94eb89aa3180cb36d8657d9a786e3f72b8 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -588,7 +588,7 @@ public abstract class Player extends LivingEntity { diff --git a/patches/server/0142-Basic-PlayerProfile-API.patch b/patches/server/0142-Basic-PlayerProfile-API.patch index cd3cc22296..3d07dffe7d 100644 --- a/patches/server/0142-Basic-PlayerProfile-API.patch +++ b/patches/server/0142-Basic-PlayerProfile-API.patch @@ -5,6 +5,16 @@ Subject: [PATCH] Basic PlayerProfile API Establishes base extension of profile systems for future edits too +== AT == +public org.bukkit.craftbukkit.profile.CraftProfileProperty +public org.bukkit.craftbukkit.profile.CraftPlayerTextures +public org.bukkit.craftbukkit.profile.CraftPlayerTextures copyFrom(Lorg/bukkit/profile/PlayerTextures;)V +public org.bukkit.craftbukkit.profile.CraftPlayerTextures rebuildPropertyIfDirty()V +public org.bukkit.craftbukkit.profile.CraftPlayerProfile toString(Lcom/mojang/authlib/properties/PropertyMap;)Ljava/lang/String; +# needed to maintain visibility with overriden methods +public org.bukkit.craftbukkit.profile.CraftPlayerProfile getProperty(Ljava/lang/String;)Lcom/mojang/authlib/properties/Property; +public org.bukkit.craftbukkit.profile.CraftPlayerProfile setProperty(Ljava/lang/String;Lcom/mojang/authlib/properties/Property;)V + diff --git a/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java b/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java new file mode 100644 index 0000000000000000000000000000000000000000..3ff790cec1ad89caec4be64421dd7d51652be598 @@ -555,7 +565,7 @@ index 0000000000000000000000000000000000000000..7ac27392a8647ef7d0dc78efe78703e9 + @NotNull GameProfile buildGameProfile(); +} diff --git a/src/main/java/io/papermc/paper/util/MCUtil.java b/src/main/java/io/papermc/paper/util/MCUtil.java -index 3a0e4934af1f1c711e55ed6f439241364b7448f4..4c5ed3de410c740bcaca37d84b153af6a482bf89 100644 +index cf3e083c2ada3275a52c303de16a62576696e83f..b19850ae31f6c796cb3491dd5070d28e0ffd242c 100644 --- a/src/main/java/io/papermc/paper/util/MCUtil.java +++ b/src/main/java/io/papermc/paper/util/MCUtil.java @@ -1,5 +1,7 @@ @@ -681,7 +691,7 @@ index 75b9d496860d7f3a9d5f680cbdfe89860286522e..7013b11fc0cd5fbb5a7e62be45d84d54 // Paper end } diff --git a/src/main/java/org/bukkit/craftbukkit/profile/CraftPlayerProfile.java b/src/main/java/org/bukkit/craftbukkit/profile/CraftPlayerProfile.java -index 9edc5e73819e0b55372f77c5e292eece74d837c7..9001c9dc68dc05944eb839c3354bea29249daa92 100644 +index 3e40d47f504248cd7caeef6b841a8aa6f1976170..6ca6467a47c6658d3a2e2029821aa727599a6f74 100644 --- a/src/main/java/org/bukkit/craftbukkit/profile/CraftPlayerProfile.java +++ b/src/main/java/org/bukkit/craftbukkit/profile/CraftPlayerProfile.java @@ -27,7 +27,7 @@ import org.bukkit.profile.PlayerProfile; diff --git a/patches/server/0152-LivingEntity-setKiller.patch b/patches/server/0152-LivingEntity-setKiller.patch index f705351202..910efbf638 100644 --- a/patches/server/0152-LivingEntity-setKiller.patch +++ b/patches/server/0152-LivingEntity-setKiller.patch @@ -3,6 +3,8 @@ From: BillyGalbreath Date: Mon, 31 Jul 2017 01:49:48 -0500 Subject: [PATCH] LivingEntity#setKiller +== AT == +public net.minecraft.world.entity.LivingEntity lastHurtByPlayerTime diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java index 4f4ee7071183e7eef918741e38c2bc2e522c72df..a08fd99fb97d8c880c855e6af2a99afcfa8098b5 100644 diff --git a/patches/server/0170-Ability-to-apply-mending-to-XP-API.patch b/patches/server/0170-Ability-to-apply-mending-to-XP-API.patch index 01a9b6f752..53b9326bd8 100644 --- a/patches/server/0170-Ability-to-apply-mending-to-XP-API.patch +++ b/patches/server/0170-Ability-to-apply-mending-to-XP-API.patch @@ -9,6 +9,10 @@ of giving the player experience points. Both an API To standalone mend, and apply mending logic to .giveExp has been added. +== AT == +public net.minecraft.world.entity.ExperienceOrb durabilityToXp(I)I +public net.minecraft.world.entity.ExperienceOrb xpToDurability(I)I + diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java index 6dd5deecd404a3b9858e63da6837caf2d5d382f0..a08c03bb984d27ded2979353f207693fb79d4256 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java diff --git a/patches/server/0183-Player.setPlayerProfile-API.patch b/patches/server/0183-Player.setPlayerProfile-API.patch index d9f14b9857..cdbe80140a 100644 --- a/patches/server/0183-Player.setPlayerProfile-API.patch +++ b/patches/server/0183-Player.setPlayerProfile-API.patch @@ -5,6 +5,9 @@ Subject: [PATCH] Player.setPlayerProfile API This can be useful for changing name or skins after a player has logged in. +== AT == +public-f net.minecraft.world.entity.player.Player gameProfile + diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java index 4627d2a785120c6e69fc3c82054bf0703fe5477b..3a20c6e2214ad075e4cdd3fbdf0b59e1891b0f2b 100644 --- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java diff --git a/patches/server/0194-Block-Enderpearl-Travel-Exploit.patch b/patches/server/0194-Block-Enderpearl-Travel-Exploit.patch index 0500f9ccee..96e6dfad97 100644 --- a/patches/server/0194-Block-Enderpearl-Travel-Exploit.patch +++ b/patches/server/0194-Block-Enderpearl-Travel-Exploit.patch @@ -11,8 +11,12 @@ This disables that by not saving the thrower when the chunk is unloaded. This is mainly useful for survival servers that do not allow freeform teleporting. +== AT == +public net.minecraft.world.entity.projectile.Projectile cachedOwner +public net.minecraft.world.entity.projectile.Projectile ownerUUID + diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 4d96a196511621d56507cfb35923bd5270f83716..cc0ff0df8c41cd379ed7536c3e5051f64c7cd3a8 100644 +index ec2d94e7b34b4384c5c37265869e6ddb15d6e6eb..abfbbab15c83bd09e62525442aea1a2ef2d2a085 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -2199,6 +2199,12 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -29,7 +33,7 @@ index 4d96a196511621d56507cfb35923bd5270f83716..cc0ff0df8c41cd379ed7536c3e5051f6 public void onTrackingStart(Entity entity) { diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -index cf8498165065c7db1be9cf7de492c1a41817cbf1..f550686d1ae45a9ecb406e999d02dba0cf022c58 100644 +index eb53bb7d5cf1b8f210bdc137d0f402cb2e6183ae..920825af18be4719d2057f164016cae95e22847b 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java @@ -88,6 +88,7 @@ public abstract class Projectile extends Entity { diff --git a/patches/server/0209-Improve-EntityShootBowEvent.patch b/patches/server/0209-Improve-EntityShootBowEvent.patch index 80a633b156..32ba3a6420 100644 --- a/patches/server/0209-Improve-EntityShootBowEvent.patch +++ b/patches/server/0209-Improve-EntityShootBowEvent.patch @@ -3,7 +3,10 @@ From: Aikar Date: Sat, 15 Jun 2013 19:51:17 -0400 Subject: [PATCH] Improve EntityShootBowEvent -Adds missing call to Illagers and also adds Arrow ItemStack to skeltons +Adds missing call to Illagers and also adds Arrow ItemStack to skeletons + +== AT == +public net.minecraft.world.entity.projectile.AbstractArrow getPickupItem()Lnet.minecraft.world.item.ItemStack; diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java index 3799834a1531cd7575ca5d8ea9f3429175b8384d..60064770f08cbee19eeb43bf7c144b6eefbc4888 100644 diff --git a/patches/server/0232-Implement-Expanded-ArmorStand-API.patch b/patches/server/0232-Implement-Expanded-ArmorStand-API.patch index ace889510d..647c8e3e0e 100644 --- a/patches/server/0232-Implement-Expanded-ArmorStand-API.patch +++ b/patches/server/0232-Implement-Expanded-ArmorStand-API.patch @@ -7,6 +7,9 @@ Add the following: - Add proper methods for getting and setting items in both hands. Deprecates old methods - Enable/Disable slot interactions +== AT == +public net.minecraft.world.entity.decoration.ArmorStand isDisabled(Lnet/minecraft/world/entity/EquipmentSlot;)Z + diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java index 82b9ee993b0d2e7e0685231f7bad2b85756ec959..f4065938bbfd04519d1363ee8781c316aca468ab 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java diff --git a/patches/server/0255-Improve-death-events.patch b/patches/server/0255-Improve-death-events.patch index ac2145d58d..c39412941c 100644 --- a/patches/server/0255-Improve-death-events.patch +++ b/patches/server/0255-Improve-death-events.patch @@ -18,8 +18,12 @@ TODO 1.17: this needs to be checked (actually get off your lazy ass and cancel t maybe more (please check patch overrides for drops for more): - players, armor stands, foxes, chested donkeys/llamas +== AT == +public net.minecraft.world.entity.LivingEntity getDeathSound()Lnet/minecraft/sounds/SoundEvent; +public net.minecraft.world.entity.LivingEntity getSoundVolume()F + diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 1a3f9d09df6b6d8c6a84f7f62e142f341d74c6c1..645012ea3590a46773e2bb14e9cafd9e3c695fd4 100644 +index bc0c4c2284d08ca88d4664bb39c744b36a607dcd..6fa11d19b0a9858448fb22624c1d1a2fb228a3b4 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -230,6 +230,10 @@ public class ServerPlayer extends Player { @@ -220,7 +224,7 @@ index 28a49c15c078b7afe1d3c9693c548f6a7b1d2f0a..1189ddcab5011d34a66356cde561fe7e // CraftBukkit start public int getExpReward() { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 8fdba296673def1e8f69d48c35b07e355a74c9a3..7b3ce253e76cf411768af4961abd148f242f4bb4 100644 +index 5a5edb8c9aab363e326f02e804e4877ff7836dd1..67f0c29d75ffbd8b234ce9b9c8e297ef6a15840c 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -1018,7 +1018,13 @@ public abstract class Mob extends LivingEntity { diff --git a/patches/server/0257-Mob-Pathfinding-API.patch b/patches/server/0257-Mob-Pathfinding-API.patch index 517909c69b..0b246afe7a 100644 --- a/patches/server/0257-Mob-Pathfinding-API.patch +++ b/patches/server/0257-Mob-Pathfinding-API.patch @@ -5,6 +5,11 @@ Subject: [PATCH] Mob Pathfinding API Implements Pathfinding API for mobs +== AT == +public net.minecraft.world.entity.ai.navigation.PathNavigation pathFinder +public net.minecraft.world.level.pathfinder.PathFinder nodeEvaluator +public net.minecraft.world.level.pathfinder.Path nodes + diff --git a/src/main/java/com/destroystokyo/paper/entity/PaperPathfinder.java b/src/main/java/com/destroystokyo/paper/entity/PaperPathfinder.java new file mode 100644 index 0000000000000000000000000000000000000000..2d799fec40afe7dade649a294761d272c83157f0 diff --git a/patches/server/0269-Add-sun-related-API.patch b/patches/server/0269-Add-sun-related-API.patch index 1d2375d79d..50417ae96e 100644 --- a/patches/server/0269-Add-sun-related-API.patch +++ b/patches/server/0269-Add-sun-related-API.patch @@ -3,9 +3,11 @@ From: BillyGalbreath Date: Sun, 7 Oct 2018 00:54:21 -0500 Subject: [PATCH] Add sun related API +== AT == +public net.minecraft.world.entity.Mob isSunBurnTick()Z diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index b067ac26973ac487cc3386ecda2bfd8def2d8bbf..0ca653a0b0059116eaa943207bf04b5bfbe77e8f 100644 +index 92f6f332cc11ec4b7a10ff61b5a034ab80854940..ec3ea01033e2c6f2904d4f0a4b0e08bd12b713f7 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -679,6 +679,13 @@ public class CraftWorld extends CraftRegionAccessor implements World { diff --git a/patches/server/0270-Turtle-API.patch b/patches/server/0270-Turtle-API.patch index 9b44db2ee4..bf750a83cb 100644 --- a/patches/server/0270-Turtle-API.patch +++ b/patches/server/0270-Turtle-API.patch @@ -3,6 +3,13 @@ From: BillyGalbreath Date: Sat, 29 Sep 2018 16:08:23 -0500 Subject: [PATCH] Turtle API +== AT == +public net.minecraft.world.entity.animal.Turtle getHomePos()Lnet/minecraft/core/BlockPos; +public net.minecraft.world.entity.animal.Turtle setHasEgg(Z)V +public net.minecraft.world.entity.animal.Turtle isGoingHome()Z +public net.minecraft.world.entity.animal.Turtle setGoingHome(Z)V +public net.minecraft.world.entity.animal.Turtle isTravelling()Z +public net.minecraft.world.entity.animal.Turtle setTravelling(Z)V diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java index e3983370c09e3e3445c4557fcca50dd25f29cba0..6efba52c2e5d7811ee329ed22c1c76f75d7ddbe1 100644 diff --git a/patches/server/0273-Add-more-Witch-API.patch b/patches/server/0273-Add-more-Witch-API.patch index 4fdcae61a9..2eba0c4889 100644 --- a/patches/server/0273-Add-more-Witch-API.patch +++ b/patches/server/0273-Add-more-Witch-API.patch @@ -3,6 +3,8 @@ From: BillyGalbreath Date: Fri, 12 Oct 2018 14:10:46 -0500 Subject: [PATCH] Add more Witch API +== AT == +public net.minecraft.world.entity.monster.Witch usingTime diff --git a/src/main/java/net/minecraft/world/entity/monster/Witch.java b/src/main/java/net/minecraft/world/entity/monster/Witch.java index 1ee8fec8f9f581fa68497ebf4f90aad9d425ec71..b7bc64818387288955d0723cd071d4203bd2f121 100644 diff --git a/patches/server/0278-Improve-Server-Thread-Pool-and-Thread-Priorities.patch b/patches/server/0278-Improve-Server-Thread-Pool-and-Thread-Priorities.patch index 6534fddcb2..84393327d5 100644 --- a/patches/server/0278-Improve-Server-Thread-Pool-and-Thread-Priorities.patch +++ b/patches/server/0278-Improve-Server-Thread-Pool-and-Thread-Priorities.patch @@ -11,6 +11,9 @@ server threads Allow usage of a single thread executor by not using ForkJoin so single core CPU's. +== AT == +public net.minecraft.Util onThreadException(Ljava/lang/Thread;Ljava/lang/Throwable;)V + diff --git a/src/main/java/io/papermc/paper/util/ServerWorkerThread.java b/src/main/java/io/papermc/paper/util/ServerWorkerThread.java new file mode 100644 index 0000000000000000000000000000000000000000..b60f59cf5cc8eb84a6055b7861857dece7f2501b diff --git a/patches/server/0280-Restore-custom-InventoryHolder-support.patch b/patches/server/0280-Restore-custom-InventoryHolder-support.patch index e016b674a1..8fd7137855 100644 --- a/patches/server/0280-Restore-custom-InventoryHolder-support.patch +++ b/patches/server/0280-Restore-custom-InventoryHolder-support.patch @@ -3,12 +3,16 @@ From: Jake Potrebic Date: Mon, 5 Nov 2018 04:23:51 +0000 Subject: [PATCH] Restore custom InventoryHolder support -Co-authored-by: Shane Freeder - Upstream removed the ability to consistently use a custom InventoryHolder, However, the implementation does not use an InventoryHolder in any form outside of custom inventories. +== AT == +public-f net.minecraft.world.inventory.AbstractContainerMenu dataSlots +public-f net.minecraft.world.inventory.AbstractContainerMenu remoteDataSlots + +Co-authored-by: Shane Freeder + diff --git a/src/main/java/io/papermc/paper/inventory/PaperInventoryCustomHolderContainer.java b/src/main/java/io/papermc/paper/inventory/PaperInventoryCustomHolderContainer.java new file mode 100644 index 0000000000000000000000000000000000000000..224d4b2cc45b0d02230a76caee9c88573a448b4c diff --git a/patches/server/0288-Add-more-Zombie-API.patch b/patches/server/0288-Add-more-Zombie-API.patch index d4683e84c2..d38fe5bc58 100644 --- a/patches/server/0288-Add-more-Zombie-API.patch +++ b/patches/server/0288-Add-more-Zombie-API.patch @@ -3,9 +3,11 @@ From: BillyGalbreath Date: Sun, 7 Oct 2018 04:29:59 -0500 Subject: [PATCH] Add more Zombie API +== AT == +public net.minecraft.world.entity.monster.Zombie isSunSensitive()Z diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 1b48576beca178af14bfab297bd427b5f5bdaf42..1ff02c66fcc291b6ccc456673ad4c6c09d47d69e 100644 +index d3ca0706e8dc3160d2100d23788dd3d501b29215..a8caf1a776deea8684d37406af11ab72c114b07d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -94,6 +94,7 @@ public class Zombie extends Monster { diff --git a/patches/server/0290-Add-PlayerConnectionCloseEvent.patch b/patches/server/0290-Add-PlayerConnectionCloseEvent.patch index b94a1f7b8c..131d6663d3 100644 --- a/patches/server/0290-Add-PlayerConnectionCloseEvent.patch +++ b/patches/server/0290-Add-PlayerConnectionCloseEvent.patch @@ -33,6 +33,11 @@ API spec for this event. Plugins should not be using that event, and how PlayerPreLoginEvent interacts with PlayerConnectionCloseEvent is undefined. +== AT == +public net.minecraft.server.network.ServerLoginPacketListenerImpl$State +public net.minecraft.server.network.ServerLoginPacketListenerImpl state +public net.minecraft.server.network.ServerLoginPacketListenerImpl gameProfile + diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java index 0e739c0c54eaad5ab8dddcd8294c9ccaa3697fbf..8b1c39cc7f77ca36d0341fb68de1441cc61f19e4 100644 --- a/src/main/java/net/minecraft/network/Connection.java diff --git a/patches/server/0310-PlayerDeathEvent-getItemsToKeep.patch b/patches/server/0310-PlayerDeathEvent-getItemsToKeep.patch index 9f5f2c75f1..fd0bc56beb 100644 --- a/patches/server/0310-PlayerDeathEvent-getItemsToKeep.patch +++ b/patches/server/0310-PlayerDeathEvent-getItemsToKeep.patch @@ -7,8 +7,11 @@ Exposes a mutable array on items a player should keep on death Example Usage: https://gist.github.com/aikar/5bb202de6057a051a950ce1f29feb0b4 +== AT == +public net.minecraft.world.entity.player.Inventory compartments + diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index f45e8b4a536d0cef9b295083f95a556b87fcd2fc..e56a6bdcc62f7d82447440ad20e72678a2d6852e 100644 +index f6b28eece6dc4f8d1b483ed2bfb6c9504d625bc8..7609ab90b8c870876bbaf927df635e2579abbdb7 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -776,6 +776,46 @@ public class ServerPlayer extends Player { diff --git a/patches/server/0313-Mob-Spawner-API-Enhancements.patch b/patches/server/0313-Mob-Spawner-API-Enhancements.patch index fe6110a98f..047eae4251 100644 --- a/patches/server/0313-Mob-Spawner-API-Enhancements.patch +++ b/patches/server/0313-Mob-Spawner-API-Enhancements.patch @@ -3,9 +3,12 @@ From: William Blake Galbreath Date: Fri, 19 Apr 2019 12:41:13 -0500 Subject: [PATCH] Mob Spawner API Enhancements +== AT == +public net.minecraft.world.level.BaseSpawner isNearPlayer(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;)Z +public net.minecraft.world.level.BaseSpawner delay(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;)V diff --git a/src/main/java/net/minecraft/world/level/BaseSpawner.java b/src/main/java/net/minecraft/world/level/BaseSpawner.java -index c24c6fb1badf7d2764ef6cd76c0368297af84afc..763b4049060b294345ef8a796c0f5b52575d644c 100644 +index 67046bad0cfcc8c12bc17edb35b527fc987dddf7..2e28bbd75c689ab5a004f0a2de4a89cde7a807ec 100644 --- a/src/main/java/net/minecraft/world/level/BaseSpawner.java +++ b/src/main/java/net/minecraft/world/level/BaseSpawner.java @@ -235,7 +235,13 @@ public abstract class BaseSpawner { diff --git a/patches/server/0329-Flat-bedrock-generator-settings.patch b/patches/server/0329-Flat-bedrock-generator-settings.patch index 6a5726da0c..ea7148d934 100644 --- a/patches/server/0329-Flat-bedrock-generator-settings.patch +++ b/patches/server/0329-Flat-bedrock-generator-settings.patch @@ -3,6 +3,20 @@ From: Byteflux Date: Wed, 2 Mar 2016 02:17:54 -0600 Subject: [PATCH] Flat bedrock generator settings +== AT == +public net.minecraft.world.level.levelgen.SurfaceRules$Condition +public net.minecraft.world.level.levelgen.SurfaceRules$Context +public net.minecraft.world.level.levelgen.SurfaceRules$Context blockX +public net.minecraft.world.level.levelgen.SurfaceRules$Context blockY +public net.minecraft.world.level.levelgen.SurfaceRules$Context blockZ +public net.minecraft.world.level.levelgen.SurfaceRules$Context context +public net.minecraft.world.level.levelgen.SurfaceRules$Context randomState +public net.minecraft.world.level.levelgen.SurfaceRules$LazyYCondition +public net.minecraft.world.level.levelgen.SurfaceRules$LazyCondition +public net.minecraft.world.level.levelgen.SurfaceRules$VerticalGradientConditionSource +public net.minecraft.world.level.levelgen.SurfaceRules$SurfaceRule +public net.minecraft.world.level.levelgen.SurfaceSystem getOrCreateRandomFactory(Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/world/level/levelgen/PositionalRandomFactory; + Co-authored-by: Noah van der Aa diff --git a/src/main/java/net/minecraft/data/worldgen/SurfaceRuleData.java b/src/main/java/net/minecraft/data/worldgen/SurfaceRuleData.java diff --git a/patches/server/0344-Entity-Activation-Range-2.0.patch b/patches/server/0344-Entity-Activation-Range-2.0.patch index 3ac08fb573..7ec24e84b9 100644 --- a/patches/server/0344-Entity-Activation-Range-2.0.patch +++ b/patches/server/0344-Entity-Activation-Range-2.0.patch @@ -13,8 +13,12 @@ Adds water Mobs to activation range config and nerfs fish Adds flying monsters to control ghast and phantoms Adds villagers as separate config +== AT == +public net.minecraft.world.entity.Entity isInsidePortal +public net.minecraft.world.entity.LivingEntity jumping + diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 878123befd7580082cf85222fa3a331baf41156c..1433ece7d85de61271ec619b68e09ecfd46b3f24 100644 +index c2fe17a2bd52a7235614e59ce4a521f4ce786049..e35f32f67e88eaef0ba01e884b1a61f63e80aeb4 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -2,7 +2,6 @@ package net.minecraft.server.level; @@ -144,7 +148,7 @@ index d83fc656e70612bbfa93f5ef2cc1161103915004..c453a7df75d4486bf0123bc4932c441a movement = this.maybeBackOffFromEdge(movement, movementType); Vec3 vec3d1 = this.collide(movement); diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 7b3ce253e76cf411768af4961abd148f242f4bb4..2ae973d77d0b088cf7dc7a2338b8b7461e585dca 100644 +index 836f42126eca9bc2c8e41940ecac18a0e0123818..b9db51b07ba3b867d80a48e5106c2b38ea0b72ee 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -210,6 +210,19 @@ public abstract class Mob extends LivingEntity { @@ -180,7 +184,7 @@ index 2df5b50be11297941d13ec9d17001f488af11750..3db309e709cd72e3aae184ff2f8b1a7b public float getWalkTargetValue(BlockPos pos) { return this.getWalkTargetValue(pos, this.level); diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java -index 3e981fbf81f21b40652f7a05d4a7a37065db4b00..19ee04dd92b39a775260f832ca8880335d24988b 100644 +index fa792958b852f70b32f011817aa0b8dd812355a5..5f2d4f63e3371de7bee64c58c6e7b810403134b5 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java @@ -32,6 +32,7 @@ public class GoalSelector { @@ -358,7 +362,7 @@ index 7ba3e9a2f974cd469d256dbfbdbfcb05b644c1ba..46f8bf8a0f97c83824248c0d39681430 public final org.spigotmc.SpigotWorldConfig spigotConfig; // Spigot // Paper start diff --git a/src/main/java/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java b/src/main/java/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java -index 4b55b667eebfe50dfeda89015112e275e71b9777..dda0b32a4989bbead35a2219a969a30ba0e975b0 100644 +index e4fbd8701fc93ea89efc580d519359f554bf6468..1bcaed2abd1118804a362d6852e4a29d3064aa14 100644 --- a/src/main/java/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java @@ -140,6 +140,10 @@ public class PistonMovingBlockEntity extends BlockEntity { @@ -373,7 +377,7 @@ index 4b55b667eebfe50dfeda89015112e275e71b9777..dda0b32a4989bbead35a2219a969a30b } } diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index 2861c585710eaa00541ff417a29f1f6a2fb5b46a..b1ed97618d08d7691d24f89e9e9b0ed0f2bddd09 100644 +index 2861c585710eaa00541ff417a29f1f6a2fb5b46a..417296e8d2efb2b70809ff91b61451bd8e788df3 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -1,39 +1,52 @@ @@ -705,7 +709,7 @@ index 2861c585710eaa00541ff417a29f1f6a2fb5b46a..b1ed97618d08d7691d24f89e9e9b0ed0 + return true; + } + // immunize leashed entities -+ if (entity instanceof Mob && ((Mob)entity).leashHolder instanceof Player) { ++ if (entity instanceof Mob && ((Mob)entity).getLeashHolder() instanceof Player) { + return true; + } + // Paper end diff --git a/patches/server/0375-Don-t-move-existing-players-to-world-spawn.patch b/patches/server/0375-Don-t-move-existing-players-to-world-spawn.patch index 6a21b5ead6..a74a4163a7 100644 --- a/patches/server/0375-Don-t-move-existing-players-to-world-spawn.patch +++ b/patches/server/0375-Don-t-move-existing-players-to-world-spawn.patch @@ -9,8 +9,11 @@ larger than the keep loaded range. By skipping this, we avoid potential for a large spike on server start. +== AT == +public net.minecraft.server.level.ServerPlayer fudgeSpawnLocation(Lnet/minecraft/server/level/ServerLevel;)V + diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 8e4dff97dba9f8e1395113bed8f91b0cbb70b354..eb0e5c43b995e778d28ecfad813ca3882cabe0fa 100644 +index 1a34d1b75698960cd48f2632cafdca5f52e10d49..84bcabdd92cefe16f7bf5270e1d2989dd7d010d7 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -323,7 +323,7 @@ public class ServerPlayer extends Player { diff --git a/patches/server/0376-Optimize-GoalSelector-Goal.Flag-Set-operations.patch b/patches/server/0376-Optimize-GoalSelector-Goal.Flag-Set-operations.patch index 1e856d6671..fc6f22c473 100644 --- a/patches/server/0376-Optimize-GoalSelector-Goal.Flag-Set-operations.patch +++ b/patches/server/0376-Optimize-GoalSelector-Goal.Flag-Set-operations.patch @@ -47,12 +47,12 @@ index 6667ecc4b7eded4e20a415cef1e1b1179e6710b8..4379b9948f1eecfe6fd7dea98e298ad5 protected int adjustedTickDelay(int ticks) { diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java -index 19ee04dd92b39a775260f832ca8880335d24988b..a910189177da0c1134c954b3d81b9e9bc4bc1420 100644 +index 5f2d4f63e3371de7bee64c58c6e7b810403134b5..1805aacd982dae8d971cfad0ead23c161badb095 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java @@ -29,10 +29,12 @@ public class GoalSelector { private final Map lockedFlags = new EnumMap<>(Goal.Flag.class); - public final Set availableGoals = Sets.newLinkedHashSet(); + private final Set availableGoals = Sets.newLinkedHashSet(); private final Supplier profiler; - private final EnumSet disabledFlags = EnumSet.noneOf(Goal.Flag.class); + private final EnumSet disabledFlags = EnumSet.noneOf(Goal.Flag.class); // Paper unused, but dummy to prevent plugins from crashing as hard. Theyll need to support paper in a special case if this is super important, but really doesn't seem like it would be. diff --git a/patches/server/0383-Implement-Player-Client-Options-API.patch b/patches/server/0383-Implement-Player-Client-Options-API.patch index d51db1b260..5bdae6f55a 100644 --- a/patches/server/0383-Implement-Player-Client-Options-API.patch +++ b/patches/server/0383-Implement-Player-Client-Options-API.patch @@ -3,6 +3,8 @@ From: MiniDigger Date: Mon, 20 Jan 2020 21:38:15 +0100 Subject: [PATCH] Implement Player Client Options API +== AT == +public net.minecraft.world.entity.player.Player DATA_PLAYER_MODE_CUSTOMISATION diff --git a/src/main/java/com/destroystokyo/paper/PaperSkinParts.java b/src/main/java/com/destroystokyo/paper/PaperSkinParts.java new file mode 100644 diff --git a/patches/server/0385-Fix-Longstanding-Broken-behavior-of-PlayerJoinEvent.patch b/patches/server/0385-Fix-Longstanding-Broken-behavior-of-PlayerJoinEvent.patch index 894be0b652..870ed9cafb 100644 --- a/patches/server/0385-Fix-Longstanding-Broken-behavior-of-PlayerJoinEvent.patch +++ b/patches/server/0385-Fix-Longstanding-Broken-behavior-of-PlayerJoinEvent.patch @@ -27,8 +27,11 @@ This was very non deterministic. This change will ensure every plugin receives a deterministic result, and should no longer require 1 tick delays anymore. +== AT == +public net.minecraft.server.level.ChunkMap addEntity(Lnet/minecraft/world/entity/Entity;)V + diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 160147561c03f18d955467ba48e4e368d26c2ca5..4488d8719be0d685ef99e7903adc0889552d8185 100644 +index 80009022bc7b9d3414b2af3a3b21192def243405..7e11a85cb826deedcf9aa22b849ced2c1240e64a 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -1024,6 +1024,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @@ -40,7 +43,7 @@ index 160147561c03f18d955467ba48e4e368d26c2ca5..4488d8719be0d685ef99e7903adc0889 if (!(entity instanceof EnderDragonPart)) { EntityType entitytypes = entity.getType(); diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index a25be75e636fa1bac4890da3fa9db9267382c46d..b886e52e7b316df6415cdaee75242a829e491dd4 100644 +index fd2bc49f713cccdcb2a3e49db52f56374690c5de..8660fc4bc748131d9bc3088afb5bb9af073300f8 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -254,6 +254,7 @@ public class ServerPlayer extends Player { diff --git a/patches/server/0392-Villager-Restocks-API.patch b/patches/server/0392-Villager-Restocks-API.patch index d4af2305a8..0808988af9 100644 --- a/patches/server/0392-Villager-Restocks-API.patch +++ b/patches/server/0392-Villager-Restocks-API.patch @@ -3,6 +3,8 @@ From: zbk Date: Sun, 26 Apr 2020 23:49:01 -0400 Subject: [PATCH] Villager Restocks API +== AT == +public net.minecraft.world.entity.npc.Villager numberOfRestocksToday diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java index 1400f8c0cac3d653465b3750078de4d2691ac2a1..1a8a49bd269ed52879866ff3853e131d04aa8bba 100644 diff --git a/patches/server/0400-Implement-Mob-Goal-API.patch b/patches/server/0400-Implement-Mob-Goal-API.patch index 3c03234e3d..e8c80476f1 100644 --- a/patches/server/0400-Implement-Mob-Goal-API.patch +++ b/patches/server/0400-Implement-Mob-Goal-API.patch @@ -454,7 +454,7 @@ index 0000000000000000000000000000000000000000..26c745dd9ccdfdd5c5039f2acc5201b9 +} diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/PaperMobGoals.java b/src/main/java/com/destroystokyo/paper/entity/ai/PaperMobGoals.java new file mode 100644 -index 0000000000000000000000000000000000000000..336cc3c3b43bacf4f3661fa0bb0736b273f65418 +index 0000000000000000000000000000000000000000..5e7b4a8698a00f72d6e817cc7c6716e7605a3484 --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/entity/ai/PaperMobGoals.java @@ -0,0 +1,213 @@ @@ -488,7 +488,7 @@ index 0000000000000000000000000000000000000000..336cc3c3b43bacf4f3661fa0bb0736b2 + getHandle(craftMob, goal.getTypes()).removeGoal(((PaperVanillaGoal) goal).getHandle()); + } else { + List toRemove = new LinkedList<>(); -+ for (WrappedGoal item : getHandle(craftMob, goal.getTypes()).availableGoals) { ++ for (WrappedGoal item : getHandle(craftMob, goal.getTypes()).getAvailableGoals()) { + if (item.getGoal() instanceof PaperCustomGoal) { + //noinspection unchecked + if (((PaperCustomGoal) item.getGoal()).getHandle() == goal) { @@ -568,7 +568,7 @@ index 0000000000000000000000000000000000000000..336cc3c3b43bacf4f3661fa0bb0736b2 + public Collection> getAllGoals(T mob, GoalType type) { + CraftMob craftMob = (CraftMob) mob; + Set> goals = new HashSet<>(); -+ for (WrappedGoal item : getHandle(craftMob, type).availableGoals) { ++ for (WrappedGoal item : getHandle(craftMob, type).getAvailableGoals()) { + if (!item.getGoal().getFlags().hasElement(MobGoalHelper.paperToVanilla(type))) { + continue; + } @@ -591,7 +591,7 @@ index 0000000000000000000000000000000000000000..336cc3c3b43bacf4f3661fa0bb0736b2 + if (internalType == type) { + continue; + } -+ for (WrappedGoal item : getHandle(craftMob, internalType).availableGoals) { ++ for (WrappedGoal item : getHandle(craftMob, internalType).getAvailableGoals()) { + if (item.getGoal().getFlags().hasElement(MobGoalHelper.paperToVanilla(type))) { + continue; + } diff --git a/patches/server/0401-Add-villager-reputation-API.patch b/patches/server/0401-Add-villager-reputation-API.patch index c73d28b416..0d5199af29 100644 --- a/patches/server/0401-Add-villager-reputation-API.patch +++ b/patches/server/0401-Add-villager-reputation-API.patch @@ -3,9 +3,12 @@ From: Mariell Hoversholm Date: Wed, 22 Apr 2020 23:29:20 +0200 Subject: [PATCH] Add villager reputation API +== AT == +public net.minecraft.world.entity.ai.gossip.GossipContainer$EntityGossips +public net.minecraft.world.entity.ai.gossip.GossipContainer$EntityGossips ()V diff --git a/src/main/java/net/minecraft/world/entity/ai/gossip/GossipContainer.java b/src/main/java/net/minecraft/world/entity/ai/gossip/GossipContainer.java -index 7a7c92f1a026116958ad24312df358a703834369..1e503b075983343d2b12a5a9216fdad879bf1b7c 100644 +index 76dfb546ddddb14497269d22ac1c8f84a0a9c15c..92beb137d86ae89d90b1963a024c0be308d81a42 100644 --- a/src/main/java/net/minecraft/world/entity/ai/gossip/GossipContainer.java +++ b/src/main/java/net/minecraft/world/entity/ai/gossip/GossipContainer.java @@ -27,7 +27,7 @@ import net.minecraft.util.VisibleForDebug; diff --git a/patches/server/0445-Add-entity-liquid-API.patch b/patches/server/0445-Add-entity-liquid-API.patch index 28b0d01d5e..0a8b551c42 100644 --- a/patches/server/0445-Add-entity-liquid-API.patch +++ b/patches/server/0445-Add-entity-liquid-API.patch @@ -3,6 +3,9 @@ From: William Blake Galbreath Date: Thu, 2 Jul 2020 18:11:43 -0500 Subject: [PATCH] Add entity liquid API +== AT == +public net.minecraft.world.entity.Entity isInRain()Z +public net.minecraft.world.entity.Entity isInBubbleColumn()Z diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java index 3bda8128c2956d817677e28ff87c9c5ed61c8bd2..ceb7123362ba85df825a50c035a399174b6634dc 100644 diff --git a/patches/server/0472-Eigencraft-redstone-implementation.patch b/patches/server/0472-Eigencraft-redstone-implementation.patch index e4a4e5398a..eb06202d36 100644 --- a/patches/server/0472-Eigencraft-redstone-implementation.patch +++ b/patches/server/0472-Eigencraft-redstone-implementation.patch @@ -4,7 +4,6 @@ Date: Thu, 27 Sep 2018 01:43:35 -0600 Subject: [PATCH] Eigencraft redstone implementation Author: theosib -Co-authored-by: egg82 Original license: MIT @@ -18,6 +17,11 @@ A lot of this code is self-contained in a helper class. Aside from making the obvious class/function renames and obfhelpers I didn't need to modify much. Just added Bukkit's event system and took a few liberties with dead code and comment misspellings. +== AT == +public net.minecraft.world.level.block.RedStoneWireBlock shouldSignal + +Co-authored-by: egg82 + diff --git a/src/main/java/com/destroystokyo/paper/util/RedstoneWireTurbo.java b/src/main/java/com/destroystokyo/paper/util/RedstoneWireTurbo.java new file mode 100644 index 0000000000000000000000000000000000000000..22a2547810d0c029f29685faddf7ac21cde2df0b diff --git a/patches/server/0476-Add-more-Evoker-API.patch b/patches/server/0476-Add-more-Evoker-API.patch index 367e900e25..0fce1f166a 100644 --- a/patches/server/0476-Add-more-Evoker-API.patch +++ b/patches/server/0476-Add-more-Evoker-API.patch @@ -3,6 +3,9 @@ From: BillyGalbreath Date: Sun, 23 Aug 2020 15:28:35 +0200 Subject: [PATCH] Add more Evoker API +== AT == +public net.minecraft.world.entity.monster.Evoker setWololoTarget(Lnet/minecraft/world/entity/animal/Sheep;)V +public net.minecraft.world.entity.monster.Evoker getWololoTarget()Lnet/minecraft/world/entity/animal/Sheep; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEvoker.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEvoker.java index 91d07e6996e315734689ea25336992b0ed21cf25..7e861636710aa44ed36e7f20c6320dabb809c35d 100644 diff --git a/patches/server/0477-Add-methods-to-get-translation-keys.patch b/patches/server/0477-Add-methods-to-get-translation-keys.patch index 5a5b0a4cd6..c47c8980db 100644 --- a/patches/server/0477-Add-methods-to-get-translation-keys.patch +++ b/patches/server/0477-Add-methods-to-get-translation-keys.patch @@ -3,6 +3,10 @@ From: Jake Potrebic Date: Tue, 11 Aug 2020 19:16:09 +0200 Subject: [PATCH] Add methods to get translation keys +== AT == +public org.bukkit.craftbukkit.inventory.CraftMetaFirework +public org.bukkit.craftbukkit.inventory.CraftMetaFirework getNBT(Lorg/bukkit/FireworkEffect$Type;)I + Co-authored-by: MeFisto94 diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java diff --git a/patches/server/0515-More-lightning-API.patch b/patches/server/0515-More-lightning-API.patch index 142479579e..f3cc50d6cc 100644 --- a/patches/server/0515-More-lightning-API.patch +++ b/patches/server/0515-More-lightning-API.patch @@ -3,6 +3,9 @@ From: Nassim Jahnke Date: Sun, 26 Jul 2020 14:44:09 +0200 Subject: [PATCH] More lightning API +== AT == +public net.minecraft.world.entity.LightningBolt life +public net.minecraft.world.entity.LightningBolt flashes diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLightningStrike.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLightningStrike.java index f7991ff14ef9cda0327b8621bf615b49cffd7ac5..e515e819774bfb31ec03f05a5502921e66f2b0e2 100644 diff --git a/patches/server/0538-Zombie-API-breaking-doors.patch b/patches/server/0538-Zombie-API-breaking-doors.patch index b89994b417..0b6d0327e3 100644 --- a/patches/server/0538-Zombie-API-breaking-doors.patch +++ b/patches/server/0538-Zombie-API-breaking-doors.patch @@ -3,6 +3,8 @@ From: Jake Potrebic Date: Wed, 18 Nov 2020 11:32:46 -0800 Subject: [PATCH] Zombie API - breaking doors +== AT == +public net.minecraft.world.entity.monster.Zombie supportsBreakDoorGoal()Z diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftZombie.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftZombie.java index 1e0154f2d06b0cc5bc58ec2de98cbdce1346da35..9f4da46dce54fe4207e24b49402fe0d3fa548e29 100644 diff --git a/patches/server/0548-Configurable-door-breaking-difficulty.patch b/patches/server/0548-Configurable-door-breaking-difficulty.patch index e2eb5d3c3e..3d6697b7af 100644 --- a/patches/server/0548-Configurable-door-breaking-difficulty.patch +++ b/patches/server/0548-Configurable-door-breaking-difficulty.patch @@ -3,6 +3,10 @@ From: Jake Potrebic Date: Sun, 3 Jan 2021 22:27:43 -0800 Subject: [PATCH] Configurable door breaking difficulty +== AT == +public net.minecraft.world.entity.monster.Vindicator DOOR_BREAKING_PREDICATE +public net.minecraft.world.entity.monster.Zombie DOOR_BREAKING_PREDICATE + Co-authored-by: Doc diff --git a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java @@ -19,7 +23,7 @@ index ffc8e20d916940fb5e28bac610e3c6bd3d493f78..a9e75a16a7dc0ff5d4f0faa92ebc4445 } diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index e4bd194998b14fa4f6212ec978afc8dc7921bb9f..c5b6236c58485351fb2866197b55d2c8809105c7 100644 +index a1a24982163023c3a75267366cc6a0d53401c094..bbaf3e5d29814ce49de68be63411517de3fd320f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -98,7 +98,7 @@ public class Zombie extends Monster { diff --git a/patches/server/0591-Item-Rarity-API.patch b/patches/server/0591-Item-Rarity-API.patch index e3e4b42355..4c70d999f6 100644 --- a/patches/server/0591-Item-Rarity-API.patch +++ b/patches/server/0591-Item-Rarity-API.patch @@ -3,6 +3,8 @@ From: Jake Potrebic Date: Fri, 12 Mar 2021 17:09:42 -0800 Subject: [PATCH] Item Rarity API +== AT == +public net.minecraft.world.item.Item rarity diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java index 1343db872321fe14465ad2b1f363d41989096ed4..9e27257265dab677175b9b3d921e1fc3f3cb7817 100644 diff --git a/patches/server/0618-Add-more-WanderingTrader-API.patch b/patches/server/0618-Add-more-WanderingTrader-API.patch index 548c498631..65d351d6df 100644 --- a/patches/server/0618-Add-more-WanderingTrader-API.patch +++ b/patches/server/0618-Add-more-WanderingTrader-API.patch @@ -5,12 +5,12 @@ Subject: [PATCH] Add more WanderingTrader API diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -index 9162f3e5752a7bee825e7ae21e9fb950cf4eb644..af092098cdfc528bd9f5d771ead1b685aa051bee 100644 +index abb2c5c4ac481c7529aa29322babb1929235e15a..86e1ba898d6b92735258419fa74352e5116226dc 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java @@ -56,6 +56,10 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill @Nullable - public BlockPos wanderTarget; + private BlockPos wanderTarget; private int despawnDelay; + // Paper start - Add more WanderingTrader API + public boolean canDrinkPotion = true; diff --git a/patches/server/0629-More-Enchantment-API.patch b/patches/server/0629-More-Enchantment-API.patch index 4b947b4e53..e5ae60be71 100644 --- a/patches/server/0629-More-Enchantment-API.patch +++ b/patches/server/0629-More-Enchantment-API.patch @@ -3,6 +3,8 @@ From: Jake Potrebic Date: Thu, 6 May 2021 19:57:58 -0700 Subject: [PATCH] More Enchantment API +== AT == +public net.minecraft.world.item.enchantment.Enchantment slots diff --git a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java index 31a22f26070059e5379730c1940ff1c5fb109be1..873185fd4d4c994130f2e7c271b3e03cefb2278c 100644 diff --git a/patches/server/0631-Fix-and-optimise-world-force-upgrading.patch b/patches/server/0631-Fix-and-optimise-world-force-upgrading.patch index 81642cd605..4c808317dd 100644 --- a/patches/server/0631-Fix-and-optimise-world-force-upgrading.patch +++ b/patches/server/0631-Fix-and-optimise-world-force-upgrading.patch @@ -28,6 +28,9 @@ I've fixed this by writing a world upgrader suited to CB's changes to world folder format. It was brain dead easy to add threading, so I did. +== AT == +public net.minecraft.util.worldupdate.WorldUpgrader REGEX + diff --git a/src/main/java/io/papermc/paper/world/ThreadedWorldUpgrader.java b/src/main/java/io/papermc/paper/world/ThreadedWorldUpgrader.java new file mode 100644 index 0000000000000000000000000000000000000000..95cac7edae8ac64811fc6a2f6b97dd4a0fceb0b0 diff --git a/patches/server/0655-Missing-Entity-Behavior-API.patch b/patches/server/0655-Missing-Entity-Behavior-API.patch index 4b391ea8d6..5c13fdb0a8 100644 --- a/patches/server/0655-Missing-Entity-Behavior-API.patch +++ b/patches/server/0655-Missing-Entity-Behavior-API.patch @@ -3,6 +3,30 @@ From: Owen1212055 <23108066+Owen1212055@users.noreply.github.com> Date: Mon, 21 Jun 2021 23:56:07 -0400 Subject: [PATCH] Missing Entity Behavior API +== AT == +public net.minecraft.world.entity.animal.Fox isDefending()Z +public net.minecraft.world.entity.animal.Fox setDefending(Z)V +public net.minecraft.world.entity.animal.Fox setFaceplanted(Z)V +public net.minecraft.world.entity.animal.Panda getEatCounter()I +public net.minecraft.world.entity.animal.Panda setEatCounter(I)V +public net.minecraft.world.entity.animal.Bee isRolling()Z +public net.minecraft.world.entity.animal.Bee setRolling(Z)V +public net.minecraft.world.entity.animal.Bee numCropsGrownSincePollination +public net.minecraft.world.entity.animal.Bee ticksWithoutNectarSinceExitingHive +public net.minecraft.world.entity.monster.piglin.Piglin isChargingCrossbow()Z +public net.minecraft.world.entity.animal.MushroomCow effect +public net.minecraft.world.entity.animal.MushroomCow effectDuration +public net.minecraft.world.entity.ambient.Bat targetPosition +public net.minecraft.world.entity.monster.Ravager attackTick +public net.minecraft.world.entity.monster.Ravager stunnedTick +public net.minecraft.world.entity.monster.Ravager roarTick +public net.minecraft.world.entity.vehicle.MinecartTNT fuse +public net.minecraft.world.entity.monster.Endermite life +public net.minecraft.world.entity.vehicle.MinecartHopper cooldownTime +public net.minecraft.world.entity.projectile.AbstractArrow soundEvent +public net.minecraft.world.entity.monster.Phantom anchorPoint +public net.minecraft.world.entity.npc.WanderingTrader getWanderTarget()Lnet/minecraft/core/BlockPos; + Co-authored-by: Nassim Jahnke Co-authored-by: Jake Potrebic Co-authored-by: William Blake Galbreath @@ -884,7 +908,7 @@ index 8a0a905f6701c6e94cbbf15793788350958fb728..2a74e6ecb4f57bc6879b37f7bc067541 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWanderingTrader.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWanderingTrader.java -index fa7107593b20e0151d8d67104e4a92dcc697d461..ec6bbac3462ebe289b69f7a116802e34658b09c5 100644 +index fa7107593b20e0151d8d67104e4a92dcc697d461..ecf0c4a7d1ce2b254d91b3276fa24c149329737a 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWanderingTrader.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWanderingTrader.java @@ -55,5 +55,25 @@ public class CraftWanderingTrader extends CraftAbstractVillager implements Wande @@ -894,7 +918,7 @@ index fa7107593b20e0151d8d67104e4a92dcc697d461..ec6bbac3462ebe289b69f7a116802e34 + + @Override + public org.bukkit.Location getWanderingTowards() { -+ net.minecraft.core.BlockPos pos = this.getHandle().wanderTarget; ++ net.minecraft.core.BlockPos pos = this.getHandle().getWanderTarget(); + if (pos == null) { + return null; + } @@ -909,7 +933,7 @@ index fa7107593b20e0151d8d67104e4a92dcc697d461..ec6bbac3462ebe289b69f7a116802e34 + pos = io.papermc.paper.util.MCUtil.toBlockPosition(location); + } + -+ this.getHandle().wanderTarget = pos; ++ this.getHandle().setWanderTarget(pos); + } // Paper end } diff --git a/patches/server/0689-Add-missing-team-sidebar-display-slots.patch b/patches/server/0689-Add-missing-team-sidebar-display-slots.patch index 122e9dc0bd..2a7dbde0e6 100644 --- a/patches/server/0689-Add-missing-team-sidebar-display-slots.patch +++ b/patches/server/0689-Add-missing-team-sidebar-display-slots.patch @@ -3,6 +3,10 @@ From: Jake Potrebic Date: Fri, 1 Oct 2021 08:04:39 -0700 Subject: [PATCH] Add missing team sidebar display slots +== AT == +public org.bukkit.craftbukkit.scoreboard.CraftScoreboardTranslations +public org.bukkit.craftbukkit.scoreboard.CraftScoreboardTranslations toBukkitSlot(I)Lorg/bukkit/scoreboard/DisplaySlot; +public org.bukkit.craftbukkit.scoreboard.CraftScoreboardTranslations fromBukkitSlot(Lorg/bukkit/scoreboard/DisplaySlot;)I diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardTranslations.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardTranslations.java index e2d3fe9af7d3bd82bee519b20e141cd58f68bbd6..944a4fee237730c0d89567aaa6ddf268467aa0e0 100644 diff --git a/patches/server/0691-Add-methods-to-find-targets-for-lightning-strikes.patch b/patches/server/0691-Add-methods-to-find-targets-for-lightning-strikes.patch index 1b8d4998af..ac3b33e467 100644 --- a/patches/server/0691-Add-methods-to-find-targets-for-lightning-strikes.patch +++ b/patches/server/0691-Add-methods-to-find-targets-for-lightning-strikes.patch @@ -3,9 +3,11 @@ From: Jakub Zacek Date: Mon, 4 Oct 2021 10:16:44 +0200 Subject: [PATCH] Add methods to find targets for lightning strikes +== AT == +public net.minecraft.server.level.ServerLevel findLightningRod(Lnet/minecraft/core/BlockPos;)Ljava/util/Optional; diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 304002cab34cdbb000f22d18ee94ffe233ac2b8e..7d35d948e395258c77301c3dfee572545d3e52ff 100644 +index 0fcee6adcb99f142bd35d57a65026fc7175c8168..b1f0d64d8d40e7f9b2b0e7702e70853cd70387ac 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -815,6 +815,11 @@ public class ServerLevel extends Level implements WorldGenLevel { diff --git a/patches/server/0692-Get-entity-default-attributes.patch b/patches/server/0692-Get-entity-default-attributes.patch index c2cbc0160d..9854a25a88 100644 --- a/patches/server/0692-Get-entity-default-attributes.patch +++ b/patches/server/0692-Get-entity-default-attributes.patch @@ -3,6 +3,8 @@ From: Jake Potrebic Date: Fri, 20 Aug 2021 13:03:21 -0700 Subject: [PATCH] Get entity default attributes +== AT == +public net.minecraft.world.entity.ai.attributes.AttributeSupplier getAttributeInstance(Lnet/minecraft/world/entity/ai/attributes/Attribute;)Lnet/minecraft/world/entity/ai/attributes/AttributeInstance; diff --git a/src/main/java/io/papermc/paper/attribute/UnmodifiableAttributeInstance.java b/src/main/java/io/papermc/paper/attribute/UnmodifiableAttributeInstance.java new file mode 100644 @@ -42,32 +44,22 @@ index 0000000000000000000000000000000000000000..12135ffeacd648f6bc4d7d327059ea1a +} diff --git a/src/main/java/io/papermc/paper/attribute/UnmodifiableAttributeMap.java b/src/main/java/io/papermc/paper/attribute/UnmodifiableAttributeMap.java new file mode 100644 -index 0000000000000000000000000000000000000000..4ecba0b02c2813a890aecc558698787946d2ccb8 +index 0000000000000000000000000000000000000000..cf9d28ea97d93cec05c9fb768d59e283ca915565 --- /dev/null +++ b/src/main/java/io/papermc/paper/attribute/UnmodifiableAttributeMap.java -@@ -0,0 +1,43 @@ +@@ -0,0 +1,32 @@ +package io.papermc.paper.attribute; + -+import com.google.common.collect.Maps; -+import com.google.common.util.concurrent.Callables; -+import com.google.common.util.concurrent.Runnables; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import org.bukkit.attribute.Attributable; +import org.bukkit.attribute.Attribute; +import org.bukkit.attribute.AttributeInstance; -+import org.bukkit.craftbukkit.attribute.CraftAttributeInstance; +import org.bukkit.craftbukkit.attribute.CraftAttributeMap; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + -+import java.util.Map; -+import java.util.function.Consumer; -+import java.util.function.Function; -+ +public class UnmodifiableAttributeMap implements Attributable { + -+ -+ private final Map attributes = Maps.newHashMap(); + private final AttributeSupplier handle; + + public UnmodifiableAttributeMap(@NotNull AttributeSupplier handle) { @@ -76,12 +68,11 @@ index 0000000000000000000000000000000000000000..4ecba0b02c2813a890aecc5586987879 + + @Override + public @Nullable AttributeInstance getAttribute(@NotNull Attribute attribute) { -+ var nmsAttribute = CraftAttributeMap.toMinecraft(attribute); -+ var nmsAttributeInstance = this.handle.instances.get(nmsAttribute); -+ if (nmsAttribute == null) { ++ net.minecraft.world.entity.ai.attributes.Attribute nmsAttribute = CraftAttributeMap.toMinecraft(attribute); ++ if (!this.handle.hasAttribute(nmsAttribute)) { + return null; + } -+ return new UnmodifiableAttributeInstance(nmsAttributeInstance, attribute); ++ return new UnmodifiableAttributeInstance(this.handle.getAttributeInstance(nmsAttribute), attribute); + } + + @Override diff --git a/patches/server/0695-Add-ItemFactory-getMonsterEgg-API.patch b/patches/server/0695-Add-ItemFactory-getSpawnEgg-API.patch similarity index 86% rename from patches/server/0695-Add-ItemFactory-getMonsterEgg-API.patch rename to patches/server/0695-Add-ItemFactory-getSpawnEgg-API.patch index 1944914081..a0deed1bb0 100644 --- a/patches/server/0695-Add-ItemFactory-getMonsterEgg-API.patch +++ b/patches/server/0695-Add-ItemFactory-getSpawnEgg-API.patch @@ -1,11 +1,11 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Thu, 14 Oct 2021 12:09:39 -0500 -Subject: [PATCH] Add ItemFactory#getMonsterEgg API +Subject: [PATCH] Add ItemFactory#getSpawnEgg API diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java -index f3a6a4d97b5be2e75c438a6f7010a8f588afe86c..4a8ac558d308c4e3bc63cdd8d7071a3f9ff3aa81 100644 +index f3a6a4d97b5be2e75c438a6f7010a8f588afe86c..30bff345b33a1b4f7909efbe4b3622d7780e7bbf 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java @@ -440,5 +440,17 @@ public final class CraftItemFactory implements ItemFactory { @@ -21,7 +21,7 @@ index f3a6a4d97b5be2e75c438a6f7010a8f588afe86c..4a8ac558d308c4e3bc63cdd8d7071a3f + String typeId = type.getKey().toString(); + net.minecraft.resources.ResourceLocation typeKey = new net.minecraft.resources.ResourceLocation(typeId); + net.minecraft.world.entity.EntityType nmsType = net.minecraft.core.Registry.ENTITY_TYPE.get(typeKey); -+ net.minecraft.world.item.SpawnEggItem eggItem = net.minecraft.world.item.SpawnEggItem.BY_ID.get(nmsType); ++ net.minecraft.world.item.SpawnEggItem eggItem = net.minecraft.world.item.SpawnEggItem.byId(nmsType); + return eggItem == null ? null : new net.minecraft.world.item.ItemStack(eggItem).asBukkitMirror(); + } // Paper end diff --git a/patches/server/0698-Add-isCollidable-methods-to-various-places.patch b/patches/server/0698-Add-isCollidable-methods-to-various-places.patch index 2b95e405a3..c769e320cb 100644 --- a/patches/server/0698-Add-isCollidable-methods-to-various-places.patch +++ b/patches/server/0698-Add-isCollidable-methods-to-various-places.patch @@ -3,6 +3,8 @@ From: Jake Potrebic Date: Thu, 4 Nov 2021 11:50:40 -0700 Subject: [PATCH] Add isCollidable methods to various places +== AT == +public net.minecraft.world.level.block.state.BlockBehaviour hasCollision diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java index b2628b1698ef2a235e7b465f09747cafbb133b7a..2881bcb570dc86a7602309e1f540ecd1c7f00284 100644 diff --git a/patches/server/0702-Vanilla-command-permission-fixes.patch b/patches/server/0702-Vanilla-command-permission-fixes.patch index 603bc9d5f0..44a7db13ec 100644 --- a/patches/server/0702-Vanilla-command-permission-fixes.patch +++ b/patches/server/0702-Vanilla-command-permission-fixes.patch @@ -6,6 +6,9 @@ Subject: [PATCH] Vanilla command permission fixes Fixes permission checks for vanilla commands which don't have a requirement, as well as for namespaced vanilla commands. +== AT == +public-f com.mojang.brigadier.tree.CommandNode requirement + diff --git a/src/main/java/com/mojang/brigadier/builder/ArgumentBuilder.java b/src/main/java/com/mojang/brigadier/builder/ArgumentBuilder.java index 899008b2980d13f1be6280cd8cb959c53a29bebf..f875507241ac6769545e91cd3285232b75b892f0 100644 --- a/src/main/java/com/mojang/brigadier/builder/ArgumentBuilder.java diff --git a/patches/server/0750-Fix-upstreams-block-state-factories.patch b/patches/server/0750-Fix-upstreams-block-state-factories.patch index 221799c0b1..7bd43e5ec1 100644 --- a/patches/server/0750-Fix-upstreams-block-state-factories.patch +++ b/patches/server/0750-Fix-upstreams-block-state-factories.patch @@ -9,6 +9,9 @@ block at the position, not the tile entity. This change prioritizes using the tile entity type to determine the block state factory and falls back on the material type of the block at that location. +== AT == +public net.minecraft.world.level.block.entity.BlockEntityType validBlocks + diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java index b0174aedb7358af1e80278e2f5f13e00c35ab3c6..d62181bd8bccfcfdd7da8f635bdf7ebc36294705 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java diff --git a/patches/server/0760-Fix-removing-recipes-from-RecipeIterator.patch b/patches/server/0760-Fix-removing-recipes-from-RecipeIterator.patch index 5784fd4dc3..6b05db044c 100644 --- a/patches/server/0760-Fix-removing-recipes-from-RecipeIterator.patch +++ b/patches/server/0760-Fix-removing-recipes-from-RecipeIterator.patch @@ -3,6 +3,8 @@ From: Jake Date: Tue, 30 Nov 2021 12:01:56 -0800 Subject: [PATCH] Fix removing recipes from RecipeIterator +== AT == +public net.minecraft.world.item.crafting.RecipeManager byName diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/RecipeIterator.java b/src/main/java/org/bukkit/craftbukkit/inventory/RecipeIterator.java index 24f336c89b548c5ba2a95372db0d7c83b5c4ec47..91895c639c33a1cafd2a35bab7b5fd83e558468d 100644 diff --git a/patches/server/0768-Allow-delegation-to-vanilla-chunk-gen.patch b/patches/server/0768-Allow-delegation-to-vanilla-chunk-gen.patch index ee5856163c..5f4bbbd767 100644 --- a/patches/server/0768-Allow-delegation-to-vanilla-chunk-gen.patch +++ b/patches/server/0768-Allow-delegation-to-vanilla-chunk-gen.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow delegation to vanilla chunk gen diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index c648acdd0066f6c480d08927a3c72524cde32ec7..ed3f27e605a6d9454953a6fd8b0e784b1b89acf3 100644 +index c648acdd0066f6c480d08927a3c72524cde32ec7..6a264ba85ca10f34ccda5287f8c2c4d492413ae9 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -2329,6 +2329,90 @@ public final class CraftServer implements Server { @@ -42,7 +42,7 @@ index c648acdd0066f6c480d08927a3c72524cde32ec7..ed3f27e605a6d9454953a6fd8b0e784b + + final net.minecraft.world.level.chunk.ChunkGenerator chunkGenerator; + if (serverLevel.chunkSource.getGenerator() instanceof org.bukkit.craftbukkit.generator.CustomChunkGenerator bukkit) { -+ chunkGenerator = bukkit.delegate; ++ chunkGenerator = bukkit.getDelegate(); + } else { + chunkGenerator = serverLevel.chunkSource.getGenerator(); + } diff --git a/patches/server/0779-Entity-powdered-snow-API.patch b/patches/server/0779-Entity-powdered-snow-API.patch index 3a8d58b594..0a3d1b2868 100644 --- a/patches/server/0779-Entity-powdered-snow-API.patch +++ b/patches/server/0779-Entity-powdered-snow-API.patch @@ -3,6 +3,8 @@ From: Jake Potrebic Date: Sun, 24 Oct 2021 20:58:43 -0700 Subject: [PATCH] Entity powdered snow API +== AT == +public net.minecraft.world.entity.monster.Skeleton inPowderSnowTime diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java index 8c273a7dc38c9c5dba83c998bab3427d3112106b..702d0fc5ebd2d39b038dae05135f551848544818 100644 diff --git a/patches/server/0780-Add-API-for-item-entity-health.patch b/patches/server/0780-Add-API-for-item-entity-health.patch index d923270a18..8375a2aaa5 100644 --- a/patches/server/0780-Add-API-for-item-entity-health.patch +++ b/patches/server/0780-Add-API-for-item-entity-health.patch @@ -3,6 +3,8 @@ From: Jake Potrebic Date: Sat, 28 Aug 2021 09:00:45 -0700 Subject: [PATCH] Add API for item entity health +== AT == +public net.minecraft.world.entity.item.ItemEntity health diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java index 1d90219c3a0e86786a9497d4c078c2d4077ab6cd..fea44ba6a6584b4a510af6a58cab07eecec6b68b 100644 diff --git a/patches/server/0800-Fix-NotePlayEvent.patch b/patches/server/0800-Fix-NotePlayEvent.patch index 83040e523a..f870090c76 100644 --- a/patches/server/0800-Fix-NotePlayEvent.patch +++ b/patches/server/0800-Fix-NotePlayEvent.patch @@ -3,6 +3,8 @@ From: Kieran Wallbanks Date: Mon, 21 Jun 2021 14:23:50 +0100 Subject: [PATCH] Fix NotePlayEvent +== AT == +public org.bukkit.craftbukkit.block.data.CraftBlockData toNMS(Ljava/lang/Enum;Ljava/lang/Class;)Ljava/lang/Enum; diff --git a/src/main/java/net/minecraft/world/level/block/NoteBlock.java b/src/main/java/net/minecraft/world/level/block/NoteBlock.java index 293affa9821bcf7c6f4c2d57818958ae2765c5de..c14eb4f7decdbcd6176d3bff95d595a947d4ec95 100644 diff --git a/patches/server/0813-Configurable-sculk-sensor-listener-range.patch b/patches/server/0813-Configurable-sculk-sensor-listener-range.patch index f19796285a..4a7b42cb63 100644 --- a/patches/server/0813-Configurable-sculk-sensor-listener-range.patch +++ b/patches/server/0813-Configurable-sculk-sensor-listener-range.patch @@ -3,6 +3,8 @@ From: Jake Potrebic Date: Thu, 19 Aug 2021 18:45:42 -0700 Subject: [PATCH] Configurable sculk sensor listener range +== AT == +public-f net.minecraft.world.level.gameevent.vibrations.VibrationListener listenerRange diff --git a/src/main/java/net/minecraft/world/level/block/entity/SculkSensorBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/SculkSensorBlockEntity.java index b7b70a77615dde3f22a9153e17ec2d8edbdcdc7a..579a96d2d6c99d6587ea182f52b6df918f595f17 100644 diff --git a/patches/server/0821-Fix-falling-block-spawn-methods.patch b/patches/server/0821-Fix-falling-block-spawn-methods.patch index c3e296a6ad..bda70a2684 100644 --- a/patches/server/0821-Fix-falling-block-spawn-methods.patch +++ b/patches/server/0821-Fix-falling-block-spawn-methods.patch @@ -7,6 +7,9 @@ Restores the API behavior from previous versions of the server - Do not call API events - Do not replace the existing block in the world +== AT == +public net.minecraft.world.entity.item.FallingBlockEntity (Lnet/minecraft/world/level/Level;DDDLnet/minecraft/world/level/block/state/BlockState;)V + diff --git a/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java b/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java index d1fca0e3227b5f37c11367548be362f5a49b6a71..5628940cd3c3566c5db2beda506d4f20b6e3cbae 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java diff --git a/patches/server/0823-Fix-cancelling-ProjectileHitEvent-for-piercing-arrow.patch b/patches/server/0823-Fix-cancelling-ProjectileHitEvent-for-piercing-arrow.patch index 6d3b59c1d7..c025095487 100644 --- a/patches/server/0823-Fix-cancelling-ProjectileHitEvent-for-piercing-arrow.patch +++ b/patches/server/0823-Fix-cancelling-ProjectileHitEvent-for-piercing-arrow.patch @@ -11,6 +11,9 @@ is not cancelled. The solution here, is to make use of an already-existing field on AbstractArrow for tracking entities hit by piercing arrows to avoid duplicate damage being applied. +== AT == +protected net.minecraft.world.entity.projectile.Projectile hitCancelled + diff --git a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java index 39136b9707221e4e4934ee0ef18fc2cb92723aa2..def3b3f8dac4b28eaaafdd9bc2e7f4b9ec9d6855 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java diff --git a/patches/server/0824-More-Projectile-API.patch b/patches/server/0824-More-Projectile-API.patch index cc09814a54..9a64f36f82 100644 --- a/patches/server/0824-More-Projectile-API.patch +++ b/patches/server/0824-More-Projectile-API.patch @@ -3,6 +3,18 @@ From: Owen1212055 <23108066+Owen1212055@users.noreply.github.com> Date: Tue, 22 Jun 2021 23:41:11 -0400 Subject: [PATCH] More Projectile API +== AT == +public net.minecraft.world.entity.projectile.FishingHook timeUntilLured +public net.minecraft.world.entity.projectile.ShulkerBullet targetDeltaX +public net.minecraft.world.entity.projectile.ShulkerBullet targetDeltaY +public net.minecraft.world.entity.projectile.ShulkerBullet targetDeltaZ +public net.minecraft.world.entity.projectile.ShulkerBullet currentMoveDirection +public net.minecraft.world.entity.projectile.ShulkerBullet flightSteps +public net.minecraft.world.entity.projectile.AbstractArrow soundEvent +public net.minecraft.world.entity.projectile.ThrownTrident dealtDamage +public net.minecraft.world.entity.projectile.Projectile hasBeenShot +public net.minecraft.world.entity.projectile.Projectile leftOwner + Co-authored-by: Nassim Jahnke diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownPotion.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownPotion.java diff --git a/patches/server/0830-Implement-enchantWithLevels-API.patch b/patches/server/0830-Implement-enchantWithLevels-API.patch index 204d4534fb..92dab8814e 100644 --- a/patches/server/0830-Implement-enchantWithLevels-API.patch +++ b/patches/server/0830-Implement-enchantWithLevels-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Implement enchantWithLevels API diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java -index 4a8ac558d308c4e3bc63cdd8d7071a3f9ff3aa81..ce64286ac5b836283318ac1ac0bd4afb29db9bb7 100644 +index 30bff345b33a1b4f7909efbe4b3622d7780e7bbf..8e5bc2bf5fed1f70a9fdcdeb4b23468aa0c7fb8e 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java @@ -376,6 +376,21 @@ public final class CraftItemFactory implements ItemFactory { @@ -20,8 +20,8 @@ index 4a8ac558d308c4e3bc63cdd8d7071a3f9ff3aa81..ce64286ac5b836283318ac1ac0bd4afb + Validate.isTrue(levels > 0 && levels <= 30, "Argument 'levels' must be in range [1, 30] (attempted " + levels + ")"); + Validate.notNull(random, "Argument 'random' must not be null"); + final net.minecraft.world.item.ItemStack internalStack = CraftItemStack.asNMSCopy(itemStack); -+ if (internalStack.tag != null) { -+ internalStack.tag.remove(net.minecraft.world.item.ItemStack.TAG_ENCH); ++ if (internalStack.getTag() != null) { ++ internalStack.getTag().remove(net.minecraft.world.item.ItemStack.TAG_ENCH); + } + final net.minecraft.world.item.ItemStack enchanted = net.minecraft.world.item.enchantment.EnchantmentHelper.enchantItem(new org.bukkit.craftbukkit.util.RandomSourceWrapper(random), internalStack, levels, allowTreasure); + return CraftItemStack.asCraftMirror(enchanted); diff --git a/patches/server/0882-More-Teleport-API.patch b/patches/server/0882-More-Teleport-API.patch index 00e1ac2dce..0a86e4341c 100644 --- a/patches/server/0882-More-Teleport-API.patch +++ b/patches/server/0882-More-Teleport-API.patch @@ -3,9 +3,11 @@ From: Owen1212055 <23108066+Owen1212055@users.noreply.github.com> Date: Sun, 5 Sep 2021 12:15:59 -0400 Subject: [PATCH] More Teleport API +== AT == +public net.minecraft.server.network.ServerGamePacketListenerImpl internalTeleport(DDDFFLjava/util/Set;Z)V diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 4c9fc7d60ca5fc9fd65843947a4f2beb2d1acc97..525183cd9b6b3a75eff3ff2512c686cca89bfa8a 100644 +index 0227a7df2b3a30d1c0d95acdd1b0a43f9170d19b..a42e2cb31d636637db9f4e7edbe06acdf47d34d2 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -1729,11 +1729,17 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic