diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a3de174c6f..8e0b05f349 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/Add-ItemFactory-getMonsterEgg-API.patch b/patches/api/Add-ItemFactory-getSpawnEgg-API.patch similarity index 95% rename from patches/api/Add-ItemFactory-getMonsterEgg-API.patch rename to patches/api/Add-ItemFactory-getSpawnEgg-API.patch index 46f902389f..b384ca3b9b 100644 --- a/patches/api/Add-ItemFactory-getMonsterEgg-API.patch +++ b/patches/api/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/Ability-to-apply-mending-to-XP-API.patch b/patches/server/Ability-to-apply-mending-to-XP-API.patch index 34f9c123c4..51cb962eea 100644 --- a/patches/server/Ability-to-apply-mending-to-XP-API.patch +++ b/patches/server/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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java diff --git a/patches/server/Add-API-for-item-entity-health.patch b/patches/server/Add-API-for-item-entity-health.patch index 531ae43680..3abdcd205d 100644 --- a/patches/server/Add-API-for-item-entity-health.patch +++ b/patches/server/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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 diff --git a/patches/server/Add-ItemFactory-getMonsterEgg-API.patch b/patches/server/Add-ItemFactory-getSpawnEgg-API.patch similarity index 93% rename from patches/server/Add-ItemFactory-getMonsterEgg-API.patch rename to patches/server/Add-ItemFactory-getSpawnEgg-API.patch index e1749a50da..4dc37ea6f7 100644 --- a/patches/server/Add-ItemFactory-getMonsterEgg-API.patch +++ b/patches/server/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: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 @@ -21,7 +21,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + 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/Add-PlayerConnectionCloseEvent.patch b/patches/server/Add-PlayerConnectionCloseEvent.patch index 93c371cb87..49c8b37f2f 100644 --- a/patches/server/Add-PlayerConnectionCloseEvent.patch +++ b/patches/server/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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/network/Connection.java diff --git a/patches/server/Add-PlayerInitialSpawnEvent.patch b/patches/server/Add-PlayerInitialSpawnEvent.patch index 2c3379fed5..f1179469fc 100644 --- a/patches/server/Add-PlayerInitialSpawnEvent.patch +++ b/patches/server/Add-PlayerInitialSpawnEvent.patch @@ -8,6 +8,9 @@ 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java diff --git a/patches/server/Add-PlayerUseUnknownEntityEvent.patch b/patches/server/Add-PlayerUseUnknownEntityEvent.patch index 04d574940a..5c15202c7d 100644 --- a/patches/server/Add-PlayerUseUnknownEntityEvent.patch +++ b/patches/server/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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 diff --git a/patches/server/Add-entity-liquid-API.patch b/patches/server/Add-entity-liquid-API.patch index 5267310f13..5eec1a6fa7 100644 --- a/patches/server/Add-entity-liquid-API.patch +++ b/patches/server/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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 diff --git a/patches/server/Add-isCollidable-methods-to-various-places.patch b/patches/server/Add-isCollidable-methods-to-various-places.patch index c03be9f476..85cb588f9b 100644 --- a/patches/server/Add-isCollidable-methods-to-various-places.patch +++ b/patches/server/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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 diff --git a/patches/server/Add-methods-to-find-targets-for-lightning-strikes.patch b/patches/server/Add-methods-to-find-targets-for-lightning-strikes.patch index dc11339610..107ea6f5b2 100644 --- a/patches/server/Add-methods-to-find-targets-for-lightning-strikes.patch +++ b/patches/server/Add-methods-to-find-targets-for-lightning-strikes.patch @@ -3,6 +3,8 @@ 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 diff --git a/patches/server/Add-methods-to-get-translation-keys.patch b/patches/server/Add-methods-to-get-translation-keys.patch index aa5fcdfb34..d111a6746a 100644 --- a/patches/server/Add-methods-to-get-translation-keys.patch +++ b/patches/server/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/Add-missing-team-sidebar-display-slots.patch b/patches/server/Add-missing-team-sidebar-display-slots.patch index 90dfb93370..6a62331692 100644 --- a/patches/server/Add-missing-team-sidebar-display-slots.patch +++ b/patches/server/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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 diff --git a/patches/server/Add-more-Evoker-API.patch b/patches/server/Add-more-Evoker-API.patch index 0b853fe9ad..1126a736ec 100644 --- a/patches/server/Add-more-Evoker-API.patch +++ b/patches/server/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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 diff --git a/patches/server/Add-more-WanderingTrader-API.patch b/patches/server/Add-more-WanderingTrader-API.patch index 969da3821a..3f9ee2352e 100644 --- a/patches/server/Add-more-WanderingTrader-API.patch +++ b/patches/server/Add-more-WanderingTrader-API.patch @@ -10,7 +10,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java @@ -0,0 +0,0 @@ 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/Add-more-Witch-API.patch b/patches/server/Add-more-Witch-API.patch index 413686ff3d..e521347307 100644 --- a/patches/server/Add-more-Witch-API.patch +++ b/patches/server/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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 diff --git a/patches/server/Add-more-Zombie-API.patch b/patches/server/Add-more-Zombie-API.patch index d8f3c6c419..4baf8d9797 100644 --- a/patches/server/Add-more-Zombie-API.patch +++ b/patches/server/Add-more-Zombie-API.patch @@ -3,6 +3,8 @@ 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 diff --git a/patches/server/Add-option-to-make-parrots-stay-on-shoulders-despite.patch b/patches/server/Add-option-to-make-parrots-stay-on-shoulders-despite.patch index b26c54fd9a..0c04eb8cc6 100644 --- a/patches/server/Add-option-to-make-parrots-stay-on-shoulders-despite.patch +++ b/patches/server/Add-option-to-make-parrots-stay-on-shoulders-despite.patch @@ -10,6 +10,9 @@ 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java diff --git a/patches/server/Add-sun-related-API.patch b/patches/server/Add-sun-related-API.patch index befa609799..37c83bf5c7 100644 --- a/patches/server/Add-sun-related-API.patch +++ b/patches/server/Add-sun-related-API.patch @@ -3,6 +3,8 @@ 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 diff --git a/patches/server/Add-villager-reputation-API.patch b/patches/server/Add-villager-reputation-API.patch index 3f28e0020d..ce840121cc 100644 --- a/patches/server/Add-villager-reputation-API.patch +++ b/patches/server/Add-villager-reputation-API.patch @@ -3,6 +3,9 @@ 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 diff --git a/patches/server/Allow-delegation-to-vanilla-chunk-gen.patch b/patches/server/Allow-delegation-to-vanilla-chunk-gen.patch index 3bd6d405d6..201095ac12 100644 --- a/patches/server/Allow-delegation-to-vanilla-chunk-gen.patch +++ b/patches/server/Allow-delegation-to-vanilla-chunk-gen.patch @@ -42,7 +42,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + + 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/Basic-PlayerProfile-API.patch b/patches/server/Basic-PlayerProfile-API.patch index de2172a165..c0fcab752b 100644 --- a/patches/server/Basic-PlayerProfile-API.patch +++ b/patches/server/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..0000000000000000000000000000000000000000 diff --git a/patches/server/Block-Enderpearl-Travel-Exploit.patch b/patches/server/Block-Enderpearl-Travel-Exploit.patch index f478c4ce7f..d771811a89 100644 --- a/patches/server/Block-Enderpearl-Travel-Exploit.patch +++ b/patches/server/Block-Enderpearl-Travel-Exploit.patch @@ -11,6 +11,10 @@ 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java diff --git a/patches/server/Configurable-RCON-IP-address.patch b/patches/server/Configurable-RCON-IP-address.patch index 2d46f42818..041f7bb52e 100644 --- a/patches/server/Configurable-RCON-IP-address.patch +++ b/patches/server/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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java diff --git a/patches/server/Configurable-door-breaking-difficulty.patch b/patches/server/Configurable-door-breaking-difficulty.patch index f421b0bac5..d1c2833d88 100644 --- a/patches/server/Configurable-door-breaking-difficulty.patch +++ b/patches/server/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 diff --git a/patches/server/Configurable-sculk-sensor-listener-range.patch b/patches/server/Configurable-sculk-sensor-listener-range.patch index 0afebe8875..5dd194f65a 100644 --- a/patches/server/Configurable-sculk-sensor-listener-range.patch +++ b/patches/server/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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 diff --git a/patches/server/Don-t-move-existing-players-to-world-spawn.patch b/patches/server/Don-t-move-existing-players-to-world-spawn.patch index 85edab6168..e0206c1cdc 100644 --- a/patches/server/Don-t-move-existing-players-to-world-spawn.patch +++ b/patches/server/Don-t-move-existing-players-to-world-spawn.patch @@ -9,6 +9,9 @@ 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java diff --git a/patches/server/Eigencraft-redstone-implementation.patch b/patches/server/Eigencraft-redstone-implementation.patch index cb6e326e96..4dbbc3f89d 100644 --- a/patches/server/Eigencraft-redstone-implementation.patch +++ b/patches/server/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..0000000000000000000000000000000000000000 diff --git a/patches/server/Entity-Activation-Range-2.0.patch b/patches/server/Entity-Activation-Range-2.0.patch index 05b6e7dc24..0666cf1f17 100644 --- a/patches/server/Entity-Activation-Range-2.0.patch +++ b/patches/server/Entity-Activation-Range-2.0.patch @@ -13,6 +13,10 @@ 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -705,7 +709,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + 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/Entity-powdered-snow-API.patch b/patches/server/Entity-powdered-snow-API.patch index ea6d0221f2..f9e6d62854 100644 --- a/patches/server/Entity-powdered-snow-API.patch +++ b/patches/server/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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 diff --git a/patches/server/Firework-API-s.patch b/patches/server/Firework-API-s.patch index 326cc9a171..90fcff29e4 100644 --- a/patches/server/Firework-API-s.patch +++ b/patches/server/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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 diff --git a/patches/server/Fix-Longstanding-Broken-behavior-of-PlayerJoinEvent.patch b/patches/server/Fix-Longstanding-Broken-behavior-of-PlayerJoinEvent.patch index 154acb16e5..f2ca641253 100644 --- a/patches/server/Fix-Longstanding-Broken-behavior-of-PlayerJoinEvent.patch +++ b/patches/server/Fix-Longstanding-Broken-behavior-of-PlayerJoinEvent.patch @@ -27,6 +27,9 @@ 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java diff --git a/patches/server/Fix-NotePlayEvent.patch b/patches/server/Fix-NotePlayEvent.patch index a06258d6c2..cc41731dcf 100644 --- a/patches/server/Fix-NotePlayEvent.patch +++ b/patches/server/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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 diff --git a/patches/server/Fix-and-optimise-world-force-upgrading.patch b/patches/server/Fix-and-optimise-world-force-upgrading.patch index 117cd42cad..a989a73e5a 100644 --- a/patches/server/Fix-and-optimise-world-force-upgrading.patch +++ b/patches/server/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..0000000000000000000000000000000000000000 diff --git a/patches/server/Fix-cancelling-ProjectileHitEvent-for-piercing-arrow.patch b/patches/server/Fix-cancelling-ProjectileHitEvent-for-piercing-arrow.patch index 81a5ca02e6..8805b11086 100644 --- a/patches/server/Fix-cancelling-ProjectileHitEvent-for-piercing-arrow.patch +++ b/patches/server/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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java diff --git a/patches/server/Fix-falling-block-spawn-methods.patch b/patches/server/Fix-falling-block-spawn-methods.patch index d1a0e5889e..bde8da8c86 100644 --- a/patches/server/Fix-falling-block-spawn-methods.patch +++ b/patches/server/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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java diff --git a/patches/server/Fix-removing-recipes-from-RecipeIterator.patch b/patches/server/Fix-removing-recipes-from-RecipeIterator.patch index ecd428dc77..bc8285e1b6 100644 --- a/patches/server/Fix-removing-recipes-from-RecipeIterator.patch +++ b/patches/server/Fix-removing-recipes-from-RecipeIterator.patch @@ -3,6 +3,8 @@ From: Jake Potrebic 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 diff --git a/patches/server/Fix-upstreams-block-state-factories.patch b/patches/server/Fix-upstreams-block-state-factories.patch index 8ac34ae782..585e2f002d 100644 --- a/patches/server/Fix-upstreams-block-state-factories.patch +++ b/patches/server/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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java diff --git a/patches/server/Flat-bedrock-generator-settings.patch b/patches/server/Flat-bedrock-generator-settings.patch index 9131156df8..bf7f19826c 100644 --- a/patches/server/Flat-bedrock-generator-settings.patch +++ b/patches/server/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/Get-entity-default-attributes.patch b/patches/server/Get-entity-default-attributes.patch index eaee5e0211..516adb0f4a 100644 --- a/patches/server/Get-entity-default-attributes.patch +++ b/patches/server/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 @@ -48,26 +50,16 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ +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..00000000000000000000000000000000 + + @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/Implement-Expanded-ArmorStand-API.patch b/patches/server/Implement-Expanded-ArmorStand-API.patch index 2493980a19..b2e6357c76 100644 --- a/patches/server/Implement-Expanded-ArmorStand-API.patch +++ b/patches/server/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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java diff --git a/patches/server/Implement-Mob-Goal-API.patch b/patches/server/Implement-Mob-Goal-API.patch index ef7726e7d8..8c5d8fe5d0 100644 --- a/patches/server/Implement-Mob-Goal-API.patch +++ b/patches/server/Implement-Mob-Goal-API.patch @@ -488,7 +488,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + 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..00000000000000000000000000000000 + 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..00000000000000000000000000000000 + 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/Implement-Player-Client-Options-API.patch b/patches/server/Implement-Player-Client-Options-API.patch index e488e033b0..1906704d4d 100644 --- a/patches/server/Implement-Player-Client-Options-API.patch +++ b/patches/server/Implement-Player-Client-Options-API.patch @@ -3,6 +3,8 @@ From: MiniDigger | Martin 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/Implement-enchantWithLevels-API.patch b/patches/server/Implement-enchantWithLevels-API.patch index 46f5460753..741db45c66 100644 --- a/patches/server/Implement-enchantWithLevels-API.patch +++ b/patches/server/Implement-enchantWithLevels-API.patch @@ -20,8 +20,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + 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/Improve-EntityShootBowEvent.patch b/patches/server/Improve-EntityShootBowEvent.patch index b5fbb4d63c..516bb4400b 100644 --- a/patches/server/Improve-EntityShootBowEvent.patch +++ b/patches/server/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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 diff --git a/patches/server/Improve-Server-Thread-Pool-and-Thread-Priorities.patch b/patches/server/Improve-Server-Thread-Pool-and-Thread-Priorities.patch index 5689c2f461..b4ce6946bf 100644 --- a/patches/server/Improve-Server-Thread-Pool-and-Thread-Priorities.patch +++ b/patches/server/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..0000000000000000000000000000000000000000 diff --git a/patches/server/Improve-death-events.patch b/patches/server/Improve-death-events.patch index e892632551..536fab1f57 100644 --- a/patches/server/Improve-death-events.patch +++ b/patches/server/Improve-death-events.patch @@ -18,6 +18,10 @@ 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java diff --git a/patches/server/Item-Rarity-API.patch b/patches/server/Item-Rarity-API.patch index 7e1d6190e4..465af2f235 100644 --- a/patches/server/Item-Rarity-API.patch +++ b/patches/server/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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 diff --git a/patches/server/LivingEntity-setKiller.patch b/patches/server/LivingEntity-setKiller.patch index 18df3fabf1..689a03a898 100644 --- a/patches/server/LivingEntity-setKiller.patch +++ b/patches/server/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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 diff --git a/patches/server/LootTable-API-Replenishable-Lootables-Feature.patch b/patches/server/LootTable-API-Replenishable-Lootables-Feature.patch index 8acfd439e3..b990850d52 100644 --- a/patches/server/LootTable-API-Replenishable-Lootables-Feature.patch +++ b/patches/server/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..0000000000000000000000000000000000000000 diff --git a/patches/server/MC-Utils.patch b/patches/server/MC-Utils.patch index 039a524eb3..978c85706c 100644 --- a/patches/server/MC-Utils.patch +++ b/patches/server/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 @@ -6044,7 +6051,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @Override @@ -0,0 +0,0 @@ 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); @@ -6106,7 +6113,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 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; @@ -0,0 +0,0 @@ public class ServerChunkCache extends ChunkSource { diff --git a/patches/server/Missing-Entity-Behavior-API.patch b/patches/server/Missing-Entity-Behavior-API.patch index 51e53dcd87..a34a7110bc 100644 --- a/patches/server/Missing-Entity-Behavior-API.patch +++ b/patches/server/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 @@ -894,7 +918,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + + @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 0000000000000000000000000000000000000000..00000000000000000000000000000000 + pos = io.papermc.paper.util.MCUtil.toBlockPosition(location); + } + -+ this.getHandle().wanderTarget = pos; ++ this.getHandle().setWanderTarget(pos); + } // Paper end } diff --git a/patches/server/Mob-Pathfinding-API.patch b/patches/server/Mob-Pathfinding-API.patch index 9a2e03b8e1..50cf90dcbf 100644 --- a/patches/server/Mob-Pathfinding-API.patch +++ b/patches/server/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..0000000000000000000000000000000000000000 diff --git a/patches/server/Mob-Spawner-API-Enhancements.patch b/patches/server/Mob-Spawner-API-Enhancements.patch index dc9e40b772..fea0a53e16 100644 --- a/patches/server/Mob-Spawner-API-Enhancements.patch +++ b/patches/server/Mob-Spawner-API-Enhancements.patch @@ -3,6 +3,9 @@ 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 diff --git a/patches/server/More-Enchantment-API.patch b/patches/server/More-Enchantment-API.patch index 88e7fb9e15..1c89be3621 100644 --- a/patches/server/More-Enchantment-API.patch +++ b/patches/server/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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 diff --git a/patches/server/More-Projectile-API.patch b/patches/server/More-Projectile-API.patch index 7c184503c6..3ee560a9ec 100644 --- a/patches/server/More-Projectile-API.patch +++ b/patches/server/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/More-Teleport-API.patch b/patches/server/More-Teleport-API.patch index 01090594cf..7703f14915 100644 --- a/patches/server/More-Teleport-API.patch +++ b/patches/server/More-Teleport-API.patch @@ -3,6 +3,8 @@ 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 diff --git a/patches/server/More-lightning-API.patch b/patches/server/More-lightning-API.patch index 98a98102a4..66059bfeda 100644 --- a/patches/server/More-lightning-API.patch +++ b/patches/server/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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 diff --git a/patches/server/Optimize-GoalSelector-Goal.Flag-Set-operations.patch b/patches/server/Optimize-GoalSelector-Goal.Flag-Set-operations.patch index 1a77e25386..fc27b5d667 100644 --- a/patches/server/Optimize-GoalSelector-Goal.Flag-Set-operations.patch +++ b/patches/server/Optimize-GoalSelector-Goal.Flag-Set-operations.patch @@ -52,7 +52,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +++ b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java @@ -0,0 +0,0 @@ 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/Paper-config-files.patch b/patches/server/Paper-config-files.patch index 798fe012c0..bf86496e85 100644 --- a/patches/server/Paper-config-files.patch +++ b/patches/server/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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 diff --git a/patches/server/Player.setPlayerProfile-API.patch b/patches/server/Player.setPlayerProfile-API.patch index b5b42c4d29..e9accfca6c 100644 --- a/patches/server/Player.setPlayerProfile-API.patch +++ b/patches/server/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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java diff --git a/patches/server/PlayerDeathEvent-getItemsToKeep.patch b/patches/server/PlayerDeathEvent-getItemsToKeep.patch index 3f3e9962eb..86a245aad9 100644 --- a/patches/server/PlayerDeathEvent-getItemsToKeep.patch +++ b/patches/server/PlayerDeathEvent-getItemsToKeep.patch @@ -7,6 +7,9 @@ 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java diff --git a/patches/server/Restore-custom-InventoryHolder-support.patch b/patches/server/Restore-custom-InventoryHolder-support.patch index e715d9ce83..403e547b48 100644 --- a/patches/server/Restore-custom-InventoryHolder-support.patch +++ b/patches/server/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..0000000000000000000000000000000000000000 diff --git a/patches/server/Rewrite-chunk-system.patch b/patches/server/Rewrite-chunk-system.patch index 90be1d4b61..e7d7f30af8 100644 --- a/patches/server/Rewrite-chunk-system.patch +++ b/patches/server/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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 @@ -11939,7 +11945,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + 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()); @@ -13536,7 +13542,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 - 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 0000000000000000000000000000000000000000..00000000000000000000000000000000 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 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ 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); @@ -15221,7 +15227,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public class ServerChunkCache extends ChunkSource { } - public boolean runDistanceManagerUpdates() { + boolean runDistanceManagerUpdates() { - boolean flag = this.distanceManager.runAllUpdates(this.chunkMap); - boolean flag1 = this.chunkMap.promoteChunkMap(); - @@ -15831,7 +15837,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 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; @@ -17524,7 +17530,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 - 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; diff --git a/patches/server/Starlight.patch b/patches/server/Starlight.patch index 272b029e84..974f049118 100644 --- a/patches/server/Starlight.patch +++ b/patches/server/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..0000000000000000000000000000000000000000 @@ -4485,7 +4489,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -0,0 +0,0 @@ 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/Turtle-API.patch b/patches/server/Turtle-API.patch index 986d06a1ea..4f7ad3ef22 100644 --- a/patches/server/Turtle-API.patch +++ b/patches/server/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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 diff --git a/patches/server/Vanilla-command-permission-fixes.patch b/patches/server/Vanilla-command-permission-fixes.patch index 47d1487a01..a8391225c3 100644 --- a/patches/server/Vanilla-command-permission-fixes.patch +++ b/patches/server/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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/com/mojang/brigadier/builder/ArgumentBuilder.java diff --git a/patches/server/Villager-Restocks-API.patch b/patches/server/Villager-Restocks-API.patch index c45bd8246e..3583d40fad 100644 --- a/patches/server/Villager-Restocks-API.patch +++ b/patches/server/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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 diff --git a/patches/server/Zombie-API-breaking-doors.patch b/patches/server/Zombie-API-breaking-doors.patch index f1757ac143..66593978ac 100644 --- a/patches/server/Zombie-API-breaking-doors.patch +++ b/patches/server/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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644