# You can use this file to change the access modifiers on a member
# This line would make the field rollAmount public in Bee
#public net.minecraft.world.entity.animal.Bee rollAmount
# This line would make the field public and remove the final modifier
#public-f net.minecraft.network.protocol.game.ClientboundChatPacket sender
# Leave out the member and it will apply to the class itself
# More info, see here https://mcforge.readthedocs.io/en/latest/advanced/accesstransformers/#access-modifiers

# Remap/Decompile fix (unclear why this is happening)
public net.minecraft.server.MinecraftServer doRunTask(Lnet/minecraft/server/TickTask;)V

# 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

# SkeletonHorse Additions
public net.minecraft.world.entity.animal.horse.SkeletonHorse trapTime

# 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 <init>()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

# Here's Johnny
public net.minecraft.world.entity.monster.Vindicator isJohnny

# 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

# 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.setPlayerProfile API
public-f net.minecraft.world.entity.player.Player gameProfile

# 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 system
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
