# CraftBukkit maps all of (mojmap names):
#     Merchant.getLevel()
#     Entity.getCommandSenderWorld()
# to getWorld(), which confuses our ability to map this method properly. This patch disambiguates it
net/minecraft/world/item/trading/IMerchant fD ()Lnet/minecraft/world/level/World; getLevel
net/minecraft/world/entity/npc/EntityVillagerAbstract fD ()Lnet/minecraft/world/level/World; getLevel

# CraftBukkit mappings sometimes have mappings for child classes and not parent classes
# We handle this fine for deobf but this breaks reobf. These Patches fix those cases

# BossBattle -> BossBattleServer
# net/minecraft/world/BossBattle a (F)V setProgress
# net/minecraft/world/BossBattle c (Z)Lnet/minecraft/world/BossBattle; setCreateFog
# net/minecraft/world/BossBattle a (Z)Lnet/minecraft/world/BossBattle; setDarkenSky
# net/minecraft/world/BossBattle b (Z)Lnet/minecraft/world/BossBattle; setPlayMusic

# IChunkProvider -> ChunkProviderServer
# net/minecraft/world/level/chunk/IChunkProvider b (II)Z isLoaded

# BehaviorWorkComposter -> BehaviorWork
net/minecraft/world/entity/ai/behavior/BehaviorWorkComposter a (Lnet/minecraft/server/level/WorldServer;Lnet/minecraft/world/entity/npc/EntityVillager;)V doWork

# We add getLevel to the Hopper interface (implemented by Hoppers and Hopper Minecarts), but this also exists on BlockEntity,
# which Hoppers also extend. We need to map the method we add to the Hopper interface to the same name used for the method on BlockEntity
# to avoid remap causing issues
net/minecraft/world/level/block/entity/IHopper getWorld ()Lnet/minecraft/world/level/World; getLevel
